@onereach/ui-components 26.2.1 → 26.2.2-beta.5851.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/esm/{OrAutocomplete-DUrxhDnG.mjs → OrAutocomplete-b1S9lrS_.mjs} +3 -3
  2. package/dist/esm/{OrAutocomplete-DUrxhDnG.mjs.map → OrAutocomplete-b1S9lrS_.mjs.map} +1 -1
  3. package/dist/esm/{OrButton-_RCmYvxT.mjs → OrButton-ZxDr22t7.mjs} +2 -2
  4. package/dist/esm/{OrButton-_RCmYvxT.mjs.map → OrButton-ZxDr22t7.mjs.map} +1 -1
  5. package/dist/esm/{OrButton.vue_vue_type_script_lang-CAOLKmru.mjs → OrButton.vue_vue_type_script_lang-CkMyXNEI.mjs} +26 -26
  6. package/dist/esm/OrButton.vue_vue_type_script_lang-CkMyXNEI.mjs.map +1 -0
  7. package/dist/esm/{OrButtonGroup-BA_S1Gl5.mjs → OrButtonGroup-CzWH9eea.mjs} +2 -2
  8. package/dist/esm/{OrButtonGroup-BA_S1Gl5.mjs.map → OrButtonGroup-CzWH9eea.mjs.map} +1 -1
  9. package/dist/esm/{OrCardCollection-BCS_tX5j.mjs → OrCardCollection-52Rx7yQ3.mjs} +2 -2
  10. package/dist/esm/{OrCardCollection-BCS_tX5j.mjs.map → OrCardCollection-52Rx7yQ3.mjs.map} +1 -1
  11. package/dist/esm/{OrCheckboxGroup-BbV_sTYd.mjs → OrCheckboxGroup-C76zxQ10.mjs} +2 -2
  12. package/dist/esm/{OrCheckboxGroup-BbV_sTYd.mjs.map → OrCheckboxGroup-C76zxQ10.mjs.map} +1 -1
  13. package/dist/esm/{OrCheckboxTree-Bj6BZxdn.mjs → OrCheckboxTree-D5Ejbly0.mjs} +2 -2
  14. package/dist/esm/{OrCheckboxTree-Bj6BZxdn.mjs.map → OrCheckboxTree-D5Ejbly0.mjs.map} +1 -1
  15. package/dist/esm/{OrConfirm-CHaw4Kx9.mjs → OrConfirm-DaPDWu0q.mjs} +31 -31
  16. package/dist/esm/OrConfirm-DaPDWu0q.mjs.map +1 -0
  17. package/dist/esm/{OrDataGrid-DilQSW6Y.mjs → OrDataGrid-BCwAsNEo.mjs} +8 -8
  18. package/dist/esm/{OrDataGrid-DilQSW6Y.mjs.map → OrDataGrid-BCwAsNEo.mjs.map} +1 -1
  19. package/dist/esm/{OrDateFormat-tizCaRnI.mjs → OrDateFormat-C6cy1EvX.mjs} +2 -2
  20. package/dist/esm/{OrDateFormat-tizCaRnI.mjs.map → OrDateFormat-C6cy1EvX.mjs.map} +1 -1
  21. package/dist/esm/{OrDatePicker-B_N24Q-T.mjs → OrDatePicker-DNeOsEsZ.mjs} +2 -2
  22. package/dist/esm/{OrDatePicker-B_N24Q-T.mjs.map → OrDatePicker-DNeOsEsZ.mjs.map} +1 -1
  23. package/dist/esm/{OrDateRangePicker-B1WDbBMb.mjs → OrDateRangePicker-Crpgxb7Q.mjs} +2 -2
  24. package/dist/esm/{OrDateRangePicker-B1WDbBMb.mjs.map → OrDateRangePicker-Crpgxb7Q.mjs.map} +1 -1
  25. package/dist/esm/{OrDateTimeFormat-BYiqGZKc.mjs → OrDateTimeFormat-DilIntxx.mjs} +2 -2
  26. package/dist/esm/{OrDateTimeFormat-BYiqGZKc.mjs.map → OrDateTimeFormat-DilIntxx.mjs.map} +1 -1
  27. package/dist/esm/{OrDateTimePicker-CNt_o1Js.mjs → OrDateTimePicker-4_NxJ8fZ.mjs} +2 -2
  28. package/dist/esm/{OrDateTimePicker-CNt_o1Js.mjs.map → OrDateTimePicker-4_NxJ8fZ.mjs.map} +1 -1
  29. package/dist/esm/{OrDateTimePicker.vue_vue_type_script_lang-Btv1OOQV.mjs → OrDateTimePicker.vue_vue_type_script_lang-DpBAUAHC.mjs} +2 -2
  30. package/dist/esm/{OrDateTimePicker.vue_vue_type_script_lang-Btv1OOQV.mjs.map → OrDateTimePicker.vue_vue_type_script_lang-DpBAUAHC.mjs.map} +1 -1
  31. package/dist/esm/{OrFilter-DRhu4YA2.mjs → OrFilter-CYD-gDsX.mjs} +2 -2
  32. package/dist/esm/{OrFilter-DRhu4YA2.mjs.map → OrFilter-CYD-gDsX.mjs.map} +1 -1
  33. package/dist/esm/{OrFilterPopover-BZJ1Au34.mjs → OrFilterPopover-DXO-6y8a.mjs} +2 -2
  34. package/dist/esm/{OrFilterPopover-BZJ1Au34.mjs.map → OrFilterPopover-DXO-6y8a.mjs.map} +1 -1
  35. package/dist/esm/{OrList-CX3cwJvm.mjs → OrList-B2rj_Y5Z.mjs} +2 -2
  36. package/dist/esm/{OrList-CX3cwJvm.mjs.map → OrList-B2rj_Y5Z.mjs.map} +1 -1
  37. package/dist/esm/{OrPagination-pcDCKc9g.mjs → OrPagination-BXzDa-Su.mjs} +2 -2
  38. package/dist/esm/{OrPagination-pcDCKc9g.mjs.map → OrPagination-BXzDa-Su.mjs.map} +1 -1
  39. package/dist/esm/{OrRichTextEditor-D0UmlBKz.mjs → OrRichTextEditor-yRGXHaoT.mjs} +2 -2
  40. package/dist/esm/{OrRichTextEditor-D0UmlBKz.mjs.map → OrRichTextEditor-yRGXHaoT.mjs.map} +1 -1
  41. package/dist/esm/{OrSelect-ZitJ7RzV.mjs → OrSelect-BeL73iXu.mjs} +3 -3
  42. package/dist/esm/OrSelect-BeL73iXu.mjs.map +1 -0
  43. package/dist/esm/{OrSorting-ydjXM1Si.mjs → OrSorting-DdcXOjvm.mjs} +2 -2
  44. package/dist/esm/{OrSorting-ydjXM1Si.mjs.map → OrSorting-DdcXOjvm.mjs.map} +1 -1
  45. package/dist/esm/{OrTagInput-Dh7CXsmw.mjs → OrTagInput-B2U22gXE.mjs} +2 -2
  46. package/dist/esm/{OrTagInput-Dh7CXsmw.mjs.map → OrTagInput-B2U22gXE.mjs.map} +1 -1
  47. package/dist/esm/{OrTags-Ce70YtZr.mjs → OrTags-dP8zjvgS.mjs} +2 -2
  48. package/dist/esm/{OrTags-Ce70YtZr.mjs.map → OrTags-dP8zjvgS.mjs.map} +1 -1
  49. package/dist/esm/{OrTimeFormat-DY_z5-U0.mjs → OrTimeFormat-BDWTGw-r.mjs} +2 -2
  50. package/dist/esm/{OrTimeFormat-DY_z5-U0.mjs.map → OrTimeFormat-BDWTGw-r.mjs.map} +1 -1
  51. package/dist/esm/{OrTimePicker-BMaG_y1J.mjs → OrTimePicker-BzUELsN7.mjs} +2 -2
  52. package/dist/esm/{OrTimePicker-BMaG_y1J.mjs.map → OrTimePicker-BzUELsN7.mjs.map} +1 -1
  53. package/dist/esm/{OrTimeRangePicker-DFNCEq78.mjs → OrTimeRangePicker-D5-xT9Bk.mjs} +2 -2
  54. package/dist/esm/{OrTimeRangePicker-DFNCEq78.mjs.map → OrTimeRangePicker-D5-xT9Bk.mjs.map} +1 -1
  55. package/dist/esm/{OrTree-BEas_s3i.mjs → OrTree-D6Rn9TKW.mjs} +2 -2
  56. package/dist/esm/{OrTree-BEas_s3i.mjs.map → OrTree-D6Rn9TKW.mjs.map} +1 -1
  57. package/dist/esm/components/index.mjs +29 -29
  58. package/dist/esm/components/or-autocomplete-v3/index.mjs +1 -1
  59. package/dist/esm/components/or-button-group-v3/index.mjs +1 -1
  60. package/dist/esm/components/or-button-v3/index.mjs +2 -2
  61. package/dist/esm/components/or-card-collection-v3/index.mjs +1 -1
  62. package/dist/esm/components/or-checkbox-group-v3/index.mjs +1 -1
  63. package/dist/esm/components/or-checkbox-tree-v3/index.mjs +1 -1
  64. package/dist/esm/components/or-confirm-v3/index.mjs +1 -1
  65. package/dist/esm/components/or-data-grid-v3/index.mjs +1 -1
  66. package/dist/esm/components/or-date-format-v3/index.mjs +1 -1
  67. package/dist/esm/components/or-date-picker-v3/index.mjs +1 -1
  68. package/dist/esm/components/or-date-range-picker-v3/index.mjs +1 -1
  69. package/dist/esm/components/or-date-time-format-v3/index.mjs +1 -1
  70. package/dist/esm/components/or-date-time-picker-v3/index.mjs +2 -2
  71. package/dist/esm/components/or-filter-popover-v3/index.mjs +1 -1
  72. package/dist/esm/components/or-filter-v3/index.mjs +1 -1
  73. package/dist/esm/components/or-list-v3/index.mjs +1 -1
  74. package/dist/esm/components/or-pagination-v3/index.mjs +1 -1
  75. package/dist/esm/components/or-rich-text-editor-v3/index.mjs +1 -1
  76. package/dist/esm/components/or-select-v3/index.mjs +1 -1
  77. package/dist/esm/components/or-sorting-v3/index.mjs +1 -1
  78. package/dist/esm/components/or-tag-input-v3/index.mjs +1 -1
  79. package/dist/esm/components/or-tags-v3/index.mjs +1 -1
  80. package/dist/esm/components/or-time-format-v3/index.mjs +1 -1
  81. package/dist/esm/components/or-time-picker-v3/index.mjs +1 -1
  82. package/dist/esm/components/or-time-range-picker-v3/index.mjs +1 -1
  83. package/dist/esm/components/or-toast-v3/index.mjs +1 -1
  84. package/dist/esm/components/or-tree-v3/index.mjs +1 -1
  85. package/dist/esm/index.mjs +29 -29
  86. package/dist/esm/{types-BoAoZvZV.mjs → types-B5xGdMJQ.mjs} +13 -13
  87. package/dist/esm/types-B5xGdMJQ.mjs.map +1 -0
  88. package/package.json +4 -5
  89. package/dist/esm/OrButton.vue_vue_type_script_lang-CAOLKmru.mjs.map +0 -1
  90. package/dist/esm/OrConfirm-CHaw4Kx9.mjs.map +0 -1
  91. package/dist/esm/OrSelect-ZitJ7RzV.mjs.map +0 -1
  92. package/dist/esm/types-BoAoZvZV.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"OrRichTextEditor-D0UmlBKz.mjs","sources":["../../../components/or-rich-text-editor-v3/src/props.ts","../../../components/or-rich-text-editor-v3/src/styles.ts","../../../components/or-rich-text-editor-v3/src/utils/codemirror/theme.ts","../../../components/or-rich-text-editor-v3/src/utils/codemirror/codemirrorView.ts","../../../components/or-rich-text-editor-v3/src/utils/codemirror/codemirrorNode.ts","../../../components/or-rich-text-editor-v3/src/utils/markdown.ts","../../../components/or-rich-text-editor-v3/src/OrRichTextEditor.vue"],"sourcesContent":["export enum Formats {\n Markdown = 'markdown',\n Markup = 'markup',\n}\n\nexport type Tools = string[][]; // TODO: Improve this type\n\nexport enum RichTextEditorIcons {\n bold = 'format_bold',\n italic = 'format_italic',\n underline = 'format_underlined',\n strike = 'format_strikethrough',\n bulletList = 'format_list_bulleted',\n orderedList = 'format_list_numbered',\n link = 'link',\n highlight = 'highlight',\n redo = 'redo',\n undo = 'undo',\n codeBlock = 'code_blocks',\n blockquote = 'format_quote',\n file = 'attach_file',\n source = 'source_notes',\n}\n\nexport enum RichTextEditorTooltips {\n bold = 'Bold',\n italic = 'Italic',\n underline = 'Underline',\n strike = 'Strike',\n bulletList = 'Bulleted List',\n orderedList = 'Numbered List',\n link = 'Link',\n highlight = 'Highlight',\n redo = 'Redo',\n undo = 'Undo',\n codeBlock = 'Code Block',\n blockquote = 'Quote',\n file = 'File',\n source = 'Source',\n}\n","export const RichTextEditor: string[] = [\n // Layout\n 'layout-column',\n\n // Spacing\n 'gap-xs',\n\n // Box\n 'max-h-full',\n];\n\nexport const RichTextEditorToolbar: string[] = [\n // Layout\n 'layout-row',\n\n // Overflow\n 'overflow-x-scroll md:overflow-x-hidden',\n 'scrollbar-hidden',\n\n // Spacing\n 'px-0',\n 'py-sm',\n\n // Theme\n 'border-b-1',\n\n 'theme-border-outline',\n 'dark:theme-border-outline-dark',\n];\n\nexport const RichTextEditorToolbarGroup: string[] = [\n // Layout\n 'layout-row',\n\n // Spacing\n 'px-sm',\n 'py-0',\n\n 'gap-md',\n\n // Theme\n 'theme-foreground-outline',\n 'dark:theme-foreground-outline-dark',\n\n 'border-e-1 last:border-e-0',\n\n 'theme-border-outline',\n 'dark:theme-border-outline-dark',\n];\n\nexport const RichTextEditorControl: string[] = [\n // Typography\n 'typography-body-2-regular',\n\n // Size\n 'h-full',\n];\n","import { HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { EditorView } from '@codemirror/view';\nimport { tags as t } from '@lezer/highlight';\n\n// Using https://github.com/one-dark/vscode-one-dark-theme/ as reference for the colors\n\nimport { useTheme } from '@onereach/ui-components-common/hooks';\n\nconst themes = useTheme();\n\nconst chalky = themes?.backgroundColor['custom-colors-custom-6'],\n coral = themes?.backgroundColor['custom-colors-custom-1'],\n cyan = themes?.backgroundColor['custom-colors-custom-3'],\n invalid = themes?.backgroundColor?.white,\n ivory = themes?.backgroundColor['custom-colors-custom-6'],\n stone = themes?.backgroundColor['custom-colors-custom-5'], // Brightened compared to original to increase contrast\n malibu = themes?.backgroundColor['custom-colors-custom-3'],\n sage = themes?.backgroundColor.success,\n whiskey = themes?.backgroundColor.warning,\n violet = themes?.backgroundColor['custom-colors-custom-1'];\n // darkBackground = themes?.colors?.neutral?.[100],\n // highlightBackground = themes?.colors?.neutral?.[200],\n // background = themes?.colors?.neutral?.[100],\n // tooltipBackground = themes?.colors?.neutral?.[200],\n // selection = themes?.colors?.blue?.[100],\n // cursor = themes?.colors?.blue?.[700];\n\n/// The colors used in the theme, as CSS color strings.\nexport const color = {\n chalky,\n coral,\n cyan,\n invalid,\n ivory,\n stone,\n malibu,\n sage,\n whiskey,\n violet,\n // darkBackground,\n // highlightBackground,\n // background,\n // tooltipBackground,\n // selection,\n // cursor,\n};\n\n/// The editor theme styles for One Dark.\nexport const orCodeTheme = EditorView.theme({\n '&': {\n color: ivory,\n backgroundColor: themes?.backgroundColor?.['bg-primary-container'],\n },\n\n '.cm-editor': {\n border: 'none',\n borderRadius: themes?.spacing?.xs,\n },\n\n '&.cm-focused': {\n outline: 'none',\n },\n\n '.cm-scroller': {\n borderRadius: themes?.spacing?.xs,\n },\n\n '.cm-content': {\n // caretColor: cursor,\n },\n\n '.cm-button': {\n // background: highlightBackground,\n // color: themes?.colors?.neutral?.[600],\n border: 0,\n borderRadius: themes?.spacing?.xs,\n },\n\n '.cm-panel.cm-search input[type=checkbox]': {\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n\n // '.cm-cursor, .cm-dropCursor': { borderLeftColor: cursor },\n '&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection': {\n // backgroundColor: selection,\n },\n\n '.cm-panels': {\n // backgroundColor: darkBackground,\n color: ivory,\n },\n // '.cm-panels.cm-panels-top': { borderBottom: `2px solid ${themes?.colors?.neutral?.[200]}` },\n // '.cm-panels.cm-panels-bottom': { borderTop: `2px solid ${themes?.colors?.neutral?.[200]}` },\n\n '.cm-searchMatch': {\n // backgroundColor: themes?.colors?.neutral?.[100],\n // outline: `1px solid ${themes?.colors?.neutral?.[200]}`,\n },\n\n '.cm-searchMatch.cm-searchMatch-selected': {\n // backgroundColor: themes?.colors?.sky?.[100],\n },\n\n '.cm-activeLine': {\n backgroundColor: themes?.backgroundColor?.['bg-secondary-container'],\n },\n\n // '.cm-selectionMatch': { backgroundColor: themes?.colors?.lime?.[500] },\n\n '&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket': {\n // backgroundColor: themes?.colors?.lime?.[600],\n },\n\n '.cm-gutters': {\n backgroundColor: themes?.backgroundColor?.['primary-opacity-0-12'],\n color: stone,\n border: 'none',\n },\n\n '.cm-lineNumbers .cm-gutterElement': {\n paddingLeft: themes?.spacing?.['sm+*'],\n paddingRight: themes?.spacing?.['sm+*'],\n },\n\n '.cm-activeLineGutter': {\n backgroundColor: themes?.backgroundColor?.['primary-opacity-0-16'],\n },\n\n '.cm-foldPlaceholder': {\n backgroundColor: 'transparent',\n border: 'none',\n // color: themes?.colors?.neutral?.[200],\n },\n\n '.cm-tooltip': {\n border: 'none',\n // backgroundColor: tooltipBackground,\n },\n '.cm-tooltip .cm-tooltip-arrow:before': {\n borderTopColor: 'transparent',\n borderBottomColor: 'transparent',\n },\n '.cm-tooltip .cm-tooltip-arrow:after': {\n // borderTopColor: tooltipBackground,\n // borderBottomColor: tooltipBackground,\n },\n '.cm-tooltip-autocomplete': {\n '& > ul > li[aria-selected]': {\n // backgroundColor: highlightBackground,\n color: ivory,\n },\n },\n '.cm-textfield': {\n outline: 'none',\n // background: background,\n // color: themes?.colors?.neutral?.[600],\n // backgroundColor: themes?.colors?.neutral?.[100],\n // border: `1px solid ${themes?.colors?.neutral?.[200]}`,\n borderRadius: themes?.spacing?.xs,\n },\n}, { dark: true });\n\n/// The highlighting style for code in the One Dark theme.\nexport const orCodeHighlightStyle = HighlightStyle.define([\n {\n tag: t.keyword,\n color: violet,\n },\n {\n tag: [t.name, t.deleted, t.character, t.propertyName, t.macroName],\n color: coral,\n },\n {\n tag: [t.function(t.variableName), t.labelName],\n color: malibu,\n },\n {\n tag: [t.color, t.constant(t.name), t.standard(t.name)],\n color: whiskey,\n },\n {\n tag: [t.definition(t.name), t.separator],\n color: ivory,\n },\n {\n tag: [t.typeName, t.className, t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace],\n color: chalky,\n },\n {\n tag: [t.operator, t.operatorKeyword, t.url, t.escape, t.regexp, t.link, t.special(t.string)],\n color: cyan,\n },\n {\n tag: [t.meta, t.comment],\n color: stone,\n },\n {\n tag: t.strong,\n fontWeight: 'bold',\n },\n {\n tag: t.emphasis,\n fontStyle: 'italic',\n },\n {\n tag: t.strikethrough,\n textDecoration: 'line-through',\n },\n {\n tag: t.link,\n color: stone,\n textDecoration: 'underline',\n },\n {\n tag: t.heading,\n fontWeight: 'bold',\n color: coral,\n },\n {\n tag: [t.atom, t.bool, t.special(t.variableName)],\n color: whiskey,\n },\n {\n tag: [t.processingInstruction, t.string, t.inserted],\n color: sage,\n },\n {\n tag: t.invalid,\n color: invalid,\n },\n]);\n\n/// Extension to enable the One Dark theme (both the editor theme and\n/// the highlight style).\nconst theme = [orCodeTheme, syntaxHighlighting(orCodeHighlightStyle)];\n\nexport default theme;\n","import { EditorState as CMState, Transaction as CMTransaction, Extension } from '@codemirror/state';\nimport {\n Command,\n EditorView as CMView,\n keymap,\n highlightActiveLine,\n highlightActiveLineGutter,\n lineNumbers,\n} from '@codemirror/view';\nimport { exitCode } from 'prosemirror-commands';\nimport { Node as ProsemirrorNode } from 'prosemirror-model';\nimport { Selection, TextSelection } from 'prosemirror-state';\nimport { EditorView, NodeView } from 'prosemirror-view';\n\nimport orCodeTheme from './theme';\nimport { ComputeChange, CodeMirrorViewOptions } from './types';\n\nconst computeChange = (oldVal: string, newVal: string): ComputeChange | null => {\n if (oldVal === newVal) {\n return null;\n }\n\n let start = 0;\n let oldEnd = oldVal.length;\n let newEnd = newVal.length;\n\n while (start < oldEnd && oldVal.charCodeAt(start) === newVal.charCodeAt(start)) {\n start += 1;\n }\n\n while (oldEnd > start && newEnd > start && oldVal.charCodeAt(oldEnd - 1) === newVal.charCodeAt(newEnd - 1)) {\n oldEnd -= 1;\n newEnd -= 1;\n }\n\n return {\n from: start,\n to: oldEnd,\n text: newVal.slice(start, newEnd),\n };\n};\n\nclass CodeMirrorView implements NodeView {\n name: string;\n\n node: ProsemirrorNode;\n\n view: EditorView;\n\n dom: HTMLElement;\n\n cm: CMView;\n\n getPos: () => number;\n\n updating = false;\n\n constructor(options: CodeMirrorViewOptions) {\n // Store for later\n this.node = options.node;\n this.view = options.view;\n const cmExtensions = options.cmOptions?.extensions || [];\n this.name = 'codeBlock',\n\n this.getPos = options.getPos as () => number;\n\n const changeFilter = CMState.changeFilter.of((tr) => {\n if (!tr.docChanged && !this.updating) {\n this.forwardSelection();\n }\n return true;\n });\n\n // Create a CodeMirror instancew\n this.cm = new CMView({\n dispatch: this.dispatch.bind(this),\n });\n\n // The editor's outer node is our DOM representation\n this.dom = this.cm.dom;\n\n const cmState = CMState.create({\n doc: this.node.textContent,\n extensions: [\n orCodeTheme as Extension,\n changeFilter,\n highlightActiveLine(),\n highlightActiveLineGutter(),\n lineNumbers(),\n keymap.of([\n {\n key: 'ArrowUp',\n run: this.mayBeEscape('line', -1),\n },\n {\n key: 'ArrowLeft',\n run: this.mayBeEscape('char', -1),\n },\n {\n key: 'ArrowDown',\n run: this.mayBeEscape('line', 1),\n },\n {\n key: 'ArrowRight',\n run: this.mayBeEscape('char', 1),\n },\n {\n key: 'Ctrl-Enter',\n run: () => {\n if (exitCode(this.view.state, this.view.dispatch)) {\n this.view.focus();\n return true;\n }\n return false;\n },\n },\n ]),\n cmExtensions,\n ],\n });\n\n this.cm.setState(cmState);\n }\n\n forwardSelection() {\n if (!this.cm.hasFocus) {\n return;\n }\n\n const { state } = this.view;\n const selection = this.asProseMirrorSelection(state.doc);\n\n if (!selection.eq(state.selection)) {\n this.view.dispatch(state.tr.setSelection(selection));\n }\n }\n\n asProseMirrorSelection(doc: ProsemirrorNode) {\n const offset = this.getPos() + 1;\n const { anchor, head } = this.cm.state.selection.main;\n return TextSelection.create(doc, anchor + offset, head + offset);\n }\n\n dispatch(cmTr: CMTransaction) {\n this.cm.setState(cmTr.state);\n\n if (cmTr.docChanged && !this.updating) {\n const start = this.getPos() + 1;\n\n const cmValue = cmTr.state.doc.toString();\n const change = computeChange(this.node.textContent, cmValue);\n\n if (!change) {\n return;\n }\n\n const content = change.text ? this.view.state.schema.text(change.text) : null;\n\n const tr = this.view.state.tr.replaceWith(change.from + start, change.to + start, content as ProsemirrorNode);\n this.view.dispatch(tr);\n this.forwardSelection();\n }\n }\n\n mayBeEscape(unit: 'char' | 'line', dir: -1 | 1): Command {\n return (view) => {\n const { state } = view;\n const { selection } = state;\n\n const offsetToPos = () => {\n const offset = selection.main.from;\n const line = state.doc.lineAt(offset);\n return {\n line: line.number,\n ch: offset - line.from,\n };\n };\n\n const pos = offsetToPos();\n const hasSelection = state.selection.ranges.some((r) => !r.empty);\n\n const firstLine = 1;\n const lastLine = state.doc.lineAt(state.doc.length).number;\n\n if (\n hasSelection\n || pos.line !== (dir < 0 ? firstLine : lastLine)\n || (unit === 'char' && pos.ch !== (dir < 0 ? 0 : state.doc.line(pos.line).length))\n ) {\n return false;\n }\n\n const targetPos = this.getPos() + (dir < 0 ? 0 : this.node.nodeSize);\n const pmSelection = Selection.near(this.view.state.doc.resolve(targetPos), dir);\n this.view.dispatch(this.view.state.tr.setSelection(pmSelection).scrollIntoView());\n this.view.focus();\n return true;\n };\n }\n\n update(node: ProsemirrorNode) {\n if (node.type !== this.node.type) {\n return false;\n }\n\n this.node = node;\n const change = computeChange(this.cm.state.doc.toString(), node.textContent);\n\n if (change) {\n this.updating = true;\n this.cm.dispatch({\n changes: {\n from: change.from,\n to: change.to,\n insert: change.text,\n },\n });\n this.updating = false;\n }\n\n return true;\n }\n\n setSelection(anchor: number, head: number): void {\n this.focus();\n this.updating = true;\n this.cm.dispatch({\n selection: {\n anchor,\n head,\n },\n });\n this.updating = false;\n }\n\n focus() {\n this.cm.focus();\n this.forwardSelection();\n }\n\n selectNode() {\n this.focus();\n }\n\n stopEvent() {\n return true;\n }\n\n destroy() {\n this.cm.destroy();\n }\n}\n\nexport default CodeMirrorView;\n","import { javascript } from '@codemirror/lang-javascript';\nimport { Node } from '@tiptap/core';\nimport { minimalSetup } from 'codemirror';\n\nimport CodeBlockView from './codemirrorView';\n\nexport default Node.create({\n name: 'codeBlock',\n content: 'text*',\n marks: '',\n group: 'block',\n code: true,\n defining: true,\n isolating: true,\n\n parseHTML() {\n return [\n {\n tag: 'pre',\n preserveWhitespace: 'full',\n },\n ];\n },\n\n renderHTML() {\n return ['pre', ['code', 0]];\n },\n\n addNodeView() {\n return ({ node, editor, getPos }) => {\n return new CodeBlockView({\n node,\n view: editor.view,\n getPos: getPos as () => number,\n cmOptions: {\n extensions: [minimalSetup, javascript()],\n },\n });\n };\n },\n});\n","import Blockquote from '@tiptap/extension-blockquote';\nimport Bold from '@tiptap/extension-bold';\nimport BulletList from '@tiptap/extension-bullet-list';\nimport CodeBlock from '@tiptap/extension-code-block';\nimport HardBreak from '@tiptap/extension-hard-break';\nimport Highlight from '@tiptap/extension-highlight';\nimport HorizontalRule from '@tiptap/extension-horizontal-rule';\nimport Italic from '@tiptap/extension-italic';\nimport Link from '@tiptap/extension-link';\nimport ListItem from '@tiptap/extension-list-item';\nimport OrderedList from '@tiptap/extension-ordered-list';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Strike from '@tiptap/extension-strike';\nimport Underline from '@tiptap/extension-underline';\nimport { marked } from 'marked';\nimport {\n MarkdownSerializer as ProseMirrorMarkdownSerializer,\n defaultMarkdownSerializer,\n} from 'prosemirror-markdown';\nimport { DOMParser as ProseMirrorDOMParser, Node, Mark } from 'prosemirror-model';\n\nconst mdSerializerNodes = {\n ...defaultMarkdownSerializer.nodes,\n [Paragraph.name]: defaultMarkdownSerializer.nodes.paragraph,\n [BulletList.name]: defaultMarkdownSerializer.nodes.bullet_list,\n [ListItem.name]: defaultMarkdownSerializer.nodes.list_item,\n [OrderedList.name]: defaultMarkdownSerializer.nodes.ordered_list,\n [HardBreak.name]: defaultMarkdownSerializer.nodes.hard_break,\n [CodeBlock.name]: defaultMarkdownSerializer.nodes.code_block,\n [Blockquote.name]: defaultMarkdownSerializer.nodes.blockquote,\n [HorizontalRule.name]: defaultMarkdownSerializer.nodes.horizontal_rule,\n};\n\nconst mdSerializerMarks = {\n ...defaultMarkdownSerializer.marks,\n [Bold.name]: defaultMarkdownSerializer.marks.strong,\n [Strike.name]: {\n open: '~~',\n close: '~~',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Italic.name]: {\n open: ' _',\n close: '_ ',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Highlight.name]: {\n open: '==',\n close: '==',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Underline.name]: {\n open: '<u>',\n close: '</u>',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Link.name]: {\n open(state: any, mark: Mark, parent: Node, index: number) {\n return isPlainURL(mark, parent, index, 1) ? '<' : '[';\n },\n close(state: any, mark: Mark, parent: Node, index: number) {\n const href = mark.attrs.canonicalSrc || mark.attrs.href;\n\n return isPlainURL(mark, parent, index, -1)\n ? '>'\n : `](${state.esc(href)}${\n mark.attrs.title ? ` ${state.quote(mark.attrs.title)}` : ''\n })`;\n },\n },\n};\n\nfunction isPlainURL(link: Mark, parent: Node, index: number, side: number) {\n if (link.attrs.title || !/^\\w+:/.test(link.attrs.href)) return false;\n const content = parent.child(index + (side < 0 ? -1 : 0));\n if (\n !content.isText ||\n content.text !== link.attrs.href ||\n content.marks[content.marks.length - 1] !== link\n )\n return false;\n if (index === (side < 0 ? 1 : parent.childCount - 1)) return true;\n const next = parent.child(index + (side < 0 ? -2 : 1));\n return !link.isInSet(next.marks);\n}\n\nexport function serialize(schema: any, content: any) {\n const mdSerializer = new ProseMirrorMarkdownSerializer(\n mdSerializerNodes,\n mdSerializerMarks,\n );\n\n const proseMirrorDocument = schema.nodeFromJSON(content);\n\n return mdSerializer.serialize(proseMirrorDocument, { tightLists: true });\n}\n\nexport function deserialize(schema: any, content?: string) {\n if (!content) return null;\n const html = marked.parse(content);\n\n if (!html) return null;\n\n const parser = new DOMParser();\n const { body } = parser.parseFromString(html, 'text/html');\n\n // append original source as a comment that nodes can access\n body.append(document.createComment(content));\n\n const state = ProseMirrorDOMParser.fromSchema(schema).parse(body);\n return state.toJSON();\n}\n\n","<template>\n <div\n :ref=\"'root'\"\n :class=\"rootStyles\"\n >\n <template v-if=\"$slots.label || $slots.addon || label\">\n <OrLabel\n :variant=\"'input'\"\n :required=\"required\"\n :disabled=\"disabled\"\n >\n <slot name=\"label\">\n {{ label }}\n </slot>\n\n <template v-slot:addon>\n <slot name=\"addon\" />\n </template>\n </OrLabel>\n </template>\n\n <OrInputBox\n :ref=\"'containerRef'\"\n class=\"grow\"\n :direction=\"'column'\"\n :invalid=\"!!error\"\n :disabled=\"disabled\"\n @click=\"handleEditorClick()\"\n >\n <div\n :ref=\"'toolbarRef'\"\n :class=\"toolbarStyles\"\n :disabled=\"disabled || !isFocused\"\n >\n <div\n v-for=\"(tools, index) in toolbar\"\n :key=\"index\"\n :class=\"[...toolbarGroupStyles, { 'hidden': !isVisible(tools)}]\"\n :disabled=\"disabled || !isFocused\"\n >\n <div\n v-for=\"item in tools\"\n :key=\"item\"\n :class=\"['flex gap-md', { 'hidden': !isVisible(item)}]\"\n >\n <OrIconButton\n v-if=\"item === 'heading'\"\n :ref=\"'toolbarButtonRef'\"\n :icon=\"{ icon: headingIcon, variant: 'inherit' }\"\n :tooltip=\"{ content: item, placement: 'top' }\"\n :selected=\"isActive[item]\"\n :disabled=\"disabled || !isFocused\"\n @click=\"menuRef && menuRef.toggle()\"\n />\n\n <OrIconButton\n v-else-if=\"isVisible(item)\"\n :icon=\"{ icon: getRichTextEditorIcon(item), variant: 'inherit' }\"\n :tooltip=\"{ content: getRichTextEditorTooltipIcon(item), placement: 'top' }\"\n :selected=\"isActive[item]\"\n :disabled=\"disabled || !isFocused\"\n @click=\"handleToolbarClick(item)\"\n />\n </div>\n </div>\n\n <OrIconButton\n v-if=\"countOfNotVisibleTools > 0 && !isMobile\"\n :ref=\"'moreButtonRef'\"\n :class=\"['mx-sm']\"\n :icon=\"{ icon: 'more_horiz', variant: 'inherit' }\"\n :disabled=\"disabled || !isFocused\"\n :force-state=\"morePopoverRef && morePopoverRef.state === 'open' ? 'hover' : undefined\"\n @click=\"morePopoverRef && morePopoverRef.open()\"\n />\n </div>\n\n <div :class=\"['p-sm', 'overflow-auto', 'min-h-[88px]', 'h-full']\">\n <textarea\n v-show=\"disableMarkdown\"\n :ref=\"'textareaRef'\"\n v-model=\"sourceValue\"\n :activated=\"disableMarkdown\"\n class=\"block w-full h-full resize-none border-none outline-none bg-transparent typography-body-2-regular\"\n @input=\"handleInput\"\n />\n\n <div\n v-show=\"!disableMarkdown\"\n :ref=\"'controlRef'\"\n :class=\"controlStyles\"\n />\n\n <slot name=\"files\" />\n </div>\n </OrInputBox>\n\n <template v-if=\"$slots.hint || hint\">\n <OrHint\n v-show=\"!error\"\n :disabled=\"disabled\"\n >\n <slot name=\"hint\">\n {{ hint }}\n </slot>\n </OrHint>\n </template>\n\n <OrError\n v-show=\"typeof error === 'string' && error.length > 0\"\n :disabled=\"disabled\"\n >\n {{ error }}\n </OrError>\n\n <OrPopover\n v-if=\"moreButtonRef\"\n :ref=\"'morePopoverRef'\"\n :trigger=\"moreButtonRef && moreButtonRef.root\"\n :placement=\"'top-end'\"\n >\n <div class=\"flex p-sm gap-md\">\n <OrIconButton\n v-for=\"item in notVisibleTools\"\n :key=\"item\"\n :icon=\"{ icon: getRichTextEditorIcon(item), variant: 'inherit' }\"\n :tooltip=\"{ content: getRichTextEditorTooltipIcon(item), placement: 'top' }\"\n :selected=\"isActive[item]\"\n @click=\"handleToolbarClick(item)\"\n />\n </div>\n </OrPopover>\n\n <OrMenu\n v-if=\"toolbarButtonRef\"\n :ref=\"'menuRef'\"\n :trigger=\"toolbarButtonRef[getIndexOfHeading] && toolbarButtonRef[getIndexOfHeading].root\"\n :placement=\"'bottom-start'\"\n >\n <OrMenuItem\n v-for=\"heading in headingLevels\"\n :key=\"heading\"\n :selected=\"activeHeadingLevel === heading\"\n @click=\"handleToolbarClick('heading', heading)\"\n >\n Heading {{ heading }}\n </OrMenuItem>\n\n <OrMenuItem\n :selected=\"!activeHeadingLevel\"\n @click=\"handleToolbarClick('heading')\"\n >\n None\n </OrMenuItem>\n </OrMenu>\n\n <OrModal\n :is-open=\"isOpenLinkModal\"\n :size=\"'s'\"\n >\n <template v-slot:header>\n Add Link\n </template>\n\n <div :class=\"['layout-column', 'gap-md']\">\n <OrInput\n v-model=\"text\"\n :label=\"'Text'\"\n :placeholder=\"'Enter text'\"\n />\n\n <OrInput\n v-model=\"link\"\n :label=\"'Link'\"\n :placeholder=\"'Enter link'\"\n />\n </div>\n\n <template v-slot:footer>\n <div :class=\"['layout-row-reverse', 'gap-md']\">\n <OrButton\n :variant=\"'contained'\"\n @click=\"attachLink()\"\n >\n Save\n </OrButton>\n\n <OrButton\n :variant=\"'outlined'\"\n @click=\"discardLink()\"\n >\n Cancel\n </OrButton>\n </div>\n </template>\n </OrModal>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { useResponsive } from '@onereach/ui-components-common/hooks';\nimport { isArray } from '@onereach/ui-components-common/utils';\nimport { OrButtonV3 as OrButton } from '@onereach/ui-components.or-button-v3';\nimport { OrErrorV3 as OrError } from '@onereach/ui-components.or-error-v3';\nimport { OrHintV3 as OrHint } from '@onereach/ui-components.or-hint-v3';\nimport { OrIconButtonV3 as OrIconButton } from '@onereach/ui-components.or-icon-button-v3';\nimport { OrInputBoxV3 as OrInputBox } from '@onereach/ui-components.or-input-box-v3';\nimport { OrInputV3 as OrInput } from '@onereach/ui-components.or-input-v3';\nimport { OrLabelV3 as OrLabel } from '@onereach/ui-components.or-label-v3';\nimport { OrMenuItemV3 as OrMenuItem } from '@onereach/ui-components.or-menu-item-v3';\nimport { OrMenuV3 as OrMenu } from '@onereach/ui-components.or-menu-v3';\nimport { OrModalV3 as OrModal } from '@onereach/ui-components.or-modal-v3';\nimport { OrPopoverV3 as OrPopover } from '@onereach/ui-components.or-popover-v3';\nimport { Editor, mergeAttributes } from '@tiptap/core';\nimport Blockquote from '@tiptap/extension-blockquote';\nimport BulletList from '@tiptap/extension-bullet-list';\nimport Heading, { Level } from '@tiptap/extension-heading';\nimport Highlight from '@tiptap/extension-highlight';\nimport Link from '@tiptap/extension-link';\nimport OrderedList from '@tiptap/extension-ordered-list';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport Underline from '@tiptap/extension-underline';\nimport StarterKit from '@tiptap/starter-kit';\nimport { onClickOutside, useDebounceFn, useResizeObserver } from '@vueuse/core';\nimport { UseFocusTrapReturn, useFocusTrap } from '@vueuse/integrations/useFocusTrap';\nimport { ComponentPublicInstance, PropType, computed, defineComponent, nextTick, onBeforeUnmount, onMounted, ref, shallowRef, watch } from 'vue';\n\nimport { Formats, Tools, RichTextEditorIcons, RichTextEditorTooltips } from './props';\nimport * as Styles from './styles';\nimport codemirrorNode from './utils/codemirror/codemirrorNode';\nimport { deserialize, serialize } from './utils/markdown';\n\nexport default defineComponent({\n name: 'OrRichTextEditor',\n\n components: {\n OrButton,\n OrError,\n OrHint,\n OrIconButton,\n OrInput,\n OrInputBox,\n OrLabel,\n OrMenu,\n OrMenuItem,\n OrModal,\n OrPopover,\n },\n\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n\n props: {\n modelValue: {\n type: String,\n default: undefined,\n },\n\n toolbar: {\n type: Array as PropType<Tools>,\n default: () => [],\n },\n\n autofocus: {\n type: Boolean,\n default: false,\n },\n\n format: {\n type: String as PropType<`${Formats}`>,\n default: () => Formats.Markup,\n },\n\n label: {\n type: String,\n default: undefined,\n },\n\n placeholder: {\n type: String,\n default: undefined,\n },\n\n hint: {\n type: String,\n default: undefined,\n },\n\n error: {\n type: [String, Boolean],\n default: undefined,\n },\n\n required: {\n type: Boolean,\n default: false,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n 'update:modelValue',\n\n 'input',\n 'file-upload',\n\n 'focus',\n 'blur',\n ],\n\n expose: [\n 'root',\n 'editor',\n ],\n\n setup(props, context) {\n let editor = shallowRef<Editor>();\n const controlRef = ref<HTMLDivElement>();\n const toolbarRef = ref<ComponentPublicInstance<HTMLInputElement>>();\n\n // Refs & Styles\n const root = ref<HTMLElement>();\n\n const textareaRef = ref<HTMLTextAreaElement>();\n const containerRef = ref<ComponentPublicInstance<HTMLInputElement>>();\n const moreButtonRef = ref<InstanceType<typeof OrIconButton>>();\n const morePopoverRef = ref<InstanceType<typeof OrPopover>>();\n const toolbarButtonRef = ref<InstanceType<typeof OrIconButton>>();\n const menuRef = ref<InstanceType<typeof OrMenu>>();\n\n // isActive should be set with default values for all toolbar buttons, otherwise it will not work in vue2\n const isActive = ref<{[key: string]: boolean;}>({\n bold: false,\n italic: false,\n underline: false,\n strike: false,\n bulletList: false,\n orderedList: false,\n link: false,\n highlight: false,\n redo: false,\n undo: false,\n codeBlock: false,\n blockquote: false,\n file: false,\n source: false,\n });\n\n const isFocused = ref<boolean>(props.autofocus);\n const headingLevels = [1, 2, 3, 4] as Level[];\n const activeHeadingLevel = ref<number>(0);\n const markdownOutput = ref<string>('');\n const disableMarkdown = ref<boolean>(false);\n\n // Attach link modal\n const isOpenLinkModal = ref<boolean>(false);\n const text = ref<string>('');\n const link = ref<string>('');\n\n const countOfNotVisibleTools = ref<number>(0);\n const sourceValue = ref<string>('');\n\n const { isMobile } = useResponsive();\n\n let trap: UseFocusTrapReturn = useFocusTrap(controlRef, {\n fallbackFocus: '.container',\n allowOutsideClick: true,\n });\n\n\n useResizeObserver(root, useDebounceFn((entries) => {\n const entry = entries[0];\n const { width } = entry.contentRect;\n if (containerRef.value && toolbarRef.value && toolbarLength.value) {\n let lengthOfItem = 0;\n lengthOfItem = (toolbarRef.value.firstElementChild?.firstElementChild as HTMLDivElement)?.offsetWidth + 16;\n\n const count = (width / lengthOfItem) - 2;\n countOfNotVisibleTools.value = Math.round(toolbarLength.value - count);\n }\n }, 10));\n\n onMounted(() => {\n editor.value = new Editor({\n onUpdate: ({ editor }) => {\n isFocused.value = true;\n setActiveFormats();\n const html = editor.getHTML();\n const text = editor.getText();\n if (props.format === 'markdown') {\n markdownOutput.value = serialize(editor.schema, editor.getJSON());\n model.value = markdownOutput.value;\n } else {\n model.value = text === '' ? text : html;\n }\n },\n onCreate: ({ editor }) => {\n if (props.format === 'markdown') {\n editor.commands.setContent(deserialize(editor.schema, model.value));\n } else {\n editor.commands.setContent(model.value as string);\n }\n },\n onFocus(props) {\n context.emit('focus', props);\n },\n onBlur(props) {\n context.emit('blur', props);\n },\n element: controlRef.value,\n autofocus: props.autofocus,\n enableInputRules: true,\n enablePasteRules: true,\n extensions: [\n codemirrorNode,\n StarterKit.configure({\n heading: false,\n codeBlock: false,\n paragraph: false,\n bulletList: false,\n orderedList: false,\n blockquote: false,\n }),\n Paragraph.configure({\n HTMLAttributes: {\n class: 'or-cm-paragraph my-xs',\n },\n }),\n BulletList.configure({\n HTMLAttributes: {\n class: 'or-cm-bulletList mx-lg my-xs list-disc',\n },\n }),\n OrderedList.configure({\n HTMLAttributes: {\n class: 'or-cm-orderedList mx-lg my-xs list-decimal',\n },\n }),\n Blockquote.configure({\n HTMLAttributes: {\n class: 'or-cm-blockquote my-sm mx-lg px-lg border-l-2 border-outline',\n },\n }),\n Heading.configure({ levels: headingLevels }).extend({\n levels: headingLevels,\n renderHTML({ node, HTMLAttributes }) {\n return [\n 'h' + node.attrs.level,\n mergeAttributes(HTMLAttributes, {\n class: `typography-headline-${node.attrs.level} my-xs`,\n }),\n 0,\n ];\n },\n }),\n Underline,\n Link.configure({\n openOnClick: true,\n linkOnPaste: true,\n autolink: false,\n protocols: ['ftp', 'mailto', 'http', 'https'],\n validate: href => /^https?:\\/\\//.test(href),\n HTMLAttributes: {\n class: 'or-cm-link text-primary cursor-pointer',\n },\n }),\n Highlight,\n Placeholder\n .configure({\n placeholder: props.placeholder,\n emptyEditorClass: 'or-cm-placeholder text-outline is-editor-empty',\n }),\n ],\n editorProps: {\n attributes: {\n class: 'or-cm-editorProps flex flex-col focus:outline-none gap-xs h-full',\n },\n },\n parseOptions: {\n preserveWhitespace: true,\n },\n });\n setActiveFormats();\n trap.activate();\n });\n\n onBeforeUnmount(() => {\n editor.value?.destroy();\n });\n\n onClickOutside(root, () => {\n isFocused.value = false;\n trap.deactivate();\n });\n\n // Computed\n const model = computed({\n get: () => {\n return props.modelValue;\n },\n\n set: (value) => {\n context.emit('input', value);\n context.emit('update:modelValue', value);\n },\n });\n\n const getIndexOfHeading = computed(() => {\n return props.toolbar.flat().indexOf('heading');\n });\n\n const getRichTextEditorIcon = computed(() => (item: string) => {\n return RichTextEditorIcons[item as keyof typeof RichTextEditorTooltips];\n });\n\n const getRichTextEditorTooltipIcon = computed(() => (item: string) => {\n return RichTextEditorTooltips[item as keyof typeof RichTextEditorTooltips];\n });\n\n const headingIcon = computed(() => {\n if (activeHeadingLevel.value && isActive.value.heading) {\n return `format_h${activeHeadingLevel.value}`;\n }\n return 'format_paragraph';\n });\n\n const toolbarLength = computed(() => {\n return props.toolbar.flat().length;\n });\n\n const notVisibleTools = computed((): Set<string> => {\n const count = countOfNotVisibleTools.value;\n const toolbar = props.toolbar.flat();\n let notVisible = new Set(toolbar.slice(toolbar.length - count, toolbar.length));\n props.toolbar.forEach(tools => {\n if (tools.some(item => notVisible.has(item))) {\n tools.forEach(item => notVisible.add(item));\n }\n });\n return notVisible;\n });\n\n //Methods\n const handleEditorClick = () => {\n setActiveFormats();\n isFocused.value = true;\n editor.value?.commands.focus();\n activeHeadingLevel.value = editor.value?.getAttributes('heading')?.level || 0;\n };\n\n const isVisible = (value: string | Array<string>) => {\n if (isMobile.value) return true;\n\n if (isArray(value)) {\n const isHaveNotVisibleTools = value.some(item => notVisibleTools.value.has(item));\n return !isHaveNotVisibleTools;\n }\n return !notVisibleTools.value.has(value);\n };\n\n const handleInput = (event: InputEvent) => {\n const target = event.target as HTMLTextAreaElement;\n const value = target.value;\n editor.value?.commands.setContent(deserialize(editor.value?.schema, value));\n markdownOutput.value = serialize(editor.value?.schema, editor.value?.getJSON());\n model.value = markdownOutput.value;\n };\n\n const handleToolbarClick = (item: string, level?: number) => {\n switch (item) {\n case 'source':\n disableMarkdown.value = !disableMarkdown.value;\n sourceValue.value = serialize(editor.value?.schema, editor.value?.getJSON());\n\n textareaRef.value?.style.setProperty('height', `${controlRef.value?.offsetHeight || 88}px`);\n\n nextTick(() => textareaRef.value?.focus());\n break;\n case 'bulletList':\n case 'orderedList':\n item === 'bulletList' ? editor.value?.commands.toggleBulletList() : editor.value?.commands.toggleOrderedList();\n break;\n case 'link':\n if (editor.value) {\n const cursorPosition = editor.value?.state.selection.$anchor.pos || 0;\n const { from, to, empty } = editor.value!.state.selection;\n const isLink = editor.value!.view.state.doc.nodeAt(cursorPosition)?.marks.filter((mark) => mark.type.name === 'link');\n const existedText = isLink?.length ? editor.value!.view.state.doc.nodeAt(cursorPosition)?.text || '' : '';\n\n text.value = empty ? existedText : editor.value!.state.doc.textBetween(from, to, ' ');\n link.value = editor.value!.getAttributes('link').href || '';\n }\n isOpenLinkModal.value = !isOpenLinkModal.value;\n break;\n case 'blockquote':\n editor.value?.chain().toggleBlockquote().run();\n break;\n case 'codeBlock':\n if (!isActive.value['codeBlock']) {\n editor.value?.commands.setNode(item, { language: 'javascript' });\n } else {\n editor.value?.commands.setNode('paragraph');\n }\n break;\n case 'heading':\n if (!level) {\n editor.value?.commands.setParagraph();\n activeHeadingLevel.value = 0;\n } else {\n activeHeadingLevel.value = level;\n editor.value?.commands.toggleHeading({ level: level as Level });\n }\n break;\n case 'undo':\n case 'redo':\n item === 'undo' ? editor.value?.commands.undo() : editor.value?.commands.redo();\n break;\n case 'file':\n context.emit('file-upload');\n break;\n default:\n editor.value?.chain().toggleMark(item).run();\n break;\n }\n };\n\n const attachLink = async () => {\n // empty\n if (link.value === '') {\n editor.value?.chain().focus().extendMarkRange('link').unsetLink().run();\n }\n\n const isEmptySelection = editor.value?.state.selection.empty;\n const cursorPosition = editor.value?.state.selection.$anchor.pos || 0;\n // Check if it's already link\n const isLink = editor.value?.view.state.doc.nodeAt(cursorPosition)?.marks.filter((mark) => mark.type.name === 'link');\n const existedText = isLink?.length ? editor.value?.view.state.doc.nodeAt(cursorPosition)?.text : '';\n\n if (link.value && isEmptySelection && !existedText) {\n editor.value?.chain()\n .focus()\n .setMark('link', {\n href: link.value,\n target: '__blank',\n })\n .command(({ tr }) => {\n const preparedValue = text.value[text.value.length - 1] === ' ' ? text.value : `${text.value} `;\n tr.insertText(preparedValue);\n return true;\n })\n .run();\n }\n\n if (link.value && existedText === text.value && isEmptySelection) {\n editor.value?.chain()\n .extendMarkRange('link')\n .updateAttributes('link', {\n href: link.value,\n })\n .run();\n }\n\n if (link.value && text.value !== existedText && !isEmptySelection) {\n editor.value?.chain()\n .focus()\n .insertContentAt({\n from: editor.value?.state.selection.from,\n to: editor.value?.state.selection.to,\n }, text.value)\n .setTextSelection({\n from: editor.value?.state.selection.from,\n to: editor.value?.state.selection.from + text.value.length,\n })\n .setMark('link', {\n href: link.value,\n target: '__blank',\n })\n .run();\n }\n\n if (link.value && !isEmptySelection) {\n editor.value?.chain()\n .focus()\n .setMark('link', {\n href: link.value,\n target: '__blank',\n })\n .run();\n }\n\n text.value = '';\n link.value = '';\n\n isOpenLinkModal.value = false;\n };\n\n const discardLink = () => {\n isOpenLinkModal.value = false;\n };\n\n const setActiveFormats = () => {\n const toolbarList = props.toolbar.flat() as string[];\n toolbarList.forEach((item) => {\n if (item === 'source') {\n isActive.value[item] = disableMarkdown.value;\n } else {\n isActive.value[item] = editor.value?.isActive(item) || false;\n }\n });\n };\n\n\n // Effects\n watch([\n editor,\n model,\n () => props.disabled,\n ], ([\n editor,\n model,\n disabled,\n ]) => {\n if (model !== editor?.getHTML() && props.format !== 'markdown') {\n editor?.commands.setContent(model as string);\n }\n\n if (model !== markdownOutput.value && props.format === 'markdown') {\n editor?.commands.setContent(deserialize(editor?.schema, model));\n }\n\n editor?.setEditable(!disabled);\n });\n\n // Styles\n const rootStyles = computed(() => [\n 'or-rich-text-editor-v3',\n ...Styles.RichTextEditor,\n ]);\n\n const toolbarStyles = computed(() => [\n ...Styles.RichTextEditorToolbar,\n ]);\n\n const toolbarGroupStyles = computed(() => [\n ...Styles.RichTextEditorToolbarGroup,\n ]);\n\n const controlStyles = computed(() => [\n 'tiptap-editor-v3',\n ...Styles.RichTextEditorControl,\n ]);\n\n return {\n root,\n rootStyles,\n\n toolbarRef,\n toolbarStyles,\n\n toolbarGroupStyles,\n\n controlRef,\n controlStyles,\n\n editor,\n containerRef,\n toolbarButtonRef,\n moreButtonRef,\n textareaRef,\n morePopoverRef,\n menuRef,\n handleToolbarClick,\n handleEditorClick,\n isActive,\n getRichTextEditorIcon,\n getRichTextEditorTooltipIcon,\n getIndexOfHeading,\n headingLevels,\n headingIcon,\n attachLink,\n discardLink,\n isOpenLinkModal,\n text,\n link,\n isFocused,\n isVisible,\n isMobile,\n countOfNotVisibleTools,\n notVisibleTools,\n handleInput,\n model,\n disableMarkdown,\n sourceValue,\n activeHeadingLevel,\n };\n },\n});\n</script>\n\n<style scoped lang=\"scss\">\n// Unavoidable hack for bundled (browser) build\n// Created by the fact that this is deep styles in editor\n// As far as we need scoping for browser builds, we can't rely on global existence of this classes\n:deep(.or-cm-paragraph) {\n @apply my-xs;\n}\n\n:deep(.or-cm-bulletList) {\n @apply mx-lg my-xs list-disc;\n}\n\n:deep(.or-cm-orderedList) {\n @apply mx-lg my-xs list-decimal;\n}\n\n:deep(.or-cm-blockquote) {\n @apply my-sm mx-lg px-lg border-l-2 border-outline;\n}\n\n:deep(.or-cm-link) {\n @apply text-primary cursor-pointer;\n}\n\n:deep(.or-cm-placeholder) {\n @apply text-outline;\n}\n\n:deep(.or-cm-editorProps) {\n @apply flex flex-col focus:outline-none gap-xs h-full;\n}\n</style>\n\n<style lang=\"scss\">\n.tiptap-editor-v3 {\n .is-editor-empty::before {\n float: left;\n height: 0;\n pointer-events: none;\n content: attr(data-placeholder);\n }\n}\n</style>\n"],"names":["Formats","RichTextEditorIcons","RichTextEditorTooltips","RichTextEditor","RichTextEditorToolbar","RichTextEditorToolbarGroup","RichTextEditorControl","themes","useTheme","chalky","coral","cyan","invalid","_a","ivory","stone","malibu","sage","whiskey","violet","orCodeTheme","EditorView","_b","_c","_d","_e","_f","_g","_h","_i","_j","orCodeHighlightStyle","HighlightStyle","t","theme","syntaxHighlighting","computeChange","oldVal","newVal","start","oldEnd","newEnd","CodeMirrorView","options","cmExtensions","changeFilter","CMState","tr","CMView","cmState","highlightActiveLine","highlightActiveLineGutter","lineNumbers","keymap","exitCode","state","selection","doc","offset","anchor","head","TextSelection","cmTr","cmValue","change","content","unit","dir","view","pos","line","hasSelection","r","firstLine","lastLine","targetPos","pmSelection","Selection","node","codemirrorNode","Node","editor","getPos","CodeBlockView","minimalSetup","javascript","mdSerializerNodes","defaultMarkdownSerializer","Paragraph","BulletList","ListItem","OrderedList","HardBreak","CodeBlock","Blockquote","HorizontalRule","mdSerializerMarks","Bold","Strike","Italic","Highlight","Underline","Link","mark","parent","index","isPlainURL","href","link","side","next","serialize","schema","mdSerializer","ProseMirrorMarkdownSerializer","proseMirrorDocument","deserialize","html","marked","parser","body","ProseMirrorDOMParser","_sfc_main","defineComponent","OrButton","OrError","OrHint","OrIconButton","OrInput","OrInputBox","OrLabel","OrMenu","OrMenuItem","OrModal","OrPopover","props","context","shallowRef","controlRef","ref","toolbarRef","root","textareaRef","containerRef","moreButtonRef","morePopoverRef","toolbarButtonRef","menuRef","isActive","isFocused","headingLevels","activeHeadingLevel","markdownOutput","disableMarkdown","isOpenLinkModal","text","countOfNotVisibleTools","sourceValue","isMobile","useResponsive","trap","useFocusTrap","useResizeObserver","useDebounceFn","entries","entry","width","toolbarLength","lengthOfItem","count","onMounted","Editor","setActiveFormats","model","StarterKit","Heading","HTMLAttributes","mergeAttributes","Placeholder","onBeforeUnmount","onClickOutside","computed","value","getIndexOfHeading","getRichTextEditorIcon","item","getRichTextEditorTooltipIcon","headingIcon","notVisibleTools","toolbar","notVisible","tools","handleEditorClick","isVisible","isArray","handleInput","event","handleToolbarClick","level","nextTick","cursorPosition","from","to","empty","isLink","existedText","_l","_k","_n","_m","_o","_p","_q","attachLink","isEmptySelection","preparedValue","discardLink","watch","disabled","rootStyles","Styles.RichTextEditor","toolbarStyles","Styles.RichTextEditorToolbar","toolbarGroupStyles","Styles.RichTextEditorToolbarGroup","controlStyles","Styles.RichTextEditorControl","_hoisted_2","_hoisted_5","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_ctx","_createBlock","_component_OrLabel","_renderSlot","_createCommentVNode","_createVNode","_component_OrInputBox","_cache","$event","_withCtx","_createElementVNode","_Fragment","_renderList","_component_OrIconButton","_hoisted_1","_hoisted_3","_withDirectives","args","_hoisted_4","_vShow","_vModelText","_component_OrHint","_component_OrError","_component_OrPopover","_component_OrMenu","heading","_component_OrMenuItem","_component_OrModal","_createTextVNode","_hoisted_7","_component_OrButton","_hoisted_6","_component_OrInput"],"mappings":"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"}
1
+ {"version":3,"file":"OrRichTextEditor-yRGXHaoT.mjs","sources":["../../../components/or-rich-text-editor-v3/src/props.ts","../../../components/or-rich-text-editor-v3/src/styles.ts","../../../components/or-rich-text-editor-v3/src/utils/codemirror/theme.ts","../../../components/or-rich-text-editor-v3/src/utils/codemirror/codemirrorView.ts","../../../components/or-rich-text-editor-v3/src/utils/codemirror/codemirrorNode.ts","../../../components/or-rich-text-editor-v3/src/utils/markdown.ts","../../../components/or-rich-text-editor-v3/src/OrRichTextEditor.vue"],"sourcesContent":["export enum Formats {\n Markdown = 'markdown',\n Markup = 'markup',\n}\n\nexport type Tools = string[][]; // TODO: Improve this type\n\nexport enum RichTextEditorIcons {\n bold = 'format_bold',\n italic = 'format_italic',\n underline = 'format_underlined',\n strike = 'format_strikethrough',\n bulletList = 'format_list_bulleted',\n orderedList = 'format_list_numbered',\n link = 'link',\n highlight = 'highlight',\n redo = 'redo',\n undo = 'undo',\n codeBlock = 'code_blocks',\n blockquote = 'format_quote',\n file = 'attach_file',\n source = 'source_notes',\n}\n\nexport enum RichTextEditorTooltips {\n bold = 'Bold',\n italic = 'Italic',\n underline = 'Underline',\n strike = 'Strike',\n bulletList = 'Bulleted List',\n orderedList = 'Numbered List',\n link = 'Link',\n highlight = 'Highlight',\n redo = 'Redo',\n undo = 'Undo',\n codeBlock = 'Code Block',\n blockquote = 'Quote',\n file = 'File',\n source = 'Source',\n}\n","export const RichTextEditor: string[] = [\n // Layout\n 'layout-column',\n\n // Spacing\n 'gap-xs',\n\n // Box\n 'max-h-full',\n];\n\nexport const RichTextEditorToolbar: string[] = [\n // Layout\n 'layout-row',\n\n // Overflow\n 'overflow-x-scroll md:overflow-x-hidden',\n 'scrollbar-hidden',\n\n // Spacing\n 'px-0',\n 'py-sm',\n\n // Theme\n 'border-b-1',\n\n 'theme-border-outline',\n 'dark:theme-border-outline-dark',\n];\n\nexport const RichTextEditorToolbarGroup: string[] = [\n // Layout\n 'layout-row',\n\n // Spacing\n 'px-sm',\n 'py-0',\n\n 'gap-md',\n\n // Theme\n 'theme-foreground-outline',\n 'dark:theme-foreground-outline-dark',\n\n 'border-e-1 last:border-e-0',\n\n 'theme-border-outline',\n 'dark:theme-border-outline-dark',\n];\n\nexport const RichTextEditorControl: string[] = [\n // Typography\n 'typography-body-2-regular',\n\n // Size\n 'h-full',\n];\n","import { HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { EditorView } from '@codemirror/view';\nimport { tags as t } from '@lezer/highlight';\n\n// Using https://github.com/one-dark/vscode-one-dark-theme/ as reference for the colors\n\nimport { useTheme } from '@onereach/ui-components-common/hooks';\n\nconst themes = useTheme();\n\nconst chalky = themes?.backgroundColor['custom-colors-custom-6'],\n coral = themes?.backgroundColor['custom-colors-custom-1'],\n cyan = themes?.backgroundColor['custom-colors-custom-3'],\n invalid = themes?.backgroundColor?.white,\n ivory = themes?.backgroundColor['custom-colors-custom-6'],\n stone = themes?.backgroundColor['custom-colors-custom-5'], // Brightened compared to original to increase contrast\n malibu = themes?.backgroundColor['custom-colors-custom-3'],\n sage = themes?.backgroundColor.success,\n whiskey = themes?.backgroundColor.warning,\n violet = themes?.backgroundColor['custom-colors-custom-1'];\n // darkBackground = themes?.colors?.neutral?.[100],\n // highlightBackground = themes?.colors?.neutral?.[200],\n // background = themes?.colors?.neutral?.[100],\n // tooltipBackground = themes?.colors?.neutral?.[200],\n // selection = themes?.colors?.blue?.[100],\n // cursor = themes?.colors?.blue?.[700];\n\n/// The colors used in the theme, as CSS color strings.\nexport const color = {\n chalky,\n coral,\n cyan,\n invalid,\n ivory,\n stone,\n malibu,\n sage,\n whiskey,\n violet,\n // darkBackground,\n // highlightBackground,\n // background,\n // tooltipBackground,\n // selection,\n // cursor,\n};\n\n/// The editor theme styles for One Dark.\nexport const orCodeTheme = EditorView.theme({\n '&': {\n color: ivory,\n backgroundColor: themes?.backgroundColor?.['bg-primary-container'],\n },\n\n '.cm-editor': {\n border: 'none',\n borderRadius: themes?.spacing?.xs,\n },\n\n '&.cm-focused': {\n outline: 'none',\n },\n\n '.cm-scroller': {\n borderRadius: themes?.spacing?.xs,\n },\n\n '.cm-content': {\n // caretColor: cursor,\n },\n\n '.cm-button': {\n // background: highlightBackground,\n // color: themes?.colors?.neutral?.[600],\n border: 0,\n borderRadius: themes?.spacing?.xs,\n },\n\n '.cm-panel.cm-search input[type=checkbox]': {\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n\n // '.cm-cursor, .cm-dropCursor': { borderLeftColor: cursor },\n '&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection': {\n // backgroundColor: selection,\n },\n\n '.cm-panels': {\n // backgroundColor: darkBackground,\n color: ivory,\n },\n // '.cm-panels.cm-panels-top': { borderBottom: `2px solid ${themes?.colors?.neutral?.[200]}` },\n // '.cm-panels.cm-panels-bottom': { borderTop: `2px solid ${themes?.colors?.neutral?.[200]}` },\n\n '.cm-searchMatch': {\n // backgroundColor: themes?.colors?.neutral?.[100],\n // outline: `1px solid ${themes?.colors?.neutral?.[200]}`,\n },\n\n '.cm-searchMatch.cm-searchMatch-selected': {\n // backgroundColor: themes?.colors?.sky?.[100],\n },\n\n '.cm-activeLine': {\n backgroundColor: themes?.backgroundColor?.['bg-secondary-container'],\n },\n\n // '.cm-selectionMatch': { backgroundColor: themes?.colors?.lime?.[500] },\n\n '&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket': {\n // backgroundColor: themes?.colors?.lime?.[600],\n },\n\n '.cm-gutters': {\n backgroundColor: themes?.backgroundColor?.['primary-opacity-0-12'],\n color: stone,\n border: 'none',\n },\n\n '.cm-lineNumbers .cm-gutterElement': {\n paddingLeft: themes?.spacing?.['sm+*'],\n paddingRight: themes?.spacing?.['sm+*'],\n },\n\n '.cm-activeLineGutter': {\n backgroundColor: themes?.backgroundColor?.['primary-opacity-0-16'],\n },\n\n '.cm-foldPlaceholder': {\n backgroundColor: 'transparent',\n border: 'none',\n // color: themes?.colors?.neutral?.[200],\n },\n\n '.cm-tooltip': {\n border: 'none',\n // backgroundColor: tooltipBackground,\n },\n '.cm-tooltip .cm-tooltip-arrow:before': {\n borderTopColor: 'transparent',\n borderBottomColor: 'transparent',\n },\n '.cm-tooltip .cm-tooltip-arrow:after': {\n // borderTopColor: tooltipBackground,\n // borderBottomColor: tooltipBackground,\n },\n '.cm-tooltip-autocomplete': {\n '& > ul > li[aria-selected]': {\n // backgroundColor: highlightBackground,\n color: ivory,\n },\n },\n '.cm-textfield': {\n outline: 'none',\n // background: background,\n // color: themes?.colors?.neutral?.[600],\n // backgroundColor: themes?.colors?.neutral?.[100],\n // border: `1px solid ${themes?.colors?.neutral?.[200]}`,\n borderRadius: themes?.spacing?.xs,\n },\n}, { dark: true });\n\n/// The highlighting style for code in the One Dark theme.\nexport const orCodeHighlightStyle = HighlightStyle.define([\n {\n tag: t.keyword,\n color: violet,\n },\n {\n tag: [t.name, t.deleted, t.character, t.propertyName, t.macroName],\n color: coral,\n },\n {\n tag: [t.function(t.variableName), t.labelName],\n color: malibu,\n },\n {\n tag: [t.color, t.constant(t.name), t.standard(t.name)],\n color: whiskey,\n },\n {\n tag: [t.definition(t.name), t.separator],\n color: ivory,\n },\n {\n tag: [t.typeName, t.className, t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace],\n color: chalky,\n },\n {\n tag: [t.operator, t.operatorKeyword, t.url, t.escape, t.regexp, t.link, t.special(t.string)],\n color: cyan,\n },\n {\n tag: [t.meta, t.comment],\n color: stone,\n },\n {\n tag: t.strong,\n fontWeight: 'bold',\n },\n {\n tag: t.emphasis,\n fontStyle: 'italic',\n },\n {\n tag: t.strikethrough,\n textDecoration: 'line-through',\n },\n {\n tag: t.link,\n color: stone,\n textDecoration: 'underline',\n },\n {\n tag: t.heading,\n fontWeight: 'bold',\n color: coral,\n },\n {\n tag: [t.atom, t.bool, t.special(t.variableName)],\n color: whiskey,\n },\n {\n tag: [t.processingInstruction, t.string, t.inserted],\n color: sage,\n },\n {\n tag: t.invalid,\n color: invalid,\n },\n]);\n\n/// Extension to enable the One Dark theme (both the editor theme and\n/// the highlight style).\nconst theme = [orCodeTheme, syntaxHighlighting(orCodeHighlightStyle)];\n\nexport default theme;\n","import { EditorState as CMState, Transaction as CMTransaction, Extension } from '@codemirror/state';\nimport {\n Command,\n EditorView as CMView,\n keymap,\n highlightActiveLine,\n highlightActiveLineGutter,\n lineNumbers,\n} from '@codemirror/view';\nimport { exitCode } from 'prosemirror-commands';\nimport { Node as ProsemirrorNode } from 'prosemirror-model';\nimport { Selection, TextSelection } from 'prosemirror-state';\nimport { EditorView, NodeView } from 'prosemirror-view';\n\nimport orCodeTheme from './theme';\nimport { ComputeChange, CodeMirrorViewOptions } from './types';\n\nconst computeChange = (oldVal: string, newVal: string): ComputeChange | null => {\n if (oldVal === newVal) {\n return null;\n }\n\n let start = 0;\n let oldEnd = oldVal.length;\n let newEnd = newVal.length;\n\n while (start < oldEnd && oldVal.charCodeAt(start) === newVal.charCodeAt(start)) {\n start += 1;\n }\n\n while (oldEnd > start && newEnd > start && oldVal.charCodeAt(oldEnd - 1) === newVal.charCodeAt(newEnd - 1)) {\n oldEnd -= 1;\n newEnd -= 1;\n }\n\n return {\n from: start,\n to: oldEnd,\n text: newVal.slice(start, newEnd),\n };\n};\n\nclass CodeMirrorView implements NodeView {\n name: string;\n\n node: ProsemirrorNode;\n\n view: EditorView;\n\n dom: HTMLElement;\n\n cm: CMView;\n\n getPos: () => number;\n\n updating = false;\n\n constructor(options: CodeMirrorViewOptions) {\n // Store for later\n this.node = options.node;\n this.view = options.view;\n const cmExtensions = options.cmOptions?.extensions || [];\n this.name = 'codeBlock',\n\n this.getPos = options.getPos as () => number;\n\n const changeFilter = CMState.changeFilter.of((tr) => {\n if (!tr.docChanged && !this.updating) {\n this.forwardSelection();\n }\n return true;\n });\n\n // Create a CodeMirror instancew\n this.cm = new CMView({\n dispatch: this.dispatch.bind(this),\n });\n\n // The editor's outer node is our DOM representation\n this.dom = this.cm.dom;\n\n const cmState = CMState.create({\n doc: this.node.textContent,\n extensions: [\n orCodeTheme as Extension,\n changeFilter,\n highlightActiveLine(),\n highlightActiveLineGutter(),\n lineNumbers(),\n keymap.of([\n {\n key: 'ArrowUp',\n run: this.mayBeEscape('line', -1),\n },\n {\n key: 'ArrowLeft',\n run: this.mayBeEscape('char', -1),\n },\n {\n key: 'ArrowDown',\n run: this.mayBeEscape('line', 1),\n },\n {\n key: 'ArrowRight',\n run: this.mayBeEscape('char', 1),\n },\n {\n key: 'Ctrl-Enter',\n run: () => {\n if (exitCode(this.view.state, this.view.dispatch)) {\n this.view.focus();\n return true;\n }\n return false;\n },\n },\n ]),\n cmExtensions,\n ],\n });\n\n this.cm.setState(cmState);\n }\n\n forwardSelection() {\n if (!this.cm.hasFocus) {\n return;\n }\n\n const { state } = this.view;\n const selection = this.asProseMirrorSelection(state.doc);\n\n if (!selection.eq(state.selection)) {\n this.view.dispatch(state.tr.setSelection(selection));\n }\n }\n\n asProseMirrorSelection(doc: ProsemirrorNode) {\n const offset = this.getPos() + 1;\n const { anchor, head } = this.cm.state.selection.main;\n return TextSelection.create(doc, anchor + offset, head + offset);\n }\n\n dispatch(cmTr: CMTransaction) {\n this.cm.setState(cmTr.state);\n\n if (cmTr.docChanged && !this.updating) {\n const start = this.getPos() + 1;\n\n const cmValue = cmTr.state.doc.toString();\n const change = computeChange(this.node.textContent, cmValue);\n\n if (!change) {\n return;\n }\n\n const content = change.text ? this.view.state.schema.text(change.text) : null;\n\n const tr = this.view.state.tr.replaceWith(change.from + start, change.to + start, content as ProsemirrorNode);\n this.view.dispatch(tr);\n this.forwardSelection();\n }\n }\n\n mayBeEscape(unit: 'char' | 'line', dir: -1 | 1): Command {\n return (view) => {\n const { state } = view;\n const { selection } = state;\n\n const offsetToPos = () => {\n const offset = selection.main.from;\n const line = state.doc.lineAt(offset);\n return {\n line: line.number,\n ch: offset - line.from,\n };\n };\n\n const pos = offsetToPos();\n const hasSelection = state.selection.ranges.some((r) => !r.empty);\n\n const firstLine = 1;\n const lastLine = state.doc.lineAt(state.doc.length).number;\n\n if (\n hasSelection\n || pos.line !== (dir < 0 ? firstLine : lastLine)\n || (unit === 'char' && pos.ch !== (dir < 0 ? 0 : state.doc.line(pos.line).length))\n ) {\n return false;\n }\n\n const targetPos = this.getPos() + (dir < 0 ? 0 : this.node.nodeSize);\n const pmSelection = Selection.near(this.view.state.doc.resolve(targetPos), dir);\n this.view.dispatch(this.view.state.tr.setSelection(pmSelection).scrollIntoView());\n this.view.focus();\n return true;\n };\n }\n\n update(node: ProsemirrorNode) {\n if (node.type !== this.node.type) {\n return false;\n }\n\n this.node = node;\n const change = computeChange(this.cm.state.doc.toString(), node.textContent);\n\n if (change) {\n this.updating = true;\n this.cm.dispatch({\n changes: {\n from: change.from,\n to: change.to,\n insert: change.text,\n },\n });\n this.updating = false;\n }\n\n return true;\n }\n\n setSelection(anchor: number, head: number): void {\n this.focus();\n this.updating = true;\n this.cm.dispatch({\n selection: {\n anchor,\n head,\n },\n });\n this.updating = false;\n }\n\n focus() {\n this.cm.focus();\n this.forwardSelection();\n }\n\n selectNode() {\n this.focus();\n }\n\n stopEvent() {\n return true;\n }\n\n destroy() {\n this.cm.destroy();\n }\n}\n\nexport default CodeMirrorView;\n","import { javascript } from '@codemirror/lang-javascript';\nimport { Node } from '@tiptap/core';\nimport { minimalSetup } from 'codemirror';\n\nimport CodeBlockView from './codemirrorView';\n\nexport default Node.create({\n name: 'codeBlock',\n content: 'text*',\n marks: '',\n group: 'block',\n code: true,\n defining: true,\n isolating: true,\n\n parseHTML() {\n return [\n {\n tag: 'pre',\n preserveWhitespace: 'full',\n },\n ];\n },\n\n renderHTML() {\n return ['pre', ['code', 0]];\n },\n\n addNodeView() {\n return ({ node, editor, getPos }) => {\n return new CodeBlockView({\n node,\n view: editor.view,\n getPos: getPos as () => number,\n cmOptions: {\n extensions: [minimalSetup, javascript()],\n },\n });\n };\n },\n});\n","import Blockquote from '@tiptap/extension-blockquote';\nimport Bold from '@tiptap/extension-bold';\nimport BulletList from '@tiptap/extension-bullet-list';\nimport CodeBlock from '@tiptap/extension-code-block';\nimport HardBreak from '@tiptap/extension-hard-break';\nimport Highlight from '@tiptap/extension-highlight';\nimport HorizontalRule from '@tiptap/extension-horizontal-rule';\nimport Italic from '@tiptap/extension-italic';\nimport Link from '@tiptap/extension-link';\nimport ListItem from '@tiptap/extension-list-item';\nimport OrderedList from '@tiptap/extension-ordered-list';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Strike from '@tiptap/extension-strike';\nimport Underline from '@tiptap/extension-underline';\nimport { marked } from 'marked';\nimport {\n MarkdownSerializer as ProseMirrorMarkdownSerializer,\n defaultMarkdownSerializer,\n} from 'prosemirror-markdown';\nimport { DOMParser as ProseMirrorDOMParser, Node, Mark } from 'prosemirror-model';\n\nconst mdSerializerNodes = {\n ...defaultMarkdownSerializer.nodes,\n [Paragraph.name]: defaultMarkdownSerializer.nodes.paragraph,\n [BulletList.name]: defaultMarkdownSerializer.nodes.bullet_list,\n [ListItem.name]: defaultMarkdownSerializer.nodes.list_item,\n [OrderedList.name]: defaultMarkdownSerializer.nodes.ordered_list,\n [HardBreak.name]: defaultMarkdownSerializer.nodes.hard_break,\n [CodeBlock.name]: defaultMarkdownSerializer.nodes.code_block,\n [Blockquote.name]: defaultMarkdownSerializer.nodes.blockquote,\n [HorizontalRule.name]: defaultMarkdownSerializer.nodes.horizontal_rule,\n};\n\nconst mdSerializerMarks = {\n ...defaultMarkdownSerializer.marks,\n [Bold.name]: defaultMarkdownSerializer.marks.strong,\n [Strike.name]: {\n open: '~~',\n close: '~~',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Italic.name]: {\n open: ' _',\n close: '_ ',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Highlight.name]: {\n open: '==',\n close: '==',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Underline.name]: {\n open: '<u>',\n close: '</u>',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Link.name]: {\n open(state: any, mark: Mark, parent: Node, index: number) {\n return isPlainURL(mark, parent, index, 1) ? '<' : '[';\n },\n close(state: any, mark: Mark, parent: Node, index: number) {\n const href = mark.attrs.canonicalSrc || mark.attrs.href;\n\n return isPlainURL(mark, parent, index, -1)\n ? '>'\n : `](${state.esc(href)}${\n mark.attrs.title ? ` ${state.quote(mark.attrs.title)}` : ''\n })`;\n },\n },\n};\n\nfunction isPlainURL(link: Mark, parent: Node, index: number, side: number) {\n if (link.attrs.title || !/^\\w+:/.test(link.attrs.href)) return false;\n const content = parent.child(index + (side < 0 ? -1 : 0));\n if (\n !content.isText ||\n content.text !== link.attrs.href ||\n content.marks[content.marks.length - 1] !== link\n )\n return false;\n if (index === (side < 0 ? 1 : parent.childCount - 1)) return true;\n const next = parent.child(index + (side < 0 ? -2 : 1));\n return !link.isInSet(next.marks);\n}\n\nexport function serialize(schema: any, content: any) {\n const mdSerializer = new ProseMirrorMarkdownSerializer(\n mdSerializerNodes,\n mdSerializerMarks,\n );\n\n const proseMirrorDocument = schema.nodeFromJSON(content);\n\n return mdSerializer.serialize(proseMirrorDocument, { tightLists: true });\n}\n\nexport function deserialize(schema: any, content?: string) {\n if (!content) return null;\n const html = marked.parse(content);\n\n if (!html) return null;\n\n const parser = new DOMParser();\n const { body } = parser.parseFromString(html, 'text/html');\n\n // append original source as a comment that nodes can access\n body.append(document.createComment(content));\n\n const state = ProseMirrorDOMParser.fromSchema(schema).parse(body);\n return state.toJSON();\n}\n\n","<template>\n <div\n :ref=\"'root'\"\n :class=\"rootStyles\"\n >\n <template v-if=\"$slots.label || $slots.addon || label\">\n <OrLabel\n :variant=\"'input'\"\n :required=\"required\"\n :disabled=\"disabled\"\n >\n <slot name=\"label\">\n {{ label }}\n </slot>\n\n <template v-slot:addon>\n <slot name=\"addon\" />\n </template>\n </OrLabel>\n </template>\n\n <OrInputBox\n :ref=\"'containerRef'\"\n class=\"grow\"\n :direction=\"'column'\"\n :invalid=\"!!error\"\n :disabled=\"disabled\"\n @click=\"handleEditorClick()\"\n >\n <div\n :ref=\"'toolbarRef'\"\n :class=\"toolbarStyles\"\n :disabled=\"disabled || !isFocused\"\n >\n <div\n v-for=\"(tools, index) in toolbar\"\n :key=\"index\"\n :class=\"[...toolbarGroupStyles, { 'hidden': !isVisible(tools)}]\"\n :disabled=\"disabled || !isFocused\"\n >\n <div\n v-for=\"item in tools\"\n :key=\"item\"\n :class=\"['flex gap-md', { 'hidden': !isVisible(item)}]\"\n >\n <OrIconButton\n v-if=\"item === 'heading'\"\n :ref=\"'toolbarButtonRef'\"\n :icon=\"{ icon: headingIcon, variant: 'inherit' }\"\n :tooltip=\"{ content: item, placement: 'top' }\"\n :selected=\"isActive[item]\"\n :disabled=\"disabled || !isFocused\"\n @click=\"menuRef && menuRef.toggle()\"\n />\n\n <OrIconButton\n v-else-if=\"isVisible(item)\"\n :icon=\"{ icon: getRichTextEditorIcon(item), variant: 'inherit' }\"\n :tooltip=\"{ content: getRichTextEditorTooltipIcon(item), placement: 'top' }\"\n :selected=\"isActive[item]\"\n :disabled=\"disabled || !isFocused\"\n @click=\"handleToolbarClick(item)\"\n />\n </div>\n </div>\n\n <OrIconButton\n v-if=\"countOfNotVisibleTools > 0 && !isMobile\"\n :ref=\"'moreButtonRef'\"\n :class=\"['mx-sm']\"\n :icon=\"{ icon: 'more_horiz', variant: 'inherit' }\"\n :disabled=\"disabled || !isFocused\"\n :force-state=\"morePopoverRef && morePopoverRef.state === 'open' ? 'hover' : undefined\"\n @click=\"morePopoverRef && morePopoverRef.open()\"\n />\n </div>\n\n <div :class=\"['p-sm', 'overflow-auto', 'min-h-[88px]', 'h-full']\">\n <textarea\n v-show=\"disableMarkdown\"\n :ref=\"'textareaRef'\"\n v-model=\"sourceValue\"\n :activated=\"disableMarkdown\"\n class=\"block w-full h-full resize-none border-none outline-none bg-transparent typography-body-2-regular\"\n @input=\"handleInput\"\n />\n\n <div\n v-show=\"!disableMarkdown\"\n :ref=\"'controlRef'\"\n :class=\"controlStyles\"\n />\n\n <slot name=\"files\" />\n </div>\n </OrInputBox>\n\n <template v-if=\"$slots.hint || hint\">\n <OrHint\n v-show=\"!error\"\n :disabled=\"disabled\"\n >\n <slot name=\"hint\">\n {{ hint }}\n </slot>\n </OrHint>\n </template>\n\n <OrError\n v-show=\"typeof error === 'string' && error.length > 0\"\n :disabled=\"disabled\"\n >\n {{ error }}\n </OrError>\n\n <OrPopover\n v-if=\"moreButtonRef\"\n :ref=\"'morePopoverRef'\"\n :trigger=\"moreButtonRef && moreButtonRef.root\"\n :placement=\"'top-end'\"\n >\n <div class=\"flex p-sm gap-md\">\n <OrIconButton\n v-for=\"item in notVisibleTools\"\n :key=\"item\"\n :icon=\"{ icon: getRichTextEditorIcon(item), variant: 'inherit' }\"\n :tooltip=\"{ content: getRichTextEditorTooltipIcon(item), placement: 'top' }\"\n :selected=\"isActive[item]\"\n @click=\"handleToolbarClick(item)\"\n />\n </div>\n </OrPopover>\n\n <OrMenu\n v-if=\"toolbarButtonRef\"\n :ref=\"'menuRef'\"\n :trigger=\"toolbarButtonRef[getIndexOfHeading] && toolbarButtonRef[getIndexOfHeading].root\"\n :placement=\"'bottom-start'\"\n >\n <OrMenuItem\n v-for=\"heading in headingLevels\"\n :key=\"heading\"\n :selected=\"activeHeadingLevel === heading\"\n @click=\"handleToolbarClick('heading', heading)\"\n >\n Heading {{ heading }}\n </OrMenuItem>\n\n <OrMenuItem\n :selected=\"!activeHeadingLevel\"\n @click=\"handleToolbarClick('heading')\"\n >\n None\n </OrMenuItem>\n </OrMenu>\n\n <OrModal\n :is-open=\"isOpenLinkModal\"\n :size=\"'s'\"\n >\n <template v-slot:header>\n Add Link\n </template>\n\n <div :class=\"['layout-column', 'gap-md']\">\n <OrInput\n v-model=\"text\"\n :label=\"'Text'\"\n :placeholder=\"'Enter text'\"\n />\n\n <OrInput\n v-model=\"link\"\n :label=\"'Link'\"\n :placeholder=\"'Enter link'\"\n />\n </div>\n\n <template v-slot:footer>\n <div :class=\"['layout-row-reverse', 'gap-md']\">\n <OrButton\n :variant=\"'contained'\"\n @click=\"attachLink()\"\n >\n Save\n </OrButton>\n\n <OrButton\n :variant=\"'outlined'\"\n @click=\"discardLink()\"\n >\n Cancel\n </OrButton>\n </div>\n </template>\n </OrModal>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { useResponsive } from '@onereach/ui-components-common/hooks';\nimport { isArray } from '@onereach/ui-components-common/utils';\nimport { OrButtonV3 as OrButton } from '@onereach/ui-components.or-button-v3';\nimport { OrErrorV3 as OrError } from '@onereach/ui-components.or-error-v3';\nimport { OrHintV3 as OrHint } from '@onereach/ui-components.or-hint-v3';\nimport { OrIconButtonV3 as OrIconButton } from '@onereach/ui-components.or-icon-button-v3';\nimport { OrInputBoxV3 as OrInputBox } from '@onereach/ui-components.or-input-box-v3';\nimport { OrInputV3 as OrInput } from '@onereach/ui-components.or-input-v3';\nimport { OrLabelV3 as OrLabel } from '@onereach/ui-components.or-label-v3';\nimport { OrMenuItemV3 as OrMenuItem } from '@onereach/ui-components.or-menu-item-v3';\nimport { OrMenuV3 as OrMenu } from '@onereach/ui-components.or-menu-v3';\nimport { OrModalV3 as OrModal } from '@onereach/ui-components.or-modal-v3';\nimport { OrPopoverV3 as OrPopover } from '@onereach/ui-components.or-popover-v3';\nimport { Editor, mergeAttributes } from '@tiptap/core';\nimport Blockquote from '@tiptap/extension-blockquote';\nimport BulletList from '@tiptap/extension-bullet-list';\nimport Heading, { Level } from '@tiptap/extension-heading';\nimport Highlight from '@tiptap/extension-highlight';\nimport Link from '@tiptap/extension-link';\nimport OrderedList from '@tiptap/extension-ordered-list';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport Underline from '@tiptap/extension-underline';\nimport StarterKit from '@tiptap/starter-kit';\nimport { onClickOutside, useDebounceFn, useResizeObserver } from '@vueuse/core';\nimport { UseFocusTrapReturn, useFocusTrap } from '@vueuse/integrations/useFocusTrap';\nimport { ComponentPublicInstance, PropType, computed, defineComponent, nextTick, onBeforeUnmount, onMounted, ref, shallowRef, watch } from 'vue';\n\nimport { Formats, Tools, RichTextEditorIcons, RichTextEditorTooltips } from './props';\nimport * as Styles from './styles';\nimport codemirrorNode from './utils/codemirror/codemirrorNode';\nimport { deserialize, serialize } from './utils/markdown';\n\nexport default defineComponent({\n name: 'OrRichTextEditor',\n\n components: {\n OrButton,\n OrError,\n OrHint,\n OrIconButton,\n OrInput,\n OrInputBox,\n OrLabel,\n OrMenu,\n OrMenuItem,\n OrModal,\n OrPopover,\n },\n\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n\n props: {\n modelValue: {\n type: String,\n default: undefined,\n },\n\n toolbar: {\n type: Array as PropType<Tools>,\n default: () => [],\n },\n\n autofocus: {\n type: Boolean,\n default: false,\n },\n\n format: {\n type: String as PropType<`${Formats}`>,\n default: () => Formats.Markup,\n },\n\n label: {\n type: String,\n default: undefined,\n },\n\n placeholder: {\n type: String,\n default: undefined,\n },\n\n hint: {\n type: String,\n default: undefined,\n },\n\n error: {\n type: [String, Boolean],\n default: undefined,\n },\n\n required: {\n type: Boolean,\n default: false,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n 'update:modelValue',\n\n 'input',\n 'file-upload',\n\n 'focus',\n 'blur',\n ],\n\n expose: [\n 'root',\n 'editor',\n ],\n\n setup(props, context) {\n let editor = shallowRef<Editor>();\n const controlRef = ref<HTMLDivElement>();\n const toolbarRef = ref<ComponentPublicInstance<HTMLInputElement>>();\n\n // Refs & Styles\n const root = ref<HTMLElement>();\n\n const textareaRef = ref<HTMLTextAreaElement>();\n const containerRef = ref<ComponentPublicInstance<HTMLInputElement>>();\n const moreButtonRef = ref<InstanceType<typeof OrIconButton>>();\n const morePopoverRef = ref<InstanceType<typeof OrPopover>>();\n const toolbarButtonRef = ref<InstanceType<typeof OrIconButton>>();\n const menuRef = ref<InstanceType<typeof OrMenu>>();\n\n // isActive should be set with default values for all toolbar buttons, otherwise it will not work in vue2\n const isActive = ref<{[key: string]: boolean;}>({\n bold: false,\n italic: false,\n underline: false,\n strike: false,\n bulletList: false,\n orderedList: false,\n link: false,\n highlight: false,\n redo: false,\n undo: false,\n codeBlock: false,\n blockquote: false,\n file: false,\n source: false,\n });\n\n const isFocused = ref<boolean>(props.autofocus);\n const headingLevels = [1, 2, 3, 4] as Level[];\n const activeHeadingLevel = ref<number>(0);\n const markdownOutput = ref<string>('');\n const disableMarkdown = ref<boolean>(false);\n\n // Attach link modal\n const isOpenLinkModal = ref<boolean>(false);\n const text = ref<string>('');\n const link = ref<string>('');\n\n const countOfNotVisibleTools = ref<number>(0);\n const sourceValue = ref<string>('');\n\n const { isMobile } = useResponsive();\n\n let trap: UseFocusTrapReturn = useFocusTrap(controlRef, {\n fallbackFocus: '.container',\n allowOutsideClick: true,\n });\n\n\n useResizeObserver(root, useDebounceFn((entries) => {\n const entry = entries[0];\n const { width } = entry.contentRect;\n if (containerRef.value && toolbarRef.value && toolbarLength.value) {\n let lengthOfItem = 0;\n lengthOfItem = (toolbarRef.value.firstElementChild?.firstElementChild as HTMLDivElement)?.offsetWidth + 16;\n\n const count = (width / lengthOfItem) - 2;\n countOfNotVisibleTools.value = Math.round(toolbarLength.value - count);\n }\n }, 10));\n\n onMounted(() => {\n editor.value = new Editor({\n onUpdate: ({ editor }) => {\n isFocused.value = true;\n setActiveFormats();\n const html = editor.getHTML();\n const text = editor.getText();\n if (props.format === 'markdown') {\n markdownOutput.value = serialize(editor.schema, editor.getJSON());\n model.value = markdownOutput.value;\n } else {\n model.value = text === '' ? text : html;\n }\n },\n onCreate: ({ editor }) => {\n if (props.format === 'markdown') {\n editor.commands.setContent(deserialize(editor.schema, model.value));\n } else {\n editor.commands.setContent(model.value as string);\n }\n },\n onFocus(props) {\n context.emit('focus', props);\n },\n onBlur(props) {\n context.emit('blur', props);\n },\n element: controlRef.value,\n autofocus: props.autofocus,\n enableInputRules: true,\n enablePasteRules: true,\n extensions: [\n codemirrorNode,\n StarterKit.configure({\n heading: false,\n codeBlock: false,\n paragraph: false,\n bulletList: false,\n orderedList: false,\n blockquote: false,\n }),\n Paragraph.configure({\n HTMLAttributes: {\n class: 'or-cm-paragraph my-xs',\n },\n }),\n BulletList.configure({\n HTMLAttributes: {\n class: 'or-cm-bulletList mx-lg my-xs list-disc',\n },\n }),\n OrderedList.configure({\n HTMLAttributes: {\n class: 'or-cm-orderedList mx-lg my-xs list-decimal',\n },\n }),\n Blockquote.configure({\n HTMLAttributes: {\n class: 'or-cm-blockquote my-sm mx-lg px-lg border-l-2 border-outline',\n },\n }),\n Heading.configure({ levels: headingLevels }).extend({\n levels: headingLevels,\n renderHTML({ node, HTMLAttributes }) {\n return [\n 'h' + node.attrs.level,\n mergeAttributes(HTMLAttributes, {\n class: `typography-headline-${node.attrs.level} my-xs`,\n }),\n 0,\n ];\n },\n }),\n Underline,\n Link.configure({\n openOnClick: true,\n linkOnPaste: true,\n autolink: false,\n protocols: ['ftp', 'mailto', 'http', 'https'],\n validate: href => /^https?:\\/\\//.test(href),\n HTMLAttributes: {\n class: 'or-cm-link text-primary cursor-pointer',\n },\n }),\n Highlight,\n Placeholder\n .configure({\n placeholder: props.placeholder,\n emptyEditorClass: 'or-cm-placeholder text-outline is-editor-empty',\n }),\n ],\n editorProps: {\n attributes: {\n class: 'or-cm-editorProps flex flex-col focus:outline-none gap-xs h-full',\n },\n },\n parseOptions: {\n preserveWhitespace: true,\n },\n });\n setActiveFormats();\n trap.activate();\n });\n\n onBeforeUnmount(() => {\n editor.value?.destroy();\n });\n\n onClickOutside(root, () => {\n isFocused.value = false;\n trap.deactivate();\n });\n\n // Computed\n const model = computed({\n get: () => {\n return props.modelValue;\n },\n\n set: (value) => {\n context.emit('input', value);\n context.emit('update:modelValue', value);\n },\n });\n\n const getIndexOfHeading = computed(() => {\n return props.toolbar.flat().indexOf('heading');\n });\n\n const getRichTextEditorIcon = computed(() => (item: string) => {\n return RichTextEditorIcons[item as keyof typeof RichTextEditorTooltips];\n });\n\n const getRichTextEditorTooltipIcon = computed(() => (item: string) => {\n return RichTextEditorTooltips[item as keyof typeof RichTextEditorTooltips];\n });\n\n const headingIcon = computed(() => {\n if (activeHeadingLevel.value && isActive.value.heading) {\n return `format_h${activeHeadingLevel.value}`;\n }\n return 'format_paragraph';\n });\n\n const toolbarLength = computed(() => {\n return props.toolbar.flat().length;\n });\n\n const notVisibleTools = computed((): Set<string> => {\n const count = countOfNotVisibleTools.value;\n const toolbar = props.toolbar.flat();\n let notVisible = new Set(toolbar.slice(toolbar.length - count, toolbar.length));\n props.toolbar.forEach(tools => {\n if (tools.some(item => notVisible.has(item))) {\n tools.forEach(item => notVisible.add(item));\n }\n });\n return notVisible;\n });\n\n //Methods\n const handleEditorClick = () => {\n setActiveFormats();\n isFocused.value = true;\n editor.value?.commands.focus();\n activeHeadingLevel.value = editor.value?.getAttributes('heading')?.level || 0;\n };\n\n const isVisible = (value: string | Array<string>) => {\n if (isMobile.value) return true;\n\n if (isArray(value)) {\n const isHaveNotVisibleTools = value.some(item => notVisibleTools.value.has(item));\n return !isHaveNotVisibleTools;\n }\n return !notVisibleTools.value.has(value);\n };\n\n const handleInput = (event: InputEvent) => {\n const target = event.target as HTMLTextAreaElement;\n const value = target.value;\n editor.value?.commands.setContent(deserialize(editor.value?.schema, value));\n markdownOutput.value = serialize(editor.value?.schema, editor.value?.getJSON());\n model.value = markdownOutput.value;\n };\n\n const handleToolbarClick = (item: string, level?: number) => {\n switch (item) {\n case 'source':\n disableMarkdown.value = !disableMarkdown.value;\n sourceValue.value = serialize(editor.value?.schema, editor.value?.getJSON());\n\n textareaRef.value?.style.setProperty('height', `${controlRef.value?.offsetHeight || 88}px`);\n\n nextTick(() => textareaRef.value?.focus());\n break;\n case 'bulletList':\n case 'orderedList':\n item === 'bulletList' ? editor.value?.commands.toggleBulletList() : editor.value?.commands.toggleOrderedList();\n break;\n case 'link':\n if (editor.value) {\n const cursorPosition = editor.value?.state.selection.$anchor.pos || 0;\n const { from, to, empty } = editor.value!.state.selection;\n const isLink = editor.value!.view.state.doc.nodeAt(cursorPosition)?.marks.filter((mark) => mark.type.name === 'link');\n const existedText = isLink?.length ? editor.value!.view.state.doc.nodeAt(cursorPosition)?.text || '' : '';\n\n text.value = empty ? existedText : editor.value!.state.doc.textBetween(from, to, ' ');\n link.value = editor.value!.getAttributes('link').href || '';\n }\n isOpenLinkModal.value = !isOpenLinkModal.value;\n break;\n case 'blockquote':\n editor.value?.chain().toggleBlockquote().run();\n break;\n case 'codeBlock':\n if (!isActive.value['codeBlock']) {\n editor.value?.commands.setNode(item, { language: 'javascript' });\n } else {\n editor.value?.commands.setNode('paragraph');\n }\n break;\n case 'heading':\n if (!level) {\n editor.value?.commands.setParagraph();\n activeHeadingLevel.value = 0;\n } else {\n activeHeadingLevel.value = level;\n editor.value?.commands.toggleHeading({ level: level as Level });\n }\n break;\n case 'undo':\n case 'redo':\n item === 'undo' ? editor.value?.commands.undo() : editor.value?.commands.redo();\n break;\n case 'file':\n context.emit('file-upload');\n break;\n default:\n editor.value?.chain().toggleMark(item).run();\n break;\n }\n };\n\n const attachLink = async () => {\n // empty\n if (link.value === '') {\n editor.value?.chain().focus().extendMarkRange('link').unsetLink().run();\n }\n\n const isEmptySelection = editor.value?.state.selection.empty;\n const cursorPosition = editor.value?.state.selection.$anchor.pos || 0;\n // Check if it's already link\n const isLink = editor.value?.view.state.doc.nodeAt(cursorPosition)?.marks.filter((mark) => mark.type.name === 'link');\n const existedText = isLink?.length ? editor.value?.view.state.doc.nodeAt(cursorPosition)?.text : '';\n\n if (link.value && isEmptySelection && !existedText) {\n editor.value?.chain()\n .focus()\n .setMark('link', {\n href: link.value,\n target: '__blank',\n })\n .command(({ tr }) => {\n const preparedValue = text.value[text.value.length - 1] === ' ' ? text.value : `${text.value} `;\n tr.insertText(preparedValue);\n return true;\n })\n .run();\n }\n\n if (link.value && existedText === text.value && isEmptySelection) {\n editor.value?.chain()\n .extendMarkRange('link')\n .updateAttributes('link', {\n href: link.value,\n })\n .run();\n }\n\n if (link.value && text.value !== existedText && !isEmptySelection) {\n editor.value?.chain()\n .focus()\n .insertContentAt({\n from: editor.value?.state.selection.from,\n to: editor.value?.state.selection.to,\n }, text.value)\n .setTextSelection({\n from: editor.value?.state.selection.from,\n to: editor.value?.state.selection.from + text.value.length,\n })\n .setMark('link', {\n href: link.value,\n target: '__blank',\n })\n .run();\n }\n\n if (link.value && !isEmptySelection) {\n editor.value?.chain()\n .focus()\n .setMark('link', {\n href: link.value,\n target: '__blank',\n })\n .run();\n }\n\n text.value = '';\n link.value = '';\n\n isOpenLinkModal.value = false;\n };\n\n const discardLink = () => {\n isOpenLinkModal.value = false;\n };\n\n const setActiveFormats = () => {\n const toolbarList = props.toolbar.flat() as string[];\n toolbarList.forEach((item) => {\n if (item === 'source') {\n isActive.value[item] = disableMarkdown.value;\n } else {\n isActive.value[item] = editor.value?.isActive(item) || false;\n }\n });\n };\n\n\n // Effects\n watch([\n editor,\n model,\n () => props.disabled,\n ], ([\n editor,\n model,\n disabled,\n ]) => {\n if (model !== editor?.getHTML() && props.format !== 'markdown') {\n editor?.commands.setContent(model as string);\n }\n\n if (model !== markdownOutput.value && props.format === 'markdown') {\n editor?.commands.setContent(deserialize(editor?.schema, model));\n }\n\n editor?.setEditable(!disabled);\n });\n\n // Styles\n const rootStyles = computed(() => [\n 'or-rich-text-editor-v3',\n ...Styles.RichTextEditor,\n ]);\n\n const toolbarStyles = computed(() => [\n ...Styles.RichTextEditorToolbar,\n ]);\n\n const toolbarGroupStyles = computed(() => [\n ...Styles.RichTextEditorToolbarGroup,\n ]);\n\n const controlStyles = computed(() => [\n 'tiptap-editor-v3',\n ...Styles.RichTextEditorControl,\n ]);\n\n return {\n root,\n rootStyles,\n\n toolbarRef,\n toolbarStyles,\n\n toolbarGroupStyles,\n\n controlRef,\n controlStyles,\n\n editor,\n containerRef,\n toolbarButtonRef,\n moreButtonRef,\n textareaRef,\n morePopoverRef,\n menuRef,\n handleToolbarClick,\n handleEditorClick,\n isActive,\n getRichTextEditorIcon,\n getRichTextEditorTooltipIcon,\n getIndexOfHeading,\n headingLevels,\n headingIcon,\n attachLink,\n discardLink,\n isOpenLinkModal,\n text,\n link,\n isFocused,\n isVisible,\n isMobile,\n countOfNotVisibleTools,\n notVisibleTools,\n handleInput,\n model,\n disableMarkdown,\n sourceValue,\n activeHeadingLevel,\n };\n },\n});\n</script>\n\n<style scoped lang=\"scss\">\n// Unavoidable hack for bundled (browser) build\n// Created by the fact that this is deep styles in editor\n// As far as we need scoping for browser builds, we can't rely on global existence of this classes\n:deep(.or-cm-paragraph) {\n @apply my-xs;\n}\n\n:deep(.or-cm-bulletList) {\n @apply mx-lg my-xs list-disc;\n}\n\n:deep(.or-cm-orderedList) {\n @apply mx-lg my-xs list-decimal;\n}\n\n:deep(.or-cm-blockquote) {\n @apply my-sm mx-lg px-lg border-l-2 border-outline;\n}\n\n:deep(.or-cm-link) {\n @apply text-primary cursor-pointer;\n}\n\n:deep(.or-cm-placeholder) {\n @apply text-outline;\n}\n\n:deep(.or-cm-editorProps) {\n @apply flex flex-col focus:outline-none gap-xs h-full;\n}\n</style>\n\n<style lang=\"scss\">\n.tiptap-editor-v3 {\n .is-editor-empty::before {\n float: left;\n height: 0;\n pointer-events: none;\n content: attr(data-placeholder);\n }\n}\n</style>\n"],"names":["Formats","RichTextEditorIcons","RichTextEditorTooltips","RichTextEditor","RichTextEditorToolbar","RichTextEditorToolbarGroup","RichTextEditorControl","themes","useTheme","chalky","coral","cyan","invalid","_a","ivory","stone","malibu","sage","whiskey","violet","orCodeTheme","EditorView","_b","_c","_d","_e","_f","_g","_h","_i","_j","orCodeHighlightStyle","HighlightStyle","t","theme","syntaxHighlighting","computeChange","oldVal","newVal","start","oldEnd","newEnd","CodeMirrorView","options","cmExtensions","changeFilter","CMState","tr","CMView","cmState","highlightActiveLine","highlightActiveLineGutter","lineNumbers","keymap","exitCode","state","selection","doc","offset","anchor","head","TextSelection","cmTr","cmValue","change","content","unit","dir","view","pos","line","hasSelection","r","firstLine","lastLine","targetPos","pmSelection","Selection","node","codemirrorNode","Node","editor","getPos","CodeBlockView","minimalSetup","javascript","mdSerializerNodes","defaultMarkdownSerializer","Paragraph","BulletList","ListItem","OrderedList","HardBreak","CodeBlock","Blockquote","HorizontalRule","mdSerializerMarks","Bold","Strike","Italic","Highlight","Underline","Link","mark","parent","index","isPlainURL","href","link","side","next","serialize","schema","mdSerializer","ProseMirrorMarkdownSerializer","proseMirrorDocument","deserialize","html","marked","parser","body","ProseMirrorDOMParser","_sfc_main","defineComponent","OrButton","OrError","OrHint","OrIconButton","OrInput","OrInputBox","OrLabel","OrMenu","OrMenuItem","OrModal","OrPopover","props","context","shallowRef","controlRef","ref","toolbarRef","root","textareaRef","containerRef","moreButtonRef","morePopoverRef","toolbarButtonRef","menuRef","isActive","isFocused","headingLevels","activeHeadingLevel","markdownOutput","disableMarkdown","isOpenLinkModal","text","countOfNotVisibleTools","sourceValue","isMobile","useResponsive","trap","useFocusTrap","useResizeObserver","useDebounceFn","entries","entry","width","toolbarLength","lengthOfItem","count","onMounted","Editor","setActiveFormats","model","StarterKit","Heading","HTMLAttributes","mergeAttributes","Placeholder","onBeforeUnmount","onClickOutside","computed","value","getIndexOfHeading","getRichTextEditorIcon","item","getRichTextEditorTooltipIcon","headingIcon","notVisibleTools","toolbar","notVisible","tools","handleEditorClick","isVisible","isArray","handleInput","event","handleToolbarClick","level","nextTick","cursorPosition","from","to","empty","isLink","existedText","_l","_k","_n","_m","_o","_p","_q","attachLink","isEmptySelection","preparedValue","discardLink","watch","disabled","rootStyles","Styles.RichTextEditor","toolbarStyles","Styles.RichTextEditorToolbar","toolbarGroupStyles","Styles.RichTextEditorToolbarGroup","controlStyles","Styles.RichTextEditorControl","_hoisted_2","_hoisted_5","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_ctx","_createBlock","_component_OrLabel","_renderSlot","_createCommentVNode","_createVNode","_component_OrInputBox","_cache","$event","_withCtx","_createElementVNode","_Fragment","_renderList","_component_OrIconButton","_hoisted_1","_hoisted_3","_withDirectives","args","_hoisted_4","_vShow","_vModelText","_component_OrHint","_component_OrError","_component_OrPopover","_component_OrMenu","heading","_component_OrMenuItem","_component_OrModal","_createTextVNode","_hoisted_7","_component_OrButton","_hoisted_6","_component_OrInput"],"mappings":"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"}
@@ -15,7 +15,7 @@ import { O as Ge } from "./OrLabel-K7_HgvcK.mjs";
15
15
  import { O as Je } from "./OrLoader-2SaTMxmZ.mjs";
16
16
  import { O as Ke } from "./OrMenuItem-VyCCXA7Z.mjs";
17
17
  import { O as Qe } from "./OrPopover-GBPJ4IDN.mjs";
18
- import { O as Xe, T as ae } from "./OrTags-Ce70YtZr.mjs";
18
+ import { O as Xe, T as ae } from "./OrTags-dP8zjvgS.mjs";
19
19
  import { defineComponent as J, ref as m, toRefs as oe, computed as a, withDirectives as z, openBlock as r, createElementBlock as O, normalizeStyle as Ye, normalizeClass as y, vModelDynamic as Ze, renderSlot as C, watch as _, resolveComponent as i, createVNode as L, createSlots as xe, withCtx as h, createTextVNode as B, toDisplayString as E, createElementVNode as q, vShow as x, createBlock as k, createCommentVNode as G, Fragment as F, getCurrentInstance as _e, nextTick as ue, resolveDirective as pe, withModifiers as j, renderList as W } from "vue";
20
20
  import { useFocus as eo } from "@vueuse/core";
21
21
  import { _ as K } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
@@ -455,7 +455,7 @@ const go = /* @__PURE__ */ K(bo, [["render", So]]), Oo = [
455
455
  // Overflow
456
456
  "overflow-y-auto",
457
457
  // Box
458
- "max-h-[172px]",
458
+ "max-h-[theme(tokens.max-select-dropdown-height)]",
459
459
  // equals 5 items
460
460
  // Theme
461
461
  "theme-background-default",
@@ -1076,4 +1076,4 @@ const sl = /* @__PURE__ */ K(Lo, [["render", Uo]]);
1076
1076
  export {
1077
1077
  sl as O
1078
1078
  };
1079
- //# sourceMappingURL=OrSelect-ZitJ7RzV.mjs.map
1079
+ //# sourceMappingURL=OrSelect-BeL73iXu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrSelect-BeL73iXu.mjs","sources":["../../../components/or-select-v3/src/partials/or-select-control-input/styles.ts","../../../components/or-select-v3/src/partials/or-select-control-input/OrSelectControlInput.vue","../../../components/or-select-v3/src/partials/or-select-placeholder/styles.ts","../../../components/or-select-v3/src/partials/or-select-placeholder/OrSelectPlaceholder.vue","../../../components/or-select-v3/src/partials/or-select-multiple-control/styles.ts","../../../components/or-select-v3/src/partials/or-select-multiple-control/OrSelectMultipleControl.vue","../../../components/or-select-v3/src/partials/or-select-single-control/styles.ts","../../../components/or-select-v3/src/partials/or-select-single-control/OrSelectSingleControl.vue","../../../components/or-select-v3/src/styles.ts","../../../components/or-select-v3/src/OrSelect.vue"],"sourcesContent":["export const SelectControlInput: string[] = [\n // Base\n 'appearance-none',\n\n // Typography\n 'typography-inherit',\n\n // Theme (placeholder)\n 'placeholder:theme-foreground-outline',\n 'dark:placeholder:theme-foreground-outline-dark',\n 'theme-background-transparent',\n 'outline-none',\n];\n","<template>\n <input\n :ref=\"'root'\"\n v-model=\"proxyModelValue\"\n :style=\"controlInlineStyles\"\n :class=\"controlStyles\"\n :type=\"'text'\"\n :placeholder=\"placeholder\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :autocomplete=\"'off'\"\n :minlength=\"undefined\"\n :maxlength=\"undefined\"\n >\n</template>\n\n<script lang=\"ts\">\nimport { useProxyModelValue } from '@onereach/ui-components-common/hooks';\nimport { useFocus } from '@vueuse/core';\nimport { computed, defineComponent, ref, toRefs } from 'vue';\n\nimport { SelectControlInput } from './styles';\n\nexport default defineComponent({\n name: 'OrSelectControlInput',\n\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n\n props: {\n modelValue: {\n type: String,\n default: '',\n },\n\n placeholder: {\n type: String,\n default: '',\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n readonly: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n 'update:modelValue',\n ],\n\n expose: [\n 'root',\n\n 'focus',\n 'focused',\n ],\n\n setup(props, context) {\n // Refs\n const root = ref<HTMLInputElement>();\n\n // Props\n const { placeholder, modelValue } = toRefs(props);\n\n // State\n const proxyModelValue = useProxyModelValue(modelValue, context.emit);\n const { focused } = useFocus(root);\n\n // Styles\n const controlStyles = computed(() => [\n ...SelectControlInput,\n ]);\n\n const controlInlineStyles = computed(() => {\n const chars = proxyModelValue.value.length > 0\n ? proxyModelValue.value.length\n : placeholder.value?.length;\n\n return {\n width: `${Math.max(chars + 1 || 0, 2)}ch`,\n };\n });\n\n // Methods\n function focus() {\n focused.value = true;\n }\n\n return {\n root,\n proxyModelValue,\n controlStyles,\n controlInlineStyles,\n focused,\n focus,\n };\n },\n});\n</script>\n","export const SelectPlaceholder: string[] = [\n // Interactivity\n 'interactivity-click',\n\n // Typography\n 'typography-inherit truncate',\n\n // Theme\n 'theme-foreground-outline',\n 'dark:theme-foreground-outline-dark',\n];\n","<template>\n <div\n :ref=\"'root'\"\n :class=\"rootStyles\"\n :disabled=\"disabled\"\n >\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref } from 'vue';\n\nimport { SelectPlaceholder } from './styles';\n\nexport default defineComponent({\n name: 'OrSelectPlaceholder',\n\n props: {\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n expose: [\n 'root',\n ],\n\n setup() {\n // Refs\n const root = ref<HTMLElement>();\n\n // Styles\n const rootStyles = computed(() => [\n 'or-select-placeholder-v3',\n ...SelectPlaceholder,\n ]);\n\n return {\n root,\n rootStyles,\n };\n },\n});\n</script>\n","export const SelectMultipleControlRoot: string[] = [\n // Layout\n 'layout-row',\n 'w-full',\n];\n\n","<template>\n <div\n :ref=\"'root'\"\n :class=\"rootStyles\"\n >\n <OrTags\n v-show=\"!isEmpty || enableSearch\"\n :ref=\"'tags'\"\n :items=\"selection\"\n class=\"grow\"\n :disabled=\"disabled\"\n :tag-props=\"{\n variant: readonly || disabled ? 'tag' : 'reset',\n disabled: disabled\n }\"\n :overflow=\"overflow\"\n @reset=\"$emit('reset', $event)\"\n >\n <template v-slot:tag=\"{item}\">\n <slot\n name=\"tag\"\n :item=\"item\"\n >\n {{ item.label }}\n </slot>\n </template>\n\n <template\n v-if=\"enableSearch\"\n v-slot:tail\n >\n <div class=\"inline-flex w-fit max-w-full\">\n <OrSelectControlInput\n :ref=\"'searchControl'\"\n v-model=\"searchModelValue\"\n :placeholder=\"isEmpty ? placeholder: ''\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n />\n </div>\n </template>\n </OrTags>\n\n <template v-if=\"isEmpty && !enableSearch\">\n <OrSelectPlaceholder :disabled=\"disabled\">\n {{ placeholder }}\n </OrSelectPlaceholder>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { useProxyModelValue } from '@onereach/ui-components-common/hooks';\nimport { isEqual, isNil, toArray } from '@onereach/ui-components-common/utils';\nimport { OrTagsV3 as OrTags, Tag, TagsOverflow } from '@onereach/ui-components.or-tags-v3';\nimport { PropType, computed, defineComponent, ref, toRefs, watch } from 'vue';\n\nimport { SelectItem, SelectModelValue } from '../../types';\nimport { OrSelectControlInput } from '../or-select-control-input';\nimport OrSelectPlaceholder from '../or-select-placeholder/OrSelectPlaceholder.vue';\n\nimport { SelectMultipleControlRoot } from './styles';\n\nexport default defineComponent({\n name: 'OrSelectMultipleControl',\n\n components: {\n OrSelectPlaceholder,\n OrSelectControlInput,\n OrTags,\n },\n\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n\n props: {\n modelValue: {\n type: String,\n default: '',\n },\n\n model: {\n type: undefined as unknown as PropType<SelectModelValue>,\n default: () => [],\n },\n\n options: {\n type: Array as PropType<SelectItem[]>,\n default: () => [],\n },\n\n overflow: {\n type: String as PropType<`${TagsOverflow}`>,\n default: () => TagsOverflow.Hidden,\n },\n\n placeholder: {\n type: String,\n default: undefined,\n },\n\n readonly: {\n type: Boolean,\n default: false,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n enableSearch: {\n type: Boolean,\n default: false,\n },\n\n isOpen: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n 'update:modelValue',\n 'reset',\n ],\n\n expose: [\n 'root',\n\n 'focus',\n 'focused',\n ],\n\n setup(props, context) {\n // Refs\n const root = ref<HTMLDivElement>();\n\n const searchControl = ref<InstanceType<typeof OrSelectControlInput>>();\n const tags = ref<InstanceType<typeof OrTags>>();\n\n // Props\n const { modelValue, model, options, overflow } = toRefs(props);\n\n // State\n const searchModelValue = useProxyModelValue(modelValue, context.emit);\n\n const focused = computed(() => {\n return searchControl.value?.focused;\n });\n\n // Styles\n const rootStyles = computed(() => [\n 'or-select-multiple-control-v3',\n ...SelectMultipleControlRoot,\n ]);\n\n // Computed\n const value = computed(() => isNil(model.value) ? [] : toArray(model.value));\n const isEmpty = computed(() => value.value.length === 0);\n\n const selection = computed(() => {\n if (model.value === undefined || model.value === null) {\n return [];\n }\n\n return value.value\n .map((value) => options.value.find((option) => isEqual(option.value, value)))\n .filter<SelectItem>((value): value is SelectItem => !!value)\n .map((option) => ({\n value: option.value,\n label: option.label,\n tagProps: option.disabled && { disabled: option.disabled },\n } as Tag));\n });\n\n watch(selection, (items, prevItems) => {\n if (items.length != prevItems.length && overflow.value === TagsOverflow.Scroll && tags.value) {\n (tags.value.scrollToEnd as () => void)();\n }\n });\n\n // Methods\n function focus(): void {\n if (searchControl.value) {\n (searchControl.value.focus as () => void)();\n }\n }\n\n return {\n root,\n tags,\n rootStyles,\n searchControl,\n searchModelValue,\n isEmpty,\n selection,\n value,\n focus,\n focused,\n };\n },\n});\n</script>\n","export const SelectSingleControlInput: string[] = [\n // Layout\n 'w-full',\n];\n","<template>\n <div\n :ref=\"'root'\"\n :class=\"rootStyles\"\n >\n <template v-if=\"isOpen && enableSearch\">\n <OrSelectControlInput\n :ref=\"'searchControl'\"\n v-model=\"searchModelValue\"\n :placeholder=\"isEmptyModelValue ? placeholder : selectionLabel\"\n />\n </template>\n\n <template v-else>\n <template v-if=\"isEmptyModelValue\">\n <OrSelectPlaceholder :disabled=\"disabled\">\n {{ placeholder }}\n </OrSelectPlaceholder>\n </template>\n\n <template v-else>\n <div class=\"flex\">\n <div\n ref=\"selectionLabelRef\"\n class=\"truncate w-full\"\n @mouseenter=\"checkTooltip\"\n @mouseleave=\"closeTooltip\"\n >\n {{ selectionLabel }}\n </div>\n <OrTooltip\n ref=\"tooltipRef\"\n :content=\"selectionLabel\"\n :trigger=\"selectionLabelRef\"\n />\n </div>\n </template>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { useProxyModelValue } from '@onereach/ui-components-common/hooks';\nimport { isEmpty, isEqual } from '@onereach/ui-components-common/utils';\nimport { OrTooltipV3 as OrTooltip } from '@onereach/ui-components.or-tooltip-v3';\nimport { PropType, computed, defineComponent, ref, toRefs, watch } from 'vue';\n\n\nimport { SelectItem, SelectModelValue } from '../../types';\nimport OrSelectControlInput from '../or-select-control-input/OrSelectControlInput.vue';\nimport OrSelectPlaceholder from '../or-select-placeholder/OrSelectPlaceholder.vue';\n\n\nimport { SelectSingleControlInput } from './styles';\n\nexport default defineComponent({\n name: 'OrSelectSingleControl',\n\n components: {\n OrSelectPlaceholder,\n OrSelectControlInput,\n OrTooltip,\n },\n\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n\n props: {\n modelValue: {\n type: String,\n default: '',\n },\n\n model: {\n type: undefined as unknown as PropType<SelectModelValue>,\n default: undefined,\n },\n\n options: {\n type: Array as PropType<SelectItem[]>,\n default: () => [],\n },\n\n placeholder: {\n type: String,\n default: undefined,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n enableSearch: {\n type: Boolean,\n default: false,\n },\n\n isOpen: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n 'update:modelValue',\n ],\n\n expose: [\n 'root',\n\n 'focus',\n 'focused',\n ],\n\n setup(props, context) {\n // Refs\n const root = ref<HTMLDivElement>();\n const searchControl = ref<InstanceType<typeof OrSelectControlInput>>();\n const selectionLabelRef = ref<HTMLDialogElement>();\n const tooltipRef = ref<InstanceType<typeof OrTooltip>>();\n\n // Props\n const { modelValue, model, options } = toRefs(props);\n\n // State\n const searchModelValue = useProxyModelValue(modelValue, context.emit);\n\n const isEmptyModelValue = computed(() => {\n return isEmpty(model.value);\n });\n\n const selection = computed(() => {\n return options.value.find((option) => isEqual(option.value, model.value));\n });\n\n const selectionLabel = computed(() => {\n return selection.value?.label;\n });\n\n watch(\n () => props.isOpen,\n () => {\n tooltipRef.value?.close();\n },\n );\n\n const focused = computed(() => {\n return searchControl.value?.focused;\n });\n\n const openTooltip = () => {\n if (tooltipRef.value) tooltipRef.value.open();\n };\n\n const closeTooltip = () => {\n if (tooltipRef.value) tooltipRef.value.close();\n };\n\n // Styles\n const rootStyles = computed(() => ([\n 'or-select-single-control-v3',\n ...SelectSingleControlInput,\n ]));\n\n // Methods\n function focus() {\n if (searchControl.value) {\n (searchControl.value.focus as () => void)();\n }\n }\n\n function checkTooltip() {\n if (!selectionLabelRef.value) return; // to prevent fro TS error; normally ref will always be available here since the method is a mouse event callback\n const isContentTruncated = selectionLabelRef.value.scrollWidth > selectionLabelRef.value.clientWidth;\n if (isContentTruncated) openTooltip();\n }\n\n return {\n root,\n rootStyles,\n searchControl,\n searchModelValue,\n isEmptyModelValue,\n selection,\n selectionLabel,\n focus,\n focused,\n selectionLabelRef,\n tooltipRef,\n openTooltip,\n closeTooltip,\n checkTooltip,\n };\n },\n});\n</script>\n","export const Select: string[] = [\n // Layout\n 'layout-column',\n\n // Spacing\n 'gap-xs',\n];\n\nexport const SelectControl: string[] = [\n // Layout\n 'layout-row',\n 'w-full',\n\n // Layout (empty)\n 'empty:hidden',\n\n // Overflow\n 'overflow-hidden',\n\n // Spacing\n 'gap-xs',\n\n // Typography\n 'typography-inherit',\n];\n\nexport const SelectSearchControl: string[] = [\n // Spacing\n '!mx-lg md:!-mx-sm+',\n '!my-sm md:!my-0',\n];\n\nexport const SelectDropdown: string[] = [\n // Overflow\n 'overflow-y-auto',\n\n // Box\n 'max-h-[theme(tokens.max-select-dropdown-height)]', // equals 5 items\n\n // Theme\n 'theme-background-default',\n 'dark:theme-background-default-dark',\n\n 'theme-border-outline border-1',\n 'dark:theme-border-outline-dark',\n];\n\nexport const SelectDropdownDefault: string[] = [\n // Shape\n 'rounded-b-md',\n\n // Theme\n '!border-t-0',\n];\n\nexport const SelectDropdownFlipped: string[] = [\n // Shape\n 'rounded-t-md',\n\n // Theme\n '!border-b-0',\n];\n\nexport const SelectDropdownItem: string[] = [\n // Typography\n '!typography-body-2-regular',\n\n // Padding Override todo: check design\n 'md:!pt-[6px] md:!pb-[7px]',\n\n // Typography (selected)\n 'selected:!typography-body-2-semibold',\n\n // Theme\n '!theme-foreground-default dark:!theme-foreground-default-dark',\n];\n\nexport const SelectDropdownItemPaddingSingle = [\n // Padding Override\n '!py-md md:!pt-[6px] md:!pb-[7px]',\n];\n\nexport const SelectDropdownItemPaddingMultiple = [\n // Padding Override\n 'md:!pt-[6px] md:!pb-[7px]',\n];\n\nexport const SelectDropdownItemPaddingMultipleMobile = [\n // Padding Override\n 'px-md',\n];\n\nexport const SelectNoSearchResults: string[] = [\n // Layout\n 'layout-row justify-center',\n\n // Spacing\n 'px-md',\n 'py-md',\n\n // Typography\n 'typography-caption-regular',\n\n // Theme\n 'theme-foreground-outline',\n 'dark:theme-foreground-outline-dark',\n];\n\nexport const SelectLoader: string[] = [\n // Layout\n 'w-fit',\n\n // Typography\n 'typography-body-2-regular',\n\n // Theme\n 'text-outline dark:text-outline-dark',\n];\n\n","<template>\n <div\n :ref=\"'root'\"\n :class=\"rootStyles\"\n >\n <template v-if=\"$slots.label || $slots.addon || label\">\n <OrLabel\n :control-id=\"controlId\"\n :variant=\"'input'\"\n :required=\"required\"\n :disabled=\"disabled\"\n >\n <slot name=\"label\">\n {{ label }}\n </slot>\n\n <template v-slot:addon>\n <slot name=\"addon\" />\n </template>\n </OrLabel>\n </template>\n\n <OrInputBox\n :ref=\"'inputBox'\"\n v-dropdown-open=\"toggle\"\n v-dropdown-close=\"close\"\n class=\"interactivity-click\"\n :class=\"[popoverState === 'open' && (popover && popover.isFlipped ? 'rounded-t-0' : 'rounded-b-0'), { 'outline-none': variant === 'embedded' }]\"\n :variant=\"variant\"\n :size=\"size\"\n :invalid=\"!!error\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :force-state=\"isOpen ? 'focus-within': undefined\"\n :tabindex=\"!disabled ? 0 : null\"\n >\n <div\n :id=\"controlId\"\n :ref=\"'control'\"\n :class=\"controlStyles\"\n :disabled=\"disabled\"\n @focus=\"$emit('focus', $event)\"\n @blur=\"$emit('blur', $event)\"\n >\n <slot\n name=\"valueTemplate\"\n :model=\"proxyModelValue\"\n >\n <template v-if=\"multiple\">\n <OrSelectMultipleControl\n :ref=\"'multipleControl'\"\n v-model=\"searchText\"\n :model=\"proxyModelValue\"\n :options=\"options\"\n :overflow=\"overflow\"\n :placeholder=\"placeholder\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :enable-search=\"enableSearch\"\n :is-open=\"popoverState === 'open'\"\n @reset=\"deselectOption($event)\"\n >\n <template v-slot:tag=\"{item}\">\n <slot\n name=\"tag\"\n :item=\"item\"\n />\n </template>\n </OrSelectMultipleControl>\n </template>\n\n <template v-else>\n <OrSelectSingleControl\n :ref=\"'singleControl'\"\n v-model=\"searchText\"\n :model=\"proxyModelValue\"\n :options=\"options\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :enable-search=\"enableSearch\"\n :is-open=\"popoverState === 'open'\"\n />\n </template>\n </slot>\n </div>\n\n <div :class=\"['layout-inline-row', 'gap-sm']\">\n <template v-if=\"showClear\">\n <OrIconButton\n :icon=\"'close'\"\n :color=\"'inherit'\"\n :additional-styles=\"['!text-outline', '!dark:text-outline-dark']\"\n :disabled=\"readonly || disabled\"\n @click.stop=\"$emit('update:modelValue', multiple ? [] : undefined)\"\n />\n </template>\n\n <OrIcon\n v-show=\"!(popoverState === 'open' && enableSearch && enableClear && !isEmptyModelValue)\"\n :icon=\"popoverState === 'open' ? enableSearch ? 'search' : 'arrow_drop_up' : 'arrow_drop_down'\"\n :class=\" popoverState === 'open' && enableSearch ? '!text-outline !dark:text-outline-dark' : ''\"\n :variant=\"'outlined'\"\n />\n </div>\n\n <OrPopover\n :ref=\"'popover'\"\n :variant=\"'auto'\"\n :trigger=\"anchor || inputBoxRoot\"\n :placement=\"'bottom'\"\n :offset=\"0\"\n :full-width=\"true\"\n :disable-default-styles=\"true\"\n >\n <div :class=\"dropdownStyles\">\n <template v-if=\"popoverState === 'open' && enableSearch && isMobile\">\n <OrInput\n :ref=\"'searchControl'\"\n v-model=\"searchText\"\n :class=\"searchControlStyles\"\n :type=\"'search'\"\n :placeholder=\"placeholder\"\n />\n </template>\n <div :class=\"dropdownContainerStyles\">\n <template v-if=\"loading\">\n <div :class=\"['px-sm+', 'py-xs']\">\n <slot name=\"loading\">\n <OrLoader\n :class=\"loaderStyles\"\n variant=\"text\"\n :text=\"loadingText\"\n />\n </slot>\n </div>\n </template>\n\n <template v-else-if=\"resolvedSearchOptions.length > 0\">\n <template v-if=\"groupByFunction\">\n <OrExpansionPanel\n v-for=\"(group, groupName) in groupedOptions\"\n :key=\"groupName\"\n :label=\"groupName\"\n >\n <template v-if=\"multiple\">\n <OrMenuItem\n v-for=\"(option, i) in group\"\n :key=\"i\"\n :tooltip-text=\"option.label\"\n :selected=\"proxyModelValue && proxyModelValue.includes(option.value)\"\n :disabled=\"option.disabled\"\n >\n <slot\n name=\"optionTemplate\"\n :model=\"proxyModelValue\"\n :option=\"option\"\n >\n <OrCheckbox\n v-model=\"proxyModelValue\"\n :value=\"option.value\"\n :label=\"option.label\"\n :label-variant=\"'menu-item'\"\n :disabled=\"option.disabled\"\n />\n </slot>\n </OrMenuItem>\n </template>\n\n <template v-else>\n <OrMenuItem\n v-for=\"(option, i) in group\"\n :key=\"i\"\n :class=\"dropdownItemStyles\"\n :tooltip-text=\"option.label\"\n :selected=\"proxyModelValue === option.value\"\n :disabled=\"option.disabled\"\n @click.stop=\"selectOption(option.value)\"\n >\n <slot\n name=\"optionTemplate\"\n :model=\"proxyModelValue\"\n :option=\"option\"\n >\n {{ option.label }}\n </slot>\n </OrMenuItem>\n </template>\n </OrExpansionPanel>\n </template>\n\n <template v-else>\n <template v-if=\"multiple\">\n <OrMenuItem\n v-for=\"(option, i) in resolvedSearchOptions\"\n :key=\"i\"\n :tooltip-text=\"option.label\"\n :class=\"dropdownItemStyles\"\n :selected=\"proxyModelValue && proxyModelValue.includes(option.value)\"\n :disabled=\"option.disabled\"\n :data-value=\"option.value\"\n @click.stop=\"!option.disabled && toggleOption(option.value)\"\n >\n <OrCheckbox\n :model-value=\"proxyModelValue\"\n :value=\"option.value\"\n :label-variant=\"'menu-item'\"\n :disabled=\"option.disabled\"\n >\n <div @click.stop.prevent=\"!option.disabled && toggleOption(option.value)\">\n <slot\n name=\"optionTemplate\"\n :model=\"proxyModelValue\"\n :option=\"option\"\n >\n {{ option.label }}\n </slot>\n </div>\n </OrCheckbox>\n </OrMenuItem>\n </template>\n\n <template v-else>\n <OrMenuItem\n v-for=\"(option, i) in resolvedSearchOptions\"\n :key=\"i\"\n :class=\"dropdownItemStyles\"\n :selected=\"proxyModelValue === option.value\"\n :tooltip-text=\"option.label\"\n :data-value=\"option.value\"\n :disabled=\"option.disabled\"\n @click.stop=\"selectOption(option.value); close()\"\n >\n <slot\n name=\"optionTemplate\"\n :model=\"proxyModelValue\"\n :option=\"option\"\n >\n {{ option.label }}\n </slot>\n </OrMenuItem>\n </template>\n </template>\n </template>\n\n <template v-else>\n <div :class=\"noSearchResultsStyles\">\n <slot\n name=\"noSearchResultsTemplate\"\n :search-text=\"searchText\"\n >\n No results\n </slot>\n </div>\n </template>\n </div>\n </div>\n </OrPopover>\n </OrInputBox>\n\n <template v-if=\"$slots.hint || hint\">\n <OrHint\n v-show=\"!error\"\n :disabled=\"disabled\"\n >\n <slot name=\"hint\">\n {{ hint }}\n </slot>\n </OrHint>\n </template>\n\n <OrError\n v-show=\"typeof error === 'string' && error.length > 0\"\n :disabled=\"disabled\"\n >\n {{ error }}\n </OrError>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { ReferenceElement } from '@floating-ui/dom';\nimport { DropdownClose, DropdownOpen } from '@onereach/ui-components-common/directives';\nimport { searchItemsByLabel } from '@onereach/ui-components-common/helpers';\nimport { useProxyModelValue, useResponsive } from '@onereach/ui-components-common/hooks';\nimport { GroupFunction, SearchFunction } from '@onereach/ui-components-common/types';\nimport { exclude, include, isEmpty, toArray } from '@onereach/ui-components-common/utils';\nimport { OrCheckboxV3 as OrCheckbox } from '@onereach/ui-components.or-checkbox-v3';\nimport { OrErrorV3 as OrError } from '@onereach/ui-components.or-error-v3';\nimport { OrExpansionPanelV3 as OrExpansionPanel } from '@onereach/ui-components.or-expansion-panel-v3';\nimport { OrHintV3 as OrHint } from '@onereach/ui-components.or-hint-v3';\nimport { OrIconButtonV3 as OrIconButton } from '@onereach/ui-components.or-icon-button-v3';\nimport { OrIconV3 as OrIcon } from '@onereach/ui-components.or-icon-v3';\nimport { InputBoxSize, InputBoxVariant, OrInputBoxV3 as OrInputBox } from '@onereach/ui-components.or-input-box-v3';\nimport { OrInputV3 as OrInput } from '@onereach/ui-components.or-input-v3';\nimport { OrLabelV3 as OrLabel } from '@onereach/ui-components.or-label-v3';\nimport { OrLoaderV3 as OrLoader } from '@onereach/ui-components.or-loader-v3';\nimport { OrMenuItemV3 as OrMenuItem } from '@onereach/ui-components.or-menu-item-v3';\nimport { OrPopoverV3 as OrPopover } from '@onereach/ui-components.or-popover-v3';\nimport { TagsOverflow } from '@onereach/ui-components.or-tags-v3';\nimport { computed, defineComponent, getCurrentInstance, PropType, ref, toRefs, watch, nextTick } from 'vue';\n\nimport { OrSelectMultipleControl, OrSelectSingleControl } from './partials';\nimport * as Styles from './styles';\nimport { SelectItem, SelectModelValue } from './types';\n\n\nexport default defineComponent({\n name: 'OrSelect',\n\n components: {\n OrCheckbox,\n OrError,\n OrExpansionPanel,\n OrHint,\n OrIcon,\n OrIconButton,\n OrInput,\n OrInputBox,\n OrLabel,\n OrMenuItem,\n OrPopover,\n OrSelectMultipleControl,\n OrSelectSingleControl,\n OrLoader,\n },\n\n directives: {\n DropdownClose,\n DropdownOpen,\n },\n\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n\n props: {\n modelValue: {\n type: undefined as unknown as PropType<SelectModelValue>,\n default: undefined,\n },\n\n options: {\n type: Array as PropType<SelectItem[]>,\n default: () => [],\n },\n\n searchOptions: {\n type: Array as PropType<SelectItem[]>,\n default: () => [],\n },\n\n multiple: {\n type: Boolean,\n default: false,\n },\n\n overflow: {\n type: String as PropType<`${TagsOverflow}`>,\n default: () => TagsOverflow.Hidden,\n },\n\n variant: {\n type: String as PropType<`${InputBoxVariant}`>,\n default: undefined,\n },\n\n size: {\n type: String as PropType<`${InputBoxSize}`>,\n default: undefined,\n },\n\n anchor: {\n type: Object as PropType<ReferenceElement>,\n default: undefined,\n },\n\n label: {\n type: String,\n default: undefined,\n },\n\n placeholder: {\n type: String,\n default: undefined,\n },\n\n hint: {\n type: String,\n default: undefined,\n },\n\n error: {\n type: [String, Boolean],\n default: undefined,\n },\n\n loading: {\n type: Boolean,\n default: false,\n },\n\n loadingText: {\n type: String,\n default: 'Loading',\n },\n\n required: {\n type: Boolean,\n default: false,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n enableSearch: {\n type: Boolean,\n default: false,\n },\n\n enableClear: {\n type: Boolean,\n default: false,\n },\n\n searchFunction: {\n type: Function as PropType<SearchFunction<SelectItem>>,\n default: searchItemsByLabel as SearchFunction<SelectItem>,\n },\n\n groupByFunction: {\n type: Function as PropType<GroupFunction<SelectItem>>,\n default: undefined,\n },\n\n externalControl: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n 'update:modelValue',\n\n 'focus',\n 'blur',\n\n 'search',\n ],\n\n expose: [\n 'root',\n\n 'open',\n 'close',\n 'toggle',\n\n 'toggleOption',\n 'resetSearch',\n\n 'popover',\n 'popoverState',\n ],\n\n setup(props, context) {\n const currentInstance = getCurrentInstance()!;\n\n // Refs\n const root = ref<HTMLElement>();\n\n const inputBox = ref<InstanceType<typeof OrInputBox>>();\n const inputBoxRoot = computed(() => inputBox.value?.root);\n\n const control = ref<HTMLElement>();\n const multipleControl = ref<InstanceType<typeof OrSelectMultipleControl>>();\n const singleControl = ref<InstanceType<typeof OrSelectSingleControl>>();\n const searchControl = ref<HTMLElement>();\n\n const popover = ref<InstanceType<typeof OrPopover>>();\n\n const popoverRoot = computed(() => popover.value?.root);\n const popoverState = computed(() => popover.value?.state);\n\n const isOpen = computed(() => popoverState.value === 'open');\n\n // Props\n const { enableClear, enableSearch, modelValue, multiple } = toRefs(props);\n\n // State\n const controlId = ref(context.attrs.id as string ?? currentInstance.uid.toString());\n\n const proxyModelValue = useProxyModelValue(modelValue, context.emit);\n\n const bottomSheetFullscreen = computed(() => {\n return popover.value?.bottomSheet?.fullscreen;\n });\n\n const isEmptyModelValue = computed(() => {\n return isEmpty(proxyModelValue.value);\n });\n\n const showClear = computed(() => {\n return enableClear.value && !isEmptyModelValue.value;\n });\n\n\n const focused = computed(() => {\n if (multiple.value) {\n return multipleControl.value?.focused;\n } else {\n return singleControl.value?.focused;\n }\n });\n\n const readonly = computed(() => context.attrs.readonly as boolean);\n\n const internalSearchOptions = ref<SelectItem[]>(props.options);\n\n const resolvedSearchOptions = computed(() => {\n return props.externalControl ? props.searchOptions : internalSearchOptions.value;\n });\n\n const searchText = ref<string>('');\n\n watch([\n () => props.externalControl,\n searchText,\n () => props.options,\n ], async ([externalControl, searchText, options]) => {\n if (externalControl) {\n context.emit('search', searchText);\n } else {\n internalSearchOptions.value = await props.searchFunction(searchText, options);\n }\n }, { deep: true });\n\n\n watch(isOpen, (value) => {\n if (!value) {\n resetSearch();\n }\n });\n\n const groupedOptions = computed(() => {\n const groupBy = props.groupByFunction;\n\n if (groupBy) {\n return internalSearchOptions.value.reduce((accumulator, option) => {\n const group = groupBy(option);\n\n return {\n ...accumulator,\n [group]: [\n ...accumulator[group] ?? [],\n option,\n ],\n };\n }, {} as Record<string, SelectItem[]>);\n }\n\n return {\n '': props.options,\n };\n });\n\n // Styles\n const rootStyles = computed(() => [\n 'or-select-v3',\n ...Styles.Select,\n ...props.variant === InputBoxVariant.Embedded ? ['grow'] : [],\n ]);\n\n const controlStyles = computed(() => [\n ...Styles.SelectControl,\n ]);\n\n const searchControlStyles = computed(() => [\n ...Styles.SelectSearchControl,\n ]);\n\n const dropdownStyles = computed(() => [\n 'or-select-popover-v3',\n ...(isMobile.value ? [] : [\n ...Styles.SelectDropdown,\n ...popover.value?.isFlipped ? Styles.SelectDropdownFlipped : Styles.SelectDropdownDefault,\n ]),\n ]);\n\n const dropdownContainerStyles = computed(() => [\n isMobile.value ? 'layout-column' : 'contains',\n bottomSheetFullscreen.value ? 'overflow-y-auto' : 'overflow-hidden',\n ]);\n\n const dropdownItemStyles = computed(() => [\n ...Styles.SelectDropdownItem,\n ...(props.multiple ? Styles.SelectDropdownItemPaddingMultiple : Styles.SelectDropdownItemPaddingSingle),\n ...(isMobile.value ? Styles.SelectDropdownItemPaddingMultipleMobile : []),\n ]);\n\n const noSearchResultsStyles = computed(() => [\n ...Styles.SelectNoSearchResults,\n ]);\n\n const loaderStyles = computed(() => [\n ...Styles.SelectLoader,\n ]);\n\n // Methods\n function toggle(): void {\n if (!readonly.value && !props.disabled) {\n const popoverInstance = popover.value;\n\n if (popoverInstance) {\n if (popoverState.value === 'open' && !focused.value) {\n close();\n } else {\n open();\n\n setTimeout(() => {\n focus();\n });\n }\n }\n }\n }\n\n function open(): void {\n nextTick(() => {\n const popoverInstance = popover.value;\n if (popoverInstance) {\n (popoverInstance.open as () => void)();\n }\n if (proxyModelValue.value) {\n const value = Array.isArray(proxyModelValue.value) ? proxyModelValue.value[0] : proxyModelValue.value;\n const selectedOptionElement = document.querySelector(`[data-value=\"${value}\"]`);\n if (selectedOptionElement) {\n setTimeout(() => {\n selectedOptionElement.scrollIntoView({\n behavior: 'auto',\n block: 'start',\n });\n });\n }\n }\n });\n }\n\n function close(): void {\n const popoverInstance = popover.value;\n\n if (popoverInstance) {\n (popoverInstance.close as () => void)();\n }\n }\n\n function focus(): void {\n if (enableSearch.value) {\n const controlInstance = isMobile.value\n ? searchControl.value\n : multiple.value\n ? multipleControl.value\n : singleControl.value;\n\n if (controlInstance) {\n (controlInstance.focus as () => void)();\n }\n }\n }\n\n function selectOption(value: SelectItem['value']): void {\n if (props.multiple) {\n proxyModelValue.value = include(value, toArray(proxyModelValue.value));\n } else {\n proxyModelValue.value = value;\n }\n\n resetSearch();\n }\n\n function deselectOption(value: SelectItem['value']): void {\n if (props.multiple) {\n proxyModelValue.value = exclude(value, toArray(proxyModelValue.value));\n } else {\n proxyModelValue.value = undefined;\n }\n }\n\n function toggleOption(value: SelectItem['value']): void {\n if (props.multiple) {\n const model = toArray(proxyModelValue.value);\n\n if (!model.includes(value)) {\n proxyModelValue.value = include(value, model);\n } else {\n proxyModelValue.value = exclude(value, model);\n }\n } else {\n proxyModelValue.value = proxyModelValue.value !== value ? value : undefined;\n }\n\n resetSearch();\n }\n\n function resetSearch(): void {\n nextTick(() => {\n setTimeout(() => searchText.value = '');\n });\n }\n\n // Utils\n const { isDesktop, isMobile } = useResponsive();\n\n return {\n root,\n inputBox,\n inputBoxRoot,\n control,\n multipleControl,\n singleControl,\n searchControl,\n popover,\n popoverRoot,\n popoverState,\n rootStyles,\n controlStyles,\n searchControlStyles,\n dropdownStyles,\n dropdownContainerStyles,\n dropdownItemStyles,\n noSearchResultsStyles,\n loaderStyles,\n controlId,\n proxyModelValue,\n readonly,\n isEmptyModelValue,\n isOpen,\n showClear,\n searchText,\n internalSearchOptions,\n resolvedSearchOptions,\n groupedOptions,\n\n toggle,\n close,\n open,\n\n selectOption,\n deselectOption,\n toggleOption,\n resetSearch,\n\n isDesktop,\n isMobile,\n };\n },\n});\n</script>\n"],"names":["SelectControlInput","_sfc_main$4","defineComponent","props","context","root","ref","placeholder","modelValue","toRefs","proxyModelValue","useProxyModelValue","focused","useFocus","controlStyles","computed","controlInlineStyles","chars","_a","focus","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_withDirectives","_openBlock","_createElementBlock","$event","_normalizeStyle","SelectPlaceholder","_sfc_main$3","rootStyles","_normalizeClass","SelectMultipleControlRoot","_sfc_main$2","OrSelectPlaceholder","OrSelectControlInput","OrTags","TagsOverflow","searchControl","tags","model","options","overflow","searchModelValue","value","isNil","toArray","isEmpty","selection","option","isEqual","watch","items","prevItems","_resolveComponent","_createVNode","_component_OrTags","_createSlots","_withCtx","item","_createElementVNode","_hoisted_1","_component_OrSelectControlInput","_vShow","_createBlock","_component_OrSelectPlaceholder","SelectSingleControlInput","_sfc_main$1","OrTooltip","selectionLabelRef","tooltipRef","isEmptyModelValue","selectionLabel","openTooltip","closeTooltip","checkTooltip","_Fragment","args","_toDisplayString","_component_OrTooltip","Select","SelectControl","SelectSearchControl","SelectDropdown","SelectDropdownDefault","SelectDropdownFlipped","SelectDropdownItem","SelectDropdownItemPaddingSingle","SelectDropdownItemPaddingMultiple","SelectDropdownItemPaddingMultipleMobile","SelectNoSearchResults","SelectLoader","_sfc_main","OrCheckbox","OrError","OrExpansionPanel","OrHint","OrIcon","OrIconButton","OrInput","OrInputBox","OrLabel","OrMenuItem","OrPopover","OrSelectMultipleControl","OrSelectSingleControl","OrLoader","DropdownClose","DropdownOpen","searchItemsByLabel","currentInstance","getCurrentInstance","inputBox","inputBoxRoot","control","multipleControl","singleControl","popover","popoverRoot","popoverState","isOpen","enableClear","enableSearch","multiple","controlId","bottomSheetFullscreen","_b","showClear","readonly","internalSearchOptions","resolvedSearchOptions","searchText","externalControl","resetSearch","groupedOptions","groupBy","accumulator","group","Styles.Select","InputBoxVariant","Styles.SelectControl","searchControlStyles","Styles.SelectSearchControl","dropdownStyles","isMobile","Styles.SelectDropdown","Styles.SelectDropdownFlipped","Styles.SelectDropdownDefault","dropdownContainerStyles","dropdownItemStyles","Styles.SelectDropdownItem","Styles.SelectDropdownItemPaddingMultiple","Styles.SelectDropdownItemPaddingSingle","Styles.SelectDropdownItemPaddingMultipleMobile","noSearchResultsStyles","Styles.SelectNoSearchResults","loaderStyles","Styles.SelectLoader","toggle","close","open","nextTick","popoverInstance","selectedOptionElement","controlInstance","selectOption","include","deselectOption","exclude","toggleOption","isDesktop","useResponsive","_hoisted_3","_resolveDirective","_component_OrLabel","_renderSlot","_createCommentVNode","_component_OrInputBox","_component_OrSelectMultipleControl","_component_OrSelectSingleControl","_hoisted_2","_component_OrIconButton","_component_OrIcon","_component_OrPopover","_component_OrInput","_component_OrLoader","_renderList","groupName","_component_OrExpansionPanel","i","_component_OrMenuItem","_withModifiers","_component_OrCheckbox","_directive_dropdown_open","_directive_dropdown_close","_component_OrHint","_component_OrError"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAO,MAAMA,KAA+B;AAAA;AAAA,EAE1C;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GCWAC,KAAeC,EAAgB;AAAA,EAC7B,MAAM;AAAA,EAEN,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,EACF;AAAA,EAEA,QAAQ;AAAA,IACN;AAAA,IAEA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,MAAMC,GAAOC,GAAS;AAEpB,UAAMC,IAAOC,KAGP,EAAE,aAAAC,GAAa,YAAAC,EAAW,IAAIC,GAAON,CAAK,GAG1CO,IAAkBC,GAAmBH,GAAYJ,EAAQ,IAAI,GAC7D,EAAE,SAAAQ,EAAA,IAAYC,GAASR,CAAI,GAG3BS,IAAgBC,EAAS,MAAM;AAAA,MACnC,GAAGf;AAAA,IAAA,CACJ,GAEKgB,IAAsBD,EAAS,MAAM;;AACnC,YAAAE,IAAQP,EAAgB,MAAM,SAAS,IACzCA,EAAgB,MAAM,UACtBQ,IAAAX,EAAY,UAAZ,gBAAAW,EAAmB;AAEhB,aAAA;AAAA,QACL,OAAO,GAAG,KAAK,IAAID,IAAQ,KAAK,GAAG,CAAC,CAAC;AAAA,MAAA;AAAA,IACvC,CACD;AAGD,aAASE,IAAQ;AACf,MAAAP,EAAQ,QAAQ;AAAA,IAClB;AAEO,WAAA;AAAA,MACL,MAAAP;AAAA,MACA,iBAAAK;AAAA,MACA,eAAAI;AAAA,MACA,qBAAAE;AAAA,MACA,SAAAJ;AAAA,MACA,OAAAO;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;SAtGSC,GAAMC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAA;AACH,SAAAC,GAAAC,KAAAC,EAAA,SAAA;AAAA,IACR,KAAK;AAAA,IACL,uBAAOP,EAAa,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAQ,MAAAT,EAAA,kBAAAS;AAAA,IACpB,OAAMC,GAAMV,EAAA,mBAAA;AAAA,IACZ,SAAaA,EAAW,aAAA;AAAA,IACxB,MAAA;AAAA,IACA,aAAUA,EAAA;AAAA,IACV,UAAcA,EAAA;AAAA,IACd,UAASA,EAAE;AAAA,IACX,cAAW;AAAA,IAAA,WAAA;AAAA;;;;;oDCZHW,KAA8B;AAAA;AAAA,EAEzC;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA,EACA;AACF,GCKAC,KAAe/B,EAAgB;AAAA,EAC7B,MAAM;AAAA,EAEN,OAAO;AAAA,IACL,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EAEA,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EAEA,QAAQ;AAEN,UAAMG,IAAOC,KAGP4B,IAAanB,EAAS,MAAM;AAAA,MAChC;AAAA,MACA,GAAGiB;AAAA,IAAA,CACJ;AAEM,WAAA;AAAA,MACL,MAAA3B;AAAA,MACA,YAAA6B;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;SA1CSd,GAAMC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAA;SACNE,EAAY,GAAAC,EAAA,OAAA;AAAA,IACjB,KAAA;AAAA,IAAA,OAAAM,EAAAd,EAAA,UAAA;AAAA,IAED,UAAQA,EAAA;AAAA,EAAA,GAAA;AAAA;;;oDCNCe,KAAsC;AAAA;AAAA,EAEjD;AAAA,EACA;AACF,GC2DAC,KAAenC,EAAgB;AAAA,EAC7B,MAAM;AAAA,EAEN,YAAY;AAAA,IACV,qBAAAoC;AAAA,IACA,sBAAAC;AAAA,IACA,QAAAC;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IAEA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS,MAAMC,GAAa;AAAA,IAC9B;AAAA,IAEA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AAAA,EAEA,QAAQ;AAAA,IACN;AAAA,IAEA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,MAAMtC,GAAOC,GAAS;AAEpB,UAAMC,IAAOC,KAEPoC,IAAgBpC,KAChBqC,IAAOrC,KAGP,EAAE,YAAAE,GAAY,OAAAoC,GAAO,SAAAC,GAAS,UAAAC,MAAarC,GAAON,CAAK,GAGvD4C,IAAmBpC,GAAmBH,GAAYJ,EAAQ,IAAI,GAE9DQ,IAAUG,EAAS,MAAM;;AAC7B,cAAOG,IAAAwB,EAAc,UAAd,gBAAAxB,EAAqB;AAAA,IAAA,CAC7B,GAGKgB,IAAanB,EAAS,MAAM;AAAA,MAChC;AAAA,MACA,GAAGqB;AAAA,IAAA,CACJ,GAGKY,IAAQjC,EAAS,MAAMkC,GAAML,EAAM,KAAK,IAAI,CAAA,IAAKM,EAAQN,EAAM,KAAK,CAAC,GACrEO,IAAUpC,EAAS,MAAMiC,EAAM,MAAM,WAAW,CAAC,GAEjDI,IAAYrC,EAAS,MACrB6B,EAAM,UAAU,UAAaA,EAAM,UAAU,OACxC,KAGFI,EAAM,MACV,IAAI,CAACA,MAAUH,EAAQ,MAAM,KAAK,CAACQ,MAAWC,GAAQD,EAAO,OAAOL,CAAK,CAAC,CAAC,EAC3E,OAAmB,CAACA,MAA+B,CAAC,CAACA,CAAK,EAC1D,IAAI,CAACK,OAAY;AAAA,MAChB,OAAOA,EAAO;AAAA,MACd,OAAOA,EAAO;AAAA,MACd,UAAUA,EAAO,YAAY,EAAE,UAAUA,EAAO,SAAS;AAAA,IAClD,EAAA,CACZ;AAEK,IAAAE,EAAAH,GAAW,CAACI,GAAOC,MAAc;AACjC,MAAAD,EAAM,UAAUC,EAAU,UAAUX,EAAS,UAAUL,GAAa,UAAUE,EAAK,SACpFA,EAAK,MAAM;IACd,CACD;AAGD,aAASxB,IAAc;AACrB,MAAIuB,EAAc,SACfA,EAAc,MAAM;IAEzB;AAEO,WAAA;AAAA,MACL,MAAArC;AAAA,MACA,MAAAsC;AAAA,MACA,YAAAT;AAAA,MACA,eAAAQ;AAAA,MACA,kBAAAK;AAAA,MACA,SAAAI;AAAA,MACA,WAAAC;AAAA,MACA,OAAAJ;AAAA,MACA,OAAA7B;AAAA,MACA,SAAAP;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;;4DA3MC8C,EA+CM,qBAAA;SA7CE9B,EAAY,GAAAC,EAAA,OAAA;AAAA,IAAA,KAAA;AAAA,aAElBR,EAoCS,UAAA;AAAA,EAAA,GAAA;AAAA,MAjCCsC,EAASC,GAAA;AAAA,MACjB,KAAK;AAAA,MACJ,OAAUvC,EAAA;AAAA,MACV,OAAA;AAAA,MAA8B,UAAAA,EAAA;AAAA,MAA0D,aAAA;AAAA,QAAA,SAAAA,EAAA,YAAAA,EAAA,WAAA,QAAA;AAAA,QAIxF,UAAUA,EAAA;AAAA,MACV;AAAA,MAAA,UAAAA,EAAA;AAAA,MAEgB,SAAGC,EAAG,CAAI,MAAAA,EAAA,CAAA,IAAA,CAAAQ,MAAAT,EAAA,MAAA,SAAAS,CAAA;AAAA,IAMlB,GAAA+B,GAAA;AAAA,MAAA,KAAAC,EAAA,CAAA,EAAA,MAAAC,QAAA;AAAA;;;;MAID,GAAA;AAAA,IAAA,GAAA;AAAA;QAGN,MAAA;AAAA,QAAA,IACED,EAME,MAAA;AAAA,UAAAE,EALM,OAAeC,IAAA;AAAA,YACIN,EAAAO,GAAA;AAAA,cAAA,KAAA;AAAA,cACxB,YAAW7C,EAAE;AAAA,cACb,uBAAkBC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAQ,MAAAT,EAAA,mBAAAS;AAAA,cAClB,aAAUT,EAAQ,UAAAA,EAAA,cAAA;AAAA,cAAA,UAAAA,EAAA;AAAA;;;;;;;MAMX,CAAA8C,GAAA,CAAA9C,EAAO,WAAKA,EAAY,YAAA;AAAA,IAAA,CAAA;AAAA,sCACE,GAAA+C,EAAAC,GAAA;AAAA,MAAA,KAAA;AAAA;;;;;;;;;oDC5CjCC,KAAqC;AAAA;AAAA,EAEhD;AACF,GCoDAC,KAAerE,EAAgB;AAAA,EAC7B,MAAM;AAAA,EAEN,YAAY;AAAA,IACV,qBAAAoC;AAAA,IACA,sBAAAC;AAAA,IACA,WAAAiC;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IAEA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,EACF;AAAA,EAEA,QAAQ;AAAA,IACN;AAAA,IAEA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,MAAMrE,GAAOC,GAAS;AAEpB,UAAMC,IAAOC,KACPoC,IAAgBpC,KAChBmE,IAAoBnE,KACpBoE,IAAapE,KAGb,EAAE,YAAAE,GAAY,OAAAoC,GAAO,SAAAC,EAAQ,IAAIpC,GAAON,CAAK,GAG7C4C,IAAmBpC,GAAmBH,GAAYJ,EAAQ,IAAI,GAE9DuE,IAAoB5D,EAAS,MAC1BoC,GAAQP,EAAM,KAAK,CAC3B,GAEKQ,IAAYrC,EAAS,MAClB8B,EAAQ,MAAM,KAAK,CAACQ,MAAWC,GAAQD,EAAO,OAAOT,EAAM,KAAK,CAAC,CACzE,GAEKgC,IAAiB7D,EAAS,MAAM;;AACpC,cAAOG,IAAAkC,EAAU,UAAV,gBAAAlC,EAAiB;AAAA,IAAA,CACzB;AAED,IAAAqC;AAAA,MACE,MAAMpD,EAAM;AAAA,MACZ,MAAM;;AACJ,SAAAe,IAAAwD,EAAW,UAAX,QAAAxD,EAAkB;AAAA,MACpB;AAAA,IAAA;AAGI,UAAAN,IAAUG,EAAS,MAAM;;AAC7B,cAAOG,IAAAwB,EAAc,UAAd,gBAAAxB,EAAqB;AAAA,IAAA,CAC7B,GAEK2D,IAAc,MAAM;AACxB,MAAIH,EAAW,SAAkBA,EAAA,MAAM,KAAK;AAAA,IAAA,GAGxCI,IAAe,MAAM;AACzB,MAAIJ,EAAW,SAAkBA,EAAA,MAAM,MAAM;AAAA,IAAA,GAIzCxC,IAAanB,EAAS,MAAO;AAAA,MACjC;AAAA,MACA,GAAGuD;AAAA,IAAA,CACH;AAGF,aAASnD,IAAQ;AACf,MAAIuB,EAAc,SACfA,EAAc,MAAM;IAEzB;AAEA,aAASqC,IAAe;AAClB,UAAA,CAACN,EAAkB,MAAO;AAE9B,MAD2BA,EAAkB,MAAM,cAAcA,EAAkB,MAAM,eACrDI;IACtC;AAEO,WAAA;AAAA,MACL,MAAAxE;AAAA,MACA,YAAA6B;AAAA,MACA,eAAAQ;AAAA,MACA,kBAAAK;AAAA,MACA,mBAAA4B;AAAA,MACA,WAAAvB;AAAA,MACA,gBAAAwB;AAAA,MACA,OAAAzD;AAAA,MACA,SAAAP;AAAA,MACA,mBAAA6D;AAAA,MACA,YAAAC;AAAA,MACA,aAAAG;AAAA,MACA,cAAAC;AAAA,MACA,cAAAC;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC,GAhLYd,KAAY;AAAA,EAAA,KAAA;AAAA;;;yEApBvBP,EAqCM,WAAA;SAnCE9B,EAAY,GAAAC,EAAA,OAAA;AAAA,IAAA,KAAA;AAAA,IAEF,OAAAM,EAAUd,EAAY,UAAA;AAAA,EAAA,GAAA;AAAA,oCAEb,GAAA+C,EAAAF,GAAA;AAAA,MAAA,KAAA;AAAA;MAEpB,YAAW7C,EAAE;AAAA,MAAA,uBAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAQ,MAAAT,EAAA,mBAAAS;AAAA,mBAIlBT,EAwBW,oBAAAA,EAAA,cAAAA,EAAA;AAAA,IAAA,GAvBO,wBAAiB,aAGT,CAAA,MAAAO,EAAA,GAAAC,EAAAmD,GAAA,EAAA,KAAA,EAAA,GAAA;AAAA,MAAA3D,EAAA,qBAAAO,KAFkBwC,EAAAC,GAAA;AAAA,QAAA,KAAA;AAAA;;;;;;MAOtC,GAAA,GAAA,CAAA,UAAA,CAAA,MAAAzC,EAAA,GACyBC,EAAA,OAAAoC,IAAA;AAAA,QAAAD,EACjB,OAAiB;AAAA,UACtB,KAAA;AAAA,UACA,OAAA;AAAA,UAAA,cAAA1C,EAEE,CAAc,MAAAA,EAAA,CAAA,IAAA,IAAA2D,MAAA5D,EAAA,gBAAAA,EAAA,aAAA,GAAA4D,CAAA;AAAA,UAEnB,cAIE3D,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,IAAA2D,MAAA5D,EAAA,gBAAAA,EAAA,aAAA,GAAA4D,CAAA;AAAA,QAAA,GAHAC,EAAgB7D,EAAA,cAAA,GAAA,GAAA;AAAA,QAAAsC,EACNwB,GAAc;AAAA,UACvB,KAAA;AAAA,UAAA,SAAA9D,EAAA;AAAA;;;;;;oDCjCA+D,KAAmB;AAAA;AAAA,EAE9B;AAAA;AAAA,EAGA;AACF,GAEaC,KAA0B;AAAA;AAAA,EAErC;AAAA,EACA;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AACF,GAEaC,KAAgC;AAAA;AAAA,EAE3C;AAAA,EACA;AACF,GAEaC,KAA2B;AAAA;AAAA,EAEtC;AAAA;AAAA,EAGA;AAAA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AACF,GAEaC,KAAkC;AAAA;AAAA,EAE7C;AAAA;AAAA,EAGA;AACF,GAEaC,KAAkC;AAAA;AAAA,EAE7C;AAAA;AAAA,EAGA;AACF,GAEaC,KAA+B;AAAA;AAAA,EAE1C;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AACF,GAEaC,KAAkC;AAAA;AAAA,EAE7C;AACF,GAEaC,KAAoC;AAAA;AAAA,EAE/C;AACF,GAEaC,KAA0C;AAAA;AAAA,EAErD;AACF,GAEaC,KAAkC;AAAA;AAAA,EAE7C;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA,EACA;AACF,GAEaC,KAAyB;AAAA;AAAA,EAEpC;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AACF,GC6LAC,KAAe9F,EAAgB;AAAA,EAC7B,MAAM;AAAA,EAEN,YAAY;AAAA,IACV,YAAA+F;AAAA,IACA,SAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,QAAAC;AAAA,IACA,cAAAC;AAAA,IACA,SAAAC;AAAA,IACA,YAAAC;AAAA,IACA,SAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,yBAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,UAAAC;AAAA,EACF;AAAA,EAEA,YAAY;AAAA,IACV,eAAAC;AAAA,IACA,cAAAC;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IAEA,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS,MAAMvE,GAAa;AAAA,IAC9B;AAAA,IAEA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,OAAO;AAAA,MACtB,SAAS;AAAA,IACX;AAAA,IAEA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAASwE;AAAA,IACX;AAAA,IAEA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,EACF;AAAA,EAEA,QAAQ;AAAA,IACN;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,MAAM9G,GAAOC,GAAS;AACpB,UAAM8G,IAAkBC,MAGlB9G,IAAOC,KAEP8G,IAAW9G,KACX+G,IAAetG,EAAS,MAAA;;AAAM,cAAAG,IAAAkG,EAAS,UAAT,gBAAAlG,EAAgB;AAAA,KAAI,GAElDoG,IAAUhH,KACViH,IAAkBjH,KAClBkH,IAAgBlH,KAChBoC,IAAgBpC,KAEhBmH,IAAUnH,KAEVoH,IAAc3G,EAAS,MAAA;;AAAM,cAAAG,IAAAuG,EAAQ,UAAR,gBAAAvG,EAAe;AAAA,KAAI,GAChDyG,IAAe5G,EAAS,MAAA;;AAAM,cAAAG,IAAAuG,EAAQ,UAAR,gBAAAvG,EAAe;AAAA,KAAK,GAElD0G,IAAS7G,EAAS,MAAM4G,EAAa,UAAU,MAAM,GAGrD,EAAE,aAAAE,GAAa,cAAAC,GAAc,YAAAtH,GAAY,UAAAuH,MAAatH,GAAON,CAAK,GAGlE6H,IAAY1H,EAAIF,EAAQ,MAAM,MAAgB8G,EAAgB,IAAI,UAAU,GAE5ExG,IAAkBC,GAAmBH,GAAYJ,EAAQ,IAAI,GAE7D6H,KAAwBlH,EAAS,MAAM;;AACpC,cAAAmH,KAAAhH,IAAAuG,EAAQ,UAAR,gBAAAvG,EAAe,gBAAf,gBAAAgH,EAA4B;AAAA,IAAA,CACpC,GAEKvD,IAAoB5D,EAAS,MAC1BoC,GAAQzC,EAAgB,KAAK,CACrC,GAEKyH,IAAYpH,EAAS,MAClB8G,EAAY,SAAS,CAAClD,EAAkB,KAChD,GAGK/D,IAAUG,EAAS,MAAM;;AAC7B,aAAIgH,EAAS,SACJ7G,IAAAqG,EAAgB,UAAhB,gBAAArG,EAAuB,WAEvBgH,IAAAV,EAAc,UAAd,gBAAAU,EAAqB;AAAA,IAC9B,CACD,GAEKE,IAAWrH,EAAS,MAAMX,EAAQ,MAAM,QAAmB,GAE3DiI,IAAwB/H,EAAkBH,EAAM,OAAO,GAEvDmI,IAAwBvH,EAAS,MAC9BZ,EAAM,kBAAkBA,EAAM,gBAAgBkI,EAAsB,KAC5E,GAEKE,KAAajI,EAAY,EAAE;AAE3B,IAAAiD,EAAA;AAAA,MACJ,MAAMpD,EAAM;AAAA,MACZoI;AAAA,MACA,MAAMpI,EAAM;AAAA,OACX,OAAO,CAACqI,GAAiBD,GAAY1F,CAAO,MAAM;AACnD,MAAI2F,IACMpI,EAAA,KAAK,UAAUmI,CAAU,IAEjCF,EAAsB,QAAQ,MAAMlI,EAAM,eAAeoI,GAAY1F,CAAO;AAAA,IAC9E,GACC,EAAE,MAAM,GAAA,CAAM,GAGXU,EAAAqE,GAAQ,CAAC5E,MAAU;AACvB,MAAKA,KACSyF;IACd,CACD;AAEK,UAAAC,KAAiB3H,EAAS,MAAM;AACpC,YAAM4H,IAAUxI,EAAM;AAEtB,aAAIwI,IACKN,EAAsB,MAAM,OAAO,CAACO,GAAavF,MAAW;AAC3D,cAAAwF,KAAQF,EAAQtF,CAAM;AAErB,eAAA;AAAA,UACL,GAAGuF;AAAA,UACH,CAACC,EAAK,GAAG;AAAA,YACP,GAAGD,EAAYC,EAAK,KAAK,CAAC;AAAA,YAC1BxF;AAAA,UACF;AAAA,QAAA;AAAA,MAEJ,GAAG,CAAkC,CAAA,IAGhC;AAAA,QACL,IAAIlD,EAAM;AAAA,MAAA;AAAA,IACZ,CACD,GAGK+B,KAAanB,EAAS,MAAM;AAAA,MAChC;AAAA,MACA,GAAG+H;AAAAA,MACH,GAAG3I,EAAM,YAAY4I,GAAgB,WAAW,CAAC,MAAM,IAAI,CAAC;AAAA,IAAA,CAC7D,GAEKjI,KAAgBC,EAAS,MAAM;AAAA,MACnC,GAAGiI;AAAAA,IAAO,CACX,GAEKC,KAAsBlI,EAAS,MAAM;AAAA,MACzC,GAAGmI;AAAAA,IAAO,CACX,GAEKC,KAAiBpI,EAAS,MAAM;;AAAA;AAAA,QACpC;AAAA,QACA,GAAIqI,EAAS,QAAQ,KAAK;AAAA,UACxB,GAAGC;AAAAA,UACH,IAAGnI,IAAAuG,EAAQ,UAAR,QAAAvG,EAAe,YAAYoI,KAA+BC;AAAAA,QAC/D;AAAA,MAAA;AAAA,KACD,GAEKC,KAA0BzI,EAAS,MAAM;AAAA,MAC7CqI,EAAS,QAAQ,kBAAkB;AAAA,MACnCnB,GAAsB,QAAQ,oBAAoB;AAAA,IAAA,CACnD,GAEKwB,KAAqB1I,EAAS,MAAM;AAAA,MACxC,GAAG2I;AAAAA,MACH,GAAIvJ,EAAM,WAAWwJ,KAA2CC;AAAAA,MAChE,GAAIR,EAAS,QAAQS,KAAiD,CAAC;AAAA,IAAA,CACxE,GAEKC,KAAwB/I,EAAS,MAAM;AAAA,MAC3C,GAAGgJ;AAAAA,IAAO,CACX,GAEKC,KAAejJ,EAAS,MAAM;AAAA,MAClC,GAAGkJ;AAAAA,IAAO,CACX;AAGD,aAASC,KAAe;AACtB,MAAI,CAAC9B,EAAS,SAAS,CAACjI,EAAM,YACJsH,EAAQ,UAG1BE,EAAa,UAAU,UAAU,CAAC/G,EAAQ,QACtCuJ,QAEDC,MAEL,WAAW,MAAM;AACT,QAAAjJ;MAAA,CACP;AAAA,IAIT;AAEA,aAASiJ,KAAa;AACpB,MAAAC,GAAS,MAAM;AACb,cAAMC,IAAkB7C,EAAQ;AAIhC,YAHI6C,KACDA,EAAgB,KAAoB,GAEnC5J,EAAgB,OAAO;AACnB,gBAAAsC,IAAQ,MAAM,QAAQtC,EAAgB,KAAK,IAAIA,EAAgB,MAAM,CAAC,IAAIA,EAAgB,OAC1F6J,IAAwB,SAAS,cAAc,gBAAgBvH,CAAK,IAAI;AAC9E,UAAIuH,KACF,WAAW,MAAM;AACf,YAAAA,EAAsB,eAAe;AAAA,cACnC,UAAU;AAAA,cACV,OAAO;AAAA,YAAA,CACR;AAAA,UAAA,CACF;AAAA,QAEL;AAAA,MAAA,CACD;AAAA,IACH;AAEA,aAASJ,KAAc;AACrB,YAAMG,IAAkB7C,EAAQ;AAEhC,MAAI6C,KACDA,EAAgB,MAAqB;AAAA,IAE1C;AAEA,aAASnJ,KAAc;AACrB,UAAI2G,EAAa,OAAO;AAChB,cAAA0C,IAAkBpB,EAAS,QAC7B1G,EAAc,QACdqF,EAAS,QACPR,EAAgB,QAChBC,EAAc;AAEpB,QAAIgD,KACDA,EAAgB,MAAqB;AAAA,MAE1C;AAAA,IACF;AAEA,aAASC,GAAazH,GAAkC;AACtD,MAAI7C,EAAM,WACRO,EAAgB,QAAQgK,GAAQ1H,GAAOE,EAAQxC,EAAgB,KAAK,CAAC,IAErEA,EAAgB,QAAQsC,GAGdyF;IACd;AAEA,aAASkC,GAAe3H,GAAkC;AACxD,MAAI7C,EAAM,WACRO,EAAgB,QAAQkK,GAAQ5H,GAAOE,EAAQxC,EAAgB,KAAK,CAAC,IAErEA,EAAgB,QAAQ;AAAA,IAE5B;AAEA,aAASmK,GAAa7H,GAAkC;AACtD,UAAI7C,EAAM,UAAU;AACZ,cAAAyC,IAAQM,EAAQxC,EAAgB,KAAK;AAE3C,QAAKkC,EAAM,SAASI,CAAK,IAGPtC,EAAA,QAAQkK,GAAQ5H,GAAOJ,CAAK,IAF5BlC,EAAA,QAAQgK,GAAQ1H,GAAOJ,CAAK;AAAA,MAG9C;AAEA,QAAAlC,EAAgB,QAAQA,EAAgB,UAAUsC,IAAQA,IAAQ;AAGxD,MAAAyF;IACd;AAEA,aAASA,IAAoB;AAC3B,MAAA4B,GAAS,MAAM;AACF,mBAAA,MAAM9B,GAAW,QAAQ,EAAE;AAAA,MAAA,CACvC;AAAA,IACH;AAGA,UAAM,EAAE,WAAAuC,IAAW,UAAA1B,EAAS,IAAI2B,GAAc;AAEvC,WAAA;AAAA,MACL,MAAA1K;AAAA,MACA,UAAA+G;AAAA,MACA,cAAAC;AAAA,MACA,SAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,eAAAC;AAAA,MACA,eAAA9E;AAAA,MACA,SAAA+E;AAAA,MACA,aAAAC;AAAA,MACA,cAAAC;AAAA,MACA,YAAAzF;AAAA,MACA,eAAApB;AAAA,MACA,qBAAAmI;AAAA,MACA,gBAAAE;AAAA,MACA,yBAAAK;AAAA,MACA,oBAAAC;AAAA,MACA,uBAAAK;AAAA,MACA,cAAAE;AAAA,MACA,WAAAhC;AAAA,MACA,iBAAAtH;AAAA,MACA,UAAA0H;AAAA,MACA,mBAAAzD;AAAA,MACA,QAAAiD;AAAA,MACA,WAAAO;AAAA,MACA,YAAAI;AAAA,MACA,uBAAAF;AAAA,MACA,uBAAAC;AAAA,MACA,gBAAAI;AAAA,MAEA,QAAAwB;AAAA,MACA,OAAAC;AAAA,MACA,MAAAC;AAAA,MAEA,cAAAK;AAAA,MACA,gBAAAE;AAAA,MACA,cAAAE;AAAA,MACA,aAAApC;AAAA,MAEA,WAAAqC;AAAA,MACA,UAAA1B;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC,GA/pBWnF,KAAK,CAAA,MAAA,UAAA;;GAwCG+G,KAAK;AAAA,EAAA,KAAA;AAAA;;;wVA7HvBC,GAmRM,gBAAA;SAjRErJ,EAAY,GAAAC,EAAA,OAAA;AAAA,IAAA,KAAA;AAAA,IAEF,OAAAM,EAAgBd,EAAO,UAAA;AAAA,EAAA,GAAA;AAAA,IAElCA,EAAA,OAAA,SAAAA,EAAA,OAAA,SAAAA,EAAA,SAAAO,KAAUwC,EAAE8G,GAAS;AAAA,MACrB,KAAA;AAAA,MACA,cAAU7J,EAAA;AAAA,MACV,SAAQ;AAAA,MAAA,UAAAA,EAAA;AAAA,MAMQ,UAAKA,EAAA;AAAA,IAAA,GAAA;AAAA;QAFf8J,EAAA9J,EAAA,QAAA,OAAA;AAAA,MAAA,CAAA;AAAA;;;;;;IAQX,GAAA,GAAA,CAAA,cAAA,YAAA,UA2Oa,MA1OV+J,EAAe,IAAA,EAAA;AAAA,IAAAzJ,GAGXC,KACgBwC,EAAAiH,GAAA;AAAA,MACpB,KAAA;AAAA,MACA,OAAMlJ,EAAI,CAAA,uBAAA,CAAAd,EAAA,iBAAA,WAAAA,EAAA,WAAAA,EAAA,QAAA,YAAA,gBAAA,gBAAA,EAAA,gBAAAA,EAAA,YAAA,WAAA,CAAA,CAAA,CAAA;AAAA,MACV,SAAOA,EAAI;AAAA,MACX,MAAUA,EAAA;AAAA,MACV,SAAQ,CAAE,CAAAA,EAAA;AAAA,MACV,UAAaA,EAAA;AAAA,MACb,UAAQA,EAAG;AAAA,MAAA,eAAAA,EAAA,SAAA,iBAAA;AAAA,MAkDN,UAAAA,EAAA,WAAA,OAAA;AAAA,IAAA,GAAA;AAAA,eA/CCyC,EAAS,MAAA;AAAA,QACCE,EAAA,OAAA;AAAA,UACd,IAAK3C,EAAA;AAAA,UACL,KAAA;AAAA,UACA,OAAKc,EAAAd,EAAA,aAAA;AAAA,UACL,UAAIA,EAAA;AAAA,UAAA,SAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAQ,MAAAT,EAAA,MAAA,SAAAS,CAAA;AAAA,UAEL,QAuCOR,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAQ,MArCJT,EAAK,MAAE,QAAAS,CAAA;AAAA,QAAA,GAAA;AAAA,sBAGN,iBAmB0B,EAAA,OAAAT,EAAA,gBAAA,GAAA,MAAA;AAAA,YAAAA,EAAA,YAAAO,KAlBDwC,EAAAkH,GAAA;AAAA,cAAA,KAAA;AAAA;cAEtB,YAAOjK,EAAA;AAAA,cACP,uBAAgBC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAQ,MAAAT,EAAA,aAAAS;AAAA,cAChB,OAAUT,EAAA;AAAA,cACV,SAAaA,EAAA;AAAA,cACb,UAAUA,EAAA;AAAA,cACV,aAAUA,EAAA;AAAA,cACV,UAAaA,EAAA;AAAA,cACb,UAAOA,EAAE;AAAA,cACT,iBAAKA,EAAA;AAAA,cAAA,WAAAA,EAAA,iBAAA;AAAA,cAEW,SAAGC,EAAG,CAAI,MAAAA,EAAA,CAAA,IAAA,CAAAQ,MAAAT,EAAA,eAAAS,CAAA;AAAA,YAAA,GAAA;AAAA;;;;2IAWN,GAAAsC,EAAAmH,GAAA;AAAA,cAAA,KAAA;AAAA;cAEpB,YAAOlK,EAAA;AAAA,cACP,uBAAgBC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAQ,MAAAT,EAAA,aAAAS;AAAA,cAChB,OAAWT,EAAA;AAAA,cACX,SAAQA,EAAE;AAAA,cACV,aAAeA,EAAA;AAAA,cACf,UAAOA,EAAE;AAAA,cAAA,iBAAAA,EAAA;AAAA;;UAMlB,CAAA;AAAA,QAAA,GACkB,IAAS4C,EAAA;AAAA,QAAAD,EAAA,OACvBwH,IAME;AAAA,UAAAnK,EAAA,aAAAO,KALcwC,EAAAqH,GAAA;AAAA,YACb,KAAK;AAAA,YACL,MAAA;AAAA,YACA,OAAA;AAAA,YACA,qBAAK,CAAO,iBAAA,yBAAA;AAAA,YAAA,UAAApK,EAAA,YAAAA,EAAA;AAAA;UAIjB,GAAA,MAAA,GAAA,CAAA,UAAA,CAAA,KAEG+J,EAAM,IAAY,EAAA;AAAA,UAAAzJ,EACbgC,EAAG+H,GAAY;AAAA,YACpB,QAAS,iBAAU,SAAArK,EAAA,eAAA,WAAA,kBAAA;AAAA,YAAA,OAAAc,EAAAd,EAAA,iBAAA,UAAAA,EAAA,eAAA,0CAAA,EAAA;AAAA;;;UAIxB,CAAA;AAAA,QAAA,CAAA;AAAA,UAEYsK,GAAM;AAAA,UACf,KAAA;AAAA,UACA,SAAS;AAAA,UACT,SAAStK,EAAA,UAAAA,EAAA;AAAA,UACT,WAAA;AAAA,UACA,QAAA;AAAA,UAAA,cAAA;AAAA,UA+IK,0BAAA;AAAA,QAAA,GAAA;AAAA,UA7IK,SAAAyC,EAAA,MAAA;AAAA,YAAAE,EAAA,OAAA;AAAA,cACO,OAAA7B,EAAYd,EAAe,cAAA;AAAA,YAAA,GAAA;AAAA,gFAElB+C,EAAAwH,GAAA;AAAA,gBAAA,KAAA;AAAA;gBAEpB,YAAKvK,EAAA;AAAA,gBACL,uBAAcC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAQ,MAAAT,EAAA,aAAAS;AAAA,gBACd,SAAaT,EAAW,mBAAA;AAAA,gBAAA,MAAA;AAAA;iBAqIvB,MAAA,GAAA,CAAA,cAAA,SAAA,aAAA,CAAA,KAlIA+J,EAAK,IAAE,EAAA;AAAA,cAAApH,EAAA,OAAA;AAAA,uBACK7B,EAAOd,EAAA,uBAAA;AAAA,cAAA,GAAA;AAAA,gBAEnBA,EAAA,WAAAO,EAAA,GAKIC,EAAA,OAAAmJ,IAAA;AAAA,kBAAAG,EAHM9J,qBAAE,CAAY,GAAA,MAAA;AAAA,oBAAAsC,EACZkI,GAAM;AAAA,sBACb,OAAM1J,EAAWd,EAAA,YAAA;AAAA,sBAAA,SAAA;AAAA;;kBAML,CAAA;AAAA,gBACH,CAAA,KAAAA,EAAA,sBAAe,qBAC7B2D,GAgDmB,EAAA,KAAA,EAAA,GAAA;AAAA,kBAAA3D,EAAA,mBAAAO,EA9CX,EAAS,GAAAC,EAAAmD,GAAA,EAAA,KAAA,EAAA,GAAA8G,EAAAzK,EAAA,gBAAA,CAAAwH,GAAAkD,OACTnK,EAAW,GAAAwC,EAAA4H,GAAA;AAAA,oBAAA,KAAAD;AAAA;;;sBAKN1K,EAAA,YAAAO,EAAA,EAAA,GAAAC,EAAAmD,GAAA,EAAA,KAAA,EAAA,GAAA8G,EAAAjD,GAAA,CAAAxF,GAAA4I,OACNrK,EAAA,GAA0BwC,EAAA8H,GAAA;AAAA,wBAC1B,KAAAD;AAAA,wBACA,gBAAgB5I,EAAC;AAAA,wBAAA,UAAAhC,EAAA,mBAAAA,EAAA,gBAAA,SAAAgC,EAAA,KAAA;AAAA;;iCAIVS,EAAE,MAAA;AAAA,0BAAAqH,EACC9J,EAAM,QAAA,kBAAA;AAAA,4BASV,OAAAA,EAAA;AAAA,4BAPL,QAAAgC;AAAA,0BAAA,GAAA,MAAA;AAAA;8BAEG,YAAOhC,EAAO;AAAA,8BACd,uBAAmBC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAQ,MAAAT,EAAA,kBAAAS;AAAA,8BACnB,OAAAuB,EAAA;AAAA,8BACA,OAAUA,EAAA;AAAA,8BAAA,iBAAA;AAAA;;;;;gDAOjB,YAgBa,UAAA,CAAA,EAdJ,GAAA,GAAA,MAAAzB,EAAA,EAAA,GAAAC,EAAAmD,GAAA,EAAA,KAAA,EAAA,GAAA8G,EAAAjD,GAAA,CAAAxF,GAAA4I,OACDrK,EAAA,GAAAwC,EAAE8H,GAAkB;AAAA,wBACzB,KAAAD;AAAA,wBACA,SAAU5K,EAA2B,kBAAA;AAAA,wBACrC,gBAAgBgC,EAAC;AAAA,wBACjB,UAAKhC,EAAO,oBAAAgC,EAAA;AAAA,wBAAA,UAAAA,EAAA;AAAA,wBAQN,SAAA8I,EAAA,CAAArK,MAAAT,EAAA,aAAAgC,EAAA,KAAA,GAAA,CAAA,MAAA,CAAA;AAAA,sBAAA,GAAA;AAAA,iCAJCS,EAAE,MAAA;AAAA,0BAAAqH,EACC9J,EAAM,QAAA,kBAAA;AAAA,4BAGV,OAAAA,EAAA;AAAA,4BAAA,QAAAgC;AAAA;;;;;;;;kBAMf,GAAA,MAAA,CAAA,OAAA,CAAA,EAAA,GACkB,gBACd2B,GA0Ba,EAAA,KAAA,KAAA;AAAA,oBAxBJ3D,EAAA,YAAAO,EAAA,EAAA,GAAAC,EAAAmD,GAAA,EAAA,KAAA,EAAA,GAAA8G,EAAAzK,EAAA,uBAAA,CAAAgC,GAAA4I,OACNrK,EAAA,GAA0BwC,EAAA8H,GAAA;AAAA,sBAC1B,KAAKD;AAAA,sBACL,gBAAU5I,EAAA;AAAA,sBACV,SAAiBhC,EAAQ,kBAAA;AAAA,sBACzB,YAAY,mBAAYA,EAAA,gBAAA,SAAAgC,EAAA,KAAA;AAAA,sBACxB,UAAKA,EAAA;AAAA,sBAAA,cAAAA,EAAA;AAAA,sBAiBO,SAAA8I,EAAA,CAAArK,MAAA,CAAAuB,EAAA,YAAAhC,EAAA,aAAAgC,EAAA,KAAA,GAAA,CAAA,MAAA,CAAA;AAAA,oBAAA,GAAA;AAAA,sBAdV,SAAAS,EAAW,MAAE;AAAA,wBAAAH,EACNyI,GAAY;AAAA,0BACnB,eAAa/K,EAAE;AAAA,0BACf,OAAUgC,EAAA;AAAA,0BAAA,iBAAA;AAAA;;mCAELS,EAAK,MAAA;AAAA,4BAAAE,EAAA,OAAA;AAAA,8BACT,SAMOmI,EAAA,CAAArK,MAAA,CAAAuB,EAAA,YAAAhC,EAAA,aAAAgC,EAAA,KAAA,GAAA,CAAA,QAAA,SAAA,CAAA;AAAA,4BAAA,GAAA;AAAA,gCAHIhC,EAAM,QAAA,kBAAA;AAAA,gCAGV,OAAAA,EAAA;AAAA,gCAAA,QAAAgC;AAAA;;;;;;;;;oBAOb,GAAA,MAAA,CAAA,gBAAA,SAAA,YAiBa,YAhBW,cAAA,SAAA,CAAA,EACf,GAAA,GAAA,MAAAzB,EAAA,EAAA,GAAAC,EAAAmD,GAAA,EAAA,KAAA,EAAA,GAAA8G,EAAAzK,EAAA,uBAAA,CAAAgC,GAAA4I,OACDrK,EAAA,GAAAwC,EAAE8H,GAAkB;AAAA,sBACzB,KAAAD;AAAA,sBACA,SAAqB5K,EAAK,kBAAA;AAAA,sBAC1B,YAAY,oBAAYgC,EAAA;AAAA,sBACxB,gBAAgBA,EAAC;AAAA,sBACjB,cAAKA,EAAA;AAAA,sBAAA,UAAAA,EAAA;AAAA,sBAQC,SAAA8I,EAAA,CAAArK,MAAA;AAAA,wBAAAT,EAAA,aAAAgC,EAAA,KAAA,GAAAhC,EAAA,MAAA;AAAA,sBAAA,GAAA,CAAA,MAAA,CAAA;AAAA,oBAAA,GAAA;AAAA,+BAJCyC,EAAE,MAAA;AAAA,wBAAAqH,EACC9J,EAAM,QAAA,kBAAA;AAAA,0BAGV,OAAAA,EAAA;AAAA,0BAAA,QAAAgC;AAAA;;;;;;;gCAOAxB,EAAA,OAAA;AAAA,kBAAA,KAAA;AAAA,kBACX,OAKOM,EAAAd,EAAA,qBAAA;AAAA,gBAAA,GAAA;AAAA;;;;;;;;;;;uCAlOC,WAAK,YAAA,YAAA,eAAA,UAAA,CAAA,IAAA;AAAA,MAAA,CAAAgL,IAAAhL,EAAA,MAAA;AAAA,MA0OT,CAAmBiL,GAAAjL,EAAA,KAAA;AAAA,IAAA,CAAA;AAAA,iCAGpBO,EAAQ,GAAAwC,EAAAmI,GAAA;AAAA,MAAA,KAAA;AAAA;;;;;;;;;;IAYV,CAAA,IAAAnB,EAAA,IAAA,EAAA;AAAA,IAAHzJ,EAAAgC,EAAA6I,GAAA,EAAA,UAAAnL,EAAA,YAAA;AAAA,MAAA,SAAAyC,EAAA,MAAA;AAAA;;;;;;;;;"}