@contentful/field-editor-markdown 1.2.1 → 1.3.1

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.
Files changed (136) hide show
  1. package/dist/cjs/MarkdownActions.js +235 -0
  2. package/dist/cjs/MarkdownEditor.js +180 -0
  3. package/dist/cjs/__fixtures__/FakeSdk.js +183 -0
  4. package/dist/cjs/__fixtures__/asset/index.js +37 -0
  5. package/dist/cjs/__fixtures__/content-type/index.js +16 -0
  6. package/dist/cjs/__fixtures__/entry/index.js +33 -0
  7. package/dist/cjs/__fixtures__/fixtures.js +71 -0
  8. package/dist/cjs/__fixtures__/locale/index.js +40 -0
  9. package/dist/cjs/__fixtures__/space/index.js +16 -0
  10. package/dist/cjs/codemirrorImports.js +9 -0
  11. package/dist/cjs/components/HeadingSelector.js +66 -0
  12. package/dist/cjs/components/InsertLinkSelector.js +86 -0
  13. package/dist/cjs/components/MarkdownBottomBar.js +111 -0
  14. package/dist/cjs/components/MarkdownConstraints.js +79 -0
  15. package/dist/cjs/components/MarkdownPreview.js +249 -0
  16. package/dist/cjs/components/MarkdownTabs.js +128 -0
  17. package/dist/cjs/components/MarkdownTextarea/CodeMirrorWrapper.js +383 -0
  18. package/dist/cjs/components/MarkdownTextarea/MarkdownCommands.js +233 -0
  19. package/dist/cjs/components/MarkdownTextarea/MarkdownTextarea.js +190 -0
  20. package/dist/cjs/components/MarkdownTextarea/createMarkdownEditor.js +101 -0
  21. package/dist/cjs/components/MarkdownToolbar.js +367 -0
  22. package/dist/cjs/components/icons.js +193 -0
  23. package/dist/cjs/dialogs/CheatsheetModalDialog.js +239 -0
  24. package/dist/cjs/dialogs/ConfirmInsertAssetModalDialog.js +94 -0
  25. package/dist/cjs/dialogs/EmdebExternalContentDialog.js +202 -0
  26. package/dist/cjs/dialogs/InsertLinkModalDialog.js +149 -0
  27. package/dist/cjs/dialogs/InsertTableModalDialog.js +140 -0
  28. package/dist/cjs/dialogs/SpecialCharacterModalDialog.js +146 -0
  29. package/dist/cjs/dialogs/ZenModeModalDialog.js +257 -0
  30. package/dist/cjs/dialogs/openMarkdownDialog.js +121 -0
  31. package/dist/cjs/dialogs/renderMarkdownDialog.js +108 -0
  32. package/dist/cjs/index.js +29 -0
  33. package/dist/cjs/types.js +20 -0
  34. package/dist/cjs/utils/insertAssetLinks.js +122 -0
  35. package/dist/cjs/utils/insertAssetLinks.spec.js +22 -0
  36. package/dist/cjs/utils/isValidUrl.js +22 -0
  37. package/dist/cjs/utils/linkOrganizer.js +187 -0
  38. package/dist/cjs/utils/linkOrganizer.spec.js +96 -0
  39. package/dist/cjs/utils/replaceMailtoAmp.js +15 -0
  40. package/dist/cjs/utils/replaceMailtoAmp.spec.js +22 -0
  41. package/dist/cjs/utils/specialCharacters.js +228 -0
  42. package/dist/cjs/utils/userAgent.js +28 -0
  43. package/dist/esm/MarkdownActions.js +186 -0
  44. package/dist/esm/MarkdownEditor.js +118 -0
  45. package/dist/esm/__fixtures__/FakeSdk.js +173 -0
  46. package/dist/esm/__fixtures__/asset/index.js +6 -0
  47. package/dist/esm/__fixtures__/content-type/index.js +2 -0
  48. package/dist/esm/__fixtures__/entry/index.js +5 -0
  49. package/dist/esm/__fixtures__/fixtures.js +6 -0
  50. package/dist/esm/__fixtures__/locale/index.js +15 -0
  51. package/dist/esm/__fixtures__/space/index.js +2 -0
  52. package/dist/esm/codemirrorImports.js +5 -0
  53. package/dist/esm/components/HeadingSelector.js +17 -0
  54. package/dist/esm/components/InsertLinkSelector.js +37 -0
  55. package/dist/esm/components/MarkdownBottomBar.js +46 -0
  56. package/dist/esm/components/MarkdownConstraints.js +25 -0
  57. package/dist/esm/components/MarkdownPreview.js +195 -0
  58. package/dist/esm/components/MarkdownTabs.js +74 -0
  59. package/dist/esm/components/MarkdownTextarea/CodeMirrorWrapper.js +329 -0
  60. package/dist/esm/components/MarkdownTextarea/MarkdownCommands.js +218 -0
  61. package/dist/esm/components/MarkdownTextarea/MarkdownTextarea.js +136 -0
  62. package/dist/esm/components/MarkdownTextarea/createMarkdownEditor.js +52 -0
  63. package/dist/esm/components/MarkdownToolbar.js +302 -0
  64. package/dist/esm/components/icons.js +112 -0
  65. package/dist/esm/dialogs/CheatsheetModalDialog.js +177 -0
  66. package/dist/esm/dialogs/ConfirmInsertAssetModalDialog.js +37 -0
  67. package/dist/esm/dialogs/EmdebExternalContentDialog.js +140 -0
  68. package/dist/esm/dialogs/InsertLinkModalDialog.js +92 -0
  69. package/dist/esm/dialogs/InsertTableModalDialog.js +78 -0
  70. package/dist/esm/dialogs/SpecialCharacterModalDialog.js +84 -0
  71. package/dist/esm/dialogs/ZenModeModalDialog.js +195 -0
  72. package/dist/esm/dialogs/openMarkdownDialog.js +72 -0
  73. package/dist/esm/dialogs/renderMarkdownDialog.js +59 -0
  74. package/dist/esm/index.js +5 -0
  75. package/dist/esm/types.js +10 -0
  76. package/dist/esm/utils/insertAssetLinks.js +99 -0
  77. package/dist/esm/utils/insertAssetLinks.spec.js +18 -0
  78. package/dist/esm/utils/isValidUrl.js +4 -0
  79. package/dist/esm/utils/linkOrganizer.js +152 -0
  80. package/dist/esm/utils/linkOrganizer.spec.js +53 -0
  81. package/dist/esm/utils/replaceMailtoAmp.js +5 -0
  82. package/dist/esm/utils/replaceMailtoAmp.spec.js +18 -0
  83. package/dist/esm/utils/specialCharacters.js +218 -0
  84. package/dist/esm/utils/userAgent.js +13 -0
  85. package/dist/{MarkdownActions.d.ts → types/MarkdownActions.d.ts} +38 -38
  86. package/dist/{MarkdownEditor.d.ts → types/MarkdownEditor.d.ts} +22 -22
  87. package/dist/types/__fixtures__/FakeSdk.d.ts +8 -0
  88. package/dist/types/__fixtures__/asset/index.d.ts +6 -0
  89. package/dist/types/__fixtures__/content-type/index.d.ts +2 -0
  90. package/dist/types/__fixtures__/entry/index.d.ts +5 -0
  91. package/dist/types/__fixtures__/fixtures.d.ts +6 -0
  92. package/dist/types/__fixtures__/locale/index.d.ts +42 -0
  93. package/dist/types/__fixtures__/space/index.d.ts +2 -0
  94. package/dist/{codemirrorImports.d.ts → types/codemirrorImports.d.ts} +5 -5
  95. package/dist/{components → types/components}/HeadingSelector.d.ts +7 -7
  96. package/dist/{components → types/components}/InsertLinkSelector.d.ts +9 -9
  97. package/dist/{components → types/components}/MarkdownBottomBar.d.ts +11 -11
  98. package/dist/{components → types/components}/MarkdownConstraints.d.ts +6 -6
  99. package/dist/{components → types/components}/MarkdownPreview.d.ts +14 -14
  100. package/dist/{components → types/components}/MarkdownTabs.d.ts +8 -8
  101. package/dist/{components → types/components}/MarkdownTextarea/CodeMirrorWrapper.d.ts +58 -58
  102. package/dist/{components → types/components}/MarkdownTextarea/MarkdownCommands.d.ts +33 -33
  103. package/dist/{components → types/components}/MarkdownTextarea/MarkdownTextarea.d.ts +17 -17
  104. package/dist/{components → types/components}/MarkdownTextarea/createMarkdownEditor.d.ts +55 -55
  105. package/dist/{components → types/components}/MarkdownToolbar.d.ts +12 -12
  106. package/dist/types/components/icons.d.ts +18 -0
  107. package/dist/{dialogs → types/dialogs}/CheatsheetModalDialog.d.ts +4 -4
  108. package/dist/{dialogs → types/dialogs}/ConfirmInsertAssetModalDialog.d.ts +23 -23
  109. package/dist/{dialogs → types/dialogs}/EmdebExternalContentDialog.d.ts +9 -9
  110. package/dist/{dialogs → types/dialogs}/InsertLinkModalDialog.d.ts +17 -17
  111. package/dist/{dialogs → types/dialogs}/InsertTableModalDialog.d.ts +13 -13
  112. package/dist/{dialogs → types/dialogs}/SpecialCharacterModalDialog.d.ts +9 -9
  113. package/dist/{dialogs → types/dialogs}/ZenModeModalDialog.d.ts +24 -24
  114. package/dist/{dialogs → types/dialogs}/openMarkdownDialog.d.ts +5 -5
  115. package/dist/{dialogs → types/dialogs}/renderMarkdownDialog.d.ts +8 -8
  116. package/dist/{index.d.ts → types/index.d.ts} +5 -5
  117. package/dist/{types.d.ts → types/types.d.ts} +75 -75
  118. package/dist/{utils → types/utils}/insertAssetLinks.d.ts +29 -29
  119. package/dist/types/utils/insertAssetLinks.spec.d.ts +1 -0
  120. package/dist/{utils → types/utils}/isValidUrl.d.ts +2 -2
  121. package/dist/{utils → types/utils}/linkOrganizer.d.ts +6 -6
  122. package/dist/types/utils/linkOrganizer.spec.d.ts +1 -0
  123. package/dist/{utils → types/utils}/replaceMailtoAmp.d.ts +1 -1
  124. package/dist/types/utils/replaceMailtoAmp.spec.d.ts +1 -0
  125. package/dist/{utils → types/utils}/specialCharacters.d.ts +4 -4
  126. package/dist/{utils → types/utils}/userAgent.d.ts +1 -1
  127. package/package.json +25 -12
  128. package/CHANGELOG.md +0 -314
  129. package/dist/components/icons.d.ts +0 -18
  130. package/dist/field-editor-markdown.cjs.development.js +0 -3609
  131. package/dist/field-editor-markdown.cjs.development.js.map +0 -1
  132. package/dist/field-editor-markdown.cjs.production.min.js +0 -216
  133. package/dist/field-editor-markdown.cjs.production.min.js.map +0 -1
  134. package/dist/field-editor-markdown.esm.js +0 -3599
  135. package/dist/field-editor-markdown.esm.js.map +0 -1
  136. package/dist/index.js +0 -8
