@contentful/field-editor-markdown 1.0.0 → 1.0.4

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":"field-editor-markdown.esm.js","sources":["../src/components/MarkdownTabs.tsx","../src/components/icons.tsx","../src/components/HeadingSelector.tsx","../src/components/InsertLinkSelector.tsx","../src/components/MarkdownToolbar.tsx","../src/utils/userAgent.ts","../src/components/MarkdownTextarea/CodeMirrorWrapper.ts","../src/components/MarkdownTextarea/MarkdownCommands.ts","../src/components/MarkdownTextarea/createMarkdownEditor.ts","../src/components/MarkdownTextarea/MarkdownTextarea.tsx","../src/components/MarkdownBottomBar.tsx","../src/types.ts","../src/dialogs/CheatsheetModalDialog.tsx","../src/components/MarkdownPreview.tsx","../src/components/MarkdownConstraints.tsx","../../../node_modules/regenerator-runtime/runtime.js","../src/utils/isValidUrl.ts","../src/dialogs/InsertLinkModalDialog.tsx","../src/utils/specialCharacters.ts","../src/dialogs/SpecialCharacterModalDialog.tsx","../src/dialogs/InsertTableModalDialog.tsx","../src/dialogs/EmdebExternalContentDialog.tsx","../src/dialogs/ConfirmInsertAssetModalDialog.tsx","../src/dialogs/ZenModeModalDialog.tsx","../src/utils/insertAssetLinks.ts","../src/utils/linkOrganizer.ts","../src/MarkdownActions.ts","../src/MarkdownEditor.tsx","../src/dialogs/openMarkdownDialog.tsx","../src/dialogs/renderMarkdownDialog.tsx"],"sourcesContent":["import React from 'react';\nimport { css, cx } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { MarkdownTab } from '../types';\n\nconst styles = {\n root: css({\n display: 'flex',\n zIndex: 10,\n flexDirection: 'row',\n justifyContent: 'flex-end',\n overflow: 'hidden',\n marginBottom: '-1px',\n fontSize: tokens.fontSizeM,\n }),\n tab: css({\n cursor: 'pointer',\n color: tokens.gray700,\n padding: tokens.spacingXs,\n minWidth: '70px',\n border: `1px solid ${tokens.gray400}`,\n borderTopLeftRadius: tokens.borderRadiusSmall,\n borderTopRightRadius: tokens.borderRadiusSmall,\n marginLeft: tokens.spacingXs,\n textAlign: 'center',\n backgroundColor: tokens.gray100,\n borderBottomColor: tokens.gray100,\n outline: 'none',\n '&:focus': {\n boxShadow: tokens.boxShadowHeavy,\n },\n transition: `all ${tokens.transitionEasingDefault} ${tokens.transitionDurationShort}`,\n }),\n inactiveTab: css({\n background: tokens.gray200,\n borderBottomColor: tokens.gray400,\n '&:hover': {\n background: tokens.gray300,\n },\n }),\n};\n\ninterface MarkdownTabsProps {\n active: MarkdownTab;\n onSelect: (selected: MarkdownTab) => void;\n}\n\nfunction MarkdownTabItem(props: {\n isActive: boolean;\n name: MarkdownTab;\n testId: string;\n onSelect: (name: MarkdownTab) => void;\n children: React.ReactNode;\n}) {\n return (\n <div\n className={cx(styles.tab, {\n [styles.inactiveTab]: props.isActive === false,\n })}\n onClick={() => {\n props.onSelect(props.name);\n }}\n onKeyDown={(e) => {\n if (e.keyCode === 13) {\n props.onSelect(props.name);\n }\n }}\n tabIndex={0}\n role=\"tab\"\n aria-controls={props.name}\n aria-selected={props.isActive === true}\n data-test-id={props.testId}>\n {props.children}\n </div>\n );\n}\n\nexport function MarkdownTabs(props: MarkdownTabsProps) {\n return (\n <div className={styles.root}>\n <MarkdownTabItem\n name=\"editor\"\n onSelect={props.onSelect}\n isActive={props.active === 'editor'}\n testId=\"markdown-tab-md\">\n Editor\n </MarkdownTabItem>\n <MarkdownTabItem\n name=\"preview\"\n onSelect={props.onSelect}\n isActive={props.active === 'preview'}\n testId=\"markdown-tab-preview\">\n Preview\n </MarkdownTabItem>\n </div>\n );\n}\n","import React from 'react';\nimport { css } from 'emotion';\n\ntype IconProps = {\n width?: number;\n height?: number;\n className?: string;\n label: string;\n};\n\nconst srOnly = css({\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: '0',\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n border: '0',\n});\n\nexport const Zen = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M1411 541l-355 355 355 355 144-144q29-31 70-14 39 17 39 59v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39 14-69l144-144-355-355-355 355 144 144q31 30 14 69-17 40-59 40H192q-26 0-45-19t-19-45v-448q0-42 40-59 39-17 69 14l144 144 355-355-355-355-144 144q-19 19-45 19-12 0-24-5-40-17-40-59V192q0-26 19-45t45-19h448q42 0 59 40 17 39-14 69L541 381l355 355 355-355-144-144q-31-30-14-69 17-40 59-40h448q26 0 45 19t19 45v448q0 42-39 59-13 5-25 5-26 0-45-19z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const Strikethrough = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M1760 896q14 0 23 9t9 23v64q0 14-9 23t-23 9H32q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h1728zM483 832q-28-35-51-80-48-98-48-188 0-181 134-309 133-127 393-127 50 0 167 19 66 12 177 48 10 38 21 118 14 123 14 183 0 18-5 45l-12 3-84-6-14-2q-50-149-103-205-88-91-210-91-114 0-182 59-67 58-67 146 0 73 66 140t279 129q69 20 173 66 58 28 95 52H483zm507 256h411q7 39 7 92 0 111-41 212-23 56-71 104-37 35-109 81-80 48-153 66-80 21-203 21-114 0-195-23l-140-40q-57-16-72-28-8-8-8-22v-13q0-108-2-156-1-30 0-68l2-37v-44l102-2q15 34 30 71t22.5 56 12.5 27q35 57 80 94 43 36 105 57 59 22 132 22 64 0 139-27 77-26 122-86 47-61 47-129 0-84-81-157-34-29-137-71z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const Indent = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M352 832q0 14-9 23L55 1143q-9 9-23 9-13 0-22.5-9.5T0 1120V544q0-13 9.5-22.5T32 512q14 0 23 9l288 288q9 9 9 23zm1440 480v192q0 13-9.5 22.5t-22.5 9.5H32q-13 0-22.5-9.5T0 1504v-192q0-13 9.5-22.5T32 1280h1728q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5H672q-13 0-22.5-9.5T640 1120V928q0-13 9.5-22.5T672 896h1088q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5T1760 768H672q-13 0-22.5-9.5T640 736V544q0-13 9.5-22.5T672 512h1088q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5T1760 384H32q-13 0-22.5-9.5T0 352V160q0-13 9.5-22.5T32 128h1728q13 0 22.5 9.5t9.5 22.5z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const Dedent = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M384 544v576q0 13-9.5 22.5T352 1152q-14 0-23-9L41 855q-9-9-9-23t9-23l288-288q9-9 23-9 13 0 22.5 9.5T384 544zm1408 768v192q0 13-9.5 22.5t-22.5 9.5H32q-13 0-22.5-9.5T0 1504v-192q0-13 9.5-22.5T32 1280h1728q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5H672q-13 0-22.5-9.5T640 1120V928q0-13 9.5-22.5T672 896h1088q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5T1760 768H672q-13 0-22.5-9.5T640 736V544q0-13 9.5-22.5T672 512h1088q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5T1760 384H32q-13 0-22.5-9.5T0 352V160q0-13 9.5-22.5T32 128h1728q13 0 22.5 9.5t9.5 22.5z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const Cubes = ({ label, ...rest }: IconProps) => (\n <svg width={18} height={14} viewBox=\"0 0 2304 1792\" {...rest}>\n <path d=\"M640 1632l384-192v-314l-384 164v342zm-64-454l404-173-404-173-404 173zm1088 454l384-192v-314l-384 164v342zm-64-454l404-173-404-173-404 173zm-448-293l384-165V454l-384 164v267zm-64-379l441-189-441-189-441 189zm1088 518v416q0 36-19 67t-52 47l-448 224q-25 14-57 14t-57-14l-448-224q-4-2-7-4-2 2-7 4l-448 224q-25 14-57 14t-57-14L71 1554q-33-16-52-47t-19-67v-416q0-38 21.5-70T78 906l434-186V320q0-38 21.5-70t56.5-48l448-192q23-10 50-10t50 10l448 192q35 16 56.5 48t21.5 70v400l434 186q36 16 57 48t21 70z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const Table = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const SpecialChar = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M1360 1307l35 159q3 12-3 22.5t-17 14.5l-5 1q-4 2-10.5 3.5t-16 4.5-21.5 5.5-25.5 5-30 5-33.5 4.5-36.5 3-38.5 1q-234 0-409-130.5T511 1054h-95q-13 0-22.5-9.5T384 1022V909q0-13 9.5-22.5T416 877h66q-2-57 1-105h-67q-14 0-23-9t-9-23V626q0-14 9-23t23-9h98q67-210 243.5-338T1158 128q102 0 194 23 11 3 20 15 6 11 3 24l-43 159q-3 13-14 19.5t-24 2.5l-4-1q-4-1-11.5-2.5L1261 364l-22.5-3.5-26-3-29-2.5-29.5-1q-126 0-226 64T778 594h468q16 0 25 12 10 12 7 26l-24 114q-5 26-32 26H734q-3 37 0 105h459q15 0 25 12 9 12 6 27l-24 112q-2 11-11 18.5t-20 7.5H782q48 117 149.5 185.5T1160 1308q18 0 36-1.5t33.5-3.5 29.5-4.5 24.5-5 18.5-4.5l12-3 5-2q13-5 26 2 12 7 15 21z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const OrgLinks = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M1792 1248v320q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-320q0-40 28-68t68-28h96V960H960v192h96q40 0 68 28t28 68v320q0 40-28 68t-68 28H736q-40 0-68-28t-28-68v-320q0-40 28-68t68-28h96V960H320v192h96q40 0 68 28t28 68v320q0 40-28 68t-68 28H96q-40 0-68-28t-28-68v-320q0-40 28-68t68-28h96V960q0-52 38-90t90-38h512V640h-96q-40 0-68-28t-28-68V224q0-40 28-68t68-28h320q40 0 68 28t28 68v320q0 40-28 68t-68 28h-96v192h512q52 0 90 38t38 90v192h96q40 0 68 28t28 68z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const Undo = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M1664 896q0 156-61 298t-164 245-245 164-298 61q-172 0-327-72.5T305 1387q-7-10-6.5-22.5t8.5-20.5l137-138q10-9 25-9 16 2 23 12 73 95 179 147t225 52q104 0 198.5-40.5T1258 1258t109.5-163.5T1408 896t-40.5-198.5T1258 534t-163.5-109.5T896 384q-98 0-188 35.5T548 521l137 138q31 30 14 69-17 40-59 40H192q-26 0-45-19t-19-45V256q0-42 40-59 39-17 69 14l130 129q107-101 244.5-156.5T896 128q156 0 298 61t245 164 164 245 61 298z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const Redo = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M1664 256v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39 14-69l138-138q-148-137-349-137-104 0-198.5 40.5T534 534 424.5 697.5 384 896t40.5 198.5T534 1258t163.5 109.5T896 1408q119 0 225-52t179-147q7-10 23-12 15 0 25 9l137 138q9 8 9.5 20.5t-7.5 22.5q-109 132-264 204.5T896 1664q-156 0-298-61t-245-164-164-245-61-298 61-298 164-245 245-164 298-61q147 0 284.5 55.5T1425 340l130-129q29-31 70-14 39 17 39 59z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n","import React from 'react';\nimport { Menu } from '@contentful/f36-components';\nimport { HeadingType } from '../types';\n\nexport const HeadingSelector = (props: {\n children: React.ReactElement;\n onSelect: (heading: HeadingType) => void;\n tooltip?: string;\n}) => {\n const handleMenuClick = (heading: HeadingType) => {\n props.onSelect(heading);\n };\n\n return (\n <Menu>\n <Menu.Trigger>{props.children}</Menu.Trigger>\n <Menu.List>\n <Menu.Item testId=\"markdown-action-button-heading-h1\" onClick={() => handleMenuClick('h1')}>\n Heading 1\n </Menu.Item>\n <Menu.Item testId=\"markdown-action-button-heading-h2\" onClick={() => handleMenuClick('h2')}>\n Heading 2\n </Menu.Item>\n <Menu.Item testId=\"markdown-action-button-heading-h3\" onClick={() => handleMenuClick('h3')}>\n Heading 3\n </Menu.Item>\n </Menu.List>\n </Menu>\n );\n};\n","import React from 'react';\nimport { Menu } from '@contentful/f36-components';\n\nimport { Button } from '@contentful/f36-components';\n\nimport { AssetIcon, ChevronDownIcon } from '@contentful/f36-icons';\n\ninterface InsertLinkSelectorProps {\n onSelectExisting: Function;\n onAddNew: Function;\n canAddNew: boolean;\n disabled: boolean;\n}\n\nexport const InsertLinkSelector = (props: InsertLinkSelectorProps) => {\n if (props.canAddNew) {\n return <MultipleMediaContextMenu {...props} />;\n } else {\n return (\n <Button\n isDisabled={props.disabled}\n startIcon={<AssetIcon />}\n testId=\"markdownEditor.linkExistingAssets\"\n size=\"small\"\n variant=\"secondary\"\n onClick={() => {\n props.onSelectExisting();\n }}>\n Insert media\n </Button>\n );\n }\n};\n\nconst MultipleMediaContextMenu = (props: InsertLinkSelectorProps) => {\n return (\n <Menu placement=\"bottom-end\">\n <Menu.Trigger>\n <Button\n endIcon={<ChevronDownIcon />}\n isDisabled={props.disabled}\n startIcon={<AssetIcon />}\n testId=\"markdownEditor.insertMediaDropdownTrigger\"\n size=\"small\"\n variant=\"secondary\">\n Insert media\n </Button>\n </Menu.Trigger>\n <Menu.List>\n <Menu.Item testId=\"markdownEditor.uploadAssetsAndLink\" onClick={() => props.onAddNew()}>\n Add new media and link\n </Menu.Item>\n <Menu.Item\n testId=\"markdownEditor.linkExistingAssets\"\n onClick={() => props.onSelectExisting()}>\n Link existing media\n </Menu.Item>\n </Menu.List>\n </Menu>\n );\n};\n","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport { css, cx } from 'emotion';\nimport { Button, Flex, Tooltip } from '@contentful/f36-components';\nimport type { ButtonProps } from '@contentful/f36-components';\nimport tokens from '@contentful/f36-tokens';\nimport {\n HeadingIcon,\n FormatBoldIcon,\n FormatItalicIcon,\n QuoteIcon,\n ListBulletedIcon,\n ListNumberedIcon,\n LinkIcon,\n CodeIcon,\n HorizontalRuleIcon,\n MoreHorizontalIcon,\n} from '@contentful/f36-icons';\nimport * as Icons from './icons';\nimport { HeadingSelector } from './HeadingSelector';\nimport { InsertLinkSelector } from './InsertLinkSelector';\nimport { MarkdownActions } from '../types';\n\nconst styles = {\n root: css({\n position: 'relative',\n zIndex: Number(tokens.zIndexWorkbenchHeader),\n border: `1px solid ${tokens.gray400}`,\n backgroundColor: tokens.gray100,\n padding: tokens.spacingXs,\n borderTopLeftRadius: tokens.borderRadiusSmall,\n }),\n button: css({\n height: '30px',\n width: '36px',\n marginLeft: tokens.spacing2Xs,\n marginRight: tokens.spacing2Xs,\n }),\n icon: css({\n fill: tokens.gray700,\n verticalAlign: 'middle',\n }),\n zenButton: css({\n marginLeft: tokens.spacingXs,\n }),\n zenButtonPressed: css({\n backgroundColor: tokens.gray400,\n }),\n tooltip: css({\n zIndex: Number(tokens.zIndexTooltip),\n }),\n};\n\nconst ToolbarButton = React.forwardRef<\n HTMLButtonElement,\n {\n variant?: 'transparent' | 'secondary';\n onClick?: Function;\n tooltipPlace?: 'top' | 'bottom';\n tooltip?: string;\n children: React.ReactNode;\n } & Omit<ButtonProps, 'onClick'>\n>((props, ref) => {\n const {\n tooltip,\n onClick,\n children,\n className,\n variant = 'transparent',\n tooltipPlace = 'top',\n isDisabled = false,\n ...otherProps\n } = props;\n\n const button = (\n <Button\n {...otherProps}\n ref={ref}\n className={cx(styles.button, className)}\n isDisabled={isDisabled}\n onClick={onClick as ButtonProps['onClick']}\n variant={variant}\n size=\"small\">\n {children}\n </Button>\n );\n\n if (tooltip) {\n return (\n <Tooltip className={styles.tooltip} placement={tooltipPlace} content={tooltip}>\n {button}\n </Tooltip>\n );\n }\n\n return button;\n});\nToolbarButton.displayName = 'ToolbarButton';\n\ninterface MarkdownToolbarProps {\n canUploadAssets: boolean;\n disabled: boolean;\n actions: MarkdownActions;\n mode: 'default' | 'zen';\n}\n\nfunction MainButtons(props: MarkdownToolbarProps) {\n const tooltipPlace = props.mode === 'zen' ? 'bottom' : 'top';\n\n return (\n <>\n <HeadingSelector\n onSelect={(heading) => {\n if (heading && props.actions.headings[heading]) {\n props.actions.headings[heading]();\n }\n }}>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-heading\"\n tooltip=\"Headings\"\n tooltipPlace={tooltipPlace}>\n <HeadingIcon aria-label=\"Headings\" className={styles.icon} />\n </ToolbarButton>\n </HeadingSelector>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-bold\"\n tooltip=\"Bold\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.bold}>\n <FormatBoldIcon aria-label=\"Bold\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-italic\"\n tooltip=\"Italic\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.italic}>\n <FormatItalicIcon aria-label=\"Italic\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-quote\"\n tooltip=\"Quote\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.quote}>\n <QuoteIcon aria-label=\"Quote\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-ul\"\n tooltip=\"Unordered list\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.ul}>\n <ListBulletedIcon aria-label=\"Unordered list\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-ol\"\n tooltip=\"Ordered list\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.ol}>\n <ListNumberedIcon aria-label=\"Ordered list\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-link\"\n tooltip=\"Link\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.insertLink}>\n <LinkIcon aria-label=\"Link\" className={styles.icon} />\n </ToolbarButton>\n </>\n );\n}\n\nfunction AdditionalButtons(props: MarkdownToolbarProps) {\n const tooltipPlace = props.mode === 'zen' ? 'bottom' : 'top';\n return (\n <>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-strike\"\n tooltip=\"Strike out\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.strike}>\n <Icons.Strikethrough label=\"Strike out\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-code\"\n tooltip=\"Code block\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.code}>\n <CodeIcon aria-label=\"Code block\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-hr\"\n tooltip=\"Horizontal rule\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.hr}>\n <HorizontalRuleIcon aria-label=\"Horizontal rule\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-indent\"\n tooltip=\"Increase indentation\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.indent}>\n <Icons.Indent label=\"Increase indentation\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-dedent\"\n tooltip=\"Decrease indentation\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.dedent}>\n <Icons.Dedent label=\"Decrease indentation\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-embed\"\n tooltip=\"Embed external content\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.embedExternalContent}>\n <Icons.Cubes label=\"Embed external content\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-table\"\n tooltip=\"Insert table\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.insertTable}>\n <Icons.Table label=\"Insert table\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-special\"\n tooltip=\"Insert special character\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.insertSpecialCharacter}>\n <Icons.SpecialChar label=\"Insert special character\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-organizeLinks\"\n tooltip=\"Organize links\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.organizeLinks}>\n <Icons.OrgLinks label=\"Organize links\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-undo\"\n tooltip=\"Undo\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.history.undo}>\n <Icons.Undo label=\"Undo\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-redo\"\n tooltip=\"Redo\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.history.redo}>\n <Icons.Redo label=\"Redo\" className={styles.icon} />\n </ToolbarButton>\n </>\n );\n}\n\nexport function DefaultMarkdownToolbar(props: MarkdownToolbarProps) {\n const [showAdditional, setShowAdditional] = React.useState(false);\n\n return (\n <div className={styles.root}>\n <Flex justifyContent=\"space-between\">\n <Flex>\n <MainButtons {...props} />\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-toggle-additional\"\n tooltip={showAdditional ? 'Hide additional actions' : 'More actions'}\n onClick={() => {\n setShowAdditional(!showAdditional);\n }}>\n <MoreHorizontalIcon className={styles.icon} />\n </ToolbarButton>\n </Flex>\n <Flex>\n <InsertLinkSelector\n disabled={props.disabled}\n onSelectExisting={props.actions.linkExistingMedia}\n onAddNew={props.actions.addNewMedia}\n canAddNew={props.canUploadAssets}\n />\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-zen\"\n variant=\"secondary\"\n onClick={props.actions.openZenMode}\n className={styles.zenButton}>\n <Icons.Zen label=\"Expand\" className={styles.icon} />\n </ToolbarButton>\n </Flex>\n </Flex>\n {showAdditional && (\n <Flex justifyContent=\"space-between\" marginTop=\"spacingXs\">\n <Flex>\n <AdditionalButtons {...props} />\n </Flex>\n </Flex>\n )}\n </div>\n );\n}\n\nexport function ZenMarkdownToolbar(props: MarkdownToolbarProps) {\n return (\n <div className={styles.root}>\n <Flex justifyContent=\"space-between\">\n <Flex>\n <MainButtons {...props} />\n <AdditionalButtons {...props} />\n </Flex>\n <Flex>\n <InsertLinkSelector\n disabled={props.disabled}\n onSelectExisting={props.actions.linkExistingMedia}\n onAddNew={props.actions.addNewMedia}\n canAddNew={props.canUploadAssets}\n />\n <Button\n testId=\"markdown-action-button-zen-close\"\n variant=\"secondary\"\n size=\"small\"\n className={cx(styles.zenButton, styles.zenButtonPressed)}\n onClick={() => {\n props.actions.closeZenMode();\n }}>\n <Icons.Zen label=\"Collapse\" className={styles.icon} />\n </Button>\n </Flex>\n </Flex>\n </div>\n );\n}\n\nexport const MarkdownToolbar = React.memo((props: MarkdownToolbarProps) => {\n if (props.mode === 'zen') {\n return <ZenMarkdownToolbar {...props} />;\n }\n return <DefaultMarkdownToolbar {...props} />;\n});\n\nMarkdownToolbar.displayName = 'MarkdownToolbar';\n","import get from 'lodash/get';\n\nconst userAgent = get(window, 'navigator.userAgent', '');\nconst platform = get(window, 'navigator.platform', '');\n\nlet ctrlKey = 'Ctrl';\n\nconst tests = {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore ignore missing MSStream\n ios: /(iphone os|ipad|iphone|ipod)/i.test(userAgent) && !window.MSStream,\n};\n\nif (tests.ios || /mac(68k|ppc|intel)/i.test(platform)) {\n ctrlKey = 'Cmd';\n}\n\nexport function getCtrlKey() {\n return ctrlKey;\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define, @typescript-eslint/no-explicit-any */\n\nimport transform from 'lodash/transform';\nimport throttle from 'lodash/throttle';\nimport CodeMirror from 'codemirror';\nimport * as userAgent from '../../utils/userAgent';\nimport { EditorDirection } from '../../types';\n\nfunction stripUnit(value: number | string): number {\n if (typeof value !== 'string') return value;\n\n const cssRegex = /^([+-]?(?:\\d+|\\d*\\.\\d+))([a-z]*|%)$/;\n const matchedValue = value.match(cssRegex);\n\n if (!matchedValue) {\n throw new Error(\"Couldn't match unit in given string\");\n }\n\n return parseFloat(value);\n}\n\nexport function create(\n host: HTMLElement,\n options: {\n direction: EditorDirection;\n readOnly: boolean;\n fixedHeight?: number | boolean;\n height?: number | string;\n }\n) {\n const { direction, fixedHeight, height, readOnly } = options || {};\n\n // Set to true if `setValue()` has been called. This is to prevent\n // undoing the initial content.\n let initializedWithValue = false;\n\n const LF = '\\n';\n\n const EDITOR_SIZE = {\n min: height ? stripUnit(height) : 300,\n max: 500,\n shift: 50,\n };\n\n // eslint-disable-next-line\n // @ts-ignore\n const cm = CodeMirror(host, {\n direction,\n readOnly,\n mode: 'markdown',\n lineNumbers: false,\n undoDepth: 200,\n matchBrackets: true,\n lineWrapping: true,\n // When `lineSeparator === null` the document will be split\n // on CRLFs as well as lone CRs and LFs. A single LF will\n // be used as line separator in all output\n lineSeparator: null,\n theme: 'elegant',\n tabSize: 2,\n indentWithTabs: false,\n indentUnit: 2,\n autoRefresh: true,\n });\n\n cm.setSize('100%', EDITOR_SIZE.min);\n\n if (!fixedHeight) {\n cm.on('change', throttle(assureHeight, 150));\n }\n\n cm.setOption('extraKeys', {\n Tab: function () {\n replaceSelectedText(getIndentation());\n },\n Enter: 'newlineAndIndentContinueMarkdownList',\n Esc: () => {\n cm.getInputField().blur();\n },\n });\n\n /**\n * @description\n * Custom API for a CodeMirror instance.\n *\n * An instance wraps a CodeMirror instance and provides a custom interface\n * on top of CodeMirror.\n */\n return {\n destroy,\n disable,\n enable,\n attachEvent,\n addKeyShortcuts,\n setValue,\n cmd,\n moveToLineBeginning,\n moveIfNotEmpty,\n restoreCursor,\n moveToLineEnd,\n usePrimarySelection,\n focus,\n select,\n selectBackwards,\n selectAll: () => cm.execCommand('selectAll'),\n extendSelectionBy,\n insertAtCursor,\n insertAtLineBeginning,\n wrapSelection,\n removeFromLineBeginning,\n removeSelectedText,\n replaceSelectedText,\n getCursor,\n setCursor,\n getSelection,\n getLine,\n isLineEmpty,\n getSelectedText,\n getSelectionLength,\n getCurrentLine,\n getCurrentLineNumber,\n getCurrentCharacter,\n getCurrentLineLength,\n lineStartsWith,\n getIndentation,\n getNl,\n getValue,\n getLinesCount,\n getHistorySize,\n setReadOnly: (value: boolean) => cm.setOption('readOnly', value),\n getHistory: () => cm.getHistory(),\n setHistory: (history: any) => cm.setHistory(history),\n setFullsize: () => {\n cm.setSize('100%', '100%');\n cm.refresh();\n },\n refresh: () => cm.refresh(),\n };\n\n function destroy() {\n // @ts-expect-error\n cm.toTextArea();\n }\n\n function disable() {\n cm.setOption('readOnly', 'nocursor');\n }\n\n function enable() {\n cm.setOption('readOnly', false);\n }\n\n function assureHeight() {\n const current = cm.heightAtLine(cm.lastLine(), 'local') + EDITOR_SIZE.shift;\n let next = current;\n if (current < EDITOR_SIZE.min) {\n next = EDITOR_SIZE.min;\n }\n if (current > EDITOR_SIZE.max) {\n next = EDITOR_SIZE.max;\n }\n cm.setSize('100%', next);\n }\n\n function attachEvent(name: string, fn: Function, throttleInterval: number) {\n if (throttleInterval) {\n fn = throttle(fn as any, throttleInterval);\n }\n cm.on(name, fn as any);\n }\n\n function addKeyShortcuts(map: any) {\n const ctrlKey = userAgent.getCtrlKey();\n cm.addKeyMap(\n transform(\n map,\n (acc, value, key) => {\n // eslint-disable-next-line\n // @ts-ignore\n acc[ctrlKey + '-' + key] = value;\n },\n {}\n )\n );\n }\n\n /**\n * low-level editor manipulation functions\n */\n\n /**\n * @description\n * Sets the content of the editor while preserving the cursor\n * position.\n *\n * If called for the first time it will not record the change in\n * the history.\n */\n function setValue(value?: string) {\n value = value || '';\n if (getValue() === value) {\n return;\n }\n\n // set value, but save cursor position first\n // position will be restored, but w/o focus (third arg)\n const line = getCurrentLineNumber();\n const ch = getCurrentCharacter();\n cm.setValue(value);\n restoreCursor(ch, line, true);\n\n // We do not want to record the initial population in the\n // history. Otherwise it would always be possible to revert to\n // the empty string.\n if (!initializedWithValue) {\n cm.clearHistory();\n initializedWithValue = true;\n }\n }\n\n function cmd(name: string) {\n cm.execCommand(name);\n cm.focus();\n }\n\n function moveToLineBeginning(lineNumber?: number) {\n cm.setCursor({ line: defaultToCurrentLineNumber(lineNumber), ch: 0 });\n cm.focus();\n }\n\n /**\n * @description\n * Insert a new line below the cursor and move to the beginning of\n * that line.\n *\n * Only do this if the editor has content and we are not already on\n * the last line.\n *\n * TODO rename this\n */\n function moveIfNotEmpty() {\n if (getCurrentLineLength() < 1) {\n return;\n }\n\n const next = getCurrentLineNumber() + 1;\n if (cm.lastLine() < next) {\n moveToLineEnd();\n insertAtCursor(getNl());\n }\n\n moveToLineBeginning(next);\n }\n\n function restoreCursor(character: number, lineNumber?: number, noFocus?: boolean) {\n cm.setCursor(defaultToCurrentLineNumber(lineNumber), character, {\n scroll: !noFocus,\n });\n if (!noFocus) {\n cm.focus();\n }\n }\n\n function moveToLineEnd(lineNumber?: number) {\n cm.setCursor({\n line: defaultToCurrentLineNumber(lineNumber),\n ch: getCurrentLineLength(),\n });\n cm.focus();\n }\n\n function defaultToCurrentLineNumber(lineNumber?: number) {\n if (lineNumber === 0 || (lineNumber !== undefined && lineNumber > 0)) {\n return lineNumber;\n }\n return getCurrentLineNumber();\n }\n\n function usePrimarySelection() {\n cmd('singleSelection');\n }\n\n function focus() {\n cm.focus();\n }\n\n function select(from: CodeMirror.Position, to: CodeMirror.Position) {\n cm.setSelection(from, to);\n cm.focus();\n }\n\n function selectBackwards(skip: number, len: number) {\n select(getPos(-skip - len), getPos(-skip));\n\n function getPos(modifier: number) {\n return {\n line: getCurrentLineNumber(),\n ch: getCurrentCharacter() + modifier,\n };\n }\n }\n\n function extendSelectionBy(modifier: number) {\n select(getPos('anchor', 0), getPos('head', modifier));\n\n function getPos(prop: 'anchor' | 'head', modifier: number): CodeMirror.Position {\n const selection = getSelection();\n if (!selection) {\n return { line: 0, ch: 0 };\n }\n return { line: selection[prop].line, ch: selection[prop].ch + modifier };\n }\n }\n\n function insertAtCursor(text: string) {\n cm.replaceRange(text, cm.getCursor());\n cm.focus();\n }\n\n function insertAtLineBeginning(text: string) {\n const initialCh = getCurrentCharacter();\n moveToLineBeginning();\n insertAtCursor(text);\n restoreCursor(initialCh + text.length);\n cm.focus();\n }\n\n function wrapSelection(wrapper: string) {\n const replacement = wrapper + getSelectedText() + wrapper;\n const selection = getSelection();\n if (selection) {\n cm.replaceRange(replacement, selection.anchor, selection?.head);\n cm.focus();\n }\n }\n\n function removeFromLineBeginning(charCount: number) {\n const lineNumber = getCurrentLineNumber();\n cm.replaceRange('', { line: lineNumber, ch: 0 }, { line: lineNumber, ch: charCount });\n cm.focus();\n }\n\n function removeSelectedText() {\n cm.replaceSelection('');\n cm.focus();\n }\n\n /**\n * @description\n * Replace the selected text with the given string.\n *\n * If nothing is selected it will insert the text at the current\n * cursor position\n *\n * The optional `select` parameter controls what will be selected\n * afters wards. By default the cursor will be at the end of the\n * inserted text. You can pass 'around' to select the inserted\n * text.\n */\n function replaceSelectedText(replacement: string, select?: string) {\n cm.replaceSelection(replacement, select);\n cm.focus();\n }\n\n /**\n * low-level editor get/check functions\n */\n\n function getCursor() {\n return cm.getCursor();\n }\n\n function setCursor(cursor: number | CodeMirror.Position) {\n cm.setCursor(cursor);\n }\n\n function getSelection() {\n const selections = cm.listSelections();\n if (!cm.somethingSelected() || !selections || selections.length < 1) {\n return null;\n }\n return selections[0];\n }\n\n function getLine(lineNumber: number) {\n return cm.getLine(lineNumber) || '';\n }\n\n function isLineEmpty(lineNumber?: number) {\n const n = defaultToCurrentLineNumber(lineNumber);\n return n > -1 && getLine(n).length < 1 && n < cm.lineCount();\n }\n\n function getLinesCount() {\n return cm.lineCount();\n }\n\n function getSelectedText() {\n return getSelection() ? cm.getSelection() : '';\n }\n\n function getSelectionLength() {\n return getSelectedText().length;\n }\n\n function getCurrentLine() {\n return getLine(getCurrentLineNumber());\n }\n\n function getCurrentLineNumber() {\n return cm.getCursor().line;\n }\n\n function getCurrentCharacter() {\n return cm.getCursor().ch;\n }\n\n function getCurrentLineLength() {\n return getCurrentLine().length;\n }\n\n function lineStartsWith(text: string) {\n return getCurrentLine().startsWith(text);\n }\n\n function getIndentation() {\n return repeat(' ', cm.getOption('indentUnit') ?? 0);\n }\n\n function getNl(n = 1) {\n if (n < 1) {\n return '';\n }\n return repeat(LF, n);\n }\n\n function getValue() {\n return cm.getValue() || '';\n }\n\n function getHistorySize(which?: 'undo' | 'redo') {\n const history = cm.historySize();\n return which ? history[which] : history;\n }\n\n function repeat(what: string, n: number) {\n return new Array(n + 1).join(what);\n }\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport range from 'lodash/range';\nimport min from 'lodash/min';\nimport max from 'lodash/max';\nimport times from 'lodash/times';\n// eslint-disable-next-line you-dont-need-lodash-underscore/repeat\nimport repeat from 'lodash/repeat';\n\nimport * as CodeMirrorWrapper from './CodeMirrorWrapper';\n\ntype EditorInstanceType = ReturnType<typeof CodeMirrorWrapper.create>;\n\nfunction createPrefixToggleFn(prefix: string) {\n return (editor: EditorInstanceType) => {\n if (editor.lineStartsWith(prefix)) {\n editor.removeFromLineBeginning(prefix.length);\n } else {\n editor.insertAtLineBeginning(prefix);\n }\n };\n}\n\n/**\n * Wraps the current selection with a marker.\n *\n * If nothing is selected it inserts the given text wrapped in the\n * marker and selects the inner text\n *\n * Used b the `bold`, `italic`, and `strike` commands.\n */\nfunction wrapSelection(editor: EditorInstanceType, marker: string, emptyText: string) {\n return () => {\n editor.usePrimarySelection();\n\n // there's a selection - wrap it with inline marker\n if (editor.getSelection()) {\n const selectedText = editor.getSelectedText();\n if (selectedText.startsWith(marker) && selectedText.endsWith(marker)) {\n const markerLength = marker.length;\n const textWithoutMarker = selectedText.slice(\n markerLength,\n selectedText.length - markerLength\n );\n editor.replaceSelectedText(textWithoutMarker);\n } else {\n editor.wrapSelection(marker);\n }\n } else {\n // no selection - insert sample text and select it\n editor.insertAtCursor(marker + emptyText + marker);\n editor.selectBackwards(marker.length, emptyText.length);\n }\n };\n}\n\nconst HEADER_CHAR = '#';\nconst quoteToggleFn = createPrefixToggleFn('> ');\nconst codeToggleFn = createPrefixToggleFn(' ');\n\n/**\n * @description\n * A collection of commands used by the user bound to a\n * CodeMirrorWrapper instance.\n *\n * The command collection only depends on the wrapper instance and is\n * used by UI from code mirror stuff.\n */\nexport function create(editor: EditorInstanceType) {\n return {\n bold: wrapSelection(editor, '__', 'text in bold'),\n italic: wrapSelection(editor, '*', 'text in italic'),\n strike: wrapSelection(editor, '~~', 'striked out'),\n quote: modifySelection(editor, quoteToggleFn),\n code: modifySelection(editor, codeToggleFn),\n link,\n h1: toggleHeader(editor, 1),\n h2: toggleHeader(editor, 2),\n h3: toggleHeader(editor, 3),\n ul: modifySelection(editor, ulToggleFn, true),\n ol: modifySelection(editor, olToggleFn, true),\n undo: function () {\n editor.cmd('undo');\n },\n redo: function () {\n editor.cmd('redo');\n },\n hr,\n indent,\n dedent,\n table,\n };\n\n /**\n * @description\n * Insert a line with `---` below the cursor.\n */\n function hr() {\n editor.moveIfNotEmpty();\n const nl = editor.getNl();\n const markup = nl + '---' + nl + nl;\n editor.insertAtCursor(markup);\n }\n\n /**\n * @description\n * Indent the current line.\n */\n function indent() {\n editor.insertAtLineBeginning(editor.getIndentation());\n }\n\n /**\n * @description\n * Dedent the current line.\n */\n function dedent() {\n const indentation = editor.getIndentation();\n if (editor.lineStartsWith(indentation)) {\n editor.removeFromLineBeginning(indentation.length);\n }\n }\n\n /**\n * @description\n * Insert a markdown table template in a new line.\n */\n function table(config: { rows: number; cols: number }) {\n const nl = editor.getNl();\n editor.moveIfNotEmpty();\n editor.insertAtCursor(nl);\n const line = editor.getCurrentLineNumber();\n editor.insertAtCursor(tableTemplate(config.rows, config.cols).join(nl));\n editor.insertAtCursor(nl + nl);\n editor.restoreCursor(2, line);\n }\n\n /**\n * @description\n * Inserts or replaces the current selection with a markdown link\n */\n function link(url: string, text?: string, title?: string) {\n editor.usePrimarySelection();\n\n const linkTitle = title ? ' \"' + title + '\"' : '';\n\n const link = text ? '[' + text + '](' + url + linkTitle + ')' : '<' + url + '>';\n\n editor.replaceSelectedText(link, 'around');\n }\n}\n\n/**\n * For each line in the selection move to that line and call\n * `toggleFn` with the 1-based index of the line in the selection.\n *\n * If there is no selection we just call `toggleFn(editor)`.\n */\nfunction modifySelection(\n editor: EditorInstanceType,\n toggleFn: (editor: EditorInstanceType, listNumber?: number) => void,\n isList?: boolean\n) {\n return () => {\n editor.usePrimarySelection();\n\n const selection = editor.getSelection();\n if (selection) {\n // there's a selection - toggle list bullet for each line\n // listNumber is 1, 2, 3... and can be used as ol bullet\n forLineIn(selection, (lineNumber: number, listNumber: number) => {\n // TODO move this into forLineIn\n editor.moveToLineBeginning(lineNumber);\n toggleFn(editor, listNumber);\n });\n editor.moveToLineEnd();\n } else {\n // there's no selection - just toggle line prefix\n // but if adding list, add whitespace before and after list\n if (isList && !getListNumber(editor) && !editor.lineStartsWith('- ')) {\n prepareListWhitespace(editor);\n }\n toggleFn(editor);\n }\n };\n}\n\n/**\n * Calls callback for each line number that is in the selection\n *\n * The second argument is the 1-based index of the iteration.\n *\n * @param {CodeMirror.Selection} selection\n * param {function(number)} cb\n */\nfunction forLineIn(\n selection: {\n anchor: CodeMirror.Position;\n head: CodeMirror.Position;\n },\n cb: Function\n) {\n // anchor/head depend on selection direction, so min & max have to be used\n const lines = [selection.anchor.line, selection.head.line];\n const maxNumber = max(lines);\n const minNumber = min(lines);\n const lineRange = range(minNumber || 0, maxNumber !== undefined ? maxNumber + 1 : undefined);\n\n lineRange.forEach((lineNumber, i) => {\n cb(lineNumber, i + 1);\n });\n}\n\nfunction prepareListWhitespace(editor: EditorInstanceType) {\n const line = editor.getCurrentLineNumber();\n\n const isCurrentLineEmpty = editor.isLineEmpty(line);\n\n const isPrevLineEmpty = line > 0 ? editor.isLineEmpty(line - 1) : false;\n const isNextLineEmpty = line < editor.getLinesCount() - 1 ? editor.isLineEmpty(line + 1) : true;\n\n let linesToInsert = isCurrentLineEmpty ? 2 : 4;\n if (isPrevLineEmpty) {\n linesToInsert = linesToInsert - 1;\n }\n if (isNextLineEmpty) {\n linesToInsert = linesToInsert - 1;\n }\n\n editor.moveToLineEnd();\n editor.insertAtCursor(editor.getNl(linesToInsert));\n editor.restoreCursor(0, isCurrentLineEmpty ? line : line + 2);\n}\n\nfunction getListNumber(editor: EditorInstanceType) {\n const result = editor.getCurrentLine().match(/^(\\d+\\. )/);\n return result ? result[1] : null;\n}\n\nfunction ulToggleFn(editor: EditorInstanceType) {\n if (editor.lineStartsWith('- ')) {\n editor.removeFromLineBeginning(2);\n } else {\n const listNumber = getListNumber(editor);\n if (listNumber) {\n editor.removeFromLineBeginning(listNumber.length);\n }\n editor.insertAtLineBeginning('- ');\n }\n}\n\nfunction olToggleFn(editor: EditorInstanceType, n?: number) {\n const listNumber = getListNumber(editor);\n if (listNumber) {\n editor.removeFromLineBeginning(listNumber.length);\n } else {\n if (editor.lineStartsWith('- ')) {\n editor.removeFromLineBeginning(2);\n }\n editor.insertAtLineBeginning((n || 1) + '. ');\n }\n}\n\n/**\n * From a table layout specification build a Markdown table template.\n *\n * Returns the lines as an array.\n * Used by the `table()` command\n *\n * @param {object} config\n * @param {number} rows\n * @param {number} cols\n * @returns {string[]}\n */\nfunction tableTemplate(nrows: number, ncols: number) {\n const cellWidth = new Array(11);\n const cell = ' ' + cellWidth.join(' ') + ' |';\n const separatorCell = ' ' + cellWidth.join('-') + ' |';\n\n let baseRow = '|';\n let separatorRow = '|';\n\n times(ncols, () => {\n baseRow += cell;\n separatorRow += separatorCell;\n });\n\n const bodyRows = range(nrows).map(() => baseRow.replace(/\\| {5}/g, '| Cell'));\n\n const headerRow = baseRow.replace(/\\| {7}/g, '| Header');\n\n return [headerRow, separatorRow].concat(bodyRows);\n}\n\n/**\n * Toggles the header prefix for a given level on the current line.\n *\n * - Removes a header when one of the same level is\n * - Replaces the header if there is one of a different level\n * - Otherwise inserts the header\n */\nfunction toggleHeader(editor: EditorInstanceType, level: number) {\n return () => {\n const initialCh = editor.getCurrentCharacter();\n const currentHeader = selectHeader(editor);\n const prefix = repeat(HEADER_CHAR, level);\n\n // there's no header at the current line - create one\n if (!currentHeader) {\n editor.moveToLineBeginning();\n editor.insertAtCursor(prefix + ' ');\n editor.restoreCursor(initialCh + prefix.length + 1);\n return;\n }\n\n // there's exactly the same header - remove one\n if (editor.getSelectedText() === prefix) {\n editor.extendSelectionBy(1);\n const removedCh = editor.getSelectionLength();\n editor.removeSelectedText();\n editor.restoreCursor(initialCh - removedCh);\n return;\n }\n\n // there's another header at the current line - replace\n const diff = prefix.length - editor.getSelectionLength();\n editor.replaceSelectedText(prefix);\n editor.restoreCursor(initialCh + diff);\n };\n}\n\n/**\n * On the current line select a Markdown header prefix. That is the\n * string at the beginning of the line that consists of up to six `#`.\n *\n * If the selection was successful return the selected string.\n */\nfunction selectHeader(editor: EditorInstanceType) {\n const result = editor.getCurrentLine().match(/^( {0,3})(#{1,6}) /);\n if (!result) {\n return null;\n }\n const indentation = result[1];\n const header = result[2];\n\n editor.select(getPos(0), getPos(header.length));\n return editor.getSelection();\n\n function getPos(modifier: number) {\n return {\n line: editor.getCurrentLineNumber(),\n ch: indentation.length + modifier,\n };\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport * as CodeMirrorWrapper from './CodeMirrorWrapper';\nimport * as Commands from './MarkdownCommands';\nimport { EditorDirection } from '../../types';\n\nexport function createMarkdownEditor(\n host: HTMLElement,\n options: {\n direction: EditorDirection;\n readOnly: boolean;\n fixedHeight?: number | boolean;\n height?: number | string;\n }\n) {\n const editor = CodeMirrorWrapper.create(host, options);\n\n function wrapChange(fn: Function) {\n return (e: any, ch: any) => {\n fn(editor.getValue(), e, ch);\n };\n }\n\n const api = {\n actions: Commands.create(editor),\n history: {\n hasUndo: function () {\n return editor.getHistorySize('undo') > 0;\n },\n hasRedo: function () {\n return editor.getHistorySize('redo') > 0;\n },\n },\n events: {\n onScroll: function (fn: Function) {\n editor.attachEvent('scroll', fn, 150);\n },\n onChange: function (fn: Function) {\n editor.attachEvent('change', wrapChange(fn), 0);\n },\n onPaste: function (fn: Function) {\n editor.attachEvent('paste', fn, 0);\n },\n },\n insert: editor.insertAtCursor,\n focus: editor.focus,\n getContent: editor.getValue,\n destroy: editor.destroy,\n setContent: editor.setValue,\n getSelectedText: editor.getSelectedText,\n usePrimarySelection: editor.usePrimarySelection,\n setReadOnly: editor.setReadOnly,\n selectBackwards: editor.selectBackwards,\n getCursor: editor.getCursor,\n setCursor: editor.setCursor,\n clear: () => editor.setValue(''),\n selectAll: editor.selectAll,\n setFullsize: editor.setFullsize,\n refresh: editor.refresh,\n };\n\n editor.addKeyShortcuts({\n B: api.actions.bold,\n I: api.actions.italic,\n });\n\n return api;\n}\n","import React, { useRef, useEffect, useState } from 'react';\nimport tokens from '@contentful/f36-tokens';\nimport { css, cx } from 'emotion';\nimport { createMarkdownEditor } from './createMarkdownEditor';\nimport { EditorDirection } from '../../types';\n\nexport type InitializedEditorType = ReturnType<typeof createMarkdownEditor>;\n\ntype MarkdownTextareaProps = {\n /**\n * Minimum height to set for the markdown text area\n */\n minHeight?: string | number;\n mode: 'default' | 'zen';\n direction: EditorDirection;\n disabled: boolean;\n visible: boolean;\n onReady: (editor: InitializedEditorType) => void;\n};\n\nconst styles = {\n root: css`\n border: 1px solid ${tokens.gray400};\n border-width: 0 1px;\n overflow-y: auto;\n height: auto;\n min-height: 300px;\n\n .CodeMirror {\n height: auto;\n line-height: ${tokens.lineHeightDefault};\n }\n .CodeMirror-lines {\n color: ${tokens.gray700};\n padding: ${tokens.spacingL};\n }\n .CodeMirror-code {\n font-family: ${tokens.fontStackMonospace};\n font-size: ${tokens.fontSizeM};\n }\n .CodeMirror-scroll {\n min-height: '6rem';\n }\n\n .cm-header {\n color: ${tokens.gray900};\n }\n span.cm-variable-2 {\n color: ${tokens.gray700};\n }\n .cm-header-1 {\n font-size: 1.9em;\n }\n .cm-header-2 {\n font-size: 1.75em;\n }\n .cm-header-3 {\n font-size: 1.6em;\n }\n .cm-header-4 {\n font-size: 1.45em;\n }\n .cm-header-5 {\n font-size: 1.3em;\n }\n .cm-header-6 {\n font-size: 1.15em;\n }\n\n span.cm-tag,\n span.cm-string,\n span.cm-attribute {\n color: ${tokens.red600};\n }\n span.cm-string {\n text-decoration: none !important;\n }\n span.cm-quote,\n span.cm-comment {\n color: ${tokens.gray600};\n }\n span.cm-link,\n span.cm-url {\n color: ${tokens.blue500} !important;\n }\n span.cm-link {\n text-decoration: underline;\n }\n `,\n framed: css({\n '.CodeMirror': {\n maxHeight: '500px',\n },\n }),\n zen: css({\n border: 'none !important',\n '.CodeMirror-lines': {\n maxWidth: '650px',\n margin: '0 auto',\n },\n }),\n disabled: css`\n .CodeMirror {\n background: ${tokens.gray100};\n }\n .CodeMirror-cursors {\n visibility: hidden !important;\n }\n `,\n};\n\nexport const MarkdownTextarea = React.memo((props: MarkdownTextareaProps) => {\n const hostRef = useRef<HTMLDivElement>(null);\n const [editor, setEditor] = useState<InitializedEditorType | null>(null);\n\n useEffect(() => {\n if (hostRef.current) {\n setEditor(\n createMarkdownEditor(\n hostRef.current,\n Object.assign(\n {},\n {\n direction: props.direction,\n readOnly: true,\n },\n props.mode === 'zen'\n ? {\n fixedHeight: true,\n height: '100%',\n }\n : {},\n props.minHeight !== undefined ? { height: props.minHeight } : {}\n )\n )\n );\n }\n }, []);\n\n useEffect(() => {\n if (editor) {\n props.onReady(editor);\n }\n }, [editor]);\n\n const className = cx(\n styles.root,\n props.minHeight !== undefined ? css({ minHeight: props.minHeight }) : undefined,\n props.mode === 'default' ? styles.framed : styles.zen,\n props.disabled && styles.disabled\n );\n\n return (\n <div\n className={className}\n ref={hostRef}\n data-test-id=\"markdown-textarea\"\n style={{ display: props.visible ? 'block' : 'none' }}\n />\n );\n});\n\nMarkdownTextarea.displayName = 'MarkdownTextarea';\n","import React from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nimport { TextLink, Paragraph } from '@contentful/f36-components';\n\nconst styles = {\n root: css({\n display: 'flex',\n justifyContent: 'space-between',\n background: tokens.gray100,\n border: `1px solid ${tokens.gray400}`,\n borderBottomLeftRadius: tokens.borderRadiusSmall,\n borderBottomRightRadius: tokens.borderRadiusSmall,\n padding: `${tokens.spacingXs} ${tokens.spacingS}`,\n }),\n help: css({\n color: tokens.gray700,\n fontSize: tokens.fontSizeS,\n button: {\n fontSize: tokens.fontSizeS,\n },\n }),\n};\n\nexport function MarkdownCounter(props: { words: number; characters: number }) {\n return (\n <Paragraph marginBottom=\"none\" className={styles.help}>\n {props.words} {props.words !== 1 ? 'words' : 'word'}, {props.characters}{' '}\n {props.characters !== 1 ? 'characters' : 'character'}\n </Paragraph>\n );\n}\n\nexport function MarkdownHelp(props: { onClick: () => void }) {\n return (\n <Paragraph marginBottom=\"none\" className={styles.help}>\n Format your text like a pro with the{' '}\n <TextLink\n as=\"button\"\n testId=\"open-markdown-cheatsheet-button\"\n onClick={() => {\n props.onClick();\n }}>\n markdown cheatsheet\n </TextLink>\n .\n </Paragraph>\n );\n}\n\nexport function MarkdownBottomBar(props: { children: React.ReactNode }) {\n return <div className={styles.root}>{props.children}</div>;\n}\n","export type MarkdownTab = 'editor' | 'preview';\n\nexport type HeadingType = 'h1' | 'h2' | 'h3';\n\nexport type EditorDirection = 'ltr' | 'rtl';\n\nexport enum MarkdownDialogType {\n cheatsheet = 'markdown-cheatsheet',\n insertLink = 'markdown-insertLink',\n insertSpecialCharacter = 'markdown-insertSpecialCharacter',\n insertTable = 'markdown-insertTable',\n embedExternalContent = 'markdown-embedExternalContent',\n confirmInsertAsset = 'markdown-confirmInsertAsset',\n zenMode = 'markdown-zenMode',\n}\n\nexport type MarkdownDialogsParams =\n | {\n type: MarkdownDialogType.zenMode;\n initialValue: string;\n locale: string;\n }\n | {\n type: MarkdownDialogType.cheatsheet;\n }\n | {\n type: MarkdownDialogType.insertLink;\n selectedText?: string;\n }\n | {\n type: MarkdownDialogType.insertSpecialCharacter;\n }\n | {\n type: MarkdownDialogType.insertTable;\n }\n | {\n type: MarkdownDialogType.embedExternalContent;\n }\n | {\n type: MarkdownDialogType.confirmInsertAsset;\n locale: string;\n assets: Array<{\n title: string;\n description: string;\n thumbnailUrl: string;\n thumbnailAltText: string;\n }>;\n };\n\nexport type MarkdownActions = {\n simple: {\n bold: Function;\n italic: Function;\n quote: Function;\n ol: Function;\n ul: Function;\n strike: Function;\n code: Function;\n hr: Function;\n indent: Function;\n dedent: Function;\n };\n headings: {\n h1: Function;\n h2: Function;\n h3: Function;\n };\n history: {\n undo: Function;\n redo: Function;\n };\n insertLink: Function;\n embedExternalContent: Function;\n insertTable: Function;\n insertSpecialCharacter: Function;\n linkExistingMedia: Function;\n addNewMedia: Function;\n organizeLinks: Function;\n openZenMode: Function;\n closeZenMode: Function;\n};\n\nexport type PreviewComponents = {\n embedly?: React.ComponentType<{ url: string }>;\n};\n","import React from 'react';\nimport { css, cx } from 'emotion';\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport { ModalContent } from '@contentful/f36-components';\nimport tokens from '@contentful/f36-tokens';\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\n\nimport { TextLink, Heading } from '@contentful/f36-components';\n\nconst styles = {\n flexColumnContainer: css({\n display: 'flex',\n flexWrap: 'nowrap',\n }),\n flexColumn: css({\n flexGrow: 1,\n }),\n verticalDivider: css({\n borderRight: `1px solid ${tokens.gray500}`,\n paddingRight: tokens.spacing3Xl,\n marginRight: tokens.spacing2Xl,\n }),\n preview: css({\n display: 'inline-block',\n paddingRight: tokens.spacingL,\n width: '50%',\n }),\n unOrderedListPreview: css({\n listStyleType: 'disc',\n marginLeft: tokens.spacingS,\n }),\n orderedListPreview: css({\n listStyleType: 'decimal',\n marginLeft: tokens.spacingS,\n }),\n markup: css({\n display: 'inline-block',\n color: tokens.gray600,\n paddingLeft: tokens.spacingL,\n width: '50%',\n }),\n h1: css({\n fontSize: tokens.fontSize2Xl,\n }),\n h2: css({\n fontSize: tokens.fontSizeXl,\n }),\n h3: css({\n fontSize: tokens.fontSizeL,\n }),\n helpItem: css({\n marginBottom: tokens.spacingS,\n display: 'flex',\n alignItems: 'flex-end',\n height: tokens.spacingXl,\n }),\n helpLink: css({\n margin: 'auto',\n }),\n flexRowContainer: css({\n display: 'flex',\n width: '100%',\n justifyContent: 'center',\n marginTop: tokens.spacingXl,\n }),\n};\n\nexport const CheatsheetModalDialog = () => {\n return (\n <ModalContent testId=\"markdown-cheatsheet-dialog-content\">\n <div className={styles.flexColumnContainer}>\n <div className={cx(styles.flexColumn, styles.verticalDivider)}>\n <div className={styles.helpItem}>\n <Heading marginBottom=\"none\" as=\"h1\" className={cx(styles.preview, styles.h1)}>\n H1\n </Heading>\n <div className={styles.markup}># heading</div>\n </div>\n <div className={styles.helpItem}>\n <Heading marginBottom=\"none\" as=\"h2\" className={cx(styles.preview, styles.h2)}>\n H2\n </Heading>\n <div className={styles.markup}>## heading</div>\n </div>\n <div className={styles.helpItem}>\n <Heading marginBottom=\"none\" as=\"h3\" className={cx(styles.preview, styles.h3)}>\n H3\n </Heading>\n <div className={styles.markup}>### heading</div>\n </div>\n <div className={styles.helpItem}>\n <strong className={styles.preview}>bold</strong>\n <div className={styles.markup}>__text__</div>\n </div>\n <div className={styles.helpItem}>\n <em className={styles.preview}>italic</em>\n <div className={styles.markup}>*text*</div>\n </div>\n <div className={styles.helpItem}>\n <div className={styles.preview}>strikethrough</div>\n <div className={styles.markup}>~~text~~</div>\n </div>\n <div className={styles.helpItem}>\n <TextLink as=\"button\" className={styles.preview}>\n Link\n </TextLink>\n <div className={styles.markup}>[text](url)</div>\n </div>\n </div>\n <div className={styles.flexColumn}>\n <div className={styles.helpItem}>\n <div className={styles.preview}>Image</div>\n <div className={styles.markup}>![alt-text](url)</div>\n </div>\n <div className={styles.helpItem}>\n <div className={styles.preview}>Unordered list</div>\n <div className={styles.markup}>* list item</div>\n </div>\n <div className={styles.helpItem}>\n <div className={styles.preview}>\n <div>Ordered list</div>\n </div>\n <div className={styles.markup}>1. list item</div>\n </div>\n <div className={styles.helpItem}>\n <div className={styles.preview}>\n <div>Blockquote</div>\n </div>\n <div className={styles.markup}>&gt; quote</div>\n </div>\n <div className={styles.helpItem}>\n <div className={styles.preview}>code span</div>\n <div className={styles.markup}>`code here`</div>\n </div>\n <div className={styles.helpItem}>\n <div className={styles.preview}>code block</div>\n <div className={styles.markup}>```code here```</div>\n </div>\n </div>\n </div>\n <div className={styles.flexRowContainer}>\n <TextLink\n className={styles.helpLink}\n href=\"https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n View the full GitHub-flavored Markdown syntax help (opens in a new window)\n </TextLink>\n </div>\n </ModalContent>\n );\n};\n\nexport const openCheatsheetModal = (dialogs: DialogsAPI): Promise<void> => {\n return dialogs.openCurrent({\n title: 'Markdown formatting help',\n width: 'large',\n minHeight: '415px',\n shouldCloseOnEscapePress: true,\n shouldCloseOnOverlayClick: true,\n parameters: {\n type: MarkdownDialogType.cheatsheet,\n } as MarkdownDialogsParams,\n });\n};\n","import React from 'react';\nimport Markdown from 'markdown-to-jsx';\nimport tokens from '@contentful/f36-tokens';\nimport DOMPurify from 'dompurify';\nimport { css, cx } from 'emotion';\nimport { EditorDirection, PreviewComponents } from '../types';\n\nconst styles = {\n root: css`\n border: 1px solid ${tokens.gray400};\n border-width: 0 1px;\n word-wrap: break-word;\n overflow-wrap: break-word;\n min-height: 300px;\n padding: ${tokens.spacingL};\n font-size: ${tokens.fontSizeM};\n font-family: ${tokens.fontStackPrimary};\n line-height: ${tokens.lineHeightDefault};\n color: ${tokens.gray700};\n white-space: pre-line;\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: ${tokens.spacingL};\n margin-bottom: ${tokens.spacingM};\n color: ${tokens.gray900};\n }\n\n h1:first-child,\n h2:first-child,\n h3:first-child,\n h4:first-child,\n h5:first-child,\n h6:first-child {\n margin-top: 0;\n }\n\n h1 {\n font-size: 1.9em;\n }\n h2 {\n font-size: 1.75em;\n }\n h3 {\n font-size: 1.6em;\n }\n h4 {\n font-size: 1.45em;\n }\n h5 {\n font-size: 1.3em;\n }\n h6 {\n font-size: 1.15em;\n }\n\n p {\n margin-top: 0;\n margin-bottom: ${tokens.spacingM};\n }\n\n ul,\n ol {\n margin: ${tokens.spacingS} 0;\n padding-left: ${tokens.spacingM};\n }\n ul > li {\n list-style-type: disc;\n margin-bottom: 0;\n }\n\n ol > li {\n list-style-type: decimal;\n margin-bottom: 0;\n }\n\n table {\n table-layout: fixed;\n border-right-width: 0;\n border-bottom-width: 0;\n width: 80%;\n margin: ${tokens.spacingM} auto;\n border-spacing: 0;\n border-collapse: collapse;\n border: 1px solid ${tokens.gray300};\n }\n\n table th,\n table td {\n padding: 5px;\n border-left-width: 0;\n border-top-width: 0;\n }\n\n table th {\n background: ${tokens.gray200};\n }\n\n table td {\n border: 1px solid ${tokens.gray300};\n }\n\n a {\n color: ${tokens.blue500};\n }\n\n hr {\n margin-top: ${tokens.spacingL};\n margin-bottom: ${tokens.spacingL};\n height: 1px;\n background-color: ${tokens.gray300};\n border: none;\n }\n\n blockquote {\n border-left: 4px solid ${tokens.gray200};\n padding-left: ${tokens.spacingL};\n margin: 0;\n margin-top: ${tokens.spacingM};\n font-style: italic;\n }\n\n img {\n margin: ${tokens.spacingM} auto;\n display: block;\n max-width: 80%;\n max-height: 250px;\n }\n\n pre code {\n font-size: ${tokens.fontSizeS};\n font-family: ${tokens.fontStackMonospace};\n }\n\n .embedly-card {\n margin: ${tokens.spacingM} auto;\n display: block;\n }\n `,\n framed: css({\n height: '100%',\n maxHeight: '500px',\n overflowY: 'auto',\n }),\n zen: css({\n maxWidth: '650px',\n margin: '0 auto',\n border: 'none !important',\n }),\n rtl: css({\n direction: 'rtl',\n }),\n};\n\ntype MarkdownPreviewProps = {\n /**\n * Minimum height to set for the markdown preview\n */\n minHeight?: string | number;\n mode: 'default' | 'zen';\n direction: EditorDirection;\n value: string;\n previewComponents?: PreviewComponents;\n};\n\nfunction MarkdownLink(props: {\n href: string;\n title: string;\n className?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n children: any;\n Embedly?: React.SFC<{ url: string }>;\n}) {\n const { Embedly, children, ...rest } = props;\n\n if (props.className === 'embedly-card' && Embedly) {\n return <Embedly url={props.href} />;\n }\n\n return (\n <a {...rest} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n );\n}\n\nexport const MarkdownPreview = React.memo((props: MarkdownPreviewProps) => {\n const className = cx(\n styles.root,\n props.minHeight !== undefined ? css({ minHeight: props.minHeight }) : undefined,\n props.mode === 'default' ? styles.framed : styles.zen,\n props.direction === 'rtl' ? styles.rtl : undefined\n );\n\n // See the list of allowed Tags here:\n // https://github.com/cure53/DOMPurify/blob/main/src/tags.js#L3-L121\n const cleanHTML = React.useMemo(() => {\n return DOMPurify.sanitize(props.value);\n }, [props.value]);\n\n return (\n <div className={className} data-test-id=\"markdown-preview\">\n <Markdown\n options={{\n overrides: {\n a: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n component: MarkdownLink as any,\n props: {\n Embedly: props.previewComponents?.embedly,\n },\n },\n },\n }}>\n {cleanHTML}\n </Markdown>\n </div>\n );\n});\n\nMarkdownPreview.displayName = 'MarkdownPreview';\n","import React from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { ConstraintsUtils, CharCounter, CharValidation } from '@contentful/field-editor-shared';\n\nconst styles = {\n root: css({\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: tokens.fontSizeM,\n marginTop: tokens.spacingXs,\n color: tokens.gray700,\n }),\n};\n\nexport function MarkdownConstraints(props: { sdk: FieldExtensionSDK; value: string }) {\n const constraints = ConstraintsUtils.fromFieldValidations(\n props.sdk.field.validations,\n props.sdk.field.type as 'Text'\n );\n\n const checkConstraint = ConstraintsUtils.makeChecker(constraints);\n\n return (\n <div className={styles.root}>\n <CharCounter value={props.value} checkConstraint={checkConstraint} />\n <CharValidation constraints={constraints} />\n </div>\n );\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","export const urlRegex =\n /^(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-/]))?$/;\n\nexport function isValidUrl(value: string) {\n return urlRegex.test(value);\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\nimport {\n ModalContent,\n ModalControls,\n Button,\n Form,\n FormControl,\n TextInput,\n} from '@contentful/f36-components';\nimport { isValidUrl } from '../utils/isValidUrl';\n\ntype InsertLinkModalPositiveResult = { url: string; text: string; title: string };\nexport type InsertLinkModalResult = InsertLinkModalPositiveResult | false | undefined;\n\ntype InsertLinkModalProps = {\n selectedText?: string;\n onClose: (result: InsertLinkModalResult) => void;\n};\n\nexport const InsertLinkModal = ({ selectedText, onClose }: InsertLinkModalProps) => {\n const mainInputRef = useRef<HTMLInputElement>(null);\n const [text, setText] = useState(selectedText || '');\n const [url, setUrl] = useState('');\n const [touched, setTouched] = useState(false);\n const [title, setTitle] = useState('');\n const onInsert = (values: InsertLinkModalPositiveResult) => onClose(values);\n\n const urlIsValid = isValidUrl(url);\n\n useEffect(() => {\n if (mainInputRef?.current?.focus) {\n mainInputRef.current.focus();\n }\n }, [mainInputRef]);\n\n return (\n <>\n <ModalContent testId=\"insert-link-modal\">\n <Form onSubmit={() => onInsert({ url, text, title })}>\n <FormControl id=\"link-text-field\" isDisabled={Boolean(selectedText)}>\n <FormControl.Label>Link text</FormControl.Label>\n <TextInput\n name=\"link-text\"\n value={text}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n setText(e.target.value);\n }}\n testId=\"link-text-field\"\n />\n </FormControl>\n\n <FormControl id=\"target-url-field\" isInvalid={touched && !urlIsValid}>\n <FormControl.Label>Target URL</FormControl.Label>\n <TextInput\n name=\"target-url\"\n value={url}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n setUrl(e.target.value);\n setTouched(true);\n }}\n placeholder=\"https://\"\n maxLength={2100}\n testId=\"target-url-field\"\n ref={mainInputRef}\n />\n <FormControl.HelpText>Include protocol (e.g. https://)</FormControl.HelpText>\n {touched && !urlIsValid && (\n <FormControl.ValidationMessage>Invalid URL</FormControl.ValidationMessage>\n )}\n </FormControl>\n\n <FormControl id=\"link-title-field\">\n <FormControl.Label>Link title</FormControl.Label>\n <TextInput\n name=\"link-title\"\n value={title}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n setTitle(e.target.value);\n }}\n testId=\"link-title-field\"\n />\n <FormControl.HelpText>Recommended for accessibility</FormControl.HelpText>\n </FormControl>\n </Form>\n </ModalContent>\n <ModalControls>\n <Button\n testId=\"insert-link-cancel\"\n onClick={() => onClose(false)}\n variant=\"secondary\"\n size=\"small\">\n Cancel\n </Button>\n <Button\n testId=\"insert-link-confirm\"\n onClick={() => {\n onInsert({ url, text, title });\n }}\n isDisabled={!urlIsValid}\n variant=\"positive\"\n size=\"small\">\n Insert\n </Button>\n </ModalControls>\n </>\n );\n};\n\nexport const openInsertLinkDialog = (\n dialogs: DialogsAPI,\n params: { selectedText?: string }\n): Promise<InsertLinkModalResult> => {\n return dialogs.openCurrent({\n title: 'Insert link',\n width: 'large',\n minHeight: '410px',\n shouldCloseOnEscapePress: true,\n shouldCloseOnOverlayClick: true,\n parameters: {\n type: MarkdownDialogType.insertLink,\n ...params,\n } as MarkdownDialogsParams,\n });\n};\n","export const specialCharacters = [\n { code: 180, desc: 'acute accent' },\n { code: 38, desc: 'ampersand' },\n { code: 166, desc: 'broken vertical bar' },\n { code: 8226, desc: 'bullet' },\n { code: 184, desc: 'cedilla' },\n { code: 162, desc: 'cent' },\n { code: 169, desc: 'copyright' },\n { code: 176, desc: 'degree' },\n { code: 247, desc: 'division' },\n { code: 189, desc: 'fraction half' },\n { code: 188, desc: 'fraction quarter' },\n { code: 190, desc: 'fraction three quarters' },\n { code: 62, desc: 'greater than' },\n { code: 161, desc: 'inverted exclamation mark' },\n { code: 191, desc: 'inverted question mark' },\n { code: 171, desc: 'left-pointing double angle quotation mark' },\n { code: 60, desc: 'less than' },\n { code: 175, desc: 'macron' },\n { code: 181, desc: 'micro' },\n { code: 160, desc: 'non-breaking space' },\n { code: 172, desc: 'not' },\n { code: 182, desc: 'paragraph' },\n { code: 177, desc: 'plus-minus' },\n { code: 34, desc: 'quotation mark' },\n { code: 174, desc: 'registered' },\n { code: 187, desc: 'right-pointing double angle quotation mark' },\n { code: 167, desc: 'section' },\n { code: 168, desc: 'umlaut/diaeresis' },\n { code: 215, desc: 'multiplication' },\n { code: 8482, desc: 'trade mark' },\n { code: 8364, desc: 'euro' },\n { code: 163, desc: 'pound' },\n { code: 165, desc: 'yen' },\n { code: 8222, desc: 'double low-9 quotation mark' },\n { code: 710, desc: 'modifier circumflex accent' },\n { code: 8224, desc: 'dagger' },\n { code: 8225, desc: 'double dagger' },\n { code: 8230, desc: 'horizontal ellipsis' },\n { code: 8220, desc: 'left double quotation mark' },\n { code: 8249, desc: 'single left-pointing angle quotation mark' },\n { code: 8216, desc: 'left single quotation mark' },\n { code: 183, desc: 'middle dot' },\n { code: 8212, desc: 'em dash' },\n { code: 8211, desc: 'en dash' },\n { code: 8240, desc: 'per mille' },\n { code: 8250, desc: 'single right-pointing angle quotation mark' },\n { code: 8217, desc: 'right single quotation mark' },\n { code: 8218, desc: 'single low-9 quotation mark' },\n { code: 170, desc: 'feminine ordinal indicator' },\n { code: 186, desc: 'masculine ordinal indicator' },\n { code: 8221, desc: 'right double quotation mark' },\n { code: 732, desc: 'small tilde' },\n { code: 9829, desc: 'black heart' },\n { code: 9830, desc: 'diamond' },\n];\n","import React, { useState } from 'react';\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport {\n ModalContent,\n ModalControls,\n Text,\n Flex,\n Button,\n Tooltip,\n} from '@contentful/f36-components';\nimport { specialCharacters } from '../utils/specialCharacters';\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\n\nconst styles = {\n buttonPanel: css({\n display: 'flex',\n flexWrap: 'wrap',\n }),\n charButton: css({\n border: `1px solid ${tokens.gray500}`,\n width: '4.1rem',\n height: '4.1rem',\n fontSize: tokens.fontSizeXl,\n marginTop: tokens.spacing2Xs,\n marginRight: tokens.spacing2Xs,\n }),\n selectedCharButton: css({\n backgroundColor: tokens.gray100,\n }),\n tooltip: css({ zIndex: 1000 }),\n button: css({\n marginTop: tokens.spacingM,\n marginRight: tokens.spacingS,\n }),\n};\n\nexport type SpecialCharacterModalResult = string | false | undefined;\n\ntype SpecialCharacterModalDialogProps = {\n onClose: (result: SpecialCharacterModalResult) => void;\n};\n\nexport const SpecialCharacterModalDialog = ({ onClose }: SpecialCharacterModalDialogProps) => {\n const [selectedCharacter, setSelectedCharacter] = useState<{ code: number; desc: string }>(\n specialCharacters[0]\n );\n return (\n <>\n <ModalContent testId=\"insert-special-character-modal\">\n <Flex flexDirection=\"column\" alignItems=\"center\">\n <Text as=\"div\" lineHeight=\"lineHeight3Xl\" fontSize=\"fontSize3Xl\" marginBottom=\"spacingS\">\n {String.fromCharCode(selectedCharacter.code)}\n </Text>\n <Text as=\"div\" marginBottom=\"spacingS\">\n {selectedCharacter.desc}\n </Text>\n </Flex>\n <div className={styles.buttonPanel}>\n {specialCharacters.map((char) => (\n <div key={char.code}>\n <Tooltip className={styles.tooltip} content={char.desc}>\n <Button\n testId=\"special-character-button\"\n isActive={char.code === selectedCharacter.code}\n className={styles.charButton}\n variant=\"transparent\"\n onClick={() => setSelectedCharacter(char)}>\n {String.fromCharCode(char.code)}\n </Button>\n </Tooltip>\n </div>\n ))}\n </div>\n </ModalContent>\n <ModalControls>\n <Button\n testId=\"insert-character-cancel\"\n className={styles.button}\n onClick={() => onClose(false)}\n variant=\"secondary\"\n size=\"small\">\n Cancel\n </Button>\n <Button\n className={styles.button}\n testId=\"insert-character-confirm\"\n onClick={() => onClose(String.fromCharCode(selectedCharacter.code))}\n variant=\"positive\"\n size=\"small\">\n Insert selected\n </Button>\n </ModalControls>\n </>\n );\n};\n\nexport const openInsertSpecialCharacter = (\n dialogs: DialogsAPI\n): Promise<SpecialCharacterModalResult> => {\n return dialogs.openCurrent({\n title: 'Insert special character',\n width: 'large',\n minHeight: '600px',\n shouldCloseOnEscapePress: true,\n shouldCloseOnOverlayClick: true,\n parameters: {\n type: MarkdownDialogType.insertSpecialCharacter,\n } as MarkdownDialogsParams,\n });\n};\n","import React, { useState, useRef, useEffect } from 'react';\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport inRange from 'lodash/inRange';\nimport {\n ModalContent,\n ModalControls,\n Button,\n Form,\n FormControl,\n TextInput,\n} from '@contentful/f36-components';\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\n\ntype InsertTableModalPositiveResult = { cols: number; rows: number };\nexport type InsertTableModalResult = InsertTableModalPositiveResult | false | undefined;\n\ntype InsertTableModalProps = {\n onClose: (result: InsertTableModalResult) => void;\n};\n\nexport const InsertTableModal = ({ onClose }: InsertTableModalProps) => {\n const mainInputRef = useRef<HTMLInputElement>(null);\n const [rows, setRows] = useState(2);\n const [cols, setColumns] = useState(1);\n const rowsAreValid = inRange(rows, 2, 100);\n const colsAreValid = inRange(cols, 1, 100);\n\n useEffect(() => {\n if (mainInputRef.current?.focus) {\n mainInputRef.current.focus();\n }\n }, [mainInputRef]);\n\n return (\n <>\n <ModalContent testId=\"insert-table-modal\">\n <Form>\n <FormControl id=\"insert-table-rows-number-field\" isRequired isInvalid={!rowsAreValid}>\n <FormControl.Label>Number of rows</FormControl.Label>\n <TextInput\n name=\"rows\"\n value={rows.toString()}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => setRows(Number(e.target.value))}\n testId=\"insert-table-rows-number-field\"\n min={2}\n max={100}\n pattern=\"[1-9][0-9]*\"\n type=\"number\"\n width=\"small\"\n autoComplete=\"off\"\n ref={mainInputRef}\n />\n {!rowsAreValid && (\n <FormControl.ValidationMessage>\n Should be between 2 and 100\n </FormControl.ValidationMessage>\n )}\n </FormControl>\n\n <FormControl id=\"insert-table-columns-number-field\" isRequired isInvalid={!colsAreValid}>\n <FormControl.Label>Number of columns</FormControl.Label>\n <TextInput\n name=\"columns\"\n value={cols.toString()}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n setColumns(Number(e.target.value))\n }\n testId=\"insert-table-columns-number-field\"\n min={1}\n max={100}\n pattern=\"[1-9][0-9]*\"\n type=\"number\"\n width=\"small\"\n autoComplete=\"off\"\n />\n {!colsAreValid && (\n <FormControl.ValidationMessage>\n Should be between 1 and 100\n </FormControl.ValidationMessage>\n )}\n </FormControl>\n </Form>\n </ModalContent>\n <ModalControls>\n <Button\n testId=\"insert-table-cancel\"\n onClick={() => onClose(false)}\n variant=\"secondary\"\n size=\"small\">\n Cancel\n </Button>\n <Button\n testId=\"insert-table-confirm\"\n onClick={() => onClose({ rows, cols })}\n variant=\"positive\"\n size=\"small\"\n isDisabled={!rowsAreValid || !colsAreValid}>\n Insert\n </Button>\n </ModalControls>\n </>\n );\n};\n\nexport const openInsertTableDialog = (dialogs: DialogsAPI): Promise<InsertTableModalResult> => {\n return dialogs.openCurrent({\n title: 'Insert table',\n width: 'medium',\n minHeight: '260px',\n shouldCloseOnEscapePress: true,\n shouldCloseOnOverlayClick: true,\n parameters: {\n type: MarkdownDialogType.insertTable,\n } as MarkdownDialogsParams,\n });\n};\n","import React, { useState, useRef, useEffect } from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\nimport {\n ModalContent,\n ModalControls,\n Text,\n TextLink,\n Button,\n Checkbox,\n Radio,\n Form,\n FormControl,\n TextInput,\n} from '@contentful/f36-components';\nimport { isValidUrl } from '../utils/isValidUrl';\n\nconst styles = {\n widthFiledGroup: css({\n display: 'flex',\n flexWrap: 'nowrap',\n alignItems: 'flex-start',\n }),\n radioButtonGroup: css({\n display: 'inline-flex',\n alignItems: 'flex-start',\n paddingTop: tokens.spacingXl,\n }),\n radioButton: css({\n marginLeft: tokens.spacingM,\n }),\n};\n\nexport type EmbedExternalContentModalResult = string | false | undefined;\n\ntype EmbedExternalContentModalProps = {\n onClose: (result: EmbedExternalContentModalResult) => void;\n};\n\ntype Unit = 'percent' | 'px';\n\nconst makeEmbedlyLink = ({\n url,\n width,\n selectedUnit,\n attachSocial,\n}: {\n url: string;\n width: number;\n selectedUnit: Unit;\n attachSocial: boolean;\n}): string => {\n const s = { percent: '%', px: 'px' };\n return [\n '<a href=\"' + url + '\" class=\"embedly-card\" ',\n 'data-card-width=\"' + width + s[selectedUnit] + '\" ',\n 'data-card-controls=\"' + (attachSocial ? '1' : '0') + '\"',\n '>Embedded content: ' + url + '</a>',\n ].join('');\n};\n\nconst isWidthValid = (width: number, unit: Unit) => (unit === 'percent' ? width <= 100 : true);\n\nexport const EmbedExternalContentModal = ({ onClose }: EmbedExternalContentModalProps) => {\n const mainInputRef = useRef<HTMLInputElement>(null);\n const [url, setUrl] = useState<string>('https://');\n const [selectedUnit, setUnit] = useState<Unit>('percent');\n const [urlIsValid, setUrlValidity] = useState<boolean>(true);\n const [width, setWidth] = useState('100');\n const [attachSocial, setAttachSocial] = useState(false);\n\n useEffect(() => {\n if (mainInputRef.current?.focus) {\n mainInputRef.current.focus();\n }\n }, [mainInputRef]);\n\n return (\n <>\n <ModalContent testId=\"embed-external-dialog\">\n <Form>\n <FormControl id=\"external-link-url-field\" isRequired isInvalid={!urlIsValid}>\n <FormControl.Label>Content URL</FormControl.Label>\n <TextInput\n name=\"external-link-url\"\n value={url}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n setUrl(value);\n setUrlValidity(isValidUrl(value));\n }}\n testId=\"external-link-url-field\"\n placeholder=\"https://example.com\"\n ref={mainInputRef}\n />\n <FormControl.HelpText>Include protocol (e.g. https://)</FormControl.HelpText>\n {!urlIsValid && (\n <FormControl.ValidationMessage>URL is invalid</FormControl.ValidationMessage>\n )}\n </FormControl>\n <TextLink href=\"http://embed.ly/providers\" target=\"_blank\" rel=\"noopener noreferrer\">\n Supported sources\n </TextLink>\n <div className={styles.widthFiledGroup}>\n <FormControl\n id=\"embedded-content-width\"\n isRequired\n isInvalid={!isWidthValid(Number(width), selectedUnit)}>\n <FormControl.Label>Width</FormControl.Label>\n <TextInput\n value={width}\n name=\"embedded-content-width\"\n testId=\"embedded-content-width\"\n type=\"number\"\n width=\"small\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => setWidth(e.target.value)}\n />\n {!isWidthValid(Number(width), selectedUnit) && (\n <FormControl.ValidationMessage>\n Should be equal or less then 100\n </FormControl.ValidationMessage>\n )}\n </FormControl>\n\n <div className={styles.radioButtonGroup}>\n <Radio\n id=\"unit-option-percent\"\n value=\"percent\"\n isChecked={selectedUnit === 'percent'}\n onChange={() => setUnit('percent')}\n className={styles.radioButton}>\n percent\n </Radio>\n <Radio\n id=\"unit-option-pixels\"\n value=\"pixels\"\n isChecked={selectedUnit === 'px'}\n onChange={() => setUnit('px')}\n className={styles.radioButton}>\n pixels\n </Radio>\n </div>\n </div>\n <Checkbox\n id=\"attach-social-checkbox\"\n name=\"attach-social-checkbox\"\n value=\"Yes\"\n isChecked={attachSocial}\n onChange={() => setAttachSocial(!attachSocial)}\n testId=\"attach-social-checkbox\">\n Attach social sharing links to this element\n </Checkbox>\n <Text as=\"p\" fontColor=\"gray500\" marginTop=\"spacingXs\">\n To enable this embedded content in your application make sure to add the&nbsp;\n <TextLink\n href=\"http://embed.ly/docs/products/cards\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n Embedly&apos;s platform.js\n </TextLink>\n &nbsp;on your development environment\n </Text>\n {/* <EmbedlyPreview previewUrl={url} /> */}\n </Form>\n </ModalContent>\n <ModalControls>\n <Button\n testId=\"emded-external-cancel\"\n onClick={() => onClose(false)}\n variant=\"secondary\"\n size=\"small\">\n Cancel\n </Button>\n <Button\n testId=\"embed-external-confirm\"\n onClick={() =>\n onClose(makeEmbedlyLink({ url, width: Number(width), selectedUnit, attachSocial }))\n }\n variant=\"positive\"\n size=\"small\">\n Insert\n </Button>\n </ModalControls>\n </>\n );\n};\n\nexport const openEmbedExternalContentDialog = (\n dialogs: DialogsAPI\n): Promise<EmbedExternalContentModalResult> => {\n return dialogs.openCurrent({\n title: 'Embed external content',\n width: 'large',\n minHeight: '435px',\n shouldCloseOnEscapePress: true,\n shouldCloseOnOverlayClick: true,\n parameters: {\n type: MarkdownDialogType.embedExternalContent,\n } as MarkdownDialogsParams,\n });\n};\n","import React from 'react';\nimport {\n ModalContent,\n ModalControls,\n Paragraph,\n Button,\n EntityList,\n} from '@contentful/f36-components';\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\n\ninterface ConfirmInsertAssetModalDialogProps {\n onClose: (result: boolean) => void;\n assets: Array<{\n title: string;\n description: string;\n thumbnailUrl: string;\n thumbnailAltText: string;\n }>;\n locale: string;\n}\n\nexport const ConfirmInsertAssetModalDialog = ({\n onClose,\n assets,\n locale,\n}: ConfirmInsertAssetModalDialogProps) => {\n const localesNumber = assets.length;\n\n return (\n <>\n <ModalContent testId=\"confirm-insert-asset\">\n <Paragraph>\n {localesNumber === 1\n ? `Link asset with missing file for locale ${locale}`\n : `Link assets with missing files for locale ${locale}`}\n </Paragraph>\n <Paragraph>\n {localesNumber === 1\n ? 'Do you want to link to the file in its fallback locale?'\n : 'Do you want to link to the files in their fallback locales?'}\n </Paragraph>\n <EntityList>\n {assets.map(({ title, description, thumbnailUrl, thumbnailAltText }) => (\n <EntityList.Item\n key={thumbnailUrl}\n title={title}\n thumbnailUrl={`${thumbnailUrl}?w=46&h=46&fit=thumb`}\n thumbnailAltText={thumbnailAltText}\n description={description}\n />\n ))}\n </EntityList>\n </ModalContent>\n <ModalControls>\n <Button onClick={() => onClose(false)} variant=\"secondary\" size=\"small\">\n Cancel\n </Button>\n <Button\n testId=\"confirm-insert-asset\"\n onClick={() => onClose(true)}\n variant=\"positive\"\n size=\"small\">\n Confirm\n </Button>\n </ModalControls>\n </>\n );\n};\n\nexport const openConfirmInsertAsset = (\n dialogs: DialogsAPI,\n options: {\n locale: string;\n assets: Array<{\n title: string;\n description: string;\n thumbnailUrl: string;\n thumbnailAltText: string;\n }>;\n }\n): Promise<boolean> => {\n return dialogs.openCurrent({\n title: 'Confirm using fallback assets',\n width: 'medium',\n minHeight: '270px',\n shouldCloseOnEscapePress: true,\n shouldCloseOnOverlayClick: true,\n parameters: {\n type: MarkdownDialogType.confirmInsertAsset,\n ...options,\n } as MarkdownDialogsParams,\n });\n};\n","import React from 'react';\nimport { css, cx } from 'emotion';\nimport { DialogsAPI, DialogExtensionSDK } from '@contentful/app-sdk';\nimport { MarkdownDialogType, MarkdownDialogsParams, PreviewComponents } from '../types';\nimport { InitializedEditorType } from '../components/MarkdownTextarea/MarkdownTextarea';\nimport { MarkdownToolbar } from '../components/MarkdownToolbar';\nimport { MarkdownTextarea } from '../components/MarkdownTextarea/MarkdownTextarea';\nimport { MarkdownPreview } from '../components/MarkdownPreview';\nimport { MarkdownBottomBar, MarkdownHelp } from '../components/MarkdownBottomBar';\nimport { createMarkdownActions } from '../MarkdownActions';\nimport { openCheatsheetModal } from '../dialogs/CheatsheetModalDialog';\nimport tokens from '@contentful/f36-tokens';\n\nimport { ChevronRightIcon, ChevronLeftIcon } from '@contentful/f36-icons';\n\nexport type ZenModeResult = {\n value: string;\n cursor?: {\n ch: number;\n line: number;\n };\n};\n\ntype ZenModeDialogProps = {\n saveValueToSDK: (value: string | null | undefined) => void;\n onClose: (result: ZenModeResult) => void;\n initialValue: string;\n locale: string;\n sdk: DialogExtensionSDK;\n previewComponents?: PreviewComponents;\n};\n\nconst styles = {\n root: css({\n position: 'fixed',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n }),\n topSplit: css({\n position: 'fixed',\n top: 0,\n height: '48px',\n left: 0,\n right: 0,\n }),\n bottomSplit: css({\n position: 'fixed',\n bottom: 0,\n left: 0,\n right: 0,\n height: '36px',\n }),\n editorSplit: css({\n width: '50%',\n position: 'fixed',\n top: '48px',\n left: 0,\n bottom: '36px',\n overflowX: 'hidden',\n overflowY: 'scroll',\n }),\n editorSplitFullscreen: css({\n left: 0,\n right: 0,\n width: '100%',\n }),\n previewSplit: css({\n width: '50%',\n position: 'fixed',\n top: '48px',\n right: 0,\n bottom: '36px',\n overflowX: 'hidden',\n overflowY: 'scroll',\n }),\n separator: css({\n position: 'fixed',\n top: '48px',\n bottom: '36px',\n width: '1px',\n background: tokens.gray400,\n left: '50%',\n }),\n button: css({\n position: 'fixed',\n cursor: 'pointer',\n zIndex: 105,\n top: '49%',\n height: '30px',\n backgroundColor: tokens.gray100,\n border: `1px solid ${tokens.gray400}`,\n padding: 0,\n }),\n hideButton: css({\n left: '50%',\n }),\n showButton: css({\n right: 0,\n borderRightWidth: 0,\n }),\n icon: css({\n verticalAlign: 'middle',\n }),\n};\n\nexport const ZenModeModalDialog = (props: ZenModeDialogProps) => {\n const [currentValue, setCurrentValue] = React.useState<string>(props.initialValue ?? '');\n const [showPreview, setShowPreview] = React.useState<boolean>(true);\n const [editor, setEditor] = React.useState<InitializedEditorType | null>(null);\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props.sdk?.window?.updateHeight('100%' as any);\n }, []);\n\n // refresh editor right after dialog is opened to avoid disappearing effect\n React.useEffect(() => {\n setTimeout(() => {\n editor?.setFullsize();\n editor?.refresh();\n }, 150);\n }, [editor]);\n\n const actions = React.useMemo(() => {\n return createMarkdownActions({ sdk: props.sdk, editor, locale: props.locale });\n }, [editor]);\n\n actions.closeZenMode = () => {\n props.onClose({\n value: currentValue,\n cursor: editor?.getCursor(),\n });\n };\n\n const direction = props.sdk.locales.direction[props.locale] ?? 'ltr';\n\n return (\n <div className={styles.root} data-test-id=\"zen-mode-markdown-editor\">\n <div className={styles.topSplit}>\n <MarkdownToolbar mode=\"zen\" disabled={false} canUploadAssets={false} actions={actions} />\n </div>\n\n <div\n className={cx(styles.editorSplit, {\n [styles.editorSplitFullscreen]: showPreview === false,\n })}>\n <MarkdownTextarea\n mode=\"zen\"\n visible\n disabled={false}\n direction={direction}\n onReady={(editor) => {\n editor.setContent(props.initialValue ?? '');\n editor.setReadOnly(false);\n setEditor(editor);\n editor.focus();\n editor.events.onChange((value: string) => {\n setCurrentValue(value);\n props.saveValueToSDK(value);\n });\n }}\n />\n </div>\n {showPreview && (\n <div className={styles.previewSplit}>\n <MarkdownPreview\n direction={direction}\n mode=\"zen\"\n value={currentValue}\n previewComponents={props.previewComponents}\n />\n </div>\n )}\n {showPreview && <div className={styles.separator} />}\n {showPreview && (\n <button\n className={cx(styles.button, styles.hideButton)}\n aria-label=\"Hide preview\"\n onClick={() => {\n setShowPreview(false);\n }}>\n <ChevronRightIcon variant=\"muted\" size=\"tiny\" className={styles.icon} />\n </button>\n )}\n {!showPreview && (\n <button\n className={cx(styles.button, styles.showButton)}\n aria-label=\"Show preview\"\n onClick={() => {\n setShowPreview(true);\n }}>\n <ChevronLeftIcon variant=\"muted\" size=\"tiny\" className={styles.icon} />\n </button>\n )}\n <div className={styles.bottomSplit}>\n <MarkdownBottomBar>\n <MarkdownHelp\n onClick={() => {\n openCheatsheetModal(props.sdk.dialogs);\n }}\n />\n </MarkdownBottomBar>\n </div>\n </div>\n );\n};\n\nexport const openZenMode = (\n dialogs: DialogsAPI,\n options: { initialValue: string; locale: string }\n): Promise<ZenModeResult> => {\n return dialogs.openCurrent({\n width: 'zen' as any, // eslint-disable-line @typescript-eslint/no-explicit-any\n shouldCloseOnEscapePress: false,\n minHeight: '100vh',\n shouldCloseOnOverlayClick: false,\n parameters: {\n type: MarkdownDialogType.zenMode,\n initialValue: options.initialValue,\n locale: options.locale,\n } as MarkdownDialogsParams,\n });\n};\n","import get from 'lodash/get';\nimport isObject from 'lodash/isObject';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Asset = any;\n\ntype LinkWithMedia = {\n title: string;\n asset: Asset;\n url: string;\n isLocalized: boolean;\n isFallback: boolean;\n asMarkdown: string;\n};\n\ntype Locales = {\n localeCode: string;\n fallbackCode: string | undefined;\n defaultLocaleCode: string;\n};\n\nfunction normalizeWhiteSpace(str: string) {\n if (str) {\n return str.trim().replace(/\\s{2,}/g, ' ');\n } else {\n return str;\n }\n}\n\nfunction removeExtension(str: string) {\n return str.replace(/\\.\\w+$/g, '');\n}\n\nfunction fileNameToTitle(str: string) {\n return normalizeWhiteSpace(removeExtension(str).replace(/_/g, ' '));\n}\n\nfunction makeAssetLink(\n asset: Asset,\n { localeCode, fallbackCode, defaultLocaleCode }: Locales\n): LinkWithMedia | null {\n const localizedFile = get(asset, ['fields', 'file', localeCode]);\n const fallbackFile = fallbackCode ? get(asset, ['fields', 'file', fallbackCode]) : null;\n const defaultFile = get(asset, ['fields', 'file', defaultLocaleCode]);\n const file:\n | {\n url: string;\n fileName: string;\n }\n | undefined = localizedFile || fallbackFile || defaultFile;\n\n if (isObject(file) && file.url) {\n const title: string =\n get(asset, ['fields', 'title', localeCode]) ||\n get(asset, ['fields', 'title', fallbackCode || '']) ||\n get(asset, ['fields', 'title', defaultLocaleCode]) ||\n fileNameToTitle(file.fileName);\n\n return {\n title,\n asset,\n url: file.url,\n // is normally localized and we should not warn about this file\n isLocalized: Boolean(localizedFile),\n // was fallback value used\n // if it was not localized normally, and we did not used a fallback\n // it means we used a default locale - we filter empty values\n isFallback: Boolean(fallbackFile),\n // todo: tranform using fromHostname\n asMarkdown: `![${title}](${file.url})`,\n };\n } else {\n return null;\n }\n}\n\nexport async function insertAssetLinks(assets: Array<Asset>, locales: Locales) {\n // check whether do we have some assets, which don't have\n // a version in this field's locale\n const otherLocales = assets.filter((asset) => {\n return !get(asset, ['fields', 'file', locales.localeCode]);\n });\n\n const linksWithMeta = assets\n .map((asset) => makeAssetLink(asset, locales))\n // remove empty links\n .filter((asset) => asset !== null) as LinkWithMedia[];\n\n // if there have values from fallback/default locales, we need to\n // provide user a warning so we show him modal\n if (otherLocales.length > 0) {\n const fallbackAssets = linksWithMeta\n // we don't want to warn about normally localized files\n .filter(({ isLocalized }) => !isLocalized)\n .map(({ title, isFallback, asset }) => {\n const code = isFallback ? locales.fallbackCode : locales.defaultLocaleCode;\n return {\n title,\n thumbnailUrl: asset.fields.file[code as string].url,\n thumbnailAltText: title,\n description: isFallback ? `Fallback locale (${code})` : `Default locale (${code})`,\n asset: asset,\n };\n });\n\n return {\n fallbacks: fallbackAssets,\n links: linksWithMeta,\n };\n }\n return {\n links: linksWithMeta,\n };\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define, @typescript-eslint/no-explicit-any */\n\nimport extend from 'lodash/extend';\nimport isString from 'lodash/isString';\nimport isObject from 'lodash/isObject';\nimport max from 'lodash/max';\n// eslint-disable-next-line\nimport isFinite from 'lodash/isFinite';\n// eslint-disable-next-line\nimport forEach from 'lodash/forEach';\n\nfunction extractTitle(title: string) {\n title = title || '';\n title = title.replace(/^ *('|\"|\\()*/, '');\n title = title.replace(/('|\"|\\))* *$/, '');\n return title;\n}\n\nfunction head(text: string) {\n return text.split(' ').shift();\n}\n\nfunction tail(text: string) {\n const segments = text.split(' ');\n segments.shift();\n return segments.join(' ');\n}\n\nconst PROCESSORS = {\n inline: function (match: any) {\n return {\n match: match[0],\n text: match[1],\n href: head(match[2]),\n title: extractTitle(tail(match[2])),\n };\n },\n ref: function (match: any) {\n return {\n match: match[0],\n text: match[1],\n id: match[2],\n };\n },\n label: function (match: any) {\n return {\n match: match[0],\n id: match[1],\n href: head(match[2]),\n title: extractTitle(tail(match[2])),\n };\n },\n};\n\nconst REGEXS = {\n inline: /\\[([^\\r\\n[\\]]+)]\\(([^\\r\\n)]+)\\)/,\n ref: /\\[([^\\r\\n[\\]]+)] ?\\[([^\\r\\n[\\]]+)]/,\n label: /^ {0,3}\\[([^\\r\\n[\\]]+)]:\\s+(.+)$/,\n};\nexport const findInline = makeFinder('inline');\nexport const findRefs = makeFinder('ref');\nexport const findLabels = makeFinder('label');\n\nexport function convertInlineToRef(text: string) {\n let id = findMaxLabelId(text);\n\n forEach(findInline(text), (inline) => {\n id += 1;\n text = text.replace(inline.match, buildRef(inline, id));\n text += '\\n' + buildLabel(inline, id);\n });\n\n return text;\n}\n\nfunction mergeLabels(text: string): any {\n const byHref: any = {};\n const byOldId: any = {};\n\n forEach(findLabels(text), (label) => {\n const alreadyAdded = byHref[label.href];\n const current = extend({}, label);\n\n if (!alreadyAdded) {\n byHref[current.href] = current;\n } else if (hasTitle(current) && !hasTitle(alreadyAdded)) {\n alreadyAdded.title = current.title;\n }\n\n byOldId[current.id] = alreadyAdded || current;\n });\n\n return {\n byHref: byHref,\n byOldId: byOldId,\n };\n}\n\nexport function rewriteRefs(text: string) {\n const merged = mergeLabels(text);\n const hrefToRefId: any = {};\n const labels: any[] = [];\n const rewrites: any[] = [];\n let i = 1;\n\n // 1. compose list of labels with new ids, in order\n forEach(findRefs(text), (ref) => {\n const oldLabel = merged.byOldId[ref.id];\n if (!oldLabel) {\n return;\n }\n const href = oldLabel.href;\n let newRefId = hrefToRefId[href];\n\n if (!newRefId) {\n hrefToRefId[href] = newRefId = i;\n i += 1;\n labels.push(extend({ newId: newRefId }, oldLabel));\n }\n\n // 1b. prepare rewrites to be applied, with new label ids\n rewrites.push(extend({ newId: newRefId }, ref));\n });\n\n // 2. remove all labels!\n forEach(findLabels(text), (label) => {\n text = text.replace(label.match, '');\n });\n\n // 3. remove whitespace from the end of text\n text = text.replace(/[\\r\\n\\s]*$/, '');\n text += '\\n\\n';\n\n // 4. apply rewrites\n forEach(rewrites, (ref) => {\n text = text.replace(ref.match, buildRef(ref, ref.newId));\n });\n\n // 5. print new labels at the end of text\n forEach(labels, (label) => {\n text += '\\n' + buildLabel(label, label.newId);\n });\n\n return text;\n}\n\n/**\n * Finding stuff\n */\n\nfunction makeFinder(type: 'inline' | 'ref' | 'label'): (text: string) => Array<any> {\n return (text: string) => findAll(text, type).map(PROCESSORS[type] as any);\n}\n\nexport function findMaxLabelId(textOrLabels: any): number {\n if (isString(textOrLabels)) {\n textOrLabels = findLabels(textOrLabels);\n }\n\n const ids = textOrLabels\n .map((x: any) => x.id)\n .map((x: any) => parseInt(x, 10))\n .filter((x: any) => isFinite(x) && x > 0);\n\n return ids.length > 0 ? max(ids) || 0 : 0;\n}\n\nfunction findAll(text: string, type: 'inline' | 'ref' | 'label') {\n const flags = 'g' + (type === 'label' ? 'm' : '');\n const matches = [];\n const re = new RegExp(REGEXS[type].source, flags);\n let found = re.exec(text);\n\n while (found) {\n matches.push(found);\n re.lastIndex = found.index + found[0].length;\n found = re.exec(text);\n }\n\n return matches;\n}\n\n/**\n * Other utilities\n */\n\nfunction hasTitle(link: { title: string }) {\n return isObject(link) && isString(link.title) && link.title.length > 0;\n}\n\nfunction buildLabel(link: { href: string; title: string }, id: number) {\n let markup = '[' + id + ']: ' + link.href;\n if (hasTitle(link)) {\n markup += ' \"' + link.title + '\"';\n }\n return markup;\n}\n\nfunction buildRef(link: { text: string }, id: number) {\n return '[' + link.text + '][' + id + ']';\n}\n","import { InitializedEditorType } from './components/MarkdownTextarea/MarkdownTextarea';\nimport { KnownSDK } from '@contentful/app-sdk';\nimport { openInsertLinkDialog } from './dialogs/InsertLinkModalDialog';\nimport { openInsertSpecialCharacter } from './dialogs/SpecialCharacterModalDialog';\nimport { openInsertTableDialog } from './dialogs/InsertTableModalDialog';\nimport { openEmbedExternalContentDialog } from './dialogs/EmdebExternalContentDialog';\nimport { openConfirmInsertAsset } from './dialogs/ConfirmInsertAssetModalDialog';\nimport { openZenMode } from './dialogs/ZenModeModalDialog';\nimport { insertAssetLinks } from './utils/insertAssetLinks';\nimport * as LinkOrganizer from './utils/linkOrganizer';\n\nexport function createMarkdownActions(props: {\n sdk: KnownSDK;\n editor: InitializedEditorType | null;\n locale: string;\n}) {\n const { sdk, editor, locale } = props;\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const insertAssetsWithConfirmation = async (assets: Array<Object> | null) => {\n if (assets) {\n const { links, fallbacks } = await insertAssetLinks(assets, {\n localeCode: locale,\n defaultLocaleCode: sdk.locales.default,\n fallbackCode: sdk.locales.fallbacks[locale],\n });\n if (links && links.length > 0) {\n if (fallbacks) {\n const insertAnyway = await openConfirmInsertAsset(sdk.dialogs, {\n locale: locale,\n assets: fallbacks,\n });\n if (!insertAnyway) {\n throw Error('User decided to not use fallbacks');\n }\n }\n return links.map((link) => link.asMarkdown).join('\\n\\n');\n }\n }\n return '';\n };\n\n return {\n headings: {\n h1: () => {\n editor?.actions.h1();\n },\n h2: () => {\n editor?.actions.h2();\n },\n h3: () => {\n editor?.actions.h3();\n },\n },\n simple: {\n italic: () => {\n editor?.actions.italic();\n },\n bold: () => {\n editor?.actions.bold();\n },\n quote: () => {\n editor?.actions.quote();\n },\n ol: () => {\n editor?.actions.ol();\n },\n ul: () => {\n editor?.actions.ul();\n },\n strike: () => {\n editor?.actions.strike();\n },\n code: () => {\n editor?.actions.code();\n },\n hr: () => {\n editor?.actions.hr();\n },\n indent: () => {\n editor?.actions.indent();\n },\n dedent: () => {\n editor?.actions.dedent();\n },\n },\n history: {\n undo: () => {\n editor?.actions.undo();\n },\n redo: () => {\n editor?.actions.redo();\n },\n },\n insertLink: async () => {\n if (!editor) {\n return;\n }\n editor.usePrimarySelection();\n const selectedText = editor.getSelectedText();\n const result = await openInsertLinkDialog(sdk.dialogs, { selectedText });\n if (result) {\n editor.actions.link(result.url, selectedText || result.text, result.title);\n }\n },\n insertSpecialCharacter: async () => {\n if (!editor) {\n return;\n }\n const result = await openInsertSpecialCharacter(sdk.dialogs);\n if (result) {\n editor.insert(result);\n }\n },\n insertTable: async () => {\n if (!editor) {\n return;\n }\n const result = await openInsertTableDialog(sdk.dialogs);\n if (result) {\n editor.actions.table(result);\n }\n },\n organizeLinks: () => {\n if (!editor) {\n return;\n }\n let text = editor.getContent();\n if (!text) {\n return;\n }\n text = LinkOrganizer.convertInlineToRef(text);\n text = LinkOrganizer.rewriteRefs(text);\n editor.setContent(text);\n sdk.notifier.success('All your links are now references at the bottom of your document.');\n },\n embedExternalContent: async () => {\n if (!editor) {\n return;\n }\n const result = await openEmbedExternalContentDialog(sdk.dialogs);\n if (result) {\n editor.insert(result);\n }\n },\n addNewMedia: async () => {\n if (!editor) {\n return;\n }\n try {\n const { entity: asset } = (await sdk.navigator.openNewAsset({\n slideIn: { waitForClose: true },\n })) as any; // eslint-disable-line @typescript-eslint/no-explicit-any\n\n const markdownLinks = await insertAssetsWithConfirmation([asset]);\n editor.insert(markdownLinks);\n } finally {\n editor.focus();\n }\n },\n linkExistingMedia: async () => {\n if (!editor) {\n return;\n }\n try {\n const assets = await sdk.dialogs.selectMultipleAssets({\n locale: locale,\n });\n const markdownLinks = await insertAssetsWithConfirmation(assets);\n editor.insert(markdownLinks);\n } finally {\n editor.focus();\n }\n },\n openZenMode: async () => {\n if (!editor) {\n return;\n }\n const result = await openZenMode(sdk.dialogs, {\n initialValue: editor.getContent(),\n locale: props.locale,\n });\n\n editor.setContent(result.value);\n\n if (result.cursor) {\n editor.setCursor(result.cursor);\n }\n\n editor.focus();\n },\n closeZenMode: () => {\n // do nothing\n // this method is overwritten in dialog app\n },\n };\n}\n","import React from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { FieldConnector } from '@contentful/field-editor-shared';\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { MarkdownTabs } from './components/MarkdownTabs';\nimport { MarkdownToolbar } from './components/MarkdownToolbar';\nimport { MarkdownTextarea } from './components/MarkdownTextarea/MarkdownTextarea';\nimport { InitializedEditorType } from './components/MarkdownTextarea/MarkdownTextarea';\nimport { MarkdownBottomBar, MarkdownHelp } from './components/MarkdownBottomBar';\nimport { MarkdownTab, PreviewComponents } from './types';\nimport { openCheatsheetModal } from './dialogs/CheatsheetModalDialog';\nimport { MarkdownPreview } from './components/MarkdownPreview';\nimport { MarkdownConstraints } from './components/MarkdownConstraints';\nimport { createMarkdownActions } from './MarkdownActions';\n\nconst styles = {\n container: css({\n display: 'flex',\n flexDirection: 'column',\n fontFamily: tokens.fontStackPrimary,\n }),\n};\n\nexport interface MarkdownEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n /**\n * Minimum height to set for the markdown text area and preview\n */\n minHeight?: string | number;\n\n sdk: FieldExtensionSDK;\n\n previewComponents?: PreviewComponents;\n onReady?: Function;\n}\n\nexport function MarkdownEditor(\n props: MarkdownEditorProps & {\n disabled: boolean;\n initialValue: string | null | undefined;\n saveValueToSDK: Function;\n }\n) {\n const [currentValue, setCurrentValue] = React.useState<string>(props.initialValue ?? '');\n const [selectedTab, setSelectedTab] = React.useState<MarkdownTab>('editor');\n const [editor, setEditor] = React.useState<InitializedEditorType | null>(null);\n const [canUploadAssets, setCanUploadAssets] = React.useState<boolean>(false);\n\n React.useEffect(() => {\n if (editor && props.onReady) {\n props.onReady(editor);\n // fix: http://codemirror.977696.n3.nabble.com/codemirror-content-not-visible-in-bootstrap-modal-td4026988.html\n setTimeout(() => {\n editor.refresh();\n }, 1);\n }\n }, [editor]);\n\n React.useEffect(() => {\n props.sdk.access.can('create', 'Asset').then((value) => {\n setCanUploadAssets(value);\n });\n }, []);\n\n React.useEffect(() => {\n if (editor) {\n editor.setReadOnly(props.disabled);\n }\n }, [editor, props.disabled]);\n\n const isActionDisabled = editor === null || props.disabled || selectedTab !== 'editor';\n\n const direction = props.sdk.locales.direction[props.sdk.field.locale] ?? 'ltr';\n\n const actions = React.useMemo(() => {\n return createMarkdownActions({ sdk: props.sdk, editor, locale: props.sdk.field.locale });\n }, [editor]);\n\n const openMarkdownHelp = React.useCallback(() => {\n openCheatsheetModal(props.sdk.dialogs);\n }, []);\n\n return (\n <div className={styles.container} data-test-id=\"markdown-editor\">\n <MarkdownTabs\n active={selectedTab}\n onSelect={(tab) => {\n setSelectedTab(tab);\n }}\n />\n <MarkdownToolbar\n mode=\"default\"\n disabled={isActionDisabled}\n canUploadAssets={canUploadAssets}\n actions={actions}\n />\n <MarkdownTextarea\n minHeight={props.minHeight}\n mode=\"default\"\n visible={selectedTab === 'editor'}\n disabled={isActionDisabled}\n direction={direction}\n onReady={(editor) => {\n editor.setContent(props.initialValue ?? '');\n editor.setReadOnly(props.disabled);\n setEditor(editor);\n editor.events.onChange((value: string) => {\n // Trim empty lines\n const trimmedValue = value.replace(/^\\s+$/gm, '');\n props.saveValueToSDK(trimmedValue);\n setCurrentValue(value);\n });\n }}\n />\n {selectedTab === 'preview' && (\n <MarkdownPreview\n direction={direction}\n minHeight={props.minHeight}\n mode=\"default\"\n value={currentValue}\n previewComponents={props.previewComponents}\n />\n )}\n <MarkdownBottomBar>\n <MarkdownHelp onClick={openMarkdownHelp} />\n </MarkdownBottomBar>\n <MarkdownConstraints sdk={props.sdk} value={currentValue} />\n </div>\n );\n}\n\nexport function MarkdownEditorConnected(props: MarkdownEditorProps) {\n return (\n <FieldConnector<string>\n throttle={300}\n field={props.sdk.field}\n isInitiallyDisabled={props.isInitiallyDisabled}>\n {({ value, disabled, setValue, externalReset }) => {\n // on external change reset component completely and init with initial value again\n return (\n <MarkdownEditor\n {...props}\n key={`markdown-editor-${externalReset}`}\n initialValue={value}\n disabled={disabled}\n saveValueToSDK={setValue}\n />\n );\n }}\n </FieldConnector>\n );\n}\n","import React from 'react';\nimport {\n FieldExtensionSDK,\n DialogExtensionSDK,\n OpenCustomWidgetOptions,\n} from '@contentful/app-sdk';\nimport { ModalDialogLauncher } from '@contentful/field-editor-shared';\nimport { MarkdownDialogsParams, PreviewComponents } from '../types';\n\nimport { CheatsheetModalDialog } from './CheatsheetModalDialog';\nimport { SpecialCharacterModalDialog } from './SpecialCharacterModalDialog';\nimport { MarkdownDialogType } from '../types';\nimport { InsertLinkModal, InsertLinkModalResult } from './InsertLinkModalDialog';\nimport { InsertTableModal, InsertTableModalResult } from './InsertTableModalDialog';\nimport { ConfirmInsertAssetModalDialog } from './ConfirmInsertAssetModalDialog';\nimport {\n EmbedExternalContentModal,\n EmbedExternalContentModalResult,\n} from './EmdebExternalContentDialog';\nimport { ZenModeModalDialog, ZenModeResult } from './ZenModeModalDialog';\n\nexport const openMarkdownDialog =\n (sdk: FieldExtensionSDK, previewComponents?: PreviewComponents) =>\n (\n options: OpenCustomWidgetOptions & {\n parameters?: MarkdownDialogsParams;\n }\n ) => {\n if (options.parameters?.type === MarkdownDialogType.cheatsheet) {\n return ModalDialogLauncher.openDialog(options, () => {\n return <CheatsheetModalDialog />;\n });\n } else if (options.parameters?.type === MarkdownDialogType.insertLink) {\n const selectedText = options.parameters.selectedText;\n return ModalDialogLauncher.openDialog<InsertLinkModalResult>(options, ({ onClose }) => {\n return <InsertLinkModal selectedText={selectedText} onClose={onClose} />;\n });\n } else if (options.parameters?.type === MarkdownDialogType.insertSpecialCharacter) {\n return ModalDialogLauncher.openDialog(options, ({ onClose }) => {\n return <SpecialCharacterModalDialog onClose={onClose} />;\n });\n } else if (options.parameters?.type === MarkdownDialogType.insertTable) {\n return ModalDialogLauncher.openDialog<InsertTableModalResult>(options, ({ onClose }) => {\n return <InsertTableModal onClose={onClose} />;\n });\n } else if (options.parameters?.type === MarkdownDialogType.embedExternalContent) {\n return ModalDialogLauncher.openDialog<EmbedExternalContentModalResult>(\n options,\n ({ onClose }) => {\n return <EmbedExternalContentModal onClose={onClose} />;\n }\n );\n } else if (options.parameters?.type === MarkdownDialogType.confirmInsertAsset) {\n const locale = options.parameters.locale;\n const assets = options.parameters.assets;\n return ModalDialogLauncher.openDialog<boolean>(options, ({ onClose }) => {\n return <ConfirmInsertAssetModalDialog onClose={onClose} locale={locale} assets={assets} />;\n });\n } else if (options.parameters?.type === MarkdownDialogType.zenMode) {\n const initialValue = options.parameters.initialValue;\n const locale = options.parameters.locale;\n return ModalDialogLauncher.openDialog<ZenModeResult>(options, ({ onClose }) => {\n return (\n <ZenModeModalDialog\n saveValueToSDK={(value) => {\n if (value) {\n return sdk?.field?.setValue(value);\n }\n return sdk?.field?.removeValue();\n }}\n onClose={onClose}\n initialValue={initialValue}\n locale={locale}\n sdk={sdk as unknown as DialogExtensionSDK}\n previewComponents={previewComponents}\n />\n );\n });\n }\n return Promise.reject();\n };\n","import React from 'react';\nimport { DialogExtensionSDK } from '@contentful/app-sdk';\nimport { MarkdownDialogsParams, MarkdownDialogType } from '../types';\nimport { SpecialCharacterModalDialog } from './SpecialCharacterModalDialog';\nimport { CheatsheetModalDialog } from './CheatsheetModalDialog';\nimport { InsertLinkModal } from './InsertLinkModalDialog';\nimport { InsertTableModal } from './InsertTableModalDialog';\nimport { EmbedExternalContentModal } from './EmdebExternalContentDialog';\nimport { ConfirmInsertAssetModalDialog } from './ConfirmInsertAssetModalDialog';\nimport { ZenModeModalDialog } from './ZenModeModalDialog';\n\nexport const renderMarkdownDialog = (\n sdk: DialogExtensionSDK & { parameters: { invocation: MarkdownDialogsParams } }\n) => {\n const parameters = sdk.parameters.invocation;\n if (parameters.type === MarkdownDialogType.cheatsheet) {\n sdk.window.startAutoResizer();\n return <CheatsheetModalDialog />;\n } else if (parameters.type === MarkdownDialogType.insertLink) {\n const selectedText = parameters.selectedText;\n sdk.window.startAutoResizer();\n return <InsertLinkModal selectedText={selectedText} onClose={sdk.close} />;\n } else if (parameters.type === MarkdownDialogType.insertSpecialCharacter) {\n sdk.window.startAutoResizer();\n return <SpecialCharacterModalDialog onClose={sdk.close} />;\n } else if (parameters.type === MarkdownDialogType.insertTable) {\n sdk.window.startAutoResizer();\n return <InsertTableModal onClose={sdk.close} />;\n } else if (parameters.type === MarkdownDialogType.embedExternalContent) {\n sdk.window.startAutoResizer();\n return <EmbedExternalContentModal onClose={sdk.close} />;\n } else if (parameters.type === MarkdownDialogType.confirmInsertAsset) {\n const locale = parameters.locale;\n const assets = parameters.assets;\n sdk.window.startAutoResizer();\n return <ConfirmInsertAssetModalDialog onClose={sdk.close} locale={locale} assets={assets} />;\n } else if (parameters.type === MarkdownDialogType.zenMode) {\n const locale = parameters.locale;\n const initialValue = parameters.initialValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sdk.window.updateHeight('100%' as any);\n return (\n <ZenModeModalDialog\n onClose={sdk.close}\n saveValueToSDK={() => {\n // don't save changes in dialog mode\n }}\n initialValue={initialValue}\n locale={locale}\n sdk={sdk}\n />\n );\n }\n\n return <div />;\n};\n"],"names":["styles","root","css","display","zIndex","flexDirection","justifyContent","overflow","marginBottom","fontSize","tokens","fontSizeM","tab","cursor","color","gray700","padding","spacingXs","minWidth","border","gray400","borderTopLeftRadius","borderRadiusSmall","borderTopRightRadius","marginLeft","textAlign","backgroundColor","gray100","borderBottomColor","outline","boxShadow","boxShadowHeavy","transition","transitionEasingDefault","transitionDurationShort","inactiveTab","background","gray200","gray300","MarkdownTabItem","props","React","className","cx","isActive","onClick","onSelect","name","onKeyDown","e","keyCode","tabIndex","role","testId","children","MarkdownTabs","active","srOnly","position","width","height","margin","clip","Zen","label","rest","viewBox","d","Strikethrough","Indent","Dedent","Cubes","Table","SpecialChar","OrgLinks","Undo","Redo","HeadingSelector","handleMenuClick","heading","Menu","Trigger","List","Item","InsertLinkSelector","canAddNew","MultipleMediaContextMenu","Button","isDisabled","disabled","startIcon","AssetIcon","size","variant","onSelectExisting","placement","endIcon","ChevronDownIcon","onAddNew","Number","zIndexWorkbenchHeader","button","spacing2Xs","marginRight","icon","fill","verticalAlign","zenButton","zenButtonPressed","tooltip","zIndexTooltip","ToolbarButton","forwardRef","ref","tooltipPlace","otherProps","Tooltip","content","displayName","MainButtons","mode","actions","headings","HeadingIcon","simple","bold","FormatBoldIcon","italic","FormatItalicIcon","quote","QuoteIcon","ul","ListBulletedIcon","ol","ListNumberedIcon","insertLink","LinkIcon","AdditionalButtons","strike","Icons","code","CodeIcon","hr","HorizontalRuleIcon","indent","dedent","embedExternalContent","insertTable","insertSpecialCharacter","organizeLinks","history","undo","redo","DefaultMarkdownToolbar","useState","showAdditional","setShowAdditional","Flex","MoreHorizontalIcon","linkExistingMedia","addNewMedia","canUploadAssets","openZenMode","marginTop","ZenMarkdownToolbar","closeZenMode","MarkdownToolbar","memo","userAgent","get","window","platform","ctrlKey","tests","ios","test","MSStream","getCtrlKey","stripUnit","value","cssRegex","matchedValue","match","Error","parseFloat","create","host","options","direction","fixedHeight","readOnly","initializedWithValue","LF","EDITOR_SIZE","min","max","shift","cm","CodeMirror","lineNumbers","undoDepth","matchBrackets","lineWrapping","lineSeparator","theme","tabSize","indentWithTabs","indentUnit","autoRefresh","setSize","on","throttle","assureHeight","setOption","Tab","replaceSelectedText","getIndentation","Enter","Esc","getInputField","blur","destroy","disable","enable","attachEvent","addKeyShortcuts","setValue","cmd","moveToLineBeginning","moveIfNotEmpty","restoreCursor","moveToLineEnd","usePrimarySelection","focus","select","selectBackwards","selectAll","execCommand","extendSelectionBy","insertAtCursor","insertAtLineBeginning","wrapSelection","removeFromLineBeginning","removeSelectedText","getCursor","setCursor","getSelection","getLine","isLineEmpty","getSelectedText","getSelectionLength","getCurrentLine","getCurrentLineNumber","getCurrentCharacter","getCurrentLineLength","lineStartsWith","getNl","getValue","getLinesCount","getHistorySize","setReadOnly","getHistory","setHistory","setFullsize","refresh","toTextArea","current","heightAtLine","lastLine","next","fn","throttleInterval","map","addKeyMap","transform","acc","key","line","ch","clearHistory","lineNumber","defaultToCurrentLineNumber","character","noFocus","scroll","undefined","from","to","setSelection","skip","len","getPos","modifier","prop","selection","text","replaceRange","initialCh","length","wrapper","replacement","anchor","head","charCount","replaceSelection","selections","listSelections","somethingSelected","n","lineCount","startsWith","repeat","getOption","which","historySize","what","Array","join","createPrefixToggleFn","prefix","editor","marker","emptyText","selectedText","endsWith","markerLength","textWithoutMarker","slice","HEADER_CHAR","quoteToggleFn","codeToggleFn","modifySelection","link","h1","toggleHeader","h2","h3","ulToggleFn","olToggleFn","table","nl","markup","indentation","config","tableTemplate","rows","cols","url","title","linkTitle","toggleFn","isList","forLineIn","listNumber","getListNumber","prepareListWhitespace","cb","lines","maxNumber","minNumber","lineRange","range","forEach","i","isCurrentLineEmpty","isPrevLineEmpty","isNextLineEmpty","linesToInsert","result","nrows","ncols","cellWidth","cell","separatorCell","baseRow","separatorRow","times","bodyRows","replace","headerRow","concat","level","currentHeader","selectHeader","removedCh","diff","header","createMarkdownEditor","CodeMirrorWrapper","wrapChange","api","Commands","hasUndo","hasRedo","events","onScroll","onChange","onPaste","insert","getContent","setContent","clear","B","I","lineHeightDefault","spacingL","fontStackMonospace","gray900","red600","gray600","blue500","framed","maxHeight","zen","maxWidth","MarkdownTextarea","hostRef","useRef","setEditor","useEffect","Object","assign","minHeight","onReady","style","visible","borderBottomLeftRadius","borderBottomRightRadius","spacingS","help","fontSizeS","MarkdownHelp","Paragraph","TextLink","as","MarkdownBottomBar","MarkdownDialogType","flexColumnContainer","flexWrap","flexColumn","flexGrow","verticalDivider","borderRight","gray500","paddingRight","spacing3Xl","spacing2Xl","preview","unOrderedListPreview","listStyleType","orderedListPreview","paddingLeft","fontSize2Xl","fontSizeXl","fontSizeL","helpItem","alignItems","spacingXl","helpLink","flexRowContainer","CheatsheetModalDialog","ModalContent","Heading","href","target","rel","openCheatsheetModal","dialogs","openCurrent","shouldCloseOnEscapePress","shouldCloseOnOverlayClick","parameters","type","cheatsheet","fontStackPrimary","spacingM","overflowY","rtl","MarkdownLink","Embedly","MarkdownPreview","cleanHTML","useMemo","DOMPurify","sanitize","Markdown","overrides","a","component","previewComponents","embedly","MarkdownConstraints","constraints","ConstraintsUtils","fromFieldValidations","sdk","field","validations","checkConstraint","makeChecker","CharCounter","CharValidation","runtime","exports","Op","prototype","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","defineProperty","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","makeInvokeMethod","tryCatch","arg","call","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","constructor","defineIteratorMethods","method","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","Promise","iter","done","state","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","reverse","pop","iterable","iteratorMethod","isNaN","skipTempReset","prev","charAt","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","Function","urlRegex","isValidUrl","InsertLinkModal","onClose","mainInputRef","setText","setUrl","touched","setTouched","setTitle","onInsert","urlIsValid","Form","onSubmit","FormControl","id","Boolean","Label","TextInput","isInvalid","placeholder","maxLength","HelpText","ValidationMessage","ModalControls","openInsertLinkDialog","params","specialCharacters","desc","buttonPanel","charButton","selectedCharButton","SpecialCharacterModalDialog","selectedCharacter","setSelectedCharacter","Text","lineHeight","String","fromCharCode","char","openInsertSpecialCharacter","InsertTableModal","setRows","setColumns","rowsAreValid","inRange","colsAreValid","isRequired","pattern","autoComplete","openInsertTableDialog","widthFiledGroup","radioButtonGroup","paddingTop","radioButton","makeEmbedlyLink","selectedUnit","attachSocial","s","percent","px","isWidthValid","unit","EmbedExternalContentModal","setUnit","setUrlValidity","setWidth","setAttachSocial","Radio","isChecked","Checkbox","fontColor","openEmbedExternalContentDialog","ConfirmInsertAssetModalDialog","assets","locale","localesNumber","EntityList","description","thumbnailUrl","thumbnailAltText","openConfirmInsertAsset","confirmInsertAsset","left","right","top","bottom","topSplit","bottomSplit","editorSplit","overflowX","editorSplitFullscreen","previewSplit","separator","hideButton","showButton","borderRightWidth","ZenModeModalDialog","initialValue","currentValue","setCurrentValue","showPreview","setShowPreview","updateHeight","setTimeout","createMarkdownActions","locales","saveValueToSDK","ChevronRightIcon","ChevronLeftIcon","zenMode","normalizeWhiteSpace","str","trim","removeExtension","fileNameToTitle","makeAssetLink","asset","localeCode","fallbackCode","defaultLocaleCode","localizedFile","fallbackFile","defaultFile","file","isObject","fileName","isLocalized","isFallback","asMarkdown","insertAssetLinks","otherLocales","filter","linksWithMeta","fallbackAssets","fields","fallbacks","links","extractTitle","split","tail","segments","PROCESSORS","inline","REGEXS","findInline","makeFinder","findRefs","findLabels","convertInlineToRef","findMaxLabelId","buildRef","buildLabel","mergeLabels","byHref","byOldId","alreadyAdded","extend","hasTitle","rewriteRefs","merged","hrefToRefId","labels","rewrites","oldLabel","newRefId","newId","findAll","textOrLabels","isString","ids","x","parseInt","isFinite","flags","matches","re","RegExp","source","found","exec","lastIndex","index","insertAssetsWithConfirmation","insertAnyway","LinkOrganizer","notifier","success","navigator","openNewAsset","slideIn","waitForClose","entity","markdownLinks","selectMultipleAssets","container","fontFamily","MarkdownEditor","selectedTab","setSelectedTab","setCanUploadAssets","access","can","isActionDisabled","openMarkdownHelp","useCallback","trimmedValue","MarkdownEditorConnected","FieldConnector","isInitiallyDisabled","externalReset","openMarkdownDialog","ModalDialogLauncher","openDialog","removeValue","renderMarkdownDialog","invocation","startAutoResizer","close"],"mappings":"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"}
1
+ {"version":3,"file":"field-editor-markdown.esm.js","sources":["../src/components/MarkdownTabs.tsx","../src/components/icons.tsx","../src/components/HeadingSelector.tsx","../src/components/InsertLinkSelector.tsx","../src/components/MarkdownToolbar.tsx","../src/utils/userAgent.ts","../src/components/MarkdownTextarea/CodeMirrorWrapper.ts","../src/components/MarkdownTextarea/MarkdownCommands.ts","../src/components/MarkdownTextarea/createMarkdownEditor.ts","../src/components/MarkdownTextarea/MarkdownTextarea.tsx","../src/components/MarkdownBottomBar.tsx","../src/types.ts","../src/dialogs/CheatsheetModalDialog.tsx","../src/components/MarkdownPreview.tsx","../src/components/MarkdownConstraints.tsx","../../../node_modules/regenerator-runtime/runtime.js","../src/utils/isValidUrl.ts","../src/dialogs/InsertLinkModalDialog.tsx","../src/utils/specialCharacters.ts","../src/dialogs/SpecialCharacterModalDialog.tsx","../src/dialogs/InsertTableModalDialog.tsx","../src/dialogs/EmdebExternalContentDialog.tsx","../src/dialogs/ConfirmInsertAssetModalDialog.tsx","../src/dialogs/ZenModeModalDialog.tsx","../src/utils/insertAssetLinks.ts","../src/utils/linkOrganizer.ts","../src/MarkdownActions.ts","../src/MarkdownEditor.tsx","../src/dialogs/openMarkdownDialog.tsx","../src/dialogs/renderMarkdownDialog.tsx"],"sourcesContent":["import React from 'react';\nimport { css, cx } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { MarkdownTab } from '../types';\n\nconst styles = {\n root: css({\n display: 'flex',\n zIndex: 10,\n flexDirection: 'row',\n justifyContent: 'flex-end',\n overflow: 'hidden',\n marginBottom: '-1px',\n fontSize: tokens.fontSizeM,\n }),\n tab: css({\n cursor: 'pointer',\n color: tokens.gray700,\n padding: tokens.spacingXs,\n minWidth: '70px',\n border: `1px solid ${tokens.gray400}`,\n borderTopLeftRadius: tokens.borderRadiusSmall,\n borderTopRightRadius: tokens.borderRadiusSmall,\n marginLeft: tokens.spacingXs,\n textAlign: 'center',\n backgroundColor: tokens.gray100,\n borderBottomColor: tokens.gray100,\n outline: 'none',\n '&:focus': {\n boxShadow: tokens.boxShadowHeavy,\n },\n transition: `all ${tokens.transitionEasingDefault} ${tokens.transitionDurationShort}`,\n }),\n inactiveTab: css({\n background: tokens.gray200,\n borderBottomColor: tokens.gray400,\n '&:hover': {\n background: tokens.gray300,\n },\n }),\n};\n\ninterface MarkdownTabsProps {\n active: MarkdownTab;\n onSelect: (selected: MarkdownTab) => void;\n}\n\nfunction MarkdownTabItem(props: {\n isActive: boolean;\n name: MarkdownTab;\n testId: string;\n onSelect: (name: MarkdownTab) => void;\n children: React.ReactNode;\n}) {\n return (\n <div\n className={cx(styles.tab, {\n [styles.inactiveTab]: props.isActive === false,\n })}\n onClick={() => {\n props.onSelect(props.name);\n }}\n onKeyDown={(e) => {\n if (e.keyCode === 13) {\n props.onSelect(props.name);\n }\n }}\n tabIndex={0}\n role=\"tab\"\n aria-controls={props.name}\n aria-selected={props.isActive === true}\n data-test-id={props.testId}>\n {props.children}\n </div>\n );\n}\n\nexport function MarkdownTabs(props: MarkdownTabsProps) {\n return (\n <div className={styles.root}>\n <MarkdownTabItem\n name=\"editor\"\n onSelect={props.onSelect}\n isActive={props.active === 'editor'}\n testId=\"markdown-tab-md\">\n Editor\n </MarkdownTabItem>\n <MarkdownTabItem\n name=\"preview\"\n onSelect={props.onSelect}\n isActive={props.active === 'preview'}\n testId=\"markdown-tab-preview\">\n Preview\n </MarkdownTabItem>\n </div>\n );\n}\n","import React from 'react';\nimport { css } from 'emotion';\n\ntype IconProps = {\n width?: number;\n height?: number;\n className?: string;\n label: string;\n};\n\nconst srOnly = css({\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: '0',\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n border: '0',\n});\n\nexport const Zen = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M1411 541l-355 355 355 355 144-144q29-31 70-14 39 17 39 59v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39 14-69l144-144-355-355-355 355 144 144q31 30 14 69-17 40-59 40H192q-26 0-45-19t-19-45v-448q0-42 40-59 39-17 69 14l144 144 355-355-355-355-144 144q-19 19-45 19-12 0-24-5-40-17-40-59V192q0-26 19-45t45-19h448q42 0 59 40 17 39-14 69L541 381l355 355 355-355-144-144q-31-30-14-69 17-40 59-40h448q26 0 45 19t19 45v448q0 42-39 59-13 5-25 5-26 0-45-19z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const Strikethrough = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M1760 896q14 0 23 9t9 23v64q0 14-9 23t-23 9H32q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h1728zM483 832q-28-35-51-80-48-98-48-188 0-181 134-309 133-127 393-127 50 0 167 19 66 12 177 48 10 38 21 118 14 123 14 183 0 18-5 45l-12 3-84-6-14-2q-50-149-103-205-88-91-210-91-114 0-182 59-67 58-67 146 0 73 66 140t279 129q69 20 173 66 58 28 95 52H483zm507 256h411q7 39 7 92 0 111-41 212-23 56-71 104-37 35-109 81-80 48-153 66-80 21-203 21-114 0-195-23l-140-40q-57-16-72-28-8-8-8-22v-13q0-108-2-156-1-30 0-68l2-37v-44l102-2q15 34 30 71t22.5 56 12.5 27q35 57 80 94 43 36 105 57 59 22 132 22 64 0 139-27 77-26 122-86 47-61 47-129 0-84-81-157-34-29-137-71z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const Indent = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M352 832q0 14-9 23L55 1143q-9 9-23 9-13 0-22.5-9.5T0 1120V544q0-13 9.5-22.5T32 512q14 0 23 9l288 288q9 9 9 23zm1440 480v192q0 13-9.5 22.5t-22.5 9.5H32q-13 0-22.5-9.5T0 1504v-192q0-13 9.5-22.5T32 1280h1728q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5H672q-13 0-22.5-9.5T640 1120V928q0-13 9.5-22.5T672 896h1088q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5T1760 768H672q-13 0-22.5-9.5T640 736V544q0-13 9.5-22.5T672 512h1088q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5T1760 384H32q-13 0-22.5-9.5T0 352V160q0-13 9.5-22.5T32 128h1728q13 0 22.5 9.5t9.5 22.5z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const Dedent = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M384 544v576q0 13-9.5 22.5T352 1152q-14 0-23-9L41 855q-9-9-9-23t9-23l288-288q9-9 23-9 13 0 22.5 9.5T384 544zm1408 768v192q0 13-9.5 22.5t-22.5 9.5H32q-13 0-22.5-9.5T0 1504v-192q0-13 9.5-22.5T32 1280h1728q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5H672q-13 0-22.5-9.5T640 1120V928q0-13 9.5-22.5T672 896h1088q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5T1760 768H672q-13 0-22.5-9.5T640 736V544q0-13 9.5-22.5T672 512h1088q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5T1760 384H32q-13 0-22.5-9.5T0 352V160q0-13 9.5-22.5T32 128h1728q13 0 22.5 9.5t9.5 22.5z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const Cubes = ({ label, ...rest }: IconProps) => (\n <svg width={18} height={14} viewBox=\"0 0 2304 1792\" {...rest}>\n <path d=\"M640 1632l384-192v-314l-384 164v342zm-64-454l404-173-404-173-404 173zm1088 454l384-192v-314l-384 164v342zm-64-454l404-173-404-173-404 173zm-448-293l384-165V454l-384 164v267zm-64-379l441-189-441-189-441 189zm1088 518v416q0 36-19 67t-52 47l-448 224q-25 14-57 14t-57-14l-448-224q-4-2-7-4-2 2-7 4l-448 224q-25 14-57 14t-57-14L71 1554q-33-16-52-47t-19-67v-416q0-38 21.5-70T78 906l434-186V320q0-38 21.5-70t56.5-48l448-192q23-10 50-10t50 10l448 192q35 16 56.5 48t21.5 70v400l434 186q36 16 57 48t21 70z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const Table = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const SpecialChar = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M1360 1307l35 159q3 12-3 22.5t-17 14.5l-5 1q-4 2-10.5 3.5t-16 4.5-21.5 5.5-25.5 5-30 5-33.5 4.5-36.5 3-38.5 1q-234 0-409-130.5T511 1054h-95q-13 0-22.5-9.5T384 1022V909q0-13 9.5-22.5T416 877h66q-2-57 1-105h-67q-14 0-23-9t-9-23V626q0-14 9-23t23-9h98q67-210 243.5-338T1158 128q102 0 194 23 11 3 20 15 6 11 3 24l-43 159q-3 13-14 19.5t-24 2.5l-4-1q-4-1-11.5-2.5L1261 364l-22.5-3.5-26-3-29-2.5-29.5-1q-126 0-226 64T778 594h468q16 0 25 12 10 12 7 26l-24 114q-5 26-32 26H734q-3 37 0 105h459q15 0 25 12 9 12 6 27l-24 112q-2 11-11 18.5t-20 7.5H782q48 117 149.5 185.5T1160 1308q18 0 36-1.5t33.5-3.5 29.5-4.5 24.5-5 18.5-4.5l12-3 5-2q13-5 26 2 12 7 15 21z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const OrgLinks = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M1792 1248v320q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-320q0-40 28-68t68-28h96V960H960v192h96q40 0 68 28t28 68v320q0 40-28 68t-68 28H736q-40 0-68-28t-28-68v-320q0-40 28-68t68-28h96V960H320v192h96q40 0 68 28t28 68v320q0 40-28 68t-68 28H96q-40 0-68-28t-28-68v-320q0-40 28-68t68-28h96V960q0-52 38-90t90-38h512V640h-96q-40 0-68-28t-28-68V224q0-40 28-68t68-28h320q40 0 68 28t28 68v320q0 40-28 68t-68 28h-96v192h512q52 0 90 38t38 90v192h96q40 0 68 28t28 68z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const Undo = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M1664 896q0 156-61 298t-164 245-245 164-298 61q-172 0-327-72.5T305 1387q-7-10-6.5-22.5t8.5-20.5l137-138q10-9 25-9 16 2 23 12 73 95 179 147t225 52q104 0 198.5-40.5T1258 1258t109.5-163.5T1408 896t-40.5-198.5T1258 534t-163.5-109.5T896 384q-98 0-188 35.5T548 521l137 138q31 30 14 69-17 40-59 40H192q-26 0-45-19t-19-45V256q0-42 40-59 39-17 69 14l130 129q107-101 244.5-156.5T896 128q156 0 298 61t245 164 164 245 61 298z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n\nexport const Redo = ({ label, ...rest }: IconProps) => (\n <svg width={14} height={14} viewBox=\"0 0 1792 1792\" {...rest}>\n <path d=\"M1664 256v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39 14-69l138-138q-148-137-349-137-104 0-198.5 40.5T534 534 424.5 697.5 384 896t40.5 198.5T534 1258t163.5 109.5T896 1408q119 0 225-52t179-147q7-10 23-12 15 0 25 9l137 138q9 8 9.5 20.5t-7.5 22.5q-109 132-264 204.5T896 1664q-156 0-298-61t-245-164-164-245-61-298 61-298 164-245 245-164 298-61q147 0 284.5 55.5T1425 340l130-129q29-31 70-14 39 17 39 59z\" />\n <span className={srOnly}>{label}</span>\n </svg>\n);\n","import React from 'react';\nimport { Menu } from '@contentful/f36-components';\nimport { HeadingType } from '../types';\n\nexport const HeadingSelector = (props: {\n children: React.ReactElement;\n onSelect: (heading: HeadingType) => void;\n tooltip?: string;\n}) => {\n const handleMenuClick = (heading: HeadingType) => {\n props.onSelect(heading);\n };\n\n return (\n <Menu>\n <Menu.Trigger>{props.children}</Menu.Trigger>\n <Menu.List>\n <Menu.Item testId=\"markdown-action-button-heading-h1\" onClick={() => handleMenuClick('h1')}>\n Heading 1\n </Menu.Item>\n <Menu.Item testId=\"markdown-action-button-heading-h2\" onClick={() => handleMenuClick('h2')}>\n Heading 2\n </Menu.Item>\n <Menu.Item testId=\"markdown-action-button-heading-h3\" onClick={() => handleMenuClick('h3')}>\n Heading 3\n </Menu.Item>\n </Menu.List>\n </Menu>\n );\n};\n","import React from 'react';\nimport { Menu } from '@contentful/f36-components';\n\nimport { Button } from '@contentful/f36-components';\n\nimport { AssetIcon, ChevronDownIcon } from '@contentful/f36-icons';\n\ninterface InsertLinkSelectorProps {\n onSelectExisting: Function;\n onAddNew: Function;\n canAddNew: boolean;\n disabled: boolean;\n}\n\nexport const InsertLinkSelector = (props: InsertLinkSelectorProps) => {\n if (props.canAddNew) {\n return <MultipleMediaContextMenu {...props} />;\n } else {\n return (\n <Button\n isDisabled={props.disabled}\n startIcon={<AssetIcon />}\n testId=\"markdownEditor.linkExistingAssets\"\n size=\"small\"\n variant=\"secondary\"\n onClick={() => {\n props.onSelectExisting();\n }}>\n Insert media\n </Button>\n );\n }\n};\n\nconst MultipleMediaContextMenu = (props: InsertLinkSelectorProps) => {\n return (\n <Menu placement=\"bottom-end\">\n <Menu.Trigger>\n <Button\n endIcon={<ChevronDownIcon />}\n isDisabled={props.disabled}\n startIcon={<AssetIcon />}\n testId=\"markdownEditor.insertMediaDropdownTrigger\"\n size=\"small\"\n variant=\"secondary\">\n Insert media\n </Button>\n </Menu.Trigger>\n <Menu.List>\n <Menu.Item testId=\"markdownEditor.uploadAssetsAndLink\" onClick={() => props.onAddNew()}>\n Add new media and link\n </Menu.Item>\n <Menu.Item\n testId=\"markdownEditor.linkExistingAssets\"\n onClick={() => props.onSelectExisting()}>\n Link existing media\n </Menu.Item>\n </Menu.List>\n </Menu>\n );\n};\n","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport { css, cx } from 'emotion';\nimport { Button, Flex, Tooltip } from '@contentful/f36-components';\nimport type { ButtonProps } from '@contentful/f36-components';\nimport tokens from '@contentful/f36-tokens';\nimport {\n HeadingIcon,\n FormatBoldIcon,\n FormatItalicIcon,\n QuoteIcon,\n ListBulletedIcon,\n ListNumberedIcon,\n LinkIcon,\n CodeIcon,\n HorizontalRuleIcon,\n MoreHorizontalIcon,\n} from '@contentful/f36-icons';\nimport * as Icons from './icons';\nimport { HeadingSelector } from './HeadingSelector';\nimport { InsertLinkSelector } from './InsertLinkSelector';\nimport { MarkdownActions } from '../types';\n\nconst styles = {\n root: css({\n position: 'relative',\n zIndex: Number(tokens.zIndexWorkbenchHeader),\n border: `1px solid ${tokens.gray400}`,\n backgroundColor: tokens.gray100,\n padding: tokens.spacingXs,\n borderTopLeftRadius: tokens.borderRadiusSmall,\n }),\n button: css({\n height: '30px',\n width: '36px',\n marginLeft: tokens.spacing2Xs,\n marginRight: tokens.spacing2Xs,\n }),\n icon: css({\n fill: tokens.gray700,\n verticalAlign: 'middle',\n }),\n zenButton: css({\n marginLeft: tokens.spacingXs,\n }),\n zenButtonPressed: css({\n backgroundColor: tokens.gray400,\n }),\n tooltip: css({\n zIndex: Number(tokens.zIndexTooltip),\n }),\n};\n\nconst ToolbarButton = React.forwardRef<\n HTMLButtonElement,\n {\n variant?: 'transparent' | 'secondary';\n onClick?: Function;\n tooltipPlace?: 'top' | 'bottom';\n tooltip?: string;\n children: React.ReactNode;\n } & Omit<ButtonProps, 'onClick'>\n>((props, ref) => {\n const {\n tooltip,\n onClick,\n children,\n className,\n variant = 'transparent',\n tooltipPlace = 'top',\n isDisabled = false,\n ...otherProps\n } = props;\n\n const button = (\n <Button\n {...otherProps}\n ref={ref}\n className={cx(styles.button, className)}\n isDisabled={isDisabled}\n onClick={onClick as ButtonProps['onClick']}\n variant={variant}\n size=\"small\">\n {children}\n </Button>\n );\n\n if (tooltip) {\n return (\n <Tooltip className={styles.tooltip} placement={tooltipPlace} content={tooltip}>\n {button}\n </Tooltip>\n );\n }\n\n return button;\n});\nToolbarButton.displayName = 'ToolbarButton';\n\ninterface MarkdownToolbarProps {\n canUploadAssets: boolean;\n disabled: boolean;\n actions: MarkdownActions;\n mode: 'default' | 'zen';\n}\n\nfunction MainButtons(props: MarkdownToolbarProps) {\n const tooltipPlace = props.mode === 'zen' ? 'bottom' : 'top';\n\n return (\n <>\n <HeadingSelector\n onSelect={(heading) => {\n if (heading && props.actions.headings[heading]) {\n props.actions.headings[heading]();\n }\n }}>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-heading\"\n tooltip=\"Headings\"\n tooltipPlace={tooltipPlace}>\n <HeadingIcon aria-label=\"Headings\" className={styles.icon} />\n </ToolbarButton>\n </HeadingSelector>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-bold\"\n tooltip=\"Bold\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.bold}>\n <FormatBoldIcon aria-label=\"Bold\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-italic\"\n tooltip=\"Italic\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.italic}>\n <FormatItalicIcon aria-label=\"Italic\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-quote\"\n tooltip=\"Quote\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.quote}>\n <QuoteIcon aria-label=\"Quote\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-ul\"\n tooltip=\"Unordered list\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.ul}>\n <ListBulletedIcon aria-label=\"Unordered list\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-ol\"\n tooltip=\"Ordered list\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.ol}>\n <ListNumberedIcon aria-label=\"Ordered list\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-link\"\n tooltip=\"Link\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.insertLink}>\n <LinkIcon aria-label=\"Link\" className={styles.icon} />\n </ToolbarButton>\n </>\n );\n}\n\nfunction AdditionalButtons(props: MarkdownToolbarProps) {\n const tooltipPlace = props.mode === 'zen' ? 'bottom' : 'top';\n return (\n <>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-strike\"\n tooltip=\"Strike out\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.strike}>\n <Icons.Strikethrough label=\"Strike out\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-code\"\n tooltip=\"Code block\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.code}>\n <CodeIcon aria-label=\"Code block\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-hr\"\n tooltip=\"Horizontal rule\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.hr}>\n <HorizontalRuleIcon aria-label=\"Horizontal rule\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-indent\"\n tooltip=\"Increase indentation\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.indent}>\n <Icons.Indent label=\"Increase indentation\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-dedent\"\n tooltip=\"Decrease indentation\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.simple.dedent}>\n <Icons.Dedent label=\"Decrease indentation\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-embed\"\n tooltip=\"Embed external content\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.embedExternalContent}>\n <Icons.Cubes label=\"Embed external content\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-table\"\n tooltip=\"Insert table\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.insertTable}>\n <Icons.Table label=\"Insert table\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-special\"\n tooltip=\"Insert special character\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.insertSpecialCharacter}>\n <Icons.SpecialChar label=\"Insert special character\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-organizeLinks\"\n tooltip=\"Organize links\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.organizeLinks}>\n <Icons.OrgLinks label=\"Organize links\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-undo\"\n tooltip=\"Undo\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.history.undo}>\n <Icons.Undo label=\"Undo\" className={styles.icon} />\n </ToolbarButton>\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-redo\"\n tooltip=\"Redo\"\n tooltipPlace={tooltipPlace}\n onClick={props.actions.history.redo}>\n <Icons.Redo label=\"Redo\" className={styles.icon} />\n </ToolbarButton>\n </>\n );\n}\n\nexport function DefaultMarkdownToolbar(props: MarkdownToolbarProps) {\n const [showAdditional, setShowAdditional] = React.useState(false);\n\n return (\n <div className={styles.root}>\n <Flex justifyContent=\"space-between\">\n <Flex>\n <MainButtons {...props} />\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-toggle-additional\"\n tooltip={showAdditional ? 'Hide additional actions' : 'More actions'}\n onClick={() => {\n setShowAdditional(!showAdditional);\n }}>\n <MoreHorizontalIcon className={styles.icon} />\n </ToolbarButton>\n </Flex>\n <Flex>\n <InsertLinkSelector\n disabled={props.disabled}\n onSelectExisting={props.actions.linkExistingMedia}\n onAddNew={props.actions.addNewMedia}\n canAddNew={props.canUploadAssets}\n />\n <ToolbarButton\n isDisabled={props.disabled}\n testId=\"markdown-action-button-zen\"\n variant=\"secondary\"\n onClick={props.actions.openZenMode}\n className={styles.zenButton}>\n <Icons.Zen label=\"Expand\" className={styles.icon} />\n </ToolbarButton>\n </Flex>\n </Flex>\n {showAdditional && (\n <Flex justifyContent=\"space-between\" marginTop=\"spacingXs\">\n <Flex>\n <AdditionalButtons {...props} />\n </Flex>\n </Flex>\n )}\n </div>\n );\n}\n\nexport function ZenMarkdownToolbar(props: MarkdownToolbarProps) {\n return (\n <div className={styles.root}>\n <Flex justifyContent=\"space-between\">\n <Flex>\n <MainButtons {...props} />\n <AdditionalButtons {...props} />\n </Flex>\n <Flex>\n <InsertLinkSelector\n disabled={props.disabled}\n onSelectExisting={props.actions.linkExistingMedia}\n onAddNew={props.actions.addNewMedia}\n canAddNew={props.canUploadAssets}\n />\n <Button\n testId=\"markdown-action-button-zen-close\"\n variant=\"secondary\"\n size=\"small\"\n className={cx(styles.zenButton, styles.zenButtonPressed)}\n onClick={() => {\n props.actions.closeZenMode();\n }}>\n <Icons.Zen label=\"Collapse\" className={styles.icon} />\n </Button>\n </Flex>\n </Flex>\n </div>\n );\n}\n\nexport const MarkdownToolbar = React.memo((props: MarkdownToolbarProps) => {\n if (props.mode === 'zen') {\n return <ZenMarkdownToolbar {...props} />;\n }\n return <DefaultMarkdownToolbar {...props} />;\n});\n\nMarkdownToolbar.displayName = 'MarkdownToolbar';\n","import get from 'lodash/get';\n\nconst userAgent = get(window, 'navigator.userAgent', '');\nconst platform = get(window, 'navigator.platform', '');\n\nlet ctrlKey = 'Ctrl';\n\nconst tests = {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore ignore missing MSStream\n ios: /(iphone os|ipad|iphone|ipod)/i.test(userAgent) && !window.MSStream,\n};\n\nif (tests.ios || /mac(68k|ppc|intel)/i.test(platform)) {\n ctrlKey = 'Cmd';\n}\n\nexport function getCtrlKey() {\n return ctrlKey;\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define, @typescript-eslint/no-explicit-any */\n\nimport transform from 'lodash/transform';\nimport throttle from 'lodash/throttle';\nimport CodeMirror from 'codemirror';\nimport * as userAgent from '../../utils/userAgent';\nimport { EditorDirection } from '../../types';\n\nfunction stripUnit(value: number | string): number {\n if (typeof value !== 'string') return value;\n\n const cssRegex = /^([+-]?(?:\\d+|\\d*\\.\\d+))([a-z]*|%)$/;\n const matchedValue = value.match(cssRegex);\n\n if (!matchedValue) {\n throw new Error(\"Couldn't match unit in given string\");\n }\n\n return parseFloat(value);\n}\n\nexport function create(\n host: HTMLElement,\n options: {\n direction: EditorDirection;\n readOnly: boolean;\n fixedHeight?: number | boolean;\n height?: number | string;\n }\n) {\n const { direction, fixedHeight, height, readOnly } = options || {};\n\n // Set to true if `setValue()` has been called. This is to prevent\n // undoing the initial content.\n let initializedWithValue = false;\n\n const LF = '\\n';\n\n const EDITOR_SIZE = {\n min: height ? stripUnit(height) : 300,\n max: 500,\n shift: 50,\n };\n\n // eslint-disable-next-line\n // @ts-ignore\n const cm = CodeMirror(host, {\n direction,\n readOnly,\n mode: 'markdown',\n lineNumbers: false,\n undoDepth: 200,\n matchBrackets: true,\n lineWrapping: true,\n // When `lineSeparator === null` the document will be split\n // on CRLFs as well as lone CRs and LFs. A single LF will\n // be used as line separator in all output\n lineSeparator: null,\n theme: 'elegant',\n tabSize: 2,\n indentWithTabs: false,\n indentUnit: 2,\n autoRefresh: true,\n });\n\n cm.setSize('100%', EDITOR_SIZE.min);\n\n if (!fixedHeight) {\n cm.on('change', throttle(assureHeight, 150));\n }\n\n cm.setOption('extraKeys', {\n Tab: function () {\n replaceSelectedText(getIndentation());\n },\n Enter: 'newlineAndIndentContinueMarkdownList',\n Esc: () => {\n cm.getInputField().blur();\n },\n });\n\n /**\n * @description\n * Custom API for a CodeMirror instance.\n *\n * An instance wraps a CodeMirror instance and provides a custom interface\n * on top of CodeMirror.\n */\n return {\n destroy,\n disable,\n enable,\n attachEvent,\n addKeyShortcuts,\n setValue,\n cmd,\n moveToLineBeginning,\n moveIfNotEmpty,\n restoreCursor,\n moveToLineEnd,\n usePrimarySelection,\n focus,\n select,\n selectBackwards,\n selectAll: () => cm.execCommand('selectAll'),\n extendSelectionBy,\n insertAtCursor,\n insertAtLineBeginning,\n wrapSelection,\n removeFromLineBeginning,\n removeSelectedText,\n replaceSelectedText,\n getCursor,\n setCursor,\n getSelection,\n getLine,\n isLineEmpty,\n getSelectedText,\n getSelectionLength,\n getCurrentLine,\n getCurrentLineNumber,\n getCurrentCharacter,\n getCurrentLineLength,\n lineStartsWith,\n getIndentation,\n getNl,\n getValue,\n getLinesCount,\n getHistorySize,\n setReadOnly: (value: boolean) => cm.setOption('readOnly', value),\n getHistory: () => cm.getHistory(),\n setHistory: (history: any) => cm.setHistory(history),\n setFullsize: () => {\n cm.setSize('100%', '100%');\n cm.refresh();\n },\n refresh: () => cm.refresh(),\n };\n\n function destroy() {\n // @ts-expect-error\n cm.toTextArea();\n }\n\n function disable() {\n cm.setOption('readOnly', 'nocursor');\n }\n\n function enable() {\n cm.setOption('readOnly', false);\n }\n\n function assureHeight() {\n const current = cm.heightAtLine(cm.lastLine(), 'local') + EDITOR_SIZE.shift;\n let next = current;\n if (current < EDITOR_SIZE.min) {\n next = EDITOR_SIZE.min;\n }\n if (current > EDITOR_SIZE.max) {\n next = EDITOR_SIZE.max;\n }\n cm.setSize('100%', next);\n }\n\n function attachEvent(name: string, fn: Function, throttleInterval: number) {\n if (throttleInterval) {\n fn = throttle(fn as any, throttleInterval);\n }\n cm.on(name, fn as any);\n }\n\n function addKeyShortcuts(map: any) {\n const ctrlKey = userAgent.getCtrlKey();\n cm.addKeyMap(\n transform(\n map,\n (acc, value, key) => {\n // eslint-disable-next-line\n // @ts-ignore\n acc[ctrlKey + '-' + key] = value;\n },\n {}\n )\n );\n }\n\n /**\n * low-level editor manipulation functions\n */\n\n /**\n * @description\n * Sets the content of the editor while preserving the cursor\n * position.\n *\n * If called for the first time it will not record the change in\n * the history.\n */\n function setValue(value?: string) {\n value = value || '';\n if (getValue() === value) {\n return;\n }\n\n // set value, but save cursor position first\n // position will be restored, but w/o focus (third arg)\n const line = getCurrentLineNumber();\n const ch = getCurrentCharacter();\n cm.setValue(value);\n restoreCursor(ch, line, true);\n\n // We do not want to record the initial population in the\n // history. Otherwise it would always be possible to revert to\n // the empty string.\n if (!initializedWithValue) {\n cm.clearHistory();\n initializedWithValue = true;\n }\n }\n\n function cmd(name: string) {\n cm.execCommand(name);\n cm.focus();\n }\n\n function moveToLineBeginning(lineNumber?: number) {\n cm.setCursor({ line: defaultToCurrentLineNumber(lineNumber), ch: 0 });\n cm.focus();\n }\n\n /**\n * @description\n * Insert a new line below the cursor and move to the beginning of\n * that line.\n *\n * Only do this if the editor has content and we are not already on\n * the last line.\n *\n * TODO rename this\n */\n function moveIfNotEmpty() {\n if (getCurrentLineLength() < 1) {\n return;\n }\n\n const next = getCurrentLineNumber() + 1;\n if (cm.lastLine() < next) {\n moveToLineEnd();\n insertAtCursor(getNl());\n }\n\n moveToLineBeginning(next);\n }\n\n function restoreCursor(character: number, lineNumber?: number, noFocus?: boolean) {\n cm.setCursor(defaultToCurrentLineNumber(lineNumber), character, {\n scroll: !noFocus,\n });\n if (!noFocus) {\n cm.focus();\n }\n }\n\n function moveToLineEnd(lineNumber?: number) {\n cm.setCursor({\n line: defaultToCurrentLineNumber(lineNumber),\n ch: getCurrentLineLength(),\n });\n cm.focus();\n }\n\n function defaultToCurrentLineNumber(lineNumber?: number) {\n if (lineNumber === 0 || (lineNumber !== undefined && lineNumber > 0)) {\n return lineNumber;\n }\n return getCurrentLineNumber();\n }\n\n function usePrimarySelection() {\n cmd('singleSelection');\n }\n\n function focus() {\n cm.focus();\n }\n\n function select(from: CodeMirror.Position, to: CodeMirror.Position) {\n cm.setSelection(from, to);\n cm.focus();\n }\n\n function selectBackwards(skip: number, len: number) {\n select(getPos(-skip - len), getPos(-skip));\n\n function getPos(modifier: number) {\n return {\n line: getCurrentLineNumber(),\n ch: getCurrentCharacter() + modifier,\n };\n }\n }\n\n function extendSelectionBy(modifier: number) {\n select(getPos('anchor', 0), getPos('head', modifier));\n\n function getPos(prop: 'anchor' | 'head', modifier: number): CodeMirror.Position {\n const selection = getSelection();\n if (!selection) {\n return { line: 0, ch: 0 };\n }\n return { line: selection[prop].line, ch: selection[prop].ch + modifier };\n }\n }\n\n function insertAtCursor(text: string) {\n cm.replaceRange(text, cm.getCursor());\n cm.focus();\n }\n\n function insertAtLineBeginning(text: string) {\n const initialCh = getCurrentCharacter();\n moveToLineBeginning();\n insertAtCursor(text);\n restoreCursor(initialCh + text.length);\n cm.focus();\n }\n\n function wrapSelection(wrapper: string) {\n const replacement = wrapper + getSelectedText() + wrapper;\n const selection = getSelection();\n if (selection) {\n cm.replaceRange(replacement, selection.anchor, selection?.head);\n cm.focus();\n }\n }\n\n function removeFromLineBeginning(charCount: number) {\n const lineNumber = getCurrentLineNumber();\n cm.replaceRange('', { line: lineNumber, ch: 0 }, { line: lineNumber, ch: charCount });\n cm.focus();\n }\n\n function removeSelectedText() {\n cm.replaceSelection('');\n cm.focus();\n }\n\n /**\n * @description\n * Replace the selected text with the given string.\n *\n * If nothing is selected it will insert the text at the current\n * cursor position\n *\n * The optional `select` parameter controls what will be selected\n * afters wards. By default the cursor will be at the end of the\n * inserted text. You can pass 'around' to select the inserted\n * text.\n */\n function replaceSelectedText(replacement: string, select?: string) {\n cm.replaceSelection(replacement, select);\n cm.focus();\n }\n\n /**\n * low-level editor get/check functions\n */\n\n function getCursor() {\n return cm.getCursor();\n }\n\n function setCursor(cursor: number | CodeMirror.Position) {\n cm.setCursor(cursor);\n }\n\n function getSelection() {\n const selections = cm.listSelections();\n if (!cm.somethingSelected() || !selections || selections.length < 1) {\n return null;\n }\n return selections[0];\n }\n\n function getLine(lineNumber: number) {\n return cm.getLine(lineNumber) || '';\n }\n\n function isLineEmpty(lineNumber?: number) {\n const n = defaultToCurrentLineNumber(lineNumber);\n return n > -1 && getLine(n).length < 1 && n < cm.lineCount();\n }\n\n function getLinesCount() {\n return cm.lineCount();\n }\n\n function getSelectedText() {\n return getSelection() ? cm.getSelection() : '';\n }\n\n function getSelectionLength() {\n return getSelectedText().length;\n }\n\n function getCurrentLine() {\n return getLine(getCurrentLineNumber());\n }\n\n function getCurrentLineNumber() {\n return cm.getCursor().line;\n }\n\n function getCurrentCharacter() {\n return cm.getCursor().ch;\n }\n\n function getCurrentLineLength() {\n return getCurrentLine().length;\n }\n\n function lineStartsWith(text: string) {\n return getCurrentLine().startsWith(text);\n }\n\n function getIndentation() {\n return repeat(' ', cm.getOption('indentUnit') ?? 0);\n }\n\n function getNl(n = 1) {\n if (n < 1) {\n return '';\n }\n return repeat(LF, n);\n }\n\n function getValue() {\n return cm.getValue() || '';\n }\n\n function getHistorySize(which?: 'undo' | 'redo') {\n const history = cm.historySize();\n return which ? history[which] : history;\n }\n\n function repeat(what: string, n: number) {\n return new Array(n + 1).join(what);\n }\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport range from 'lodash/range';\nimport min from 'lodash/min';\nimport max from 'lodash/max';\nimport times from 'lodash/times';\n// eslint-disable-next-line you-dont-need-lodash-underscore/repeat\nimport repeat from 'lodash/repeat';\n\nimport * as CodeMirrorWrapper from './CodeMirrorWrapper';\n\ntype EditorInstanceType = ReturnType<typeof CodeMirrorWrapper.create>;\n\nfunction createPrefixToggleFn(prefix: string) {\n return (editor: EditorInstanceType) => {\n if (editor.lineStartsWith(prefix)) {\n editor.removeFromLineBeginning(prefix.length);\n } else {\n editor.insertAtLineBeginning(prefix);\n }\n };\n}\n\n/**\n * Wraps the current selection with a marker.\n *\n * If nothing is selected it inserts the given text wrapped in the\n * marker and selects the inner text\n *\n * Used b the `bold`, `italic`, and `strike` commands.\n */\nfunction wrapSelection(editor: EditorInstanceType, marker: string, emptyText: string) {\n return () => {\n editor.usePrimarySelection();\n\n // there's a selection - wrap it with inline marker\n if (editor.getSelection()) {\n const selectedText = editor.getSelectedText();\n if (selectedText.startsWith(marker) && selectedText.endsWith(marker)) {\n const markerLength = marker.length;\n const textWithoutMarker = selectedText.slice(\n markerLength,\n selectedText.length - markerLength\n );\n editor.replaceSelectedText(textWithoutMarker);\n } else {\n editor.wrapSelection(marker);\n }\n } else {\n // no selection - insert sample text and select it\n editor.insertAtCursor(marker + emptyText + marker);\n editor.selectBackwards(marker.length, emptyText.length);\n }\n };\n}\n\nconst HEADER_CHAR = '#';\nconst quoteToggleFn = createPrefixToggleFn('> ');\nconst codeToggleFn = createPrefixToggleFn(' ');\n\n/**\n * @description\n * A collection of commands used by the user bound to a\n * CodeMirrorWrapper instance.\n *\n * The command collection only depends on the wrapper instance and is\n * used by UI from code mirror stuff.\n */\nexport function create(editor: EditorInstanceType) {\n return {\n bold: wrapSelection(editor, '__', 'text in bold'),\n italic: wrapSelection(editor, '*', 'text in italic'),\n strike: wrapSelection(editor, '~~', 'striked out'),\n quote: modifySelection(editor, quoteToggleFn),\n code: modifySelection(editor, codeToggleFn),\n link,\n h1: toggleHeader(editor, 1),\n h2: toggleHeader(editor, 2),\n h3: toggleHeader(editor, 3),\n ul: modifySelection(editor, ulToggleFn, true),\n ol: modifySelection(editor, olToggleFn, true),\n undo: function () {\n editor.cmd('undo');\n },\n redo: function () {\n editor.cmd('redo');\n },\n hr,\n indent,\n dedent,\n table,\n };\n\n /**\n * @description\n * Insert a line with `---` below the cursor.\n */\n function hr() {\n editor.moveIfNotEmpty();\n const nl = editor.getNl();\n const markup = nl + '---' + nl + nl;\n editor.insertAtCursor(markup);\n }\n\n /**\n * @description\n * Indent the current line.\n */\n function indent() {\n editor.insertAtLineBeginning(editor.getIndentation());\n }\n\n /**\n * @description\n * Dedent the current line.\n */\n function dedent() {\n const indentation = editor.getIndentation();\n if (editor.lineStartsWith(indentation)) {\n editor.removeFromLineBeginning(indentation.length);\n }\n }\n\n /**\n * @description\n * Insert a markdown table template in a new line.\n */\n function table(config: { rows: number; cols: number }) {\n const nl = editor.getNl();\n editor.moveIfNotEmpty();\n editor.insertAtCursor(nl);\n const line = editor.getCurrentLineNumber();\n editor.insertAtCursor(tableTemplate(config.rows, config.cols).join(nl));\n editor.insertAtCursor(nl + nl);\n editor.restoreCursor(2, line);\n }\n\n /**\n * @description\n * Inserts or replaces the current selection with a markdown link\n */\n function link(url: string, text?: string, title?: string) {\n editor.usePrimarySelection();\n\n const linkTitle = title ? ' \"' + title + '\"' : '';\n\n const link = text ? '[' + text + '](' + url + linkTitle + ')' : '<' + url + '>';\n\n editor.replaceSelectedText(link, 'around');\n }\n}\n\n/**\n * For each line in the selection move to that line and call\n * `toggleFn` with the 1-based index of the line in the selection.\n *\n * If there is no selection we just call `toggleFn(editor)`.\n */\nfunction modifySelection(\n editor: EditorInstanceType,\n toggleFn: (editor: EditorInstanceType, listNumber?: number) => void,\n isList?: boolean\n) {\n return () => {\n editor.usePrimarySelection();\n\n const selection = editor.getSelection();\n if (selection) {\n // there's a selection - toggle list bullet for each line\n // listNumber is 1, 2, 3... and can be used as ol bullet\n forLineIn(selection, (lineNumber: number, listNumber: number) => {\n // TODO move this into forLineIn\n editor.moveToLineBeginning(lineNumber);\n toggleFn(editor, listNumber);\n });\n editor.moveToLineEnd();\n } else {\n // there's no selection - just toggle line prefix\n // but if adding list, add whitespace before and after list\n if (isList && !getListNumber(editor) && !editor.lineStartsWith('- ')) {\n prepareListWhitespace(editor);\n }\n toggleFn(editor);\n }\n };\n}\n\n/**\n * Calls callback for each line number that is in the selection\n *\n * The second argument is the 1-based index of the iteration.\n *\n * @param {CodeMirror.Selection} selection\n * param {function(number)} cb\n */\nfunction forLineIn(\n selection: {\n anchor: CodeMirror.Position;\n head: CodeMirror.Position;\n },\n cb: Function\n) {\n // anchor/head depend on selection direction, so min & max have to be used\n const lines = [selection.anchor.line, selection.head.line];\n const maxNumber = max(lines);\n const minNumber = min(lines);\n const lineRange = range(minNumber || 0, maxNumber !== undefined ? maxNumber + 1 : undefined);\n\n lineRange.forEach((lineNumber, i) => {\n cb(lineNumber, i + 1);\n });\n}\n\nfunction prepareListWhitespace(editor: EditorInstanceType) {\n const line = editor.getCurrentLineNumber();\n\n const isCurrentLineEmpty = editor.isLineEmpty(line);\n\n const isPrevLineEmpty = line > 0 ? editor.isLineEmpty(line - 1) : false;\n const isNextLineEmpty = line < editor.getLinesCount() - 1 ? editor.isLineEmpty(line + 1) : true;\n\n let linesToInsert = isCurrentLineEmpty ? 2 : 4;\n if (isPrevLineEmpty) {\n linesToInsert = linesToInsert - 1;\n }\n if (isNextLineEmpty) {\n linesToInsert = linesToInsert - 1;\n }\n\n editor.moveToLineEnd();\n editor.insertAtCursor(editor.getNl(linesToInsert));\n editor.restoreCursor(0, isCurrentLineEmpty ? line : line + 2);\n}\n\nfunction getListNumber(editor: EditorInstanceType) {\n const result = editor.getCurrentLine().match(/^(\\d+\\. )/);\n return result ? result[1] : null;\n}\n\nfunction ulToggleFn(editor: EditorInstanceType) {\n if (editor.lineStartsWith('- ')) {\n editor.removeFromLineBeginning(2);\n } else {\n const listNumber = getListNumber(editor);\n if (listNumber) {\n editor.removeFromLineBeginning(listNumber.length);\n }\n editor.insertAtLineBeginning('- ');\n }\n}\n\nfunction olToggleFn(editor: EditorInstanceType, n?: number) {\n const listNumber = getListNumber(editor);\n if (listNumber) {\n editor.removeFromLineBeginning(listNumber.length);\n } else {\n if (editor.lineStartsWith('- ')) {\n editor.removeFromLineBeginning(2);\n }\n editor.insertAtLineBeginning((n || 1) + '. ');\n }\n}\n\n/**\n * From a table layout specification build a Markdown table template.\n *\n * Returns the lines as an array.\n * Used by the `table()` command\n *\n * @param {object} config\n * @param {number} rows\n * @param {number} cols\n * @returns {string[]}\n */\nfunction tableTemplate(nrows: number, ncols: number) {\n const cellWidth = new Array(11);\n const cell = ' ' + cellWidth.join(' ') + ' |';\n const separatorCell = ' ' + cellWidth.join('-') + ' |';\n\n let baseRow = '|';\n let separatorRow = '|';\n\n times(ncols, () => {\n baseRow += cell;\n separatorRow += separatorCell;\n });\n\n const bodyRows = range(nrows).map(() => baseRow.replace(/\\| {5}/g, '| Cell'));\n\n const headerRow = baseRow.replace(/\\| {7}/g, '| Header');\n\n return [headerRow, separatorRow].concat(bodyRows);\n}\n\n/**\n * Toggles the header prefix for a given level on the current line.\n *\n * - Removes a header when one of the same level is\n * - Replaces the header if there is one of a different level\n * - Otherwise inserts the header\n */\nfunction toggleHeader(editor: EditorInstanceType, level: number) {\n return () => {\n const initialCh = editor.getCurrentCharacter();\n const currentHeader = selectHeader(editor);\n const prefix = repeat(HEADER_CHAR, level);\n\n // there's no header at the current line - create one\n if (!currentHeader) {\n editor.moveToLineBeginning();\n editor.insertAtCursor(prefix + ' ');\n editor.restoreCursor(initialCh + prefix.length + 1);\n return;\n }\n\n // there's exactly the same header - remove one\n if (editor.getSelectedText() === prefix) {\n editor.extendSelectionBy(1);\n const removedCh = editor.getSelectionLength();\n editor.removeSelectedText();\n editor.restoreCursor(initialCh - removedCh);\n return;\n }\n\n // there's another header at the current line - replace\n const diff = prefix.length - editor.getSelectionLength();\n editor.replaceSelectedText(prefix);\n editor.restoreCursor(initialCh + diff);\n };\n}\n\n/**\n * On the current line select a Markdown header prefix. That is the\n * string at the beginning of the line that consists of up to six `#`.\n *\n * If the selection was successful return the selected string.\n */\nfunction selectHeader(editor: EditorInstanceType) {\n const result = editor.getCurrentLine().match(/^( {0,3})(#{1,6}) /);\n if (!result) {\n return null;\n }\n const indentation = result[1];\n const header = result[2];\n\n editor.select(getPos(0), getPos(header.length));\n return editor.getSelection();\n\n function getPos(modifier: number) {\n return {\n line: editor.getCurrentLineNumber(),\n ch: indentation.length + modifier,\n };\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport * as CodeMirrorWrapper from './CodeMirrorWrapper';\nimport * as Commands from './MarkdownCommands';\nimport { EditorDirection } from '../../types';\n\nexport function createMarkdownEditor(\n host: HTMLElement,\n options: {\n direction: EditorDirection;\n readOnly: boolean;\n fixedHeight?: number | boolean;\n height?: number | string;\n }\n) {\n const editor = CodeMirrorWrapper.create(host, options);\n\n function wrapChange(fn: Function) {\n return (e: any, ch: any) => {\n fn(editor.getValue(), e, ch);\n };\n }\n\n const api = {\n actions: Commands.create(editor),\n history: {\n hasUndo: function () {\n return editor.getHistorySize('undo') > 0;\n },\n hasRedo: function () {\n return editor.getHistorySize('redo') > 0;\n },\n },\n events: {\n onScroll: function (fn: Function) {\n editor.attachEvent('scroll', fn, 150);\n },\n onChange: function (fn: Function) {\n editor.attachEvent('change', wrapChange(fn), 0);\n },\n onPaste: function (fn: Function) {\n editor.attachEvent('paste', fn, 0);\n },\n },\n insert: editor.insertAtCursor,\n focus: editor.focus,\n getContent: editor.getValue,\n destroy: editor.destroy,\n setContent: editor.setValue,\n getSelectedText: editor.getSelectedText,\n usePrimarySelection: editor.usePrimarySelection,\n setReadOnly: editor.setReadOnly,\n selectBackwards: editor.selectBackwards,\n getCursor: editor.getCursor,\n setCursor: editor.setCursor,\n clear: () => editor.setValue(''),\n selectAll: editor.selectAll,\n setFullsize: editor.setFullsize,\n refresh: editor.refresh,\n };\n\n editor.addKeyShortcuts({\n B: api.actions.bold,\n I: api.actions.italic,\n });\n\n return api;\n}\n","import React, { useRef, useEffect, useState } from 'react';\nimport tokens from '@contentful/f36-tokens';\nimport { css, cx } from 'emotion';\nimport { createMarkdownEditor } from './createMarkdownEditor';\nimport { EditorDirection } from '../../types';\n\nexport type InitializedEditorType = ReturnType<typeof createMarkdownEditor>;\n\ntype MarkdownTextareaProps = {\n /**\n * Minimum height to set for the markdown text area\n */\n minHeight?: string | number;\n mode: 'default' | 'zen';\n direction: EditorDirection;\n disabled: boolean;\n visible: boolean;\n onReady: (editor: InitializedEditorType) => void;\n};\n\nconst styles = {\n root: css`\n border: 1px solid ${tokens.gray400};\n border-width: 0 1px;\n overflow-y: auto;\n height: auto;\n min-height: 300px;\n\n .CodeMirror {\n height: auto;\n line-height: ${tokens.lineHeightDefault};\n }\n .CodeMirror-lines {\n color: ${tokens.gray700};\n padding: ${tokens.spacingL};\n }\n .CodeMirror-code {\n font-family: ${tokens.fontStackMonospace};\n font-size: ${tokens.fontSizeM};\n }\n .CodeMirror-scroll {\n min-height: '6rem';\n }\n\n .cm-header {\n color: ${tokens.gray900};\n }\n span.cm-variable-2 {\n color: ${tokens.gray700};\n }\n .cm-header-1 {\n font-size: 1.9em;\n }\n .cm-header-2 {\n font-size: 1.75em;\n }\n .cm-header-3 {\n font-size: 1.6em;\n }\n .cm-header-4 {\n font-size: 1.45em;\n }\n .cm-header-5 {\n font-size: 1.3em;\n }\n .cm-header-6 {\n font-size: 1.15em;\n }\n\n span.cm-tag,\n span.cm-string,\n span.cm-attribute {\n color: ${tokens.red600};\n }\n span.cm-string {\n text-decoration: none !important;\n }\n span.cm-quote,\n span.cm-comment {\n color: ${tokens.gray600};\n }\n span.cm-link,\n span.cm-url {\n color: ${tokens.blue500} !important;\n }\n span.cm-link {\n text-decoration: underline;\n }\n `,\n framed: css({\n '.CodeMirror': {\n maxHeight: '500px',\n },\n }),\n zen: css({\n border: 'none !important',\n '.CodeMirror-lines': {\n maxWidth: '650px',\n margin: '0 auto',\n },\n }),\n disabled: css`\n .CodeMirror {\n background: ${tokens.gray100};\n }\n .CodeMirror-cursors {\n visibility: hidden !important;\n }\n `,\n};\n\nexport const MarkdownTextarea = React.memo((props: MarkdownTextareaProps) => {\n const hostRef = useRef<HTMLDivElement>(null);\n const [editor, setEditor] = useState<InitializedEditorType | null>(null);\n\n useEffect(() => {\n if (hostRef.current) {\n setEditor(\n createMarkdownEditor(\n hostRef.current,\n Object.assign(\n {},\n {\n direction: props.direction,\n readOnly: true,\n },\n props.mode === 'zen'\n ? {\n fixedHeight: true,\n height: '100%',\n }\n : {},\n props.minHeight !== undefined ? { height: props.minHeight } : {}\n )\n )\n );\n }\n }, []);\n\n useEffect(() => {\n if (editor) {\n props.onReady(editor);\n }\n }, [editor]);\n\n const className = cx(\n styles.root,\n props.minHeight !== undefined ? css({ minHeight: props.minHeight }) : undefined,\n props.mode === 'default' ? styles.framed : styles.zen,\n props.disabled && styles.disabled\n );\n\n return (\n <div\n className={className}\n ref={hostRef}\n data-test-id=\"markdown-textarea\"\n style={{ display: props.visible ? 'block' : 'none' }}\n />\n );\n});\n\nMarkdownTextarea.displayName = 'MarkdownTextarea';\n","import React from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nimport { TextLink, Paragraph } from '@contentful/f36-components';\n\nconst styles = {\n root: css({\n display: 'flex',\n justifyContent: 'space-between',\n background: tokens.gray100,\n border: `1px solid ${tokens.gray400}`,\n borderBottomLeftRadius: tokens.borderRadiusSmall,\n borderBottomRightRadius: tokens.borderRadiusSmall,\n padding: `${tokens.spacingXs} ${tokens.spacingS}`,\n }),\n help: css({\n color: tokens.gray700,\n fontSize: tokens.fontSizeS,\n button: {\n fontSize: tokens.fontSizeS,\n },\n }),\n};\n\nexport function MarkdownCounter(props: { words: number; characters: number }) {\n return (\n <Paragraph marginBottom=\"none\" className={styles.help}>\n {props.words} {props.words !== 1 ? 'words' : 'word'}, {props.characters}{' '}\n {props.characters !== 1 ? 'characters' : 'character'}\n </Paragraph>\n );\n}\n\nexport function MarkdownHelp(props: { onClick: () => void }) {\n return (\n <Paragraph marginBottom=\"none\" className={styles.help}>\n Format your text like a pro with the{' '}\n <TextLink\n as=\"button\"\n testId=\"open-markdown-cheatsheet-button\"\n onClick={() => {\n props.onClick();\n }}>\n markdown cheatsheet\n </TextLink>\n .\n </Paragraph>\n );\n}\n\nexport function MarkdownBottomBar(props: { children: React.ReactNode }) {\n return <div className={styles.root}>{props.children}</div>;\n}\n","export type MarkdownTab = 'editor' | 'preview';\n\nexport type HeadingType = 'h1' | 'h2' | 'h3';\n\nexport type EditorDirection = 'ltr' | 'rtl';\n\nexport enum MarkdownDialogType {\n cheatsheet = 'markdown-cheatsheet',\n insertLink = 'markdown-insertLink',\n insertSpecialCharacter = 'markdown-insertSpecialCharacter',\n insertTable = 'markdown-insertTable',\n embedExternalContent = 'markdown-embedExternalContent',\n confirmInsertAsset = 'markdown-confirmInsertAsset',\n zenMode = 'markdown-zenMode',\n}\n\nexport type MarkdownDialogsParams =\n | {\n type: MarkdownDialogType.zenMode;\n initialValue: string;\n locale: string;\n }\n | {\n type: MarkdownDialogType.cheatsheet;\n }\n | {\n type: MarkdownDialogType.insertLink;\n selectedText?: string;\n }\n | {\n type: MarkdownDialogType.insertSpecialCharacter;\n }\n | {\n type: MarkdownDialogType.insertTable;\n }\n | {\n type: MarkdownDialogType.embedExternalContent;\n }\n | {\n type: MarkdownDialogType.confirmInsertAsset;\n locale: string;\n assets: Array<{\n title: string;\n description: string;\n thumbnailUrl: string;\n thumbnailAltText: string;\n }>;\n };\n\nexport type MarkdownActions = {\n simple: {\n bold: Function;\n italic: Function;\n quote: Function;\n ol: Function;\n ul: Function;\n strike: Function;\n code: Function;\n hr: Function;\n indent: Function;\n dedent: Function;\n };\n headings: {\n h1: Function;\n h2: Function;\n h3: Function;\n };\n history: {\n undo: Function;\n redo: Function;\n };\n insertLink: Function;\n embedExternalContent: Function;\n insertTable: Function;\n insertSpecialCharacter: Function;\n linkExistingMedia: Function;\n addNewMedia: Function;\n organizeLinks: Function;\n openZenMode: Function;\n closeZenMode: Function;\n};\n\nexport type PreviewComponents = {\n embedly?: React.ComponentType<{ url: string }>;\n};\n","import React from 'react';\nimport { css, cx } from 'emotion';\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport { ModalContent } from '@contentful/f36-components';\nimport tokens from '@contentful/f36-tokens';\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\n\nimport { TextLink, Heading } from '@contentful/f36-components';\n\nconst styles = {\n flexColumnContainer: css({\n display: 'flex',\n flexWrap: 'nowrap',\n }),\n flexColumn: css({\n flexGrow: 1,\n }),\n verticalDivider: css({\n borderRight: `1px solid ${tokens.gray500}`,\n paddingRight: tokens.spacing3Xl,\n marginRight: tokens.spacing2Xl,\n }),\n preview: css({\n display: 'inline-block',\n paddingRight: tokens.spacingL,\n width: '50%',\n }),\n unOrderedListPreview: css({\n listStyleType: 'disc',\n marginLeft: tokens.spacingS,\n }),\n orderedListPreview: css({\n listStyleType: 'decimal',\n marginLeft: tokens.spacingS,\n }),\n markup: css({\n display: 'inline-block',\n color: tokens.gray600,\n paddingLeft: tokens.spacingL,\n width: '50%',\n }),\n h1: css({\n fontSize: tokens.fontSize2Xl,\n }),\n h2: css({\n fontSize: tokens.fontSizeXl,\n }),\n h3: css({\n fontSize: tokens.fontSizeL,\n }),\n helpItem: css({\n marginBottom: tokens.spacingS,\n display: 'flex',\n alignItems: 'flex-end',\n height: tokens.spacingXl,\n }),\n helpLink: css({\n margin: 'auto',\n }),\n flexRowContainer: css({\n display: 'flex',\n width: '100%',\n justifyContent: 'center',\n marginTop: tokens.spacingXl,\n }),\n};\n\nexport const CheatsheetModalDialog = () => {\n return (\n <ModalContent testId=\"markdown-cheatsheet-dialog-content\">\n <div className={styles.flexColumnContainer}>\n <div className={cx(styles.flexColumn, styles.verticalDivider)}>\n <div className={styles.helpItem}>\n <Heading marginBottom=\"none\" as=\"h1\" className={cx(styles.preview, styles.h1)}>\n H1\n </Heading>\n <div className={styles.markup}># heading</div>\n </div>\n <div className={styles.helpItem}>\n <Heading marginBottom=\"none\" as=\"h2\" className={cx(styles.preview, styles.h2)}>\n H2\n </Heading>\n <div className={styles.markup}>## heading</div>\n </div>\n <div className={styles.helpItem}>\n <Heading marginBottom=\"none\" as=\"h3\" className={cx(styles.preview, styles.h3)}>\n H3\n </Heading>\n <div className={styles.markup}>### heading</div>\n </div>\n <div className={styles.helpItem}>\n <strong className={styles.preview}>bold</strong>\n <div className={styles.markup}>__text__</div>\n </div>\n <div className={styles.helpItem}>\n <em className={styles.preview}>italic</em>\n <div className={styles.markup}>*text*</div>\n </div>\n <div className={styles.helpItem}>\n <div className={styles.preview}>strikethrough</div>\n <div className={styles.markup}>~~text~~</div>\n </div>\n <div className={styles.helpItem}>\n <TextLink as=\"button\" className={styles.preview}>\n Link\n </TextLink>\n <div className={styles.markup}>[text](url)</div>\n </div>\n </div>\n <div className={styles.flexColumn}>\n <div className={styles.helpItem}>\n <div className={styles.preview}>Image</div>\n <div className={styles.markup}>![alt-text](url)</div>\n </div>\n <div className={styles.helpItem}>\n <div className={styles.preview}>Unordered list</div>\n <div className={styles.markup}>* list item</div>\n </div>\n <div className={styles.helpItem}>\n <div className={styles.preview}>\n <div>Ordered list</div>\n </div>\n <div className={styles.markup}>1. list item</div>\n </div>\n <div className={styles.helpItem}>\n <div className={styles.preview}>\n <div>Blockquote</div>\n </div>\n <div className={styles.markup}>&gt; quote</div>\n </div>\n <div className={styles.helpItem}>\n <div className={styles.preview}>code span</div>\n <div className={styles.markup}>`code here`</div>\n </div>\n <div className={styles.helpItem}>\n <div className={styles.preview}>code block</div>\n <div className={styles.markup}>```code here```</div>\n </div>\n </div>\n </div>\n <div className={styles.flexRowContainer}>\n <TextLink\n className={styles.helpLink}\n href=\"https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n View the full GitHub-flavored Markdown syntax help (opens in a new window)\n </TextLink>\n </div>\n </ModalContent>\n );\n};\n\nexport const openCheatsheetModal = (dialogs: DialogsAPI): Promise<void> => {\n return dialogs.openCurrent({\n title: 'Markdown formatting help',\n width: 'large',\n minHeight: '415px',\n shouldCloseOnEscapePress: true,\n shouldCloseOnOverlayClick: true,\n parameters: {\n type: MarkdownDialogType.cheatsheet,\n } as MarkdownDialogsParams,\n });\n};\n","import React from 'react';\nimport Markdown from 'markdown-to-jsx';\nimport tokens from '@contentful/f36-tokens';\nimport DOMPurify from 'dompurify';\nimport { css, cx } from 'emotion';\nimport { EditorDirection, PreviewComponents } from '../types';\n\nconst styles = {\n root: css`\n border: 1px solid ${tokens.gray400};\n border-width: 0 1px;\n word-wrap: break-word;\n overflow-wrap: break-word;\n min-height: 300px;\n padding: ${tokens.spacingL};\n font-size: ${tokens.fontSizeM};\n font-family: ${tokens.fontStackPrimary};\n line-height: ${tokens.lineHeightDefault};\n color: ${tokens.gray700};\n white-space: pre-line;\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: ${tokens.spacingL};\n margin-bottom: ${tokens.spacingM};\n color: ${tokens.gray900};\n }\n\n h1:first-child,\n h2:first-child,\n h3:first-child,\n h4:first-child,\n h5:first-child,\n h6:first-child {\n margin-top: 0;\n }\n\n h1 {\n font-size: 1.9em;\n }\n h2 {\n font-size: 1.75em;\n }\n h3 {\n font-size: 1.6em;\n }\n h4 {\n font-size: 1.45em;\n }\n h5 {\n font-size: 1.3em;\n }\n h6 {\n font-size: 1.15em;\n }\n\n p {\n margin-top: 0;\n margin-bottom: ${tokens.spacingM};\n }\n\n ul,\n ol {\n margin: ${tokens.spacingS} 0;\n padding-left: ${tokens.spacingM};\n }\n ul > li {\n list-style-type: disc;\n margin-bottom: 0;\n }\n\n ol > li {\n list-style-type: decimal;\n margin-bottom: 0;\n }\n\n table {\n table-layout: fixed;\n border-right-width: 0;\n border-bottom-width: 0;\n width: 80%;\n margin: ${tokens.spacingM} auto;\n border-spacing: 0;\n border-collapse: collapse;\n border: 1px solid ${tokens.gray300};\n }\n\n table th,\n table td {\n padding: 5px;\n border-left-width: 0;\n border-top-width: 0;\n }\n\n table th {\n background: ${tokens.gray200};\n }\n\n table td {\n border: 1px solid ${tokens.gray300};\n }\n\n a {\n color: ${tokens.blue500};\n }\n\n hr {\n margin-top: ${tokens.spacingL};\n margin-bottom: ${tokens.spacingL};\n height: 1px;\n background-color: ${tokens.gray300};\n border: none;\n }\n\n blockquote {\n border-left: 4px solid ${tokens.gray200};\n padding-left: ${tokens.spacingL};\n margin: 0;\n margin-top: ${tokens.spacingM};\n font-style: italic;\n }\n\n img {\n margin: ${tokens.spacingM} auto;\n display: block;\n max-width: 80%;\n max-height: 250px;\n }\n\n pre code {\n font-size: ${tokens.fontSizeS};\n font-family: ${tokens.fontStackMonospace};\n }\n\n .embedly-card {\n margin: ${tokens.spacingM} auto;\n display: block;\n }\n `,\n framed: css({\n height: '100%',\n maxHeight: '500px',\n overflowY: 'auto',\n }),\n zen: css({\n maxWidth: '650px',\n margin: '0 auto',\n border: 'none !important',\n }),\n rtl: css({\n direction: 'rtl',\n }),\n};\n\ntype MarkdownPreviewProps = {\n /**\n * Minimum height to set for the markdown preview\n */\n minHeight?: string | number;\n mode: 'default' | 'zen';\n direction: EditorDirection;\n value: string;\n previewComponents?: PreviewComponents;\n};\n\nfunction MarkdownLink(props: {\n href: string;\n title: string;\n className?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n children: any;\n Embedly?: React.SFC<{ url: string }>;\n}) {\n const { Embedly, children, ...rest } = props;\n\n if (props.className === 'embedly-card' && Embedly) {\n return <Embedly url={props.href} />;\n }\n\n return (\n <a {...rest} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n );\n}\n\nexport const MarkdownPreview = React.memo((props: MarkdownPreviewProps) => {\n const className = cx(\n styles.root,\n props.minHeight !== undefined ? css({ minHeight: props.minHeight }) : undefined,\n props.mode === 'default' ? styles.framed : styles.zen,\n props.direction === 'rtl' ? styles.rtl : undefined\n );\n\n // See the list of allowed Tags here:\n // https://github.com/cure53/DOMPurify/blob/main/src/tags.js#L3-L121\n const cleanHTML = React.useMemo(() => {\n return DOMPurify.sanitize(props.value);\n }, [props.value]);\n\n return (\n <div className={className} data-test-id=\"markdown-preview\">\n <Markdown\n options={{\n overrides: {\n a: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n component: MarkdownLink as any,\n props: {\n Embedly: props.previewComponents?.embedly,\n },\n },\n },\n }}>\n {cleanHTML}\n </Markdown>\n </div>\n );\n});\n\nMarkdownPreview.displayName = 'MarkdownPreview';\n","import React from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { ConstraintsUtils, CharCounter, CharValidation } from '@contentful/field-editor-shared';\n\nconst styles = {\n root: css({\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: tokens.fontSizeM,\n marginTop: tokens.spacingXs,\n color: tokens.gray700,\n }),\n};\n\nexport function MarkdownConstraints(props: { sdk: FieldExtensionSDK; value: string }) {\n const constraints = ConstraintsUtils.fromFieldValidations(\n props.sdk.field.validations,\n props.sdk.field.type as 'Text'\n );\n\n const checkConstraint = ConstraintsUtils.makeChecker(constraints);\n\n return (\n <div className={styles.root}>\n <CharCounter value={props.value} checkConstraint={checkConstraint} />\n <CharValidation constraints={constraints} />\n </div>\n );\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","export const urlRegex =\n /^(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-/]))?$/;\n\nexport function isValidUrl(value: string) {\n return urlRegex.test(value);\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\nimport {\n ModalContent,\n ModalControls,\n Button,\n Form,\n FormControl,\n TextInput,\n} from '@contentful/f36-components';\nimport { isValidUrl } from '../utils/isValidUrl';\n\ntype InsertLinkModalPositiveResult = { url: string; text: string; title: string };\nexport type InsertLinkModalResult = InsertLinkModalPositiveResult | false | undefined;\n\ntype InsertLinkModalProps = {\n selectedText?: string;\n onClose: (result: InsertLinkModalResult) => void;\n};\n\nexport const InsertLinkModal = ({ selectedText, onClose }: InsertLinkModalProps) => {\n const mainInputRef = useRef<HTMLInputElement>(null);\n const [text, setText] = useState(selectedText || '');\n const [url, setUrl] = useState('');\n const [touched, setTouched] = useState(false);\n const [title, setTitle] = useState('');\n const onInsert = (values: InsertLinkModalPositiveResult) => onClose(values);\n\n const urlIsValid = isValidUrl(url);\n\n useEffect(() => {\n if (mainInputRef?.current?.focus) {\n mainInputRef.current.focus();\n }\n }, [mainInputRef]);\n\n return (\n <>\n <ModalContent testId=\"insert-link-modal\">\n <Form onSubmit={() => onInsert({ url, text, title })}>\n <FormControl id=\"link-text-field\" isDisabled={Boolean(selectedText)}>\n <FormControl.Label>Link text</FormControl.Label>\n <TextInput\n name=\"link-text\"\n value={text}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n setText(e.target.value);\n }}\n testId=\"link-text-field\"\n />\n </FormControl>\n\n <FormControl id=\"target-url-field\" isInvalid={touched && !urlIsValid}>\n <FormControl.Label>Target URL</FormControl.Label>\n <TextInput\n name=\"target-url\"\n value={url}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n setUrl(e.target.value);\n setTouched(true);\n }}\n placeholder=\"https://\"\n maxLength={2100}\n testId=\"target-url-field\"\n ref={mainInputRef}\n />\n <FormControl.HelpText>Include protocol (e.g. https://)</FormControl.HelpText>\n {touched && !urlIsValid && (\n <FormControl.ValidationMessage>Invalid URL</FormControl.ValidationMessage>\n )}\n </FormControl>\n\n <FormControl id=\"link-title-field\">\n <FormControl.Label>Link title</FormControl.Label>\n <TextInput\n name=\"link-title\"\n value={title}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n setTitle(e.target.value);\n }}\n testId=\"link-title-field\"\n />\n <FormControl.HelpText>Recommended for accessibility</FormControl.HelpText>\n </FormControl>\n </Form>\n </ModalContent>\n <ModalControls>\n <Button\n testId=\"insert-link-cancel\"\n onClick={() => onClose(false)}\n variant=\"secondary\"\n size=\"small\">\n Cancel\n </Button>\n <Button\n testId=\"insert-link-confirm\"\n onClick={() => {\n onInsert({ url, text, title });\n }}\n isDisabled={!urlIsValid}\n variant=\"positive\"\n size=\"small\">\n Insert\n </Button>\n </ModalControls>\n </>\n );\n};\n\nexport const openInsertLinkDialog = (\n dialogs: DialogsAPI,\n params: { selectedText?: string }\n): Promise<InsertLinkModalResult> => {\n return dialogs.openCurrent({\n title: 'Insert link',\n width: 'large',\n minHeight: '410px',\n shouldCloseOnEscapePress: true,\n shouldCloseOnOverlayClick: true,\n parameters: {\n type: MarkdownDialogType.insertLink,\n ...params,\n } as MarkdownDialogsParams,\n });\n};\n","export const specialCharacters = [\n { code: 180, desc: 'acute accent' },\n { code: 38, desc: 'ampersand' },\n { code: 166, desc: 'broken vertical bar' },\n { code: 8226, desc: 'bullet' },\n { code: 184, desc: 'cedilla' },\n { code: 162, desc: 'cent' },\n { code: 169, desc: 'copyright' },\n { code: 176, desc: 'degree' },\n { code: 247, desc: 'division' },\n { code: 189, desc: 'fraction half' },\n { code: 188, desc: 'fraction quarter' },\n { code: 190, desc: 'fraction three quarters' },\n { code: 62, desc: 'greater than' },\n { code: 161, desc: 'inverted exclamation mark' },\n { code: 191, desc: 'inverted question mark' },\n { code: 171, desc: 'left-pointing double angle quotation mark' },\n { code: 60, desc: 'less than' },\n { code: 175, desc: 'macron' },\n { code: 181, desc: 'micro' },\n { code: 160, desc: 'non-breaking space' },\n { code: 172, desc: 'not' },\n { code: 182, desc: 'paragraph' },\n { code: 177, desc: 'plus-minus' },\n { code: 34, desc: 'quotation mark' },\n { code: 174, desc: 'registered' },\n { code: 187, desc: 'right-pointing double angle quotation mark' },\n { code: 167, desc: 'section' },\n { code: 168, desc: 'umlaut/diaeresis' },\n { code: 215, desc: 'multiplication' },\n { code: 8482, desc: 'trade mark' },\n { code: 8364, desc: 'euro' },\n { code: 163, desc: 'pound' },\n { code: 165, desc: 'yen' },\n { code: 8222, desc: 'double low-9 quotation mark' },\n { code: 710, desc: 'modifier circumflex accent' },\n { code: 8224, desc: 'dagger' },\n { code: 8225, desc: 'double dagger' },\n { code: 8230, desc: 'horizontal ellipsis' },\n { code: 8220, desc: 'left double quotation mark' },\n { code: 8249, desc: 'single left-pointing angle quotation mark' },\n { code: 8216, desc: 'left single quotation mark' },\n { code: 183, desc: 'middle dot' },\n { code: 8212, desc: 'em dash' },\n { code: 8211, desc: 'en dash' },\n { code: 8240, desc: 'per mille' },\n { code: 8250, desc: 'single right-pointing angle quotation mark' },\n { code: 8217, desc: 'right single quotation mark' },\n { code: 8218, desc: 'single low-9 quotation mark' },\n { code: 170, desc: 'feminine ordinal indicator' },\n { code: 186, desc: 'masculine ordinal indicator' },\n { code: 8221, desc: 'right double quotation mark' },\n { code: 732, desc: 'small tilde' },\n { code: 9829, desc: 'black heart' },\n { code: 9830, desc: 'diamond' },\n];\n","import React, { useState } from 'react';\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport {\n ModalContent,\n ModalControls,\n Text,\n Flex,\n Button,\n Tooltip,\n} from '@contentful/f36-components';\nimport { specialCharacters } from '../utils/specialCharacters';\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\n\nconst styles = {\n buttonPanel: css({\n display: 'flex',\n flexWrap: 'wrap',\n }),\n charButton: css({\n border: `1px solid ${tokens.gray500}`,\n width: '4.1rem',\n height: '4.1rem',\n fontSize: tokens.fontSizeXl,\n marginTop: tokens.spacing2Xs,\n marginRight: tokens.spacing2Xs,\n }),\n selectedCharButton: css({\n backgroundColor: tokens.gray100,\n }),\n tooltip: css({ zIndex: 1000 }),\n button: css({\n marginTop: tokens.spacingM,\n marginRight: tokens.spacingS,\n }),\n};\n\nexport type SpecialCharacterModalResult = string | false | undefined;\n\ntype SpecialCharacterModalDialogProps = {\n onClose: (result: SpecialCharacterModalResult) => void;\n};\n\nexport const SpecialCharacterModalDialog = ({ onClose }: SpecialCharacterModalDialogProps) => {\n const [selectedCharacter, setSelectedCharacter] = useState<{ code: number; desc: string }>(\n specialCharacters[0]\n );\n return (\n <>\n <ModalContent testId=\"insert-special-character-modal\">\n <Flex flexDirection=\"column\" alignItems=\"center\">\n <Text as=\"div\" lineHeight=\"lineHeight3Xl\" fontSize=\"fontSize3Xl\" marginBottom=\"spacingS\">\n {String.fromCharCode(selectedCharacter.code)}\n </Text>\n <Text as=\"div\" marginBottom=\"spacingS\">\n {selectedCharacter.desc}\n </Text>\n </Flex>\n <div className={styles.buttonPanel}>\n {specialCharacters.map((char) => (\n <div key={char.code}>\n <Tooltip className={styles.tooltip} content={char.desc}>\n <Button\n testId=\"special-character-button\"\n isActive={char.code === selectedCharacter.code}\n className={styles.charButton}\n variant=\"transparent\"\n onClick={() => setSelectedCharacter(char)}>\n {String.fromCharCode(char.code)}\n </Button>\n </Tooltip>\n </div>\n ))}\n </div>\n </ModalContent>\n <ModalControls>\n <Button\n testId=\"insert-character-cancel\"\n className={styles.button}\n onClick={() => onClose(false)}\n variant=\"secondary\"\n size=\"small\">\n Cancel\n </Button>\n <Button\n className={styles.button}\n testId=\"insert-character-confirm\"\n onClick={() => onClose(String.fromCharCode(selectedCharacter.code))}\n variant=\"positive\"\n size=\"small\">\n Insert selected\n </Button>\n </ModalControls>\n </>\n );\n};\n\nexport const openInsertSpecialCharacter = (\n dialogs: DialogsAPI\n): Promise<SpecialCharacterModalResult> => {\n return dialogs.openCurrent({\n title: 'Insert special character',\n width: 'large',\n minHeight: '600px',\n shouldCloseOnEscapePress: true,\n shouldCloseOnOverlayClick: true,\n parameters: {\n type: MarkdownDialogType.insertSpecialCharacter,\n } as MarkdownDialogsParams,\n });\n};\n","import React, { useState, useRef, useEffect } from 'react';\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport inRange from 'lodash/inRange';\nimport {\n ModalContent,\n ModalControls,\n Button,\n Form,\n FormControl,\n TextInput,\n} from '@contentful/f36-components';\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\n\ntype InsertTableModalPositiveResult = { cols: number; rows: number };\nexport type InsertTableModalResult = InsertTableModalPositiveResult | false | undefined;\n\ntype InsertTableModalProps = {\n onClose: (result: InsertTableModalResult) => void;\n};\n\nexport const InsertTableModal = ({ onClose }: InsertTableModalProps) => {\n const mainInputRef = useRef<HTMLInputElement>(null);\n const [rows, setRows] = useState(2);\n const [cols, setColumns] = useState(1);\n const rowsAreValid = inRange(rows, 2, 100);\n const colsAreValid = inRange(cols, 1, 100);\n\n useEffect(() => {\n if (mainInputRef.current?.focus) {\n mainInputRef.current.focus();\n }\n }, [mainInputRef]);\n\n return (\n <>\n <ModalContent testId=\"insert-table-modal\">\n <Form>\n <FormControl id=\"insert-table-rows-number-field\" isRequired isInvalid={!rowsAreValid}>\n <FormControl.Label>Number of rows</FormControl.Label>\n <TextInput\n name=\"rows\"\n value={rows.toString()}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => setRows(Number(e.target.value))}\n testId=\"insert-table-rows-number-field\"\n min={2}\n max={100}\n pattern=\"[1-9][0-9]*\"\n type=\"number\"\n width=\"small\"\n autoComplete=\"off\"\n ref={mainInputRef}\n />\n {!rowsAreValid && (\n <FormControl.ValidationMessage>\n Should be between 2 and 100\n </FormControl.ValidationMessage>\n )}\n </FormControl>\n\n <FormControl id=\"insert-table-columns-number-field\" isRequired isInvalid={!colsAreValid}>\n <FormControl.Label>Number of columns</FormControl.Label>\n <TextInput\n name=\"columns\"\n value={cols.toString()}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n setColumns(Number(e.target.value))\n }\n testId=\"insert-table-columns-number-field\"\n min={1}\n max={100}\n pattern=\"[1-9][0-9]*\"\n type=\"number\"\n width=\"small\"\n autoComplete=\"off\"\n />\n {!colsAreValid && (\n <FormControl.ValidationMessage>\n Should be between 1 and 100\n </FormControl.ValidationMessage>\n )}\n </FormControl>\n </Form>\n </ModalContent>\n <ModalControls>\n <Button\n testId=\"insert-table-cancel\"\n onClick={() => onClose(false)}\n variant=\"secondary\"\n size=\"small\">\n Cancel\n </Button>\n <Button\n testId=\"insert-table-confirm\"\n onClick={() => onClose({ rows, cols })}\n variant=\"positive\"\n size=\"small\"\n isDisabled={!rowsAreValid || !colsAreValid}>\n Insert\n </Button>\n </ModalControls>\n </>\n );\n};\n\nexport const openInsertTableDialog = (dialogs: DialogsAPI): Promise<InsertTableModalResult> => {\n return dialogs.openCurrent({\n title: 'Insert table',\n width: 'medium',\n minHeight: '260px',\n shouldCloseOnEscapePress: true,\n shouldCloseOnOverlayClick: true,\n parameters: {\n type: MarkdownDialogType.insertTable,\n } as MarkdownDialogsParams,\n });\n};\n","import React, { useState, useRef, useEffect } from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\nimport {\n ModalContent,\n ModalControls,\n Text,\n TextLink,\n Button,\n Checkbox,\n Radio,\n Form,\n FormControl,\n TextInput,\n} from '@contentful/f36-components';\nimport { isValidUrl } from '../utils/isValidUrl';\n\nconst styles = {\n widthFiledGroup: css({\n display: 'flex',\n flexWrap: 'nowrap',\n alignItems: 'flex-start',\n }),\n radioButtonGroup: css({\n display: 'inline-flex',\n alignItems: 'flex-start',\n paddingTop: tokens.spacingXl,\n }),\n radioButton: css({\n marginLeft: tokens.spacingM,\n }),\n};\n\nexport type EmbedExternalContentModalResult = string | false | undefined;\n\ntype EmbedExternalContentModalProps = {\n onClose: (result: EmbedExternalContentModalResult) => void;\n};\n\ntype Unit = 'percent' | 'px';\n\nconst makeEmbedlyLink = ({\n url,\n width,\n selectedUnit,\n attachSocial,\n}: {\n url: string;\n width: number;\n selectedUnit: Unit;\n attachSocial: boolean;\n}): string => {\n const s = { percent: '%', px: 'px' };\n return [\n '<a href=\"' + url + '\" class=\"embedly-card\" ',\n 'data-card-width=\"' + width + s[selectedUnit] + '\" ',\n 'data-card-controls=\"' + (attachSocial ? '1' : '0') + '\"',\n '>Embedded content: ' + url + '</a>',\n ].join('');\n};\n\nconst isWidthValid = (width: number, unit: Unit) => (unit === 'percent' ? width <= 100 : true);\n\nexport const EmbedExternalContentModal = ({ onClose }: EmbedExternalContentModalProps) => {\n const mainInputRef = useRef<HTMLInputElement>(null);\n const [url, setUrl] = useState<string>('https://');\n const [selectedUnit, setUnit] = useState<Unit>('percent');\n const [urlIsValid, setUrlValidity] = useState<boolean>(true);\n const [width, setWidth] = useState('100');\n const [attachSocial, setAttachSocial] = useState(false);\n\n useEffect(() => {\n if (mainInputRef.current?.focus) {\n mainInputRef.current.focus();\n }\n }, [mainInputRef]);\n\n return (\n <>\n <ModalContent testId=\"embed-external-dialog\">\n <Form>\n <FormControl id=\"external-link-url-field\" isRequired isInvalid={!urlIsValid}>\n <FormControl.Label>Content URL</FormControl.Label>\n <TextInput\n name=\"external-link-url\"\n value={url}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n setUrl(value);\n setUrlValidity(isValidUrl(value));\n }}\n testId=\"external-link-url-field\"\n placeholder=\"https://example.com\"\n ref={mainInputRef}\n />\n <FormControl.HelpText>Include protocol (e.g. https://)</FormControl.HelpText>\n {!urlIsValid && (\n <FormControl.ValidationMessage>URL is invalid</FormControl.ValidationMessage>\n )}\n </FormControl>\n <TextLink href=\"http://embed.ly/providers\" target=\"_blank\" rel=\"noopener noreferrer\">\n Supported sources\n </TextLink>\n <div className={styles.widthFiledGroup}>\n <FormControl\n id=\"embedded-content-width\"\n isRequired\n isInvalid={!isWidthValid(Number(width), selectedUnit)}>\n <FormControl.Label>Width</FormControl.Label>\n <TextInput\n value={width}\n name=\"embedded-content-width\"\n testId=\"embedded-content-width\"\n type=\"number\"\n width=\"small\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => setWidth(e.target.value)}\n />\n {!isWidthValid(Number(width), selectedUnit) && (\n <FormControl.ValidationMessage>\n Should be equal or less then 100\n </FormControl.ValidationMessage>\n )}\n </FormControl>\n\n <div className={styles.radioButtonGroup}>\n <Radio\n id=\"unit-option-percent\"\n value=\"percent\"\n isChecked={selectedUnit === 'percent'}\n onChange={() => setUnit('percent')}\n className={styles.radioButton}>\n percent\n </Radio>\n <Radio\n id=\"unit-option-pixels\"\n value=\"pixels\"\n isChecked={selectedUnit === 'px'}\n onChange={() => setUnit('px')}\n className={styles.radioButton}>\n pixels\n </Radio>\n </div>\n </div>\n <Checkbox\n id=\"attach-social-checkbox\"\n name=\"attach-social-checkbox\"\n value=\"Yes\"\n isChecked={attachSocial}\n onChange={() => setAttachSocial(!attachSocial)}\n testId=\"attach-social-checkbox\">\n Attach social sharing links to this element\n </Checkbox>\n <Text as=\"p\" fontColor=\"gray500\" marginTop=\"spacingXs\">\n To enable this embedded content in your application make sure to add the&nbsp;\n <TextLink\n href=\"http://embed.ly/docs/products/cards\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n Embedly&apos;s platform.js\n </TextLink>\n &nbsp;on your development environment\n </Text>\n {/* <EmbedlyPreview previewUrl={url} /> */}\n </Form>\n </ModalContent>\n <ModalControls>\n <Button\n testId=\"emded-external-cancel\"\n onClick={() => onClose(false)}\n variant=\"secondary\"\n size=\"small\">\n Cancel\n </Button>\n <Button\n testId=\"embed-external-confirm\"\n onClick={() =>\n onClose(makeEmbedlyLink({ url, width: Number(width), selectedUnit, attachSocial }))\n }\n variant=\"positive\"\n size=\"small\">\n Insert\n </Button>\n </ModalControls>\n </>\n );\n};\n\nexport const openEmbedExternalContentDialog = (\n dialogs: DialogsAPI\n): Promise<EmbedExternalContentModalResult> => {\n return dialogs.openCurrent({\n title: 'Embed external content',\n width: 'large',\n minHeight: '435px',\n shouldCloseOnEscapePress: true,\n shouldCloseOnOverlayClick: true,\n parameters: {\n type: MarkdownDialogType.embedExternalContent,\n } as MarkdownDialogsParams,\n });\n};\n","import React from 'react';\nimport {\n ModalContent,\n ModalControls,\n Paragraph,\n Button,\n EntityList,\n} from '@contentful/f36-components';\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\n\ninterface ConfirmInsertAssetModalDialogProps {\n onClose: (result: boolean) => void;\n assets: Array<{\n title: string;\n description: string;\n thumbnailUrl: string;\n thumbnailAltText: string;\n }>;\n locale: string;\n}\n\nexport const ConfirmInsertAssetModalDialog = ({\n onClose,\n assets,\n locale,\n}: ConfirmInsertAssetModalDialogProps) => {\n const localesNumber = assets.length;\n\n return (\n <>\n <ModalContent testId=\"confirm-insert-asset\">\n <Paragraph>\n {localesNumber === 1\n ? `Link asset with missing file for locale ${locale}`\n : `Link assets with missing files for locale ${locale}`}\n </Paragraph>\n <Paragraph>\n {localesNumber === 1\n ? 'Do you want to link to the file in its fallback locale?'\n : 'Do you want to link to the files in their fallback locales?'}\n </Paragraph>\n <EntityList>\n {assets.map(({ title, description, thumbnailUrl, thumbnailAltText }) => (\n <EntityList.Item\n key={thumbnailUrl}\n title={title}\n thumbnailUrl={`${thumbnailUrl}?w=46&h=46&fit=thumb`}\n thumbnailAltText={thumbnailAltText}\n description={description}\n />\n ))}\n </EntityList>\n </ModalContent>\n <ModalControls>\n <Button onClick={() => onClose(false)} variant=\"secondary\" size=\"small\">\n Cancel\n </Button>\n <Button\n testId=\"confirm-insert-asset\"\n onClick={() => onClose(true)}\n variant=\"positive\"\n size=\"small\">\n Confirm\n </Button>\n </ModalControls>\n </>\n );\n};\n\nexport const openConfirmInsertAsset = (\n dialogs: DialogsAPI,\n options: {\n locale: string;\n assets: Array<{\n title: string;\n description: string;\n thumbnailUrl: string;\n thumbnailAltText: string;\n }>;\n }\n): Promise<boolean> => {\n return dialogs.openCurrent({\n title: 'Confirm using fallback assets',\n width: 'medium',\n minHeight: '270px',\n shouldCloseOnEscapePress: true,\n shouldCloseOnOverlayClick: true,\n parameters: {\n type: MarkdownDialogType.confirmInsertAsset,\n ...options,\n } as MarkdownDialogsParams,\n });\n};\n","import React from 'react';\nimport { css, cx } from 'emotion';\nimport { DialogsAPI, DialogExtensionSDK } from '@contentful/app-sdk';\nimport { MarkdownDialogType, MarkdownDialogsParams, PreviewComponents } from '../types';\nimport { InitializedEditorType } from '../components/MarkdownTextarea/MarkdownTextarea';\nimport { MarkdownToolbar } from '../components/MarkdownToolbar';\nimport { MarkdownTextarea } from '../components/MarkdownTextarea/MarkdownTextarea';\nimport { MarkdownPreview } from '../components/MarkdownPreview';\nimport { MarkdownBottomBar, MarkdownHelp } from '../components/MarkdownBottomBar';\nimport { createMarkdownActions } from '../MarkdownActions';\nimport { openCheatsheetModal } from '../dialogs/CheatsheetModalDialog';\nimport tokens from '@contentful/f36-tokens';\n\nimport { ChevronRightIcon, ChevronLeftIcon } from '@contentful/f36-icons';\n\nexport type ZenModeResult = {\n value: string;\n cursor?: {\n ch: number;\n line: number;\n };\n};\n\ntype ZenModeDialogProps = {\n saveValueToSDK: (value: string | null | undefined) => void;\n onClose: (result: ZenModeResult) => void;\n initialValue: string;\n locale: string;\n sdk: DialogExtensionSDK;\n previewComponents?: PreviewComponents;\n};\n\nconst styles = {\n root: css({\n position: 'fixed',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n }),\n topSplit: css({\n position: 'fixed',\n top: 0,\n height: '48px',\n left: 0,\n right: 0,\n }),\n bottomSplit: css({\n position: 'fixed',\n bottom: 0,\n left: 0,\n right: 0,\n height: '36px',\n }),\n editorSplit: css({\n width: '50%',\n position: 'fixed',\n top: '48px',\n left: 0,\n bottom: '36px',\n overflowX: 'hidden',\n overflowY: 'scroll',\n }),\n editorSplitFullscreen: css({\n left: 0,\n right: 0,\n width: '100%',\n }),\n previewSplit: css({\n width: '50%',\n position: 'fixed',\n top: '48px',\n right: 0,\n bottom: '36px',\n overflowX: 'hidden',\n overflowY: 'scroll',\n }),\n separator: css({\n position: 'fixed',\n top: '48px',\n bottom: '36px',\n width: '1px',\n background: tokens.gray400,\n left: '50%',\n }),\n button: css({\n position: 'fixed',\n cursor: 'pointer',\n zIndex: 105,\n top: '49%',\n height: '30px',\n backgroundColor: tokens.gray100,\n border: `1px solid ${tokens.gray400}`,\n padding: 0,\n }),\n hideButton: css({\n left: '50%',\n }),\n showButton: css({\n right: 0,\n borderRightWidth: 0,\n }),\n icon: css({\n verticalAlign: 'middle',\n }),\n};\n\nexport const ZenModeModalDialog = (props: ZenModeDialogProps) => {\n const [currentValue, setCurrentValue] = React.useState<string>(props.initialValue ?? '');\n const [showPreview, setShowPreview] = React.useState<boolean>(true);\n const [editor, setEditor] = React.useState<InitializedEditorType | null>(null);\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props.sdk?.window?.updateHeight('100%' as any);\n }, []);\n\n // refresh editor right after dialog is opened to avoid disappearing effect\n React.useEffect(() => {\n setTimeout(() => {\n editor?.setFullsize();\n editor?.refresh();\n }, 150);\n }, [editor]);\n\n const actions = React.useMemo(() => {\n return createMarkdownActions({ sdk: props.sdk, editor, locale: props.locale });\n }, [editor]);\n\n actions.closeZenMode = () => {\n props.onClose({\n value: currentValue,\n cursor: editor?.getCursor(),\n });\n };\n\n const direction = props.sdk.locales.direction[props.locale] ?? 'ltr';\n\n return (\n <div className={styles.root} data-test-id=\"zen-mode-markdown-editor\">\n <div className={styles.topSplit}>\n <MarkdownToolbar mode=\"zen\" disabled={false} canUploadAssets={false} actions={actions} />\n </div>\n\n <div\n className={cx(styles.editorSplit, {\n [styles.editorSplitFullscreen]: showPreview === false,\n })}>\n <MarkdownTextarea\n mode=\"zen\"\n visible\n disabled={false}\n direction={direction}\n onReady={(editor) => {\n editor.setContent(props.initialValue ?? '');\n editor.setReadOnly(false);\n setEditor(editor);\n editor.focus();\n editor.events.onChange((value: string) => {\n setCurrentValue(value);\n props.saveValueToSDK(value);\n });\n }}\n />\n </div>\n {showPreview && (\n <div className={styles.previewSplit}>\n <MarkdownPreview\n direction={direction}\n mode=\"zen\"\n value={currentValue}\n previewComponents={props.previewComponents}\n />\n </div>\n )}\n {showPreview && <div className={styles.separator} />}\n {showPreview && (\n <button\n className={cx(styles.button, styles.hideButton)}\n aria-label=\"Hide preview\"\n onClick={() => {\n setShowPreview(false);\n }}>\n <ChevronRightIcon variant=\"muted\" size=\"tiny\" className={styles.icon} />\n </button>\n )}\n {!showPreview && (\n <button\n className={cx(styles.button, styles.showButton)}\n aria-label=\"Show preview\"\n onClick={() => {\n setShowPreview(true);\n }}>\n <ChevronLeftIcon variant=\"muted\" size=\"tiny\" className={styles.icon} />\n </button>\n )}\n <div className={styles.bottomSplit}>\n <MarkdownBottomBar>\n <MarkdownHelp\n onClick={() => {\n openCheatsheetModal(props.sdk.dialogs);\n }}\n />\n </MarkdownBottomBar>\n </div>\n </div>\n );\n};\n\nexport const openZenMode = (\n dialogs: DialogsAPI,\n options: { initialValue: string; locale: string }\n): Promise<ZenModeResult> => {\n return dialogs.openCurrent({\n width: 'zen' as any, // eslint-disable-line @typescript-eslint/no-explicit-any\n shouldCloseOnEscapePress: false,\n minHeight: '100vh',\n shouldCloseOnOverlayClick: false,\n parameters: {\n type: MarkdownDialogType.zenMode,\n initialValue: options.initialValue,\n locale: options.locale,\n } as MarkdownDialogsParams,\n });\n};\n","import get from 'lodash/get';\nimport isObject from 'lodash/isObject';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Asset = any;\n\ntype LinkWithMedia = {\n title: string;\n asset: Asset;\n url: string;\n isLocalized: boolean;\n isFallback: boolean;\n asMarkdown: string;\n};\n\ntype Locales = {\n localeCode: string;\n fallbackCode: string | undefined;\n defaultLocaleCode: string;\n};\n\nfunction normalizeWhiteSpace(str: string) {\n if (str) {\n return str.trim().replace(/\\s{2,}/g, ' ');\n } else {\n return str;\n }\n}\n\nfunction removeExtension(str: string) {\n return str.replace(/\\.\\w+$/g, '');\n}\n\nfunction fileNameToTitle(str: string) {\n return normalizeWhiteSpace(removeExtension(str).replace(/_/g, ' '));\n}\n\nexport function replaceAssetDomain(fileUrl: string) {\n const assetDomainMap: Record<string, string> = {\n images: 'images.ctfassets.net',\n assets: 'assets.ctfassets.net',\n downloads: 'downloads.ctfassets.net',\n videos: 'videos.ctfassets.net',\n };\n\n return fileUrl.replace(/(images|assets|downloads|videos).contentful.com/, (_, p1) => {\n return assetDomainMap[p1];\n });\n}\n\nfunction makeAssetLink(\n asset: Asset,\n { localeCode, fallbackCode, defaultLocaleCode }: Locales\n): LinkWithMedia | null {\n const localizedFile = get(asset, ['fields', 'file', localeCode]);\n const fallbackFile = fallbackCode ? get(asset, ['fields', 'file', fallbackCode]) : null;\n const defaultFile = get(asset, ['fields', 'file', defaultLocaleCode]);\n const file:\n | {\n url: string;\n fileName: string;\n }\n | undefined = localizedFile || fallbackFile || defaultFile;\n\n if (isObject(file) && file.url) {\n const title: string =\n get(asset, ['fields', 'title', localeCode]) ||\n get(asset, ['fields', 'title', fallbackCode || '']) ||\n get(asset, ['fields', 'title', defaultLocaleCode]) ||\n fileNameToTitle(file.fileName);\n\n const fileUrl = replaceAssetDomain(file.url);\n\n return {\n title,\n asset,\n url: fileUrl,\n // is normally localized and we should not warn about this file\n isLocalized: Boolean(localizedFile),\n // was fallback value used\n // if it was not localized normally, and we did not used a fallback\n // it means we used a default locale - we filter empty values\n isFallback: Boolean(fallbackFile),\n // todo: tranform using fromHostname\n asMarkdown: `![${title}](${fileUrl})`,\n };\n } else {\n return null;\n }\n}\n\nexport async function insertAssetLinks(assets: Array<Asset>, locales: Locales) {\n // check whether do we have some assets, which don't have\n // a version in this field's locale\n const otherLocales = assets.filter((asset) => {\n return !get(asset, ['fields', 'file', locales.localeCode]);\n });\n\n const linksWithMeta = assets\n .map((asset) => makeAssetLink(asset, locales))\n // remove empty links\n .filter((asset) => asset !== null) as LinkWithMedia[];\n\n // if there have values from fallback/default locales, we need to\n // provide user a warning so we show him modal\n if (otherLocales.length > 0) {\n const fallbackAssets = linksWithMeta\n // we don't want to warn about normally localized files\n .filter(({ isLocalized }) => !isLocalized)\n .map(({ title, isFallback, asset }) => {\n const code = isFallback ? locales.fallbackCode : locales.defaultLocaleCode;\n return {\n title,\n thumbnailUrl: asset.fields.file[code as string].url,\n thumbnailAltText: title,\n description: isFallback ? `Fallback locale (${code})` : `Default locale (${code})`,\n asset: asset,\n };\n });\n\n return {\n fallbacks: fallbackAssets,\n links: linksWithMeta,\n };\n }\n return {\n links: linksWithMeta,\n };\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define, @typescript-eslint/no-explicit-any */\n\nimport extend from 'lodash/extend';\nimport isString from 'lodash/isString';\nimport isObject from 'lodash/isObject';\nimport max from 'lodash/max';\n// eslint-disable-next-line\nimport isFinite from 'lodash/isFinite';\n// eslint-disable-next-line\nimport forEach from 'lodash/forEach';\n\nfunction extractTitle(title: string) {\n title = title || '';\n title = title.replace(/^ *('|\"|\\()*/, '');\n title = title.replace(/('|\"|\\))* *$/, '');\n return title;\n}\n\nfunction head(text: string) {\n return text.split(' ').shift();\n}\n\nfunction tail(text: string) {\n const segments = text.split(' ');\n segments.shift();\n return segments.join(' ');\n}\n\nconst PROCESSORS = {\n inline: function (match: any) {\n return {\n match: match[0],\n text: match[1],\n href: head(match[2]),\n title: extractTitle(tail(match[2])),\n };\n },\n ref: function (match: any) {\n return {\n match: match[0],\n text: match[1],\n id: match[2],\n };\n },\n label: function (match: any) {\n return {\n match: match[0],\n id: match[1],\n href: head(match[2]),\n title: extractTitle(tail(match[2])),\n };\n },\n};\n\nconst REGEXS = {\n inline: /\\[([^\\r\\n[\\]]+)]\\(([^\\r\\n)]+)\\)/,\n ref: /\\[([^\\r\\n[\\]]+)] ?\\[([^\\r\\n[\\]]+)]/,\n label: /^ {0,3}\\[([^\\r\\n[\\]]+)]:\\s+(.+)$/,\n};\nexport const findInline = makeFinder('inline');\nexport const findRefs = makeFinder('ref');\nexport const findLabels = makeFinder('label');\n\nexport function convertInlineToRef(text: string) {\n let id = findMaxLabelId(text);\n\n forEach(findInline(text), (inline) => {\n id += 1;\n text = text.replace(inline.match, buildRef(inline, id));\n text += '\\n' + buildLabel(inline, id);\n });\n\n return text;\n}\n\nfunction mergeLabels(text: string): any {\n const byHref: any = {};\n const byOldId: any = {};\n\n forEach(findLabels(text), (label) => {\n const alreadyAdded = byHref[label.href];\n const current = extend({}, label);\n\n if (!alreadyAdded) {\n byHref[current.href] = current;\n } else if (hasTitle(current) && !hasTitle(alreadyAdded)) {\n alreadyAdded.title = current.title;\n }\n\n byOldId[current.id] = alreadyAdded || current;\n });\n\n return {\n byHref: byHref,\n byOldId: byOldId,\n };\n}\n\nexport function rewriteRefs(text: string) {\n const merged = mergeLabels(text);\n const hrefToRefId: any = {};\n const labels: any[] = [];\n const rewrites: any[] = [];\n let i = 1;\n\n // 1. compose list of labels with new ids, in order\n forEach(findRefs(text), (ref) => {\n const oldLabel = merged.byOldId[ref.id];\n if (!oldLabel) {\n return;\n }\n const href = oldLabel.href;\n let newRefId = hrefToRefId[href];\n\n if (!newRefId) {\n hrefToRefId[href] = newRefId = i;\n i += 1;\n labels.push(extend({ newId: newRefId }, oldLabel));\n }\n\n // 1b. prepare rewrites to be applied, with new label ids\n rewrites.push(extend({ newId: newRefId }, ref));\n });\n\n // 2. remove all labels!\n forEach(findLabels(text), (label) => {\n text = text.replace(label.match, '');\n });\n\n // 3. remove whitespace from the end of text\n text = text.replace(/[\\r\\n\\s]*$/, '');\n text += '\\n\\n';\n\n // 4. apply rewrites\n forEach(rewrites, (ref) => {\n text = text.replace(ref.match, buildRef(ref, ref.newId));\n });\n\n // 5. print new labels at the end of text\n forEach(labels, (label) => {\n text += '\\n' + buildLabel(label, label.newId);\n });\n\n return text;\n}\n\n/**\n * Finding stuff\n */\n\nfunction makeFinder(type: 'inline' | 'ref' | 'label'): (text: string) => Array<any> {\n return (text: string) => findAll(text, type).map(PROCESSORS[type] as any);\n}\n\nexport function findMaxLabelId(textOrLabels: any): number {\n if (isString(textOrLabels)) {\n textOrLabels = findLabels(textOrLabels);\n }\n\n const ids = textOrLabels\n .map((x: any) => x.id)\n .map((x: any) => parseInt(x, 10))\n .filter((x: any) => isFinite(x) && x > 0);\n\n return ids.length > 0 ? max(ids) || 0 : 0;\n}\n\nfunction findAll(text: string, type: 'inline' | 'ref' | 'label') {\n const flags = 'g' + (type === 'label' ? 'm' : '');\n const matches = [];\n const re = new RegExp(REGEXS[type].source, flags);\n let found = re.exec(text);\n\n while (found) {\n matches.push(found);\n re.lastIndex = found.index + found[0].length;\n found = re.exec(text);\n }\n\n return matches;\n}\n\n/**\n * Other utilities\n */\n\nfunction hasTitle(link: { title: string }) {\n return isObject(link) && isString(link.title) && link.title.length > 0;\n}\n\nfunction buildLabel(link: { href: string; title: string }, id: number) {\n let markup = '[' + id + ']: ' + link.href;\n if (hasTitle(link)) {\n markup += ' \"' + link.title + '\"';\n }\n return markup;\n}\n\nfunction buildRef(link: { text: string }, id: number) {\n return '[' + link.text + '][' + id + ']';\n}\n","import { InitializedEditorType } from './components/MarkdownTextarea/MarkdownTextarea';\nimport { KnownSDK } from '@contentful/app-sdk';\nimport { openInsertLinkDialog } from './dialogs/InsertLinkModalDialog';\nimport { openInsertSpecialCharacter } from './dialogs/SpecialCharacterModalDialog';\nimport { openInsertTableDialog } from './dialogs/InsertTableModalDialog';\nimport { openEmbedExternalContentDialog } from './dialogs/EmdebExternalContentDialog';\nimport { openConfirmInsertAsset } from './dialogs/ConfirmInsertAssetModalDialog';\nimport { openZenMode } from './dialogs/ZenModeModalDialog';\nimport { insertAssetLinks } from './utils/insertAssetLinks';\nimport * as LinkOrganizer from './utils/linkOrganizer';\n\nexport function createMarkdownActions(props: {\n sdk: KnownSDK;\n editor: InitializedEditorType | null;\n locale: string;\n}) {\n const { sdk, editor, locale } = props;\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const insertAssetsWithConfirmation = async (assets: Array<Object> | null) => {\n if (assets) {\n const { links, fallbacks } = await insertAssetLinks(assets, {\n localeCode: locale,\n defaultLocaleCode: sdk.locales.default,\n fallbackCode: sdk.locales.fallbacks[locale],\n });\n if (links && links.length > 0) {\n if (fallbacks) {\n const insertAnyway = await openConfirmInsertAsset(sdk.dialogs, {\n locale: locale,\n assets: fallbacks,\n });\n if (!insertAnyway) {\n throw Error('User decided to not use fallbacks');\n }\n }\n return links.map((link) => link.asMarkdown).join('\\n\\n');\n }\n }\n return '';\n };\n\n return {\n headings: {\n h1: () => {\n editor?.actions.h1();\n },\n h2: () => {\n editor?.actions.h2();\n },\n h3: () => {\n editor?.actions.h3();\n },\n },\n simple: {\n italic: () => {\n editor?.actions.italic();\n },\n bold: () => {\n editor?.actions.bold();\n },\n quote: () => {\n editor?.actions.quote();\n },\n ol: () => {\n editor?.actions.ol();\n },\n ul: () => {\n editor?.actions.ul();\n },\n strike: () => {\n editor?.actions.strike();\n },\n code: () => {\n editor?.actions.code();\n },\n hr: () => {\n editor?.actions.hr();\n },\n indent: () => {\n editor?.actions.indent();\n },\n dedent: () => {\n editor?.actions.dedent();\n },\n },\n history: {\n undo: () => {\n editor?.actions.undo();\n },\n redo: () => {\n editor?.actions.redo();\n },\n },\n insertLink: async () => {\n if (!editor) {\n return;\n }\n editor.usePrimarySelection();\n const selectedText = editor.getSelectedText();\n const result = await openInsertLinkDialog(sdk.dialogs, { selectedText });\n if (result) {\n editor.actions.link(result.url, selectedText || result.text, result.title);\n }\n },\n insertSpecialCharacter: async () => {\n if (!editor) {\n return;\n }\n const result = await openInsertSpecialCharacter(sdk.dialogs);\n if (result) {\n editor.insert(result);\n }\n },\n insertTable: async () => {\n if (!editor) {\n return;\n }\n const result = await openInsertTableDialog(sdk.dialogs);\n if (result) {\n editor.actions.table(result);\n }\n },\n organizeLinks: () => {\n if (!editor) {\n return;\n }\n let text = editor.getContent();\n if (!text) {\n return;\n }\n text = LinkOrganizer.convertInlineToRef(text);\n text = LinkOrganizer.rewriteRefs(text);\n editor.setContent(text);\n sdk.notifier.success('All your links are now references at the bottom of your document.');\n },\n embedExternalContent: async () => {\n if (!editor) {\n return;\n }\n const result = await openEmbedExternalContentDialog(sdk.dialogs);\n if (result) {\n editor.insert(result);\n }\n },\n addNewMedia: async () => {\n if (!editor) {\n return;\n }\n try {\n const { entity: asset } = (await sdk.navigator.openNewAsset({\n slideIn: { waitForClose: true },\n })) as any; // eslint-disable-line @typescript-eslint/no-explicit-any\n\n const markdownLinks = await insertAssetsWithConfirmation([asset]);\n editor.insert(markdownLinks);\n } finally {\n editor.focus();\n }\n },\n linkExistingMedia: async () => {\n if (!editor) {\n return;\n }\n try {\n const assets = await sdk.dialogs.selectMultipleAssets({\n locale: locale,\n });\n const markdownLinks = await insertAssetsWithConfirmation(assets);\n editor.insert(markdownLinks);\n } finally {\n editor.focus();\n }\n },\n openZenMode: async () => {\n if (!editor) {\n return;\n }\n const result = await openZenMode(sdk.dialogs, {\n initialValue: editor.getContent(),\n locale: props.locale,\n });\n\n editor.setContent(result.value);\n\n if (result.cursor) {\n editor.setCursor(result.cursor);\n }\n\n editor.focus();\n },\n closeZenMode: () => {\n // do nothing\n // this method is overwritten in dialog app\n },\n };\n}\n","import React from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { FieldConnector } from '@contentful/field-editor-shared';\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport { MarkdownTabs } from './components/MarkdownTabs';\nimport { MarkdownToolbar } from './components/MarkdownToolbar';\nimport { MarkdownTextarea } from './components/MarkdownTextarea/MarkdownTextarea';\nimport { InitializedEditorType } from './components/MarkdownTextarea/MarkdownTextarea';\nimport { MarkdownBottomBar, MarkdownHelp } from './components/MarkdownBottomBar';\nimport { MarkdownTab, PreviewComponents } from './types';\nimport { openCheatsheetModal } from './dialogs/CheatsheetModalDialog';\nimport { MarkdownPreview } from './components/MarkdownPreview';\nimport { MarkdownConstraints } from './components/MarkdownConstraints';\nimport { createMarkdownActions } from './MarkdownActions';\n\nconst styles = {\n container: css({\n display: 'flex',\n flexDirection: 'column',\n fontFamily: tokens.fontStackPrimary,\n }),\n};\n\nexport interface MarkdownEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n /**\n * Minimum height to set for the markdown text area and preview\n */\n minHeight?: string | number;\n\n sdk: FieldExtensionSDK;\n\n previewComponents?: PreviewComponents;\n onReady?: Function;\n}\n\nexport function MarkdownEditor(\n props: MarkdownEditorProps & {\n disabled: boolean;\n initialValue: string | null | undefined;\n saveValueToSDK: Function;\n }\n) {\n const [currentValue, setCurrentValue] = React.useState<string>(props.initialValue ?? '');\n const [selectedTab, setSelectedTab] = React.useState<MarkdownTab>('editor');\n const [editor, setEditor] = React.useState<InitializedEditorType | null>(null);\n const [canUploadAssets, setCanUploadAssets] = React.useState<boolean>(false);\n\n React.useEffect(() => {\n if (editor && props.onReady) {\n props.onReady(editor);\n // fix: http://codemirror.977696.n3.nabble.com/codemirror-content-not-visible-in-bootstrap-modal-td4026988.html\n setTimeout(() => {\n editor.refresh();\n }, 1);\n }\n }, [editor]);\n\n React.useEffect(() => {\n props.sdk.access.can('create', 'Asset').then((value) => {\n setCanUploadAssets(value);\n });\n }, []);\n\n React.useEffect(() => {\n if (editor) {\n editor.setReadOnly(props.disabled);\n }\n }, [editor, props.disabled]);\n\n const isActionDisabled = editor === null || props.disabled || selectedTab !== 'editor';\n\n const direction = props.sdk.locales.direction[props.sdk.field.locale] ?? 'ltr';\n\n const actions = React.useMemo(() => {\n return createMarkdownActions({ sdk: props.sdk, editor, locale: props.sdk.field.locale });\n }, [editor]);\n\n const openMarkdownHelp = React.useCallback(() => {\n openCheatsheetModal(props.sdk.dialogs);\n }, []);\n\n return (\n <div className={styles.container} data-test-id=\"markdown-editor\">\n <MarkdownTabs\n active={selectedTab}\n onSelect={(tab) => {\n setSelectedTab(tab);\n }}\n />\n <MarkdownToolbar\n mode=\"default\"\n disabled={isActionDisabled}\n canUploadAssets={canUploadAssets}\n actions={actions}\n />\n <MarkdownTextarea\n minHeight={props.minHeight}\n mode=\"default\"\n visible={selectedTab === 'editor'}\n disabled={isActionDisabled}\n direction={direction}\n onReady={(editor) => {\n editor.setContent(props.initialValue ?? '');\n editor.setReadOnly(props.disabled);\n setEditor(editor);\n editor.events.onChange((value: string) => {\n // Trim empty lines\n const trimmedValue = value.replace(/^\\s+$/gm, '');\n props.saveValueToSDK(trimmedValue);\n setCurrentValue(value);\n });\n }}\n />\n {selectedTab === 'preview' && (\n <MarkdownPreview\n direction={direction}\n minHeight={props.minHeight}\n mode=\"default\"\n value={currentValue}\n previewComponents={props.previewComponents}\n />\n )}\n <MarkdownBottomBar>\n <MarkdownHelp onClick={openMarkdownHelp} />\n </MarkdownBottomBar>\n <MarkdownConstraints sdk={props.sdk} value={currentValue} />\n </div>\n );\n}\n\nexport function MarkdownEditorConnected(props: MarkdownEditorProps) {\n return (\n <FieldConnector<string>\n throttle={300}\n field={props.sdk.field}\n isInitiallyDisabled={props.isInitiallyDisabled}>\n {({ value, disabled, setValue, externalReset }) => {\n // on external change reset component completely and init with initial value again\n return (\n <MarkdownEditor\n {...props}\n key={`markdown-editor-${externalReset}`}\n initialValue={value}\n disabled={disabled}\n saveValueToSDK={setValue}\n />\n );\n }}\n </FieldConnector>\n );\n}\n","import React from 'react';\nimport {\n FieldExtensionSDK,\n DialogExtensionSDK,\n OpenCustomWidgetOptions,\n} from '@contentful/app-sdk';\nimport { ModalDialogLauncher } from '@contentful/field-editor-shared';\nimport { MarkdownDialogsParams, PreviewComponents } from '../types';\n\nimport { CheatsheetModalDialog } from './CheatsheetModalDialog';\nimport { SpecialCharacterModalDialog } from './SpecialCharacterModalDialog';\nimport { MarkdownDialogType } from '../types';\nimport { InsertLinkModal, InsertLinkModalResult } from './InsertLinkModalDialog';\nimport { InsertTableModal, InsertTableModalResult } from './InsertTableModalDialog';\nimport { ConfirmInsertAssetModalDialog } from './ConfirmInsertAssetModalDialog';\nimport {\n EmbedExternalContentModal,\n EmbedExternalContentModalResult,\n} from './EmdebExternalContentDialog';\nimport { ZenModeModalDialog, ZenModeResult } from './ZenModeModalDialog';\n\nexport const openMarkdownDialog =\n (sdk: FieldExtensionSDK, previewComponents?: PreviewComponents) =>\n (\n options: OpenCustomWidgetOptions & {\n parameters?: MarkdownDialogsParams;\n }\n ) => {\n if (options.parameters?.type === MarkdownDialogType.cheatsheet) {\n return ModalDialogLauncher.openDialog(options, () => {\n return <CheatsheetModalDialog />;\n });\n } else if (options.parameters?.type === MarkdownDialogType.insertLink) {\n const selectedText = options.parameters.selectedText;\n return ModalDialogLauncher.openDialog<InsertLinkModalResult>(options, ({ onClose }) => {\n return <InsertLinkModal selectedText={selectedText} onClose={onClose} />;\n });\n } else if (options.parameters?.type === MarkdownDialogType.insertSpecialCharacter) {\n return ModalDialogLauncher.openDialog(options, ({ onClose }) => {\n return <SpecialCharacterModalDialog onClose={onClose} />;\n });\n } else if (options.parameters?.type === MarkdownDialogType.insertTable) {\n return ModalDialogLauncher.openDialog<InsertTableModalResult>(options, ({ onClose }) => {\n return <InsertTableModal onClose={onClose} />;\n });\n } else if (options.parameters?.type === MarkdownDialogType.embedExternalContent) {\n return ModalDialogLauncher.openDialog<EmbedExternalContentModalResult>(\n options,\n ({ onClose }) => {\n return <EmbedExternalContentModal onClose={onClose} />;\n }\n );\n } else if (options.parameters?.type === MarkdownDialogType.confirmInsertAsset) {\n const locale = options.parameters.locale;\n const assets = options.parameters.assets;\n return ModalDialogLauncher.openDialog<boolean>(options, ({ onClose }) => {\n return <ConfirmInsertAssetModalDialog onClose={onClose} locale={locale} assets={assets} />;\n });\n } else if (options.parameters?.type === MarkdownDialogType.zenMode) {\n const initialValue = options.parameters.initialValue;\n const locale = options.parameters.locale;\n return ModalDialogLauncher.openDialog<ZenModeResult>(options, ({ onClose }) => {\n return (\n <ZenModeModalDialog\n saveValueToSDK={(value) => {\n if (value) {\n return sdk?.field?.setValue(value);\n }\n return sdk?.field?.removeValue();\n }}\n onClose={onClose}\n initialValue={initialValue}\n locale={locale}\n sdk={sdk as unknown as DialogExtensionSDK}\n previewComponents={previewComponents}\n />\n );\n });\n }\n return Promise.reject();\n };\n","import React from 'react';\nimport { DialogExtensionSDK } from '@contentful/app-sdk';\nimport { MarkdownDialogsParams, MarkdownDialogType } from '../types';\nimport { SpecialCharacterModalDialog } from './SpecialCharacterModalDialog';\nimport { CheatsheetModalDialog } from './CheatsheetModalDialog';\nimport { InsertLinkModal } from './InsertLinkModalDialog';\nimport { InsertTableModal } from './InsertTableModalDialog';\nimport { EmbedExternalContentModal } from './EmdebExternalContentDialog';\nimport { ConfirmInsertAssetModalDialog } from './ConfirmInsertAssetModalDialog';\nimport { ZenModeModalDialog } from './ZenModeModalDialog';\n\nexport const renderMarkdownDialog = (\n sdk: DialogExtensionSDK & { parameters: { invocation: MarkdownDialogsParams } }\n) => {\n const parameters = sdk.parameters.invocation;\n if (parameters.type === MarkdownDialogType.cheatsheet) {\n sdk.window.startAutoResizer();\n return <CheatsheetModalDialog />;\n } else if (parameters.type === MarkdownDialogType.insertLink) {\n const selectedText = parameters.selectedText;\n sdk.window.startAutoResizer();\n return <InsertLinkModal selectedText={selectedText} onClose={sdk.close} />;\n } else if (parameters.type === MarkdownDialogType.insertSpecialCharacter) {\n sdk.window.startAutoResizer();\n return <SpecialCharacterModalDialog onClose={sdk.close} />;\n } else if (parameters.type === MarkdownDialogType.insertTable) {\n sdk.window.startAutoResizer();\n return <InsertTableModal onClose={sdk.close} />;\n } else if (parameters.type === MarkdownDialogType.embedExternalContent) {\n sdk.window.startAutoResizer();\n return <EmbedExternalContentModal onClose={sdk.close} />;\n } else if (parameters.type === MarkdownDialogType.confirmInsertAsset) {\n const locale = parameters.locale;\n const assets = parameters.assets;\n sdk.window.startAutoResizer();\n return <ConfirmInsertAssetModalDialog onClose={sdk.close} locale={locale} assets={assets} />;\n } else if (parameters.type === MarkdownDialogType.zenMode) {\n const locale = parameters.locale;\n const initialValue = parameters.initialValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sdk.window.updateHeight('100%' as any);\n return (\n <ZenModeModalDialog\n onClose={sdk.close}\n saveValueToSDK={() => {\n // don't save changes in dialog mode\n }}\n initialValue={initialValue}\n locale={locale}\n sdk={sdk}\n />\n );\n }\n\n return <div />;\n};\n"],"names":["styles","root","css","display","zIndex","flexDirection","justifyContent","overflow","marginBottom","fontSize","tokens","fontSizeM","tab","cursor","color","gray700","padding","spacingXs","minWidth","border","gray400","borderTopLeftRadius","borderRadiusSmall","borderTopRightRadius","marginLeft","textAlign","backgroundColor","gray100","borderBottomColor","outline","boxShadow","boxShadowHeavy","transition","transitionEasingDefault","transitionDurationShort","inactiveTab","background","gray200","gray300","MarkdownTabItem","props","React","className","cx","isActive","onClick","onSelect","name","onKeyDown","e","keyCode","tabIndex","role","testId","children","MarkdownTabs","active","srOnly","position","width","height","margin","clip","Zen","label","rest","viewBox","d","Strikethrough","Indent","Dedent","Cubes","Table","SpecialChar","OrgLinks","Undo","Redo","HeadingSelector","handleMenuClick","heading","Menu","Trigger","List","Item","InsertLinkSelector","canAddNew","MultipleMediaContextMenu","Button","isDisabled","disabled","startIcon","AssetIcon","size","variant","onSelectExisting","placement","endIcon","ChevronDownIcon","onAddNew","Number","zIndexWorkbenchHeader","button","spacing2Xs","marginRight","icon","fill","verticalAlign","zenButton","zenButtonPressed","tooltip","zIndexTooltip","ToolbarButton","forwardRef","ref","tooltipPlace","otherProps","Tooltip","content","displayName","MainButtons","mode","actions","headings","HeadingIcon","simple","bold","FormatBoldIcon","italic","FormatItalicIcon","quote","QuoteIcon","ul","ListBulletedIcon","ol","ListNumberedIcon","insertLink","LinkIcon","AdditionalButtons","strike","Icons","code","CodeIcon","hr","HorizontalRuleIcon","indent","dedent","embedExternalContent","insertTable","insertSpecialCharacter","organizeLinks","history","undo","redo","DefaultMarkdownToolbar","useState","showAdditional","setShowAdditional","Flex","MoreHorizontalIcon","linkExistingMedia","addNewMedia","canUploadAssets","openZenMode","marginTop","ZenMarkdownToolbar","closeZenMode","MarkdownToolbar","memo","userAgent","get","window","platform","ctrlKey","tests","ios","test","MSStream","getCtrlKey","stripUnit","value","cssRegex","matchedValue","match","Error","parseFloat","create","host","options","direction","fixedHeight","readOnly","initializedWithValue","LF","EDITOR_SIZE","min","max","shift","cm","CodeMirror","lineNumbers","undoDepth","matchBrackets","lineWrapping","lineSeparator","theme","tabSize","indentWithTabs","indentUnit","autoRefresh","setSize","on","throttle","assureHeight","setOption","Tab","replaceSelectedText","getIndentation","Enter","Esc","getInputField","blur","destroy","disable","enable","attachEvent","addKeyShortcuts","setValue","cmd","moveToLineBeginning","moveIfNotEmpty","restoreCursor","moveToLineEnd","usePrimarySelection","focus","select","selectBackwards","selectAll","execCommand","extendSelectionBy","insertAtCursor","insertAtLineBeginning","wrapSelection","removeFromLineBeginning","removeSelectedText","getCursor","setCursor","getSelection","getLine","isLineEmpty","getSelectedText","getSelectionLength","getCurrentLine","getCurrentLineNumber","getCurrentCharacter","getCurrentLineLength","lineStartsWith","getNl","getValue","getLinesCount","getHistorySize","setReadOnly","getHistory","setHistory","setFullsize","refresh","toTextArea","current","heightAtLine","lastLine","next","fn","throttleInterval","map","addKeyMap","transform","acc","key","line","ch","clearHistory","lineNumber","defaultToCurrentLineNumber","character","noFocus","scroll","undefined","from","to","setSelection","skip","len","getPos","modifier","prop","selection","text","replaceRange","initialCh","length","wrapper","replacement","anchor","head","charCount","replaceSelection","selections","listSelections","somethingSelected","n","lineCount","startsWith","repeat","getOption","which","historySize","what","Array","join","createPrefixToggleFn","prefix","editor","marker","emptyText","selectedText","endsWith","markerLength","textWithoutMarker","slice","HEADER_CHAR","quoteToggleFn","codeToggleFn","modifySelection","link","h1","toggleHeader","h2","h3","ulToggleFn","olToggleFn","table","nl","markup","indentation","config","tableTemplate","rows","cols","url","title","linkTitle","toggleFn","isList","forLineIn","listNumber","getListNumber","prepareListWhitespace","cb","lines","maxNumber","minNumber","lineRange","range","forEach","i","isCurrentLineEmpty","isPrevLineEmpty","isNextLineEmpty","linesToInsert","result","nrows","ncols","cellWidth","cell","separatorCell","baseRow","separatorRow","times","bodyRows","replace","headerRow","concat","level","currentHeader","selectHeader","removedCh","diff","header","createMarkdownEditor","CodeMirrorWrapper","wrapChange","api","Commands","hasUndo","hasRedo","events","onScroll","onChange","onPaste","insert","getContent","setContent","clear","B","I","lineHeightDefault","spacingL","fontStackMonospace","gray900","red600","gray600","blue500","framed","maxHeight","zen","maxWidth","MarkdownTextarea","hostRef","useRef","setEditor","useEffect","Object","assign","minHeight","onReady","style","visible","borderBottomLeftRadius","borderBottomRightRadius","spacingS","help","fontSizeS","MarkdownHelp","Paragraph","TextLink","as","MarkdownBottomBar","MarkdownDialogType","flexColumnContainer","flexWrap","flexColumn","flexGrow","verticalDivider","borderRight","gray500","paddingRight","spacing3Xl","spacing2Xl","preview","unOrderedListPreview","listStyleType","orderedListPreview","paddingLeft","fontSize2Xl","fontSizeXl","fontSizeL","helpItem","alignItems","spacingXl","helpLink","flexRowContainer","CheatsheetModalDialog","ModalContent","Heading","href","target","rel","openCheatsheetModal","dialogs","openCurrent","shouldCloseOnEscapePress","shouldCloseOnOverlayClick","parameters","type","cheatsheet","fontStackPrimary","spacingM","overflowY","rtl","MarkdownLink","Embedly","MarkdownPreview","cleanHTML","useMemo","DOMPurify","sanitize","Markdown","overrides","a","component","previewComponents","embedly","MarkdownConstraints","constraints","ConstraintsUtils","fromFieldValidations","sdk","field","validations","checkConstraint","makeChecker","CharCounter","CharValidation","runtime","exports","Op","prototype","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","defineProperty","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","makeInvokeMethod","tryCatch","arg","call","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","constructor","defineIteratorMethods","method","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","Promise","iter","done","state","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","reverse","pop","iterable","iteratorMethod","isNaN","skipTempReset","prev","charAt","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","Function","urlRegex","isValidUrl","InsertLinkModal","onClose","mainInputRef","setText","setUrl","touched","setTouched","setTitle","onInsert","urlIsValid","Form","onSubmit","FormControl","id","Boolean","Label","TextInput","isInvalid","placeholder","maxLength","HelpText","ValidationMessage","ModalControls","openInsertLinkDialog","params","specialCharacters","desc","buttonPanel","charButton","selectedCharButton","SpecialCharacterModalDialog","selectedCharacter","setSelectedCharacter","Text","lineHeight","String","fromCharCode","char","openInsertSpecialCharacter","InsertTableModal","setRows","setColumns","rowsAreValid","inRange","colsAreValid","isRequired","pattern","autoComplete","openInsertTableDialog","widthFiledGroup","radioButtonGroup","paddingTop","radioButton","makeEmbedlyLink","selectedUnit","attachSocial","s","percent","px","isWidthValid","unit","EmbedExternalContentModal","setUnit","setUrlValidity","setWidth","setAttachSocial","Radio","isChecked","Checkbox","fontColor","openEmbedExternalContentDialog","ConfirmInsertAssetModalDialog","assets","locale","localesNumber","EntityList","description","thumbnailUrl","thumbnailAltText","openConfirmInsertAsset","confirmInsertAsset","left","right","top","bottom","topSplit","bottomSplit","editorSplit","overflowX","editorSplitFullscreen","previewSplit","separator","hideButton","showButton","borderRightWidth","ZenModeModalDialog","initialValue","currentValue","setCurrentValue","showPreview","setShowPreview","updateHeight","setTimeout","createMarkdownActions","locales","saveValueToSDK","ChevronRightIcon","ChevronLeftIcon","zenMode","normalizeWhiteSpace","str","trim","removeExtension","fileNameToTitle","replaceAssetDomain","fileUrl","assetDomainMap","images","downloads","videos","_","p1","makeAssetLink","asset","localeCode","fallbackCode","defaultLocaleCode","localizedFile","fallbackFile","defaultFile","file","isObject","fileName","isLocalized","isFallback","asMarkdown","insertAssetLinks","otherLocales","filter","linksWithMeta","fallbackAssets","fields","fallbacks","links","extractTitle","split","tail","segments","PROCESSORS","inline","REGEXS","findInline","makeFinder","findRefs","findLabels","convertInlineToRef","findMaxLabelId","buildRef","buildLabel","mergeLabels","byHref","byOldId","alreadyAdded","extend","hasTitle","rewriteRefs","merged","hrefToRefId","labels","rewrites","oldLabel","newRefId","newId","findAll","textOrLabels","isString","ids","x","parseInt","isFinite","flags","matches","re","RegExp","source","found","exec","lastIndex","index","insertAssetsWithConfirmation","insertAnyway","LinkOrganizer","notifier","success","navigator","openNewAsset","slideIn","waitForClose","entity","markdownLinks","selectMultipleAssets","container","fontFamily","MarkdownEditor","selectedTab","setSelectedTab","setCanUploadAssets","access","can","isActionDisabled","openMarkdownHelp","useCallback","trimmedValue","MarkdownEditorConnected","FieldConnector","isInitiallyDisabled","externalReset","openMarkdownDialog","ModalDialogLauncher","openDialog","removeValue","renderMarkdownDialog","invocation","startAutoResizer","close"],"mappings":"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"}