@@ -1 +0,0 @@
1
- {"version":3,"file":"field-editor-markdown.cjs.development.js","sources":["../src/components/MarkdownBottomBar.tsx","../src/components/MarkdownConstraints.tsx","../src/utils/replaceMailtoAmp.ts","../src/components/MarkdownPreview.tsx","../src/components/MarkdownTabs.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/HeadingSelector.tsx","../src/components/icons.tsx","../src/components/InsertLinkSelector.tsx","../src/components/MarkdownToolbar.tsx","../src/types.ts","../src/dialogs/CheatsheetModalDialog.tsx","../src/dialogs/ConfirmInsertAssetModalDialog.tsx","../src/utils/isValidUrl.ts","../src/dialogs/EmdebExternalContentDialog.tsx","../src/dialogs/InsertLinkModalDialog.tsx","../src/dialogs/InsertTableModalDialog.tsx","../src/utils/specialCharacters.ts","../src/dialogs/SpecialCharacterModalDialog.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';\n\nimport { TextLink, Paragraph } from '@contentful/f36-components';\nimport tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\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 lineHeight: 'inherit',\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 >\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","import React from 'react';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport tokens from '@contentful/f36-tokens';\nimport { ConstraintsUtils, CharCounter, CharValidation } from '@contentful/field-editor-shared';\nimport { css } from 'emotion';\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","// This code will replace '&amp;' with '&' only inside the href attribute of the mailto link.\n// Otherwise the mailto link will not work correctly\nexport const replaceMailtoAmp = (string: string) => {\n return string.replace(/href=\"mailto:[^\"]*&amp;/g, function (match) {\n return match.replace(/&amp;/g, '&');\n });\n};\n","import React from 'react';\n\nimport tokens from '@contentful/f36-tokens';\nimport DOMPurify from 'dompurify';\nimport { css, cx } from 'emotion';\nimport Markdown from 'markdown-to-jsx';\n\nimport { EditorDirection, PreviewComponents } from '../types';\nimport { replaceMailtoAmp } from '../utils/replaceMailtoAmp';\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 -- TODO: describe this disable @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 replaceMailtoAmp(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 -- TODO: describe this disable @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';\n\nimport tokens from '@contentful/f36-tokens';\nimport { css, cx } from 'emotion';\n\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 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 -- TODO: describe this disable @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 CodeMirror from 'codemirror';\nimport 'codemirror/addon/edit/matchbrackets';\nimport throttle from 'lodash/throttle';\nimport transform from 'lodash/transform';\n\nimport { EditorDirection } from '../../types';\nimport * as userAgent from '../../utils/userAgent';\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 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 spellcheck: true,\n inputStyle: 'contenteditable',\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 -- TODO: describe this disable\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 max from 'lodash/max';\nimport min from 'lodash/min';\nimport range from 'lodash/range';\nimport times from 'lodash/times';\n// eslint-disable-next-line -- TODO: describe this disable 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 { EditorDirection } from '../../types';\nimport * as CodeMirrorWrapper from './CodeMirrorWrapper';\nimport * as Commands from './MarkdownCommands';\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';\n\nimport tokens from '@contentful/f36-tokens';\nimport { css, cx } from 'emotion';\n\nimport { EditorDirection } from '../../types';\nimport { createMarkdownEditor } from './createMarkdownEditor';\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 cursor: 'not-allowed';\n }\n .CodeMirror-cursors {\n visibility: hidden !important;\n }\n .CodeMirror-scroll,\n .CodeMirror-sizer,\n .CodeMirror-lines {\n cursor: not-allowed;\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 // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n }, []);\n\n useEffect(() => {\n if (editor) {\n props.onReady(editor);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\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';\n\nimport { Menu } from '@contentful/f36-components';\n\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';\n\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';\n\nimport { Menu } from '@contentful/f36-components';\nimport { Button } from '@contentful/f36-components';\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';\n\nimport { IconButton, Flex, Tooltip } from '@contentful/f36-components';\nimport type { ButtonProps } from '@contentful/f36-components';\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 tokens from '@contentful/f36-tokens';\nimport { css, cx } from 'emotion';\n\nimport { MarkdownActions } from '../types';\nimport { HeadingSelector } from './HeadingSelector';\nimport * as Icons from './icons';\nimport { InsertLinkSelector } from './InsertLinkSelector';\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 overflow: 'hidden',\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.ReactElement;\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 return (\n <Tooltip className={styles.tooltip} placement={tooltipPlace} content={tooltip}>\n <IconButton\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 icon={children}\n aria-label={tooltip}\n />\n </Tooltip>\n );\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\" flexWrap=\"wrap\">\n <Flex flexWrap=\"wrap\">\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 tooltip=\"Expand\">\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 <IconButton\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 icon={<Icons.Zen label=\"Collapse\" className={styles.icon} />}\n aria-label=\"Collapse\"\n />\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","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';\n\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport { ModalContent } from '@contentful/f36-components';\nimport { TextLink, Heading } from '@contentful/f36-components';\nimport tokens from '@contentful/f36-tokens';\nimport { css, cx } from 'emotion';\n\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\n\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';\n\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport {\n ModalContent,\n ModalControls,\n Paragraph,\n Button,\n EntityList,\n} from '@contentful/f36-components';\n\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","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';\n\nimport { DialogsAPI } from '@contentful/app-sdk';\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 tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\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, { useState, useRef, useEffect } from 'react';\n\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport {\n ModalContent,\n ModalControls,\n Button,\n Form,\n FormControl,\n TextInput,\n} from '@contentful/f36-components';\n\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\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>\n Extra link information, usually shown as a tooltip on mouse hover\n </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","import React, { useState, useRef, useEffect } from 'react';\n\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport {\n ModalContent,\n ModalControls,\n Button,\n Form,\n FormControl,\n TextInput,\n} from '@contentful/f36-components';\nimport inRange from 'lodash/inRange';\n\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","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';\n\nimport { DialogsAPI } from '@contentful/app-sdk';\nimport {\n ModalContent,\n ModalControls,\n Text,\n Flex,\n Button,\n Tooltip,\n} from '@contentful/f36-components';\nimport tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\nimport { MarkdownDialogType, MarkdownDialogsParams } from '../types';\nimport { specialCharacters } from '../utils/specialCharacters';\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 from 'react';\n\nimport { DialogsAPI, DialogExtensionSDK } from '@contentful/app-sdk';\nimport { ChevronRightIcon, ChevronLeftIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport { css, cx } from 'emotion';\n\nimport { MarkdownBottomBar, MarkdownHelp } from '../components/MarkdownBottomBar';\nimport { MarkdownPreview } from '../components/MarkdownPreview';\nimport { InitializedEditorType } from '../components/MarkdownTextarea/MarkdownTextarea';\nimport { MarkdownTextarea } from '../components/MarkdownTextarea/MarkdownTextarea';\nimport { MarkdownToolbar } from '../components/MarkdownToolbar';\nimport { openCheatsheetModal } from '../dialogs/CheatsheetModalDialog';\nimport { createMarkdownActions } from '../MarkdownActions';\nimport { MarkdownDialogType, MarkdownDialogsParams, PreviewComponents } from '../types';\n\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 -- TODO: describe this disable @typescript-eslint/no-explicit-any\n props.sdk?.window?.updateHeight('100%' as any);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\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 // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\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 -- TODO: describe this disable @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 -- TODO: describe this disable @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 isObject from 'lodash/isObject';\nimport isString from 'lodash/isString';\nimport max from 'lodash/max';\n// eslint-disable-next-line -- TODO: describe this disable\nimport isFinite from 'lodash/isFinite';\n// eslint-disable-next-line -- TODO: describe this disable\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 { KnownSDK } from '@contentful/app-sdk';\n\nimport { InitializedEditorType } from './components/MarkdownTextarea/MarkdownTextarea';\nimport { openConfirmInsertAsset } from './dialogs/ConfirmInsertAssetModalDialog';\nimport { openEmbedExternalContentDialog } from './dialogs/EmdebExternalContentDialog';\nimport { openInsertLinkDialog } from './dialogs/InsertLinkModalDialog';\nimport { openInsertTableDialog } from './dialogs/InsertTableModalDialog';\nimport { openInsertSpecialCharacter } from './dialogs/SpecialCharacterModalDialog';\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 -- TODO: describe this disable @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 -- TODO: describe this disable @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';\n\nimport { FieldExtensionSDK } from '@contentful/app-sdk';\nimport tokens from '@contentful/f36-tokens';\nimport { FieldConnector } from '@contentful/field-editor-shared';\nimport { css } from 'emotion';\n\nimport { MarkdownBottomBar, MarkdownHelp } from './components/MarkdownBottomBar';\nimport { MarkdownConstraints } from './components/MarkdownConstraints';\nimport { MarkdownPreview } from './components/MarkdownPreview';\nimport { MarkdownTabs } from './components/MarkdownTabs';\nimport { MarkdownTextarea } from './components/MarkdownTextarea/MarkdownTextarea';\nimport { InitializedEditorType } from './components/MarkdownTextarea/MarkdownTextarea';\nimport { MarkdownToolbar } from './components/MarkdownToolbar';\nimport { openCheatsheetModal } from './dialogs/CheatsheetModalDialog';\nimport { createMarkdownActions } from './MarkdownActions';\nimport { MarkdownTab, PreviewComponents } from './types';\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 // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n }, [editor]);\n\n React.useEffect(() => {\n props.sdk.access.can('create', 'Asset').then((value) => {\n setCanUploadAssets(value);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\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 // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n }, [editor]);\n\n const openMarkdownHelp = React.useCallback(() => {\n openCheatsheetModal(props.sdk.dialogs);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\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';\n\nimport {\n FieldExtensionSDK,\n DialogExtensionSDK,\n OpenCustomWidgetOptions,\n} from '@contentful/app-sdk';\nimport { ModalDialogLauncher } from '@contentful/field-editor-shared';\n\nimport { MarkdownDialogsParams, PreviewComponents } from '../types';\nimport { MarkdownDialogType } from '../types';\nimport { CheatsheetModalDialog } from './CheatsheetModalDialog';\nimport { ConfirmInsertAssetModalDialog } from './ConfirmInsertAssetModalDialog';\nimport {\n EmbedExternalContentModal,\n EmbedExternalContentModalResult,\n} from './EmdebExternalContentDialog';\nimport { InsertLinkModal, InsertLinkModalResult } from './InsertLinkModalDialog';\nimport { InsertTableModal, InsertTableModalResult } from './InsertTableModalDialog';\nimport { SpecialCharacterModalDialog } from './SpecialCharacterModalDialog';\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';\n\nimport { DialogExtensionSDK } from '@contentful/app-sdk';\n\nimport { MarkdownDialogsParams, MarkdownDialogType } from '../types';\nimport { CheatsheetModalDialog } from './CheatsheetModalDialog';\nimport { ConfirmInsertAssetModalDialog } from './ConfirmInsertAssetModalDialog';\nimport { EmbedExternalContentModal } from './EmdebExternalContentDialog';\nimport { InsertLinkModal } from './InsertLinkModalDialog';\nimport { InsertTableModal } from './InsertTableModalDialog';\nimport { SpecialCharacterModalDialog } from './SpecialCharacterModalDialog';\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 -- TODO: describe this disable @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","justifyContent","background","tokens","gray100","border","gray400","borderBottomLeftRadius","borderRadiusSmall","borderBottomRightRadius","padding","spacingXs","spacingS","help","color","gray700","fontSize","fontSizeS","button","lineHeight","MarkdownHelp","props","React","Paragraph","marginBottom","className","TextLink","as","testId","onClick","MarkdownBottomBar","children","fontSizeM","marginTop","MarkdownConstraints","constraints","ConstraintsUtils","fromFieldValidations","sdk","field","validations","type","checkConstraint","makeChecker","CharCounter","value","CharValidation","replaceMailtoAmp","string","replace","match","spacingL","fontStackPrimary","lineHeightDefault","spacingM","gray900","gray300","gray200","blue500","fontStackMonospace","framed","height","maxHeight","overflowY","zen","maxWidth","margin","rtl","direction","MarkdownLink","Embedly","rest","url","href","target","rel","MarkdownPreview","memo","cx","minHeight","undefined","mode","cleanHTML","useMemo","DOMPurify","sanitize","Markdown","options","overrides","a","component","previewComponents","embedly","displayName","zIndex","flexDirection","overflow","tab","cursor","minWidth","borderTopLeftRadius","borderTopRightRadius","marginLeft","textAlign","backgroundColor","borderBottomColor","outline","boxShadow","boxShadowHeavy","transition","transitionEasingDefault","transitionDurationShort","inactiveTab","MarkdownTabItem","isActive","onSelect","name","onKeyDown","e","keyCode","tabIndex","role","MarkdownTabs","active","userAgent","get","window","platform","ctrlKey","tests","ios","test","MSStream","getCtrlKey","stripUnit","cssRegex","matchedValue","Error","parseFloat","create","host","fixedHeight","readOnly","initializedWithValue","LF","EDITOR_SIZE","min","max","shift","cm","CodeMirror","lineNumbers","undoDepth","matchBrackets","lineWrapping","lineSeparator","theme","tabSize","indentWithTabs","indentUnit","autoRefresh","spellcheck","inputStyle","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","history","setFullsize","refresh","toTextArea","current","heightAtLine","lastLine","next","fn","throttleInterval","map","addKeyMap","transform","acc","key","line","ch","clearHistory","lineNumber","defaultToCurrentLineNumber","character","noFocus","scroll","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","bold","italic","strike","quote","modifySelection","code","link","h1","toggleHeader","h2","h3","ul","ulToggleFn","ol","olToggleFn","undo","redo","hr","indent","dedent","table","nl","markup","indentation","config","tableTemplate","rows","cols","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","headerRow","concat","level","currentHeader","selectHeader","removedCh","diff","header","createMarkdownEditor","CodeMirrorWrapper","wrapChange","api","actions","Commands","hasUndo","hasRedo","events","onScroll","onChange","onPaste","insert","getContent","setContent","clear","B","I","red600","gray600","disabled","MarkdownTextarea","hostRef","useRef","setEditor","useState","useEffect","Object","assign","onReady","ref","style","visible","HeadingSelector","handleMenuClick","heading","Menu","Trigger","List","Item","srOnly","position","width","clip","Zen","label","viewBox","d","Strikethrough","Indent","Dedent","Cubes","Table","SpecialChar","OrgLinks","Undo","Redo","InsertLinkSelector","canAddNew","MultipleMediaContextMenu","Button","isDisabled","startIcon","AssetIcon","size","variant","onSelectExisting","placement","endIcon","ChevronDownIcon","onAddNew","Number","zIndexWorkbenchHeader","spacing2Xs","marginRight","icon","fill","verticalAlign","zenButton","zenButtonPressed","tooltip","zIndexTooltip","ToolbarButton","forwardRef","tooltipPlace","otherProps","Tooltip","content","IconButton","MainButtons","headings","HeadingIcon","simple","FormatBoldIcon","FormatItalicIcon","QuoteIcon","ListBulletedIcon","ListNumberedIcon","insertLink","LinkIcon","AdditionalButtons","Icons","CodeIcon","HorizontalRuleIcon","embedExternalContent","insertTable","insertSpecialCharacter","organizeLinks","DefaultMarkdownToolbar","showAdditional","setShowAdditional","Flex","flexWrap","MoreHorizontalIcon","linkExistingMedia","addNewMedia","canUploadAssets","openZenMode","ZenMarkdownToolbar","closeZenMode","MarkdownToolbar","MarkdownDialogType","flexColumnContainer","flexColumn","flexGrow","verticalDivider","borderRight","gray500","paddingRight","spacing3Xl","spacing2Xl","preview","unOrderedListPreview","listStyleType","orderedListPreview","paddingLeft","fontSize2Xl","fontSizeXl","fontSizeL","helpItem","alignItems","spacingXl","helpLink","flexRowContainer","CheatsheetModalDialog","ModalContent","Heading","openCheatsheetModal","dialogs","openCurrent","shouldCloseOnEscapePress","shouldCloseOnOverlayClick","parameters","cheatsheet","ConfirmInsertAssetModalDialog","onClose","assets","locale","localesNumber","EntityList","description","thumbnailUrl","thumbnailAltText","ModalControls","openConfirmInsertAsset","confirmInsertAsset","urlRegex","isValidUrl","widthFiledGroup","radioButtonGroup","paddingTop","radioButton","makeEmbedlyLink","selectedUnit","attachSocial","s","percent","px","isWidthValid","unit","EmbedExternalContentModal","mainInputRef","setUrl","setUnit","urlIsValid","setUrlValidity","setWidth","setAttachSocial","Form","FormControl","id","isRequired","isInvalid","Label","TextInput","placeholder","HelpText","ValidationMessage","Radio","isChecked","Checkbox","Text","fontColor","openEmbedExternalContentDialog","InsertLinkModal","setText","touched","setTouched","setTitle","onInsert","values","onSubmit","Boolean","maxLength","openInsertLinkDialog","params","InsertTableModal","setRows","setColumns","rowsAreValid","inRange","colsAreValid","toString","pattern","autoComplete","openInsertTableDialog","specialCharacters","desc","buttonPanel","charButton","selectedCharButton","SpecialCharacterModalDialog","selectedCharacter","setSelectedCharacter","String","fromCharCode","char","openInsertSpecialCharacter","left","right","top","bottom","topSplit","bottomSplit","editorSplit","overflowX","editorSplitFullscreen","previewSplit","separator","hideButton","showButton","borderRightWidth","ZenModeModalDialog","currentValue","setCurrentValue","initialValue","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","push","newId","findAll","textOrLabels","isString","ids","x","parseInt","isFinite","flags","matches","re","RegExp","source","found","exec","lastIndex","index","insertAssetsWithConfirmation","default","insertAnyway","LinkOrganizer","notifier","success","entity","navigator","openNewAsset","slideIn","waitForClose","markdownLinks","selectMultipleAssets","container","fontFamily","MarkdownEditor","selectedTab","setSelectedTab","setCanUploadAssets","access","can","then","isActionDisabled","openMarkdownHelp","useCallback","trimmedValue","MarkdownEditorConnected","FieldConnector","isInitiallyDisabled","externalReset","openMarkdownDialog","ModalDialogLauncher","openDialog","removeValue","Promise","reject","renderMarkdownDialog","invocation","startAutoResizer","close"],"mappings":"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"}