@startlibs/form 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/AutoComplete.mjs +4 -1
- package/lib/AutoComplete.mjs.map +1 -1
- package/lib/RichText.mjs +4 -1
- package/lib/RichText.mjs.map +1 -1
- package/lib/index.cjs +11 -5
- package/lib/index.cjs.map +1 -1
- package/lib/useDraftConfirmation.mjs +1 -1
- package/lib/useDraftConfirmation.mjs.map +1 -1
- package/package.json +5 -4
- package/src/AutoComplete.jsx +4 -1
- package/src/RichText.jsx +4 -1
- package/src/useDraftConfirmation.jsx +1 -1
package/lib/AutoComplete.mjs
CHANGED
|
@@ -11,7 +11,7 @@ import _without from 'lodash/fp/without';
|
|
|
11
11
|
import _isEqual from 'lodash/fp/isEqual';
|
|
12
12
|
import _last from 'lodash/fp/last';
|
|
13
13
|
import React, { useRef, useState, useEffect } from 'react';
|
|
14
|
-
import
|
|
14
|
+
import ContentEditableModule from 'react-contenteditable';
|
|
15
15
|
import { useToggle, useEnsureRef, useRefState } from '@startlibs/core';
|
|
16
16
|
import { Icon, ContextMenu, Loading, Li } from '@startlibs/components';
|
|
17
17
|
import { Errors, useProvideErrors } from './Errors.mjs';
|
|
@@ -26,6 +26,9 @@ const _excluded = ["CompletedBox", "isEditable", "getLabel", "cancelEditable", "
|
|
|
26
26
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
27
27
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
28
28
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
29
|
+
|
|
30
|
+
// Node/esbuild interop em .mjs devolve module.exports; Rollup devolve o default. Cobre os dois.
|
|
31
|
+
const ContentEditable = ContentEditableModule.default || ContentEditableModule;
|
|
29
32
|
const ua = navigator.userAgent.toLowerCase();
|
|
30
33
|
const isSafari = ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0;
|
|
31
34
|
const InputLoading = /*#__PURE__*/styled(Loading).withConfig({
|
package/lib/AutoComplete.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoComplete.mjs","sources":["../src/AutoComplete.jsx"],"sourcesContent":["import React, {useEffect, useRef, useState} from 'react'\nimport ContentEditable from 'react-contenteditable'\nimport {useRefState, useToggle, useEnsureRef} from '@startlibs/core'\nimport {ContextMenu, Li, Loading, Icon} from '@startlibs/components'\nimport {Errors, useProvideErrors} from './Errors'\nimport {Field} from './Field'\nimport {useInput} from './enhanceInput'\nimport _ from 'lodash/fp'\nimport {callIfFunction, stopPropagation, constrainEvent, getColor, media, customTheme, _s} from '@startlibs/utils'\nimport styled, {css} from 'styled-components'\nimport {darken} from 'polished'\n\nconst ua = navigator.userAgent.toLowerCase();\nconst isSafari = ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0\n\nconst InputLoading = styled(Loading)`\n bottom: 8px;\n right: 0.6rem;\n left: auto;\n top: 50%;\n transform: translate(-50%);\n`\nconst AutoCompleteInput = styled.div`\n width: 100%;\n font-size: 14px;\n border: 1px solid ${getColor('gray210')};\n border-radius: 8px;\n color: ${getColor('gray60')};\n cursor: text;\n background: white;\n position: relative;\n outline: 0;\n outline: none;\n min-height: 3rem;\n line-height: 28px;\n padding: 0.25rem 0.7rem;\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n ${props => props.focused && `\n border-color: ${getColor('gray180')};\n box-shadow: 0px 0px 0px 2px rgba(0,0,0,0.075);\n `}\n ${props => props.hasErrors && css`\n border-color: ${getColor('alert')} !important;\n `}\n ${media.mobile`\n padding: 0.25rem 1rem;\n min-height: 42px;\n `}\n ${props => props.withDropdown && css`\n padding-right: 3rem;\n ${media.mobile`\n padding-right: 4rem;\n `}\n `}\n ${customTheme('TextInput')}\n`\n\nconst AutoCompletePlaceholder = styled.span`\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n pointer-events: none;\n color: rgba(0,0,0,0.3);\n left: 0.7rem;\n right: 0.7rem;\n ${media.mobile`\n left: 1rem;\n right: 1rem;\n `}\n`\n\nconst AutoCompleteTextboxDiv = styled(ContentEditable)`\n display: inline-block;\n outline: 0;\n outline: none;\n padding: 0 1px;\n line-height: 130%;\n`\nconst AddedBox = styled.span`\n background-color: rgb(230,230,230);\n padding: 5px 2rem 5px 0.75rem;\n border-radius: 12px;\n font-size: 13px;\n position: relative;\n margin-left: -3px;\n margin-right: 9px;\n white-space: nowrap;\n cursor: default;\n line-height: normal;\n max-width: 90%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n ${isSafari ? `\n vertical-align: 2px;\n `:`\n vertical-align: -7px;\n `}\n`\nconst RemoveIcon = styled(Icon)`\n width: 20px;\n height: 20px;\n border-radius: 50%;\n display: inline-block;\n position: absolute;\n top: 50%;\n line-height: 20px;\n transform: translateY(-50%);\n right: 2px;\n font-size: 14px;\n text-align: center;\n cursor: pointer;\n color: ${getColor('gray120')};\n :hover {\n background-color: ${getColor('gray210')};\n color: ${props => darken(0.05, getColor('alert')(props))};\n }\n`\n\nconst AutoCompleteMenu = styled(ContextMenu)`\n box-shadow: 0 2px 3px 1px rgba(0,0,0,0.2),0 0px 0px 1px rgba(0,0,0,0.05);\n max-height: 22rem;\n overflow: auto;\n ${ContextMenu.ListItem} {\n > * {\n padding: 11px;\n }\n }\n`\n\nconst AutoCompleteError = styled(Errors)`\n ${Errors.Item} {\n background: transparent;\n border: none;\n color: ${getColor('alert')};\n padding: 0;\n margin-top: 0.5rem;\n font-weight: 600;\n ${Errors.CloseIcon} {\n display: none;\n }\n }\n`\n\nconst DropdownIconContainer = styled(Icon)`\n position: absolute;\n right: 0;\n bottom: 0;\n width: 3rem;\n height: 3rem;\n bottom: -1px;\n ${media.mobile`\n height: 42px;\n `}\n ${Icon} {\n position: absolute;\n width: 2rem;\n height: 2rem;\n line-height: 2rem;\n top: 50%;\n left: 50%;\n transform: translate(-50%,-50%);\n background: rgba(0,0,0,0.1);\n border-radius: 50%;\n text-align: center;\n cursor: pointer;\n color: ${getColor('gray90')};\n :hover, :active {\n background: rgba(0,0,0,0.15);\n }\n }\n`\n\nconst focusBeforeLast = (e) => {\n if (e.target && e.target !== e.currentTarget) return\n const el = [].slice.call(e.currentTarget.querySelectorAll('div[contenteditable]')).slice(-1)[0]\n if (!el) return\n el.focus()\n if (!el.firstChild) {\n const node = document.createTextNode('')\n el.appendChild(node)\n }\n setSelectionRange(el.firstChild, el.textContent.length + 1)\n}\n\nconst setSelectionRange = (input, selectionStart, selectionEnd = 0) => {\n let range = document.createRange()\n let sel = window.getSelection()\n range.setStart(input, Math.max(selectionStart - 1, 0))\n sel.removeAllRanges()\n sel.addRange(range)\n}\n\nexport const AutoComplete =\n React.forwardRef(({\n path,\n AutoCompleteLi = Li,\n CompletedBox = ({label, remove, value}) => <AddedBox title={label}>\n {label}\n <RemoveIcon icon=\"x\" onMouseUp={constrainEvent(remove)}/>\n </AddedBox>,\n EditableInput = (props) => <AutoCompleteTextboxDiv {...props} />,\n getLabel = (v) => v,\n minQueryLength = 3,\n ignoreCase = true,\n autoSelect,\n autoSelectEquals,\n fetchLimit = 6,\n deleteOnBackspace = true,\n fetchSuggestions: rawFetchSuggestions,\n validation = (value) => ({success: value.trim()}),\n transform,\n withDropdown,\n autoFocus,\n clickOpensWhenEmpty,\n tabIndex=1,\n confirmIfNewKeys = [],\n confirmKeys = ['Enter', ','],\n confirmIfValueKeys = ['Tab'],\n placeholder,\n className,\n getListItem = getLabel,\n onAddValue,\n getUniqueKey,\n translatable = true,\n withoutField, fieldClassName, bellowDescText, mandatory, descText, helpText, label,\n value,setValue,raw\n },outerRef) => {\n const autoCompleteBox = useToggle()\n const hoverIndex = useToggle()\n const isLoading = useToggle()\n const cancelEditable = useRef()\n\n const [formValue, _setFormValue,{hasErrors}] = useInput({path,transform, value, setValue}, raw)\n const formValueRef = useRef(formValue)\n formValueRef.current = formValue\n const [localFormValue,setLocalFormValue] = useState(_.last(formValue) === \"\" ? formValue : formValue.concat(\"\"))\n const setFormValue = (updater) => {\n _setFormValue(updater)\n setLocalFormValue(updater)\n formValueRef.current = typeof updater === 'function' ? updater(formValueRef.current) : updater\n }\n const lastIsEditable = _.isEqual(localFormValue,formValue)\n\n const [ErrorProvider, errorUtils] = useProvideErrors()\n const hooksRef = useEnsureRef(outerRef)\n const ref = useRef()\n const queries = useRefState([])\n\n const suggestionsFetchCache = useRefState({})\n const suggestionsLabelMapCache = useRefState({})\n const lastSuggestionQuery = useRefState('')\n\n const [autoCompleteList, setAutoCompleteList] = useState([])\n\n const getValue = () => formValueRef.current || []\n\n const shouldFocusInput = useToggle()\n const recentlyAdded = useRefState(false)\n\n useEffect(() => {\n if (autoFocus) {\n focusInput()\n }\n },[])\n\n const focusInput = () => shouldFocusInput.openWith(i => i+1)\n useEffect(() => {\n if (shouldFocusInput.isOpen)\n focusBeforeLast({currentTarget: ref.current,target:ref.current})\n },[shouldFocusInput.isOpen])\n\n const editableIsEmpty = () => !lastIsEditable || (lastIsEditable && !formValue[formValue.length - 1])\n\n const ignoreCaseIfNeeded = (s) => ignoreCase ? (s || '').toLowerCase() : s\n\n const refreshSuggestions = (value = '', justFetch, dropdownFetch) => {\n if ((value.length >= minQueryLength || dropdownFetch) && rawFetchSuggestions) {\n queries.set([value])\n const removeEditable = (list) => lastIsEditable ? list.slice(0, -1) : list\n return isLoading.wait(Promise.resolve(fetchSuggestions(ignoreCaseIfNeeded(value))).then(list => {\n const noRepeatedList = list.filter(v => !removeEditable(getValue()).find(_ => getLabel(v) === getLabel(_)))\n if (justFetch) {\n return noRepeatedList\n }\n const index = queries.get().indexOf(value)\n if (index >= 0) {\n queries.set(q => q.slice(index + 1))\n if (!autoSelect && !(autoSelectEquals && noRepeatedList.slice(0,1).find(v => ignoreCaseIfNeeded(getLabel(v)) === ignoreCaseIfNeeded(value)))) {\n hoverIndex.openWith(-1)\n } else {\n hoverIndex.openWith(0)\n }\n autoCompleteBox.open()\n setAutoCompleteList(noRepeatedList)\n }\n }))\n } else {\n hoverIndex.openWith(-1)\n setAutoCompleteList([])\n return Promise.resolve([])\n }\n }\n\n const fetchSuggestions = (s) => {\n const prevQuery = lastSuggestionQuery.get()\n lastSuggestionQuery.set(s)\n if (suggestionsFetchCache.get()[s]) {\n return suggestionsFetchCache.get()[s]\n } else {\n const lastFetch = suggestionsFetchCache.get()[ignoreCaseIfNeeded(prevQuery)]\n if (s.indexOf(ignoreCaseIfNeeded(prevQuery)) >= 0 && lastFetch && lastFetch.length < fetchLimit) {\n return suggestionsFetchCache.get()[s] = lastFetch.map(getLabel).filter(_ => ignoreCaseIfNeeded(_).indexOf(ignoreCaseIfNeeded(s)) >= 0).map(_ => suggestionsLabelMapCache.get()()[ignoreCaseIfNeeded(_)])\n } else {\n const fetch = Promise.resolve(rawFetchSuggestions(s))\n fetch.then(list => {\n suggestionsFetchCache[ignoreCaseIfNeeded(s)] = list\n list.forEach(suggestion =>\n suggestionsLabelMapCache.get()[ignoreCaseIfNeeded(getLabel(suggestion))] = suggestionsLabelMapCache.get()[ignoreCaseIfNeeded(getLabel(suggestion))] || suggestion\n )\n })\n return fetch\n }\n }\n }\n useEffect(() => {\n if (!lastIsEditable) {\n if (recentlyAdded.get() !== cancelEditable.current) {\n setFormValue(_.without([cancelEditable.current], formValue).concat(\"\"))\n } else {\n setLocalFormValue(_.last(formValue) === \"\" ? formValue : formValue.concat(\"\"))\n }\n cancelEditable.current = null\n }\n }, [lastIsEditable]);\n\n useEffect(() => {\n const newValue = (formValue || [])\n refreshSuggestions(lastIsEditable ? getValue().slice(-1)[0] : '')\n if (recentlyAdded.get()) {\n recentlyAdded.set(false)\n callIfFunction(onAddValue,formValue,setFormValue)\n }\n }, [formValue])\n\n\n const confirmIfNew = (index, newValue) => {\n refreshSuggestions(newValue, true).then(list => {\n if (!list.length) {\n confirm(index, newValue)\n } else {\n onChange(index, newValue)\n }\n })\n }\n\n const confirm = (index, newValue) => {\n if (autoCompleteList.length && hoverIndex.isOpen >= 0) {\n addValue(autoCompleteList[hoverIndex.isOpen])\n } else {\n confirmValue(index, newValue)\n }\n }\n\n const confirmValue = (index, newValue, fromBlur) => {\n if (!newValue) { return }\n const suggestedValue = suggestionsLabelMapCache[ignoreCaseIfNeeded(newValue || '').trim()]\n if (suggestedValue) {\n addValue(suggestedValue, fromBlur)\n return\n }\n const {success, errors} = validation(newValue)\n if (errors) {\n errorUtils.setErrors({errors})\n } else {\n addValue(success, fromBlur)\n }\n }\n\n const onChange = (index, value) => {\n errorUtils.clearErrors()\n setFormValue(_s.set([index], value))\n }\n\n\n const addValue = (value, fromBlur) => {\n const index = Math.max(lastIsEditable ? getValue().length - 1 : getValue().length,0)\n recentlyAdded.set(formValue?.[index] || \"\")\n setFormValue(_.flow(_.set([index], value),_.concat(_,\"\")))\n if (!fromBlur) {\n focusInput()\n }\n }\n\n const remove = (index) => {\n setFormValue(_.flow(_s.unset(index),_.filter(_=>_!==undefined)))\n focusInput()\n }\n\n const onBlur = (e) => {\n autoCompleteBox.close()\n const v = getValue().slice(-1)[0]\n if (lastIsEditable) {\n const {errors} = validation(v)\n const firstIsEqual = autoCompleteList.slice(0,1).find((item) => ignoreCaseIfNeeded(getLabel(item)) === ignoreCaseIfNeeded(v))\n if (v && autoSelect && (autoCompleteList.length === 1 || firstIsEqual) && errors) {\n addValue(autoCompleteList[0], true)\n } else if (autoSelectEquals && firstIsEqual) {\n addValue(autoCompleteList[0], true)\n } else {\n confirmValue(getValue().length - 1, v, true)\n }\n } else if (autoCompleteList.length) {\n setAutoCompleteList([])\n }\n }\n\n React.useImperativeHandle(hooksRef, () => ({addValue,confirm,remove}), [formValue])\n\n const validValue = formValue || ['']\n const uniqueKeyLabel = {}\n const _getUniqueKey = (value) => {\n if (getUniqueKey) {\n return getUniqueKey(value)\n }\n const label = getLabel(value)\n const uid = uniqueKeyLabel[label] = (uniqueKeyLabel[label] || 0) + 1\n return label + uid\n }\n\n const tryOpenSuggestions = (e) => {\n if (autoCompleteBox.get()) {\n stopPropagation(onBlur)(e)\n } else {\n errorUtils.clearErrors()\n refreshSuggestions(lastIsEditable ? getValue().slice(-1)[0] : '',false,true)\n focusInput()\n }\n }\n const input = <>\n <AutoCompleteInput\n onKeyDown={(e) => e.key === ' ' && e.stopPropagation()}\n className={className}\n ref={ref}\n onFocus={() => {\n if (autoCompleteList.length) autoCompleteBox.open()\n else if (withDropdown && editableIsEmpty()) refreshSuggestions(undefined, undefined, true)\n }}\n hasErrors={errorUtils.errors.length>0 || hasErrors}\n onBlur={onBlur}\n onClick={(e) => { focusBeforeLast(e); if (editableIsEmpty() && !isLoading.isOpen) {refreshSuggestions(undefined,undefined,true)}}}\n focused={autoCompleteBox.isOpen}\n withDropdown={withDropdown}\n >\n <span>{'\\u200b'}</span>\n {validValue.map((v, i) =>\n <ValueItem\n value={v}\n index={i}\n cancelEditable={(v) => {cancelEditable.current = v }}\n isEditable={lastIsEditable && validValue.length===i+1}\n confirmKeys={confirmKeys}\n confirmIfValueKeys={confirmIfValueKeys}\n deleteOnBackspace={deleteOnBackspace}\n EditableInput={EditableInput}\n key={lastIsEditable && validValue.length===i+1 ? '$$editable$$' : _getUniqueKey(v)}\n onChange={onChange}\n remove={remove}\n confirm={confirm}\n getLabel={getLabel}\n tabIndex={tabIndex}\n confirmIfNew={confirmIfNew}\n confirmIfNewKeys={confirmIfNewKeys}\n CompletedBox={CompletedBox}\n />\n )}\n <span>{'\\u200b'}</span>\n {(!formValue || !formValue.join('')) && placeholder &&\n <AutoCompletePlaceholder onClick={(e) => ref.current.click()}>{placeholder}</AutoCompletePlaceholder>}\n {\n withDropdown && !isLoading.isOpen &&\n <DropdownIconContainer onClick={tryOpenSuggestions}>\n <Icon icon=\"arrow-down\"/>\n </DropdownIconContainer>\n }\n </AutoCompleteInput>\n {\n autoCompleteBox.isOpen !== false && !errorUtils.errors.length && autoCompleteList.length > 0 &&\n <AutoCompleteMenu\n hoverIndex={hoverIndex.isOpen}\n autoHover={autoSelect}\n onClick={constrainEvent()}\n onHover={hoverIndex.openWith}\n my=\"top left\"\n at=\"bottom left\"\n fill\n >\n {autoCompleteList.map(value =>\n <AutoCompleteLi\n className={ !translatable ? 'notranslate' : null }\n key={_getUniqueKey(value)}\n label={getListItem(value)}\n onMouseDown={e => e.preventDefault()}\n onClick={() => addValue(value)}\n />\n )}\n </AutoCompleteMenu>\n }\n <ErrorProvider value={errorUtils}>\n <AutoCompleteError/>\n </ErrorProvider>\n </>\n return withoutField\n ? input\n : <Field bellowDescText={bellowDescText} className={fieldClassName} value={formValue} mandatory={mandatory}\n descText={descText} helpText={helpText} label={label} labelClick={focusInput}>\n {isLoading.isOpen && <InputLoading absolute size={24}/>}\n {input}\n </Field>\n }\n)\n\nAutoComplete.AddedBox = AddedBox\nAutoComplete.RemoveIcon = RemoveIcon\nAutoComplete.AutoCompleteTextboxDiv = AutoCompleteTextboxDiv\n\nconst cleanText = text => {\n const clean = text.replace('\\u200b', '').replace(/\\n/g, ' ').replace(/\\s+/g, ' ')\n return clean.trim() ? clean : ''\n}\n\nconst ValueItem = ({CompletedBox,isEditable,getLabel,cancelEditable,value,remove,index,...props}) => {\n const isEditing = useToggle(isEditable)\n const valueRef = useRef(value)\n valueRef.current = value\n useEffect(() => () => {\n if (isEditing.isOpen) {\n cancelEditable(valueRef.current)\n }\n },[])\n return isEditing.isOpen\n ? <AutoCompleteTextbox\n {...props}\n value={value}\n index={index}\n remove={remove}\n />\n : <CompletedBox\n label={getLabel(value)}\n value={value}\n remove={() => remove(index)}\n />\n}\n\nexport class AutoCompleteTextbox extends React.Component {\n\n state = {value:this.props.value}\n\n deletePrev = () => this.props.index > 0 && this.props.remove(this.props.index - 1)\n\n onKeyDown = (e) => {\n const range = window.getSelection().getRangeAt(0)\n if (this.props.confirmIfNewKeys.indexOf(e.key) >= 0) {\n e.preventDefault()\n const text = range.startContainer.textContent\n this.props.confirmIfNew(\n this.props.index,\n cleanText((text.slice(0, range.startOffset) + '\\uFFFD' + text.slice(range.startOffset)).replace('\\uFFFD', e.key))\n )\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.stopPropagation()\n } else if (this.props.confirmKeys.indexOf(e.key) >= 0 || this.props.confirmIfValueKeys.indexOf(e.key) >= 0) {\n if (this.props.confirmKeys.indexOf(e.key) >= 0) {\n e.preventDefault()\n }\n if (this.props.value) {\n e.preventDefault()\n e.stopPropagation()\n this.props.confirm(this.props.index, this.props.value)\n }\n } else if (e.key === 'Backspace' && this.props.deleteOnBackspace) {\n if (e.target.textContent !== '\\u200b' || !range.collapsed) {\n if (range.startContainer.previousSibling) {\n if (range.startContainer.previousSibling.textContent.length) {\n return\n }\n } else if (range.startOffset > 0) {\n return\n }\n }\n e.preventDefault()\n this.deletePrev()\n }\n }\n\n onChange = (evt) => {\n this.props.onChange(this.props.index, cleanText(evt.currentTarget.isContentEditable ? evt.currentTarget.innerText : evt.target.value))\n }\n\n shouldComponentUpdate(nextProps) {\n const event = new CustomEvent('portalReposition')\n setTimeout(() => window.dispatchEvent(event), 1)\n if (this.el.innerHTML === '<br>' || !this.el.innerHTML) {\n this.props.onChange(this.props.index, '')\n }\n return nextProps.value !== cleanText(this.el.innerText) || !!Object.keys(nextProps).find((k) => nextProps[k] !== this.props[k])\n }\n\n componentDidUpdate(oldProps) {\n if (this.props.value.slice(-1) === ' ' && /\\S/.test(this.el.textContent.slice(-1))) { // does not have blank space as last\n this.el.innerHTML = this.props.value.replace(/\\s/, ' ')\n }\n if (this.props.value !== oldProps.value && document.activeElement === this.el) {\n setSelectionRange(this.el.firstChild || this.el, this.el.textContent.length + 1)\n }\n }\n\n onPaste = (ev) => {\n ev.preventDefault()\n const text = ev.clipboardData.getData('text')\n document.execCommand('insertText', false, text)\n }\n\n render() {\n const {value, confirmKeys, index, EditableInput, confirmIfNewKeys, confirmIfNew, confirm, remove, ...rest} = this.props\n const valueOrBlank = /*android fix, not needed? value || */ _.isString(value) && value ? value : '\\u200b'\n\n const props = {\n innerRef: ref => this.el = ref,\n onKeyDown: this.onKeyDown,\n onPaste: this.onPaste,\n value: value,\n index: index,\n html: valueOrBlank.replace(/\\s$/, ' '),\n ...rest,\n onChange: this.onChange,\n }\n return typeof EditableInput === 'function' ? EditableInput(props) : <EditableInput {...props} />\n }\n}\n"],"names":["ua","navigator","userAgent","toLowerCase","isSafari","indexOf","InputLoading","styled","Loading","withConfig","displayName","componentId","AutoCompleteInput","div","getColor","props","focused","concat","hasErrors","css","media","mobile","_templateObject","_taggedTemplateLiteral","withDropdown","_templateObject2","customTheme","AutoCompletePlaceholder","span","_templateObject3","AutoCompleteTextboxDiv","ContentEditable","AddedBox","RemoveIcon","Icon","darken","AutoCompleteMenu","ContextMenu","ListItem","AutoCompleteError","Errors","Item","CloseIcon","DropdownIconContainer","_templateObject4","focusBeforeLast","e","target","currentTarget","el","slice","call","querySelectorAll","focus","firstChild","node","document","createTextNode","appendChild","setSelectionRange","textContent","length","input","selectionStart","range","createRange","sel","window","getSelection","setStart","Math","max","removeAllRanges","addRange","AutoComplete","React","forwardRef","_ref","outerRef","path","AutoCompleteLi","Li","CompletedBox","_ref2","label","remove","value","createElement","title","icon","onMouseUp","constrainEvent","EditableInput","getLabel","v","minQueryLength","ignoreCase","autoSelect","autoSelectEquals","fetchLimit","deleteOnBackspace","fetchSuggestions","rawFetchSuggestions","validation","success","trim","transform","autoFocus","clickOpensWhenEmpty","tabIndex","confirmIfNewKeys","confirmKeys","confirmIfValueKeys","placeholder","className","getListItem","onAddValue","getUniqueKey","translatable","withoutField","fieldClassName","bellowDescText","mandatory","descText","helpText","setValue","raw","autoCompleteBox","useToggle","hoverIndex","isLoading","cancelEditable","useRef","formValue","_setFormValue","useInput","formValueRef","current","localFormValue","setLocalFormValue","useState","_last","setFormValue","updater","lastIsEditable","_isEqual","ErrorProvider","errorUtils","useProvideErrors","hooksRef","useEnsureRef","ref","queries","useRefState","suggestionsFetchCache","suggestionsLabelMapCache","lastSuggestionQuery","autoCompleteList","setAutoCompleteList","getValue","shouldFocusInput","recentlyAdded","useEffect","focusInput","openWith","i","isOpen","editableIsEmpty","ignoreCaseIfNeeded","s","refreshSuggestions","arguments","undefined","justFetch","dropdownFetch","set","removeEditable","list","wait","Promise","resolve","then","noRepeatedList","filter","find","_","index","get","q","open","prevQuery","lastFetch","map","fetch","forEach","suggestion","_without","callIfFunction","confirmIfNew","newValue","confirm","onChange","addValue","confirmValue","fromBlur","suggestedValue","errors","setErrors","clearErrors","_s","_flow","_set","_concat","unset","_filter","onBlur","close","firstIsEqual","item","useImperativeHandle","validValue","uniqueKeyLabel","_getUniqueKey","uid","tryOpenSuggestions","stopPropagation","Fragment","onKeyDown","key","onFocus","onClick","ValueItem","isEditable","join","click","autoHover","onHover","my","at","fill","onMouseDown","preventDefault","Field","labelClick","absolute","size","cleanText","text","clean","replace","_ref3","_objectWithoutProperties","_excluded","isEditing","valueRef","AutoCompleteTextbox","_extends","Component","constructor","state","deletePrev","getRangeAt","startContainer","startOffset","collapsed","previousSibling","evt","isContentEditable","innerText","onPaste","ev","clipboardData","getData","execCommand","shouldComponentUpdate","nextProps","event","CustomEvent","setTimeout","dispatchEvent","innerHTML","Object","keys","k","componentDidUpdate","oldProps","test","activeElement","render","_this$props","rest","_excluded2","valueOrBlank","_isString","_objectSpread","innerRef","html"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AutoComplete.mjs","sources":["../src/AutoComplete.jsx"],"sourcesContent":["import React, {useEffect, useRef, useState} from 'react'\nimport ContentEditableModule from 'react-contenteditable'\nimport {useRefState, useToggle, useEnsureRef} from '@startlibs/core'\nimport {ContextMenu, Li, Loading, Icon} from '@startlibs/components'\nimport {Errors, useProvideErrors} from './Errors'\nimport {Field} from './Field'\nimport {useInput} from './enhanceInput'\nimport _ from 'lodash/fp'\nimport {callIfFunction, stopPropagation, constrainEvent, getColor, media, customTheme, _s} from '@startlibs/utils'\nimport styled, {css} from 'styled-components'\nimport {darken} from 'polished'\n\n// Node/esbuild interop em .mjs devolve module.exports; Rollup devolve o default. Cobre os dois.\nconst ContentEditable = ContentEditableModule.default || ContentEditableModule\n\nconst ua = navigator.userAgent.toLowerCase();\nconst isSafari = ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0\n\nconst InputLoading = styled(Loading)`\n bottom: 8px;\n right: 0.6rem;\n left: auto;\n top: 50%;\n transform: translate(-50%);\n`\nconst AutoCompleteInput = styled.div`\n width: 100%;\n font-size: 14px;\n border: 1px solid ${getColor('gray210')};\n border-radius: 8px;\n color: ${getColor('gray60')};\n cursor: text;\n background: white;\n position: relative;\n outline: 0;\n outline: none;\n min-height: 3rem;\n line-height: 28px;\n padding: 0.25rem 0.7rem;\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n ${props => props.focused && `\n border-color: ${getColor('gray180')};\n box-shadow: 0px 0px 0px 2px rgba(0,0,0,0.075);\n `}\n ${props => props.hasErrors && css`\n border-color: ${getColor('alert')} !important;\n `}\n ${media.mobile`\n padding: 0.25rem 1rem;\n min-height: 42px;\n `}\n ${props => props.withDropdown && css`\n padding-right: 3rem;\n ${media.mobile`\n padding-right: 4rem;\n `}\n `}\n ${customTheme('TextInput')}\n`\n\nconst AutoCompletePlaceholder = styled.span`\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n pointer-events: none;\n color: rgba(0,0,0,0.3);\n left: 0.7rem;\n right: 0.7rem;\n ${media.mobile`\n left: 1rem;\n right: 1rem;\n `}\n`\n\nconst AutoCompleteTextboxDiv = styled(ContentEditable)`\n display: inline-block;\n outline: 0;\n outline: none;\n padding: 0 1px;\n line-height: 130%;\n`\nconst AddedBox = styled.span`\n background-color: rgb(230,230,230);\n padding: 5px 2rem 5px 0.75rem;\n border-radius: 12px;\n font-size: 13px;\n position: relative;\n margin-left: -3px;\n margin-right: 9px;\n white-space: nowrap;\n cursor: default;\n line-height: normal;\n max-width: 90%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n ${isSafari ? `\n vertical-align: 2px;\n `:`\n vertical-align: -7px;\n `}\n`\nconst RemoveIcon = styled(Icon)`\n width: 20px;\n height: 20px;\n border-radius: 50%;\n display: inline-block;\n position: absolute;\n top: 50%;\n line-height: 20px;\n transform: translateY(-50%);\n right: 2px;\n font-size: 14px;\n text-align: center;\n cursor: pointer;\n color: ${getColor('gray120')};\n :hover {\n background-color: ${getColor('gray210')};\n color: ${props => darken(0.05, getColor('alert')(props))};\n }\n`\n\nconst AutoCompleteMenu = styled(ContextMenu)`\n box-shadow: 0 2px 3px 1px rgba(0,0,0,0.2),0 0px 0px 1px rgba(0,0,0,0.05);\n max-height: 22rem;\n overflow: auto;\n ${ContextMenu.ListItem} {\n > * {\n padding: 11px;\n }\n }\n`\n\nconst AutoCompleteError = styled(Errors)`\n ${Errors.Item} {\n background: transparent;\n border: none;\n color: ${getColor('alert')};\n padding: 0;\n margin-top: 0.5rem;\n font-weight: 600;\n ${Errors.CloseIcon} {\n display: none;\n }\n }\n`\n\nconst DropdownIconContainer = styled(Icon)`\n position: absolute;\n right: 0;\n bottom: 0;\n width: 3rem;\n height: 3rem;\n bottom: -1px;\n ${media.mobile`\n height: 42px;\n `}\n ${Icon} {\n position: absolute;\n width: 2rem;\n height: 2rem;\n line-height: 2rem;\n top: 50%;\n left: 50%;\n transform: translate(-50%,-50%);\n background: rgba(0,0,0,0.1);\n border-radius: 50%;\n text-align: center;\n cursor: pointer;\n color: ${getColor('gray90')};\n :hover, :active {\n background: rgba(0,0,0,0.15);\n }\n }\n`\n\nconst focusBeforeLast = (e) => {\n if (e.target && e.target !== e.currentTarget) return\n const el = [].slice.call(e.currentTarget.querySelectorAll('div[contenteditable]')).slice(-1)[0]\n if (!el) return\n el.focus()\n if (!el.firstChild) {\n const node = document.createTextNode('')\n el.appendChild(node)\n }\n setSelectionRange(el.firstChild, el.textContent.length + 1)\n}\n\nconst setSelectionRange = (input, selectionStart, selectionEnd = 0) => {\n let range = document.createRange()\n let sel = window.getSelection()\n range.setStart(input, Math.max(selectionStart - 1, 0))\n sel.removeAllRanges()\n sel.addRange(range)\n}\n\nexport const AutoComplete =\n React.forwardRef(({\n path,\n AutoCompleteLi = Li,\n CompletedBox = ({label, remove, value}) => <AddedBox title={label}>\n {label}\n <RemoveIcon icon=\"x\" onMouseUp={constrainEvent(remove)}/>\n </AddedBox>,\n EditableInput = (props) => <AutoCompleteTextboxDiv {...props} />,\n getLabel = (v) => v,\n minQueryLength = 3,\n ignoreCase = true,\n autoSelect,\n autoSelectEquals,\n fetchLimit = 6,\n deleteOnBackspace = true,\n fetchSuggestions: rawFetchSuggestions,\n validation = (value) => ({success: value.trim()}),\n transform,\n withDropdown,\n autoFocus,\n clickOpensWhenEmpty,\n tabIndex=1,\n confirmIfNewKeys = [],\n confirmKeys = ['Enter', ','],\n confirmIfValueKeys = ['Tab'],\n placeholder,\n className,\n getListItem = getLabel,\n onAddValue,\n getUniqueKey,\n translatable = true,\n withoutField, fieldClassName, bellowDescText, mandatory, descText, helpText, label,\n value,setValue,raw\n },outerRef) => {\n const autoCompleteBox = useToggle()\n const hoverIndex = useToggle()\n const isLoading = useToggle()\n const cancelEditable = useRef()\n\n const [formValue, _setFormValue,{hasErrors}] = useInput({path,transform, value, setValue}, raw)\n const formValueRef = useRef(formValue)\n formValueRef.current = formValue\n const [localFormValue,setLocalFormValue] = useState(_.last(formValue) === \"\" ? formValue : formValue.concat(\"\"))\n const setFormValue = (updater) => {\n _setFormValue(updater)\n setLocalFormValue(updater)\n formValueRef.current = typeof updater === 'function' ? updater(formValueRef.current) : updater\n }\n const lastIsEditable = _.isEqual(localFormValue,formValue)\n\n const [ErrorProvider, errorUtils] = useProvideErrors()\n const hooksRef = useEnsureRef(outerRef)\n const ref = useRef()\n const queries = useRefState([])\n\n const suggestionsFetchCache = useRefState({})\n const suggestionsLabelMapCache = useRefState({})\n const lastSuggestionQuery = useRefState('')\n\n const [autoCompleteList, setAutoCompleteList] = useState([])\n\n const getValue = () => formValueRef.current || []\n\n const shouldFocusInput = useToggle()\n const recentlyAdded = useRefState(false)\n\n useEffect(() => {\n if (autoFocus) {\n focusInput()\n }\n },[])\n\n const focusInput = () => shouldFocusInput.openWith(i => i+1)\n useEffect(() => {\n if (shouldFocusInput.isOpen)\n focusBeforeLast({currentTarget: ref.current,target:ref.current})\n },[shouldFocusInput.isOpen])\n\n const editableIsEmpty = () => !lastIsEditable || (lastIsEditable && !formValue[formValue.length - 1])\n\n const ignoreCaseIfNeeded = (s) => ignoreCase ? (s || '').toLowerCase() : s\n\n const refreshSuggestions = (value = '', justFetch, dropdownFetch) => {\n if ((value.length >= minQueryLength || dropdownFetch) && rawFetchSuggestions) {\n queries.set([value])\n const removeEditable = (list) => lastIsEditable ? list.slice(0, -1) : list\n return isLoading.wait(Promise.resolve(fetchSuggestions(ignoreCaseIfNeeded(value))).then(list => {\n const noRepeatedList = list.filter(v => !removeEditable(getValue()).find(_ => getLabel(v) === getLabel(_)))\n if (justFetch) {\n return noRepeatedList\n }\n const index = queries.get().indexOf(value)\n if (index >= 0) {\n queries.set(q => q.slice(index + 1))\n if (!autoSelect && !(autoSelectEquals && noRepeatedList.slice(0,1).find(v => ignoreCaseIfNeeded(getLabel(v)) === ignoreCaseIfNeeded(value)))) {\n hoverIndex.openWith(-1)\n } else {\n hoverIndex.openWith(0)\n }\n autoCompleteBox.open()\n setAutoCompleteList(noRepeatedList)\n }\n }))\n } else {\n hoverIndex.openWith(-1)\n setAutoCompleteList([])\n return Promise.resolve([])\n }\n }\n\n const fetchSuggestions = (s) => {\n const prevQuery = lastSuggestionQuery.get()\n lastSuggestionQuery.set(s)\n if (suggestionsFetchCache.get()[s]) {\n return suggestionsFetchCache.get()[s]\n } else {\n const lastFetch = suggestionsFetchCache.get()[ignoreCaseIfNeeded(prevQuery)]\n if (s.indexOf(ignoreCaseIfNeeded(prevQuery)) >= 0 && lastFetch && lastFetch.length < fetchLimit) {\n return suggestionsFetchCache.get()[s] = lastFetch.map(getLabel).filter(_ => ignoreCaseIfNeeded(_).indexOf(ignoreCaseIfNeeded(s)) >= 0).map(_ => suggestionsLabelMapCache.get()()[ignoreCaseIfNeeded(_)])\n } else {\n const fetch = Promise.resolve(rawFetchSuggestions(s))\n fetch.then(list => {\n suggestionsFetchCache[ignoreCaseIfNeeded(s)] = list\n list.forEach(suggestion =>\n suggestionsLabelMapCache.get()[ignoreCaseIfNeeded(getLabel(suggestion))] = suggestionsLabelMapCache.get()[ignoreCaseIfNeeded(getLabel(suggestion))] || suggestion\n )\n })\n return fetch\n }\n }\n }\n useEffect(() => {\n if (!lastIsEditable) {\n if (recentlyAdded.get() !== cancelEditable.current) {\n setFormValue(_.without([cancelEditable.current], formValue).concat(\"\"))\n } else {\n setLocalFormValue(_.last(formValue) === \"\" ? formValue : formValue.concat(\"\"))\n }\n cancelEditable.current = null\n }\n }, [lastIsEditable]);\n\n useEffect(() => {\n const newValue = (formValue || [])\n refreshSuggestions(lastIsEditable ? getValue().slice(-1)[0] : '')\n if (recentlyAdded.get()) {\n recentlyAdded.set(false)\n callIfFunction(onAddValue,formValue,setFormValue)\n }\n }, [formValue])\n\n\n const confirmIfNew = (index, newValue) => {\n refreshSuggestions(newValue, true).then(list => {\n if (!list.length) {\n confirm(index, newValue)\n } else {\n onChange(index, newValue)\n }\n })\n }\n\n const confirm = (index, newValue) => {\n if (autoCompleteList.length && hoverIndex.isOpen >= 0) {\n addValue(autoCompleteList[hoverIndex.isOpen])\n } else {\n confirmValue(index, newValue)\n }\n }\n\n const confirmValue = (index, newValue, fromBlur) => {\n if (!newValue) { return }\n const suggestedValue = suggestionsLabelMapCache[ignoreCaseIfNeeded(newValue || '').trim()]\n if (suggestedValue) {\n addValue(suggestedValue, fromBlur)\n return\n }\n const {success, errors} = validation(newValue)\n if (errors) {\n errorUtils.setErrors({errors})\n } else {\n addValue(success, fromBlur)\n }\n }\n\n const onChange = (index, value) => {\n errorUtils.clearErrors()\n setFormValue(_s.set([index], value))\n }\n\n\n const addValue = (value, fromBlur) => {\n const index = Math.max(lastIsEditable ? getValue().length - 1 : getValue().length,0)\n recentlyAdded.set(formValue?.[index] || \"\")\n setFormValue(_.flow(_.set([index], value),_.concat(_,\"\")))\n if (!fromBlur) {\n focusInput()\n }\n }\n\n const remove = (index) => {\n setFormValue(_.flow(_s.unset(index),_.filter(_=>_!==undefined)))\n focusInput()\n }\n\n const onBlur = (e) => {\n autoCompleteBox.close()\n const v = getValue().slice(-1)[0]\n if (lastIsEditable) {\n const {errors} = validation(v)\n const firstIsEqual = autoCompleteList.slice(0,1).find((item) => ignoreCaseIfNeeded(getLabel(item)) === ignoreCaseIfNeeded(v))\n if (v && autoSelect && (autoCompleteList.length === 1 || firstIsEqual) && errors) {\n addValue(autoCompleteList[0], true)\n } else if (autoSelectEquals && firstIsEqual) {\n addValue(autoCompleteList[0], true)\n } else {\n confirmValue(getValue().length - 1, v, true)\n }\n } else if (autoCompleteList.length) {\n setAutoCompleteList([])\n }\n }\n\n React.useImperativeHandle(hooksRef, () => ({addValue,confirm,remove}), [formValue])\n\n const validValue = formValue || ['']\n const uniqueKeyLabel = {}\n const _getUniqueKey = (value) => {\n if (getUniqueKey) {\n return getUniqueKey(value)\n }\n const label = getLabel(value)\n const uid = uniqueKeyLabel[label] = (uniqueKeyLabel[label] || 0) + 1\n return label + uid\n }\n\n const tryOpenSuggestions = (e) => {\n if (autoCompleteBox.get()) {\n stopPropagation(onBlur)(e)\n } else {\n errorUtils.clearErrors()\n refreshSuggestions(lastIsEditable ? getValue().slice(-1)[0] : '',false,true)\n focusInput()\n }\n }\n const input = <>\n <AutoCompleteInput\n onKeyDown={(e) => e.key === ' ' && e.stopPropagation()}\n className={className}\n ref={ref}\n onFocus={() => {\n if (autoCompleteList.length) autoCompleteBox.open()\n else if (withDropdown && editableIsEmpty()) refreshSuggestions(undefined, undefined, true)\n }}\n hasErrors={errorUtils.errors.length>0 || hasErrors}\n onBlur={onBlur}\n onClick={(e) => { focusBeforeLast(e); if (editableIsEmpty() && !isLoading.isOpen) {refreshSuggestions(undefined,undefined,true)}}}\n focused={autoCompleteBox.isOpen}\n withDropdown={withDropdown}\n >\n <span>{'\\u200b'}</span>\n {validValue.map((v, i) =>\n <ValueItem\n value={v}\n index={i}\n cancelEditable={(v) => {cancelEditable.current = v }}\n isEditable={lastIsEditable && validValue.length===i+1}\n confirmKeys={confirmKeys}\n confirmIfValueKeys={confirmIfValueKeys}\n deleteOnBackspace={deleteOnBackspace}\n EditableInput={EditableInput}\n key={lastIsEditable && validValue.length===i+1 ? '$$editable$$' : _getUniqueKey(v)}\n onChange={onChange}\n remove={remove}\n confirm={confirm}\n getLabel={getLabel}\n tabIndex={tabIndex}\n confirmIfNew={confirmIfNew}\n confirmIfNewKeys={confirmIfNewKeys}\n CompletedBox={CompletedBox}\n />\n )}\n <span>{'\\u200b'}</span>\n {(!formValue || !formValue.join('')) && placeholder &&\n <AutoCompletePlaceholder onClick={(e) => ref.current.click()}>{placeholder}</AutoCompletePlaceholder>}\n {\n withDropdown && !isLoading.isOpen &&\n <DropdownIconContainer onClick={tryOpenSuggestions}>\n <Icon icon=\"arrow-down\"/>\n </DropdownIconContainer>\n }\n </AutoCompleteInput>\n {\n autoCompleteBox.isOpen !== false && !errorUtils.errors.length && autoCompleteList.length > 0 &&\n <AutoCompleteMenu\n hoverIndex={hoverIndex.isOpen}\n autoHover={autoSelect}\n onClick={constrainEvent()}\n onHover={hoverIndex.openWith}\n my=\"top left\"\n at=\"bottom left\"\n fill\n >\n {autoCompleteList.map(value =>\n <AutoCompleteLi\n className={ !translatable ? 'notranslate' : null }\n key={_getUniqueKey(value)}\n label={getListItem(value)}\n onMouseDown={e => e.preventDefault()}\n onClick={() => addValue(value)}\n />\n )}\n </AutoCompleteMenu>\n }\n <ErrorProvider value={errorUtils}>\n <AutoCompleteError/>\n </ErrorProvider>\n </>\n return withoutField\n ? input\n : <Field bellowDescText={bellowDescText} className={fieldClassName} value={formValue} mandatory={mandatory}\n descText={descText} helpText={helpText} label={label} labelClick={focusInput}>\n {isLoading.isOpen && <InputLoading absolute size={24}/>}\n {input}\n </Field>\n }\n)\n\nAutoComplete.AddedBox = AddedBox\nAutoComplete.RemoveIcon = RemoveIcon\nAutoComplete.AutoCompleteTextboxDiv = AutoCompleteTextboxDiv\n\nconst cleanText = text => {\n const clean = text.replace('\\u200b', '').replace(/\\n/g, ' ').replace(/\\s+/g, ' ')\n return clean.trim() ? clean : ''\n}\n\nconst ValueItem = ({CompletedBox,isEditable,getLabel,cancelEditable,value,remove,index,...props}) => {\n const isEditing = useToggle(isEditable)\n const valueRef = useRef(value)\n valueRef.current = value\n useEffect(() => () => {\n if (isEditing.isOpen) {\n cancelEditable(valueRef.current)\n }\n },[])\n return isEditing.isOpen\n ? <AutoCompleteTextbox\n {...props}\n value={value}\n index={index}\n remove={remove}\n />\n : <CompletedBox\n label={getLabel(value)}\n value={value}\n remove={() => remove(index)}\n />\n}\n\nexport class AutoCompleteTextbox extends React.Component {\n\n state = {value:this.props.value}\n\n deletePrev = () => this.props.index > 0 && this.props.remove(this.props.index - 1)\n\n onKeyDown = (e) => {\n const range = window.getSelection().getRangeAt(0)\n if (this.props.confirmIfNewKeys.indexOf(e.key) >= 0) {\n e.preventDefault()\n const text = range.startContainer.textContent\n this.props.confirmIfNew(\n this.props.index,\n cleanText((text.slice(0, range.startOffset) + '\\uFFFD' + text.slice(range.startOffset)).replace('\\uFFFD', e.key))\n )\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.stopPropagation()\n } else if (this.props.confirmKeys.indexOf(e.key) >= 0 || this.props.confirmIfValueKeys.indexOf(e.key) >= 0) {\n if (this.props.confirmKeys.indexOf(e.key) >= 0) {\n e.preventDefault()\n }\n if (this.props.value) {\n e.preventDefault()\n e.stopPropagation()\n this.props.confirm(this.props.index, this.props.value)\n }\n } else if (e.key === 'Backspace' && this.props.deleteOnBackspace) {\n if (e.target.textContent !== '\\u200b' || !range.collapsed) {\n if (range.startContainer.previousSibling) {\n if (range.startContainer.previousSibling.textContent.length) {\n return\n }\n } else if (range.startOffset > 0) {\n return\n }\n }\n e.preventDefault()\n this.deletePrev()\n }\n }\n\n onChange = (evt) => {\n this.props.onChange(this.props.index, cleanText(evt.currentTarget.isContentEditable ? evt.currentTarget.innerText : evt.target.value))\n }\n\n shouldComponentUpdate(nextProps) {\n const event = new CustomEvent('portalReposition')\n setTimeout(() => window.dispatchEvent(event), 1)\n if (this.el.innerHTML === '<br>' || !this.el.innerHTML) {\n this.props.onChange(this.props.index, '')\n }\n return nextProps.value !== cleanText(this.el.innerText) || !!Object.keys(nextProps).find((k) => nextProps[k] !== this.props[k])\n }\n\n componentDidUpdate(oldProps) {\n if (this.props.value.slice(-1) === ' ' && /\\S/.test(this.el.textContent.slice(-1))) { // does not have blank space as last\n this.el.innerHTML = this.props.value.replace(/\\s/, ' ')\n }\n if (this.props.value !== oldProps.value && document.activeElement === this.el) {\n setSelectionRange(this.el.firstChild || this.el, this.el.textContent.length + 1)\n }\n }\n\n onPaste = (ev) => {\n ev.preventDefault()\n const text = ev.clipboardData.getData('text')\n document.execCommand('insertText', false, text)\n }\n\n render() {\n const {value, confirmKeys, index, EditableInput, confirmIfNewKeys, confirmIfNew, confirm, remove, ...rest} = this.props\n const valueOrBlank = /*android fix, not needed? value || */ _.isString(value) && value ? value : '\\u200b'\n\n const props = {\n innerRef: ref => this.el = ref,\n onKeyDown: this.onKeyDown,\n onPaste: this.onPaste,\n value: value,\n index: index,\n html: valueOrBlank.replace(/\\s$/, ' '),\n ...rest,\n onChange: this.onChange,\n }\n return typeof EditableInput === 'function' ? EditableInput(props) : <EditableInput {...props} />\n }\n}\n"],"names":["ContentEditable","ContentEditableModule","default","ua","navigator","userAgent","toLowerCase","isSafari","indexOf","InputLoading","styled","Loading","withConfig","displayName","componentId","AutoCompleteInput","div","getColor","props","focused","concat","hasErrors","css","media","mobile","_templateObject","_taggedTemplateLiteral","withDropdown","_templateObject2","customTheme","AutoCompletePlaceholder","span","_templateObject3","AutoCompleteTextboxDiv","AddedBox","RemoveIcon","Icon","darken","AutoCompleteMenu","ContextMenu","ListItem","AutoCompleteError","Errors","Item","CloseIcon","DropdownIconContainer","_templateObject4","focusBeforeLast","e","target","currentTarget","el","slice","call","querySelectorAll","focus","firstChild","node","document","createTextNode","appendChild","setSelectionRange","textContent","length","input","selectionStart","range","createRange","sel","window","getSelection","setStart","Math","max","removeAllRanges","addRange","AutoComplete","React","forwardRef","_ref","outerRef","path","AutoCompleteLi","Li","CompletedBox","_ref2","label","remove","value","createElement","title","icon","onMouseUp","constrainEvent","EditableInput","getLabel","v","minQueryLength","ignoreCase","autoSelect","autoSelectEquals","fetchLimit","deleteOnBackspace","fetchSuggestions","rawFetchSuggestions","validation","success","trim","transform","autoFocus","clickOpensWhenEmpty","tabIndex","confirmIfNewKeys","confirmKeys","confirmIfValueKeys","placeholder","className","getListItem","onAddValue","getUniqueKey","translatable","withoutField","fieldClassName","bellowDescText","mandatory","descText","helpText","setValue","raw","autoCompleteBox","useToggle","hoverIndex","isLoading","cancelEditable","useRef","formValue","_setFormValue","useInput","formValueRef","current","localFormValue","setLocalFormValue","useState","_last","setFormValue","updater","lastIsEditable","_isEqual","ErrorProvider","errorUtils","useProvideErrors","hooksRef","useEnsureRef","ref","queries","useRefState","suggestionsFetchCache","suggestionsLabelMapCache","lastSuggestionQuery","autoCompleteList","setAutoCompleteList","getValue","shouldFocusInput","recentlyAdded","useEffect","focusInput","openWith","i","isOpen","editableIsEmpty","ignoreCaseIfNeeded","s","refreshSuggestions","arguments","undefined","justFetch","dropdownFetch","set","removeEditable","list","wait","Promise","resolve","then","noRepeatedList","filter","find","_","index","get","q","open","prevQuery","lastFetch","map","fetch","forEach","suggestion","_without","callIfFunction","confirmIfNew","newValue","confirm","onChange","addValue","confirmValue","fromBlur","suggestedValue","errors","setErrors","clearErrors","_s","_flow","_set","_concat","unset","_filter","onBlur","close","firstIsEqual","item","useImperativeHandle","validValue","uniqueKeyLabel","_getUniqueKey","uid","tryOpenSuggestions","stopPropagation","Fragment","onKeyDown","key","onFocus","onClick","ValueItem","isEditable","join","click","autoHover","onHover","my","at","fill","onMouseDown","preventDefault","Field","labelClick","absolute","size","cleanText","text","clean","replace","_ref3","_objectWithoutProperties","_excluded","isEditing","valueRef","AutoCompleteTextbox","_extends","Component","constructor","state","deletePrev","getRangeAt","startContainer","startOffset","collapsed","previousSibling","evt","isContentEditable","innerText","onPaste","ev","clipboardData","getData","execCommand","shouldComponentUpdate","nextProps","event","CustomEvent","setTimeout","dispatchEvent","innerHTML","Object","keys","k","componentDidUpdate","oldProps","test","activeElement","render","_this$props","rest","_excluded2","valueOrBlank","_isString","_objectSpread","innerRef","html"],"mappings":"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"}
|
package/lib/RichText.mjs
CHANGED
|
@@ -8,7 +8,7 @@ import _toPairs from 'lodash/fp/toPairs';
|
|
|
8
8
|
import _identity from 'lodash/fp/identity';
|
|
9
9
|
import React, { useRef, useEffect, useState, useContext } from 'react';
|
|
10
10
|
import styled, { css } from 'styled-components';
|
|
11
|
-
import
|
|
11
|
+
import ContentEditableModule from 'react-contenteditable';
|
|
12
12
|
import { darken } from 'polished';
|
|
13
13
|
import { getColor, stopPropagation, linkRegex } from '@startlibs/utils';
|
|
14
14
|
import { usePopupToggle, useEnsureRef, useRefState, useToggle, useLazyConstant, StartlibsContext } from '@startlibs/core';
|
|
@@ -21,6 +21,9 @@ import { Icon, Button } from '@startlibs/components';
|
|
|
21
21
|
|
|
22
22
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
23
23
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
24
|
+
|
|
25
|
+
// Node/esbuild interop em .mjs devolve module.exports; Rollup devolve o default. Cobre os dois.
|
|
26
|
+
const ContentEditable = ContentEditableModule.default || ContentEditableModule;
|
|
24
27
|
const InputIcon = /*#__PURE__*/styled(Icon).withConfig({
|
|
25
28
|
displayName: "RichText__InputIcon",
|
|
26
29
|
componentId: "sc-x8c1ig-0"
|
package/lib/RichText.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichText.mjs","sources":["../src/RichText.jsx"],"sourcesContent":["import React, {useContext, useEffect, useRef, useState} from 'react'\nimport styled, {css} from 'styled-components'\nimport ContentEditable from 'react-contenteditable'\nimport {darken} from 'polished'\nimport _ from 'lodash/fp'\nimport {getColor, linkRegex, stopPropagation} from '@startlibs/utils'\nimport {StartlibsContext, useEnsureRef, useLazyConstant, useToggle, usePopupToggle, useRefState} from '@startlibs/core'\nimport {Errors} from './Errors'\nimport {Field} from './Field'\nimport {WithForm} from './Form'\nimport {TextInput} from './TextInput'\nimport {useInput} from './enhanceInput'\nimport {Button, Icon} from '@startlibs/components'\n\nconst InputIcon = styled(Icon)`\n position: absolute;\n outline: none;\n bottom: 0;\n font-size: 21px;\n line-height: 3rem;\n right: 0;\n width: 2rem;\n pointer-events: none;\n color: ${getColor('gray150')};\n`\n\nconst FORMAT_TOOLS = {\n 'bold': ['b', 'strong'],\n 'italic': 'i',\n 'underline': 'u',\n 'strikethrough': 'strike',\n 'link': 'a',\n 'insertUnorderedList': ['ul', 'li'],\n 'insertOrderedList': ['ol', 'li'],\n 'outdent': '',\n 'indent': 'blockquote',\n 'fontSizeUp': 'font',\n 'fontSizeDown': 'font'\n}\n\nconst TAG_TO_STYLE_PROPERTY = {\n 'b': 'fontWeight',\n 'strong': 'fontWeight',\n 'u': 'textDecoration',\n 'strike': 'textDecoration',\n 'font': 'fontSize',\n 'i': 'fontStyle'\n}\n\nlet GET_LIMITS_FONT_SIZE_PX = () => {\n const s = document.createElement('span')\n s.style.fontSize = 'medium'\n document.body.appendChild(s)\n const fontSize = parseInt(getComputedStyle(s).fontSize)\n document.body.removeChild(s)\n const limits = [fontSize * 3 / 5, fontSize * 3]\n GET_LIMITS_FONT_SIZE_PX = () => limits\n return limits\n}\n\nconst wrapWith = (el,wrapper) => {\n el.parentNode.insertBefore(wrapper, el);\n wrapper.appendChild(el)\n}\n\nconst FIX_STYLE = {\n 'fontWeight': (v, el) => {\n const intFontWeight = parseInt(window.getComputedStyle(el).fontWeight)\n return intFontWeight <= 400 ? 400 : 600\n },\n 'fontSize': (v, el) => {\n const [min, max] = GET_LIMITS_FONT_SIZE_PX()\n const intFontSize = parseInt(window.getComputedStyle(el).fontSize)\n return Math.min(max, Math.max(min, intFontSize)) + 'px'\n },\n 'textDecoration': (v,el) => {\n const values = v.split(' ').filter(v => v === 'underline' || v === 'line-through')\n if (values.indexOf('underline')>=0) {\n wrapWith(el,document.createElement('u'))\n }\n if (values.indexOf('line-through')>=0) {\n wrapWith(el,document.createElement('strike'))\n }\n return ''\n }\n}\n\nexport const RichTextContainer = styled.div`\n position:relative;\n width: 100%;\n border: 1px solid ${getColor('gray210')};\n border-radius: 8px;\n background: white;\n ${props => props.hasErrors && `border-color: ${getColor(props)('alert')}`};\n ${props => props.showToolbar && `\n ${ToolsContainer} {\n transition: 0.5s;\n max-height: 7.5rem;\n transition: 0.6s;\n pointer-events: auto;\n }\n `};\n ${props => props.focus && `\n border-color: ${getColor('gray180')};\n box-shadow: 0px 0px 0px 2px rgba(0,0,0,0.1);\n `}\n ${props => props.locked && css`\n padding-right: 2.25rem;\n background: rgba(0,0,0,0.075);\n `}\n ${props => props.linkColor && css`\n a, a:visited, a:focus, a:active {\n color: ${props.linkColor};\n }\n a:hover {\n color: ${darken(0.05, props.linkColor)};\n }\n `}\n ul {\n list-style-type: disc;\n }\n ul, ol {\n padding-inline-start: 25px;\n margin-block-start: 0.5em;\n margin-block-end: 0.5em;\n }\n`\n\nexport const RichTextInput = styled.div`\n font-size: 14px;\n color: ${getColor('gray60')};\n background: white;\n border-radius: 7px;\n > div {\n overflow: auto;\n width: 100%;\n outline: none;\n min-height: ${props=>props.minHeight || 60}px;\n padding: 0.7rem;\n }\n b, strong {\n font-weight: 600;\n }\n a {\n text-decoration: underline;\n }\n > div[contenteditable=true]:empty:before {\n content: attr(placeholder);\n color: rgba(0,0,0,0.3);\n }\n ${props => props.disabled && `\n &[disabled] {\n background: rgba(0, 0, 0, 0.075) !important;\n opacity: 0.75 !important;\n }\n `}\n`\n\nconst ToolsContainer = styled.div`\n background: ${getColor('lightBluishGray')};\n padding: 0 0.125rem;\n border-top-left-radius: 7px;\n border-top-right-radius: 7px;\n transition: 0.225s;\n max-height: 0;\n pointer-events: none;\n overflow: hidden;\n display: flex;\n align-items: center;\n`\n\nconst ToolButton = styled(Button)`\n min-height: 2rem;\n min-width: 2rem;\n background: transparent;\n box-shadow: none;\n margin: 0.25rem 0.125rem;\n & ~ & {\n margin-left: 0.125rem;\n }\n .icon {\n font-size: 23px;\n color: ${getColor('gray90')};\n position: absolute;\n top: 50%;\n left: 50%;\n -webkit-transform: translate(-50%,-50%);\n transform: translate(-50%,-50%);\n }\n &:hover, &.activated:hover {\n background: rgba(0,0,0,0.11);\n }\n &.activated {\n background: rgba(0,0,0,0.09);\n }\n &:focus:after {\n content: none;\n }\n`\n\nconst ToolSeparator = styled.span`\n border-left: 1px solid rgba(0,0,0,0.1);\n margin-left: 0.75rem;\n margin-right: 0.5rem;\n height: 1.5rem;\n`\n\nconst JS_CLASS = \"EDITOR--JS\"\n\nconst getNextRegularCharIndex = (text, offset, direction) => {\n const regex = /[A-Za-z0-9ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏàáâãäåæçèéêëìíîïÐÑÒÓÔÕÖØÙÚÛÜÝÞßðñòóôõöøùúûüýþÿ]/g\n let cursor = offset\n while ((text[cursor + direction] || '').match(regex)) {\n cursor += direction\n }\n return cursor\n}\n\nconst addHttp = (s) => {\n s = s.replace(/^\\s/, '')\n if (s.indexOf('http://') === 0 || s.indexOf('https://') === 0) {\n return s\n } else {\n return 'http://' + s\n }\n}\n\nconst getRightMostElement = (node) => {\n if (node.childNodes.length) {\n return getRightMostElement(node.childNodes[node.childNodes.length - 1])\n } else {\n return node\n }\n}\n\nconst setSelectionRange = (input, selectionStart, selectionEnd = 0) => {\n if (!input) return\n let range = document.createRange()\n let sel = window.getSelection()\n range.setStart(input, selectionStart)\n if (selectionEnd) {\n range.setEnd(input, selectionEnd)\n } else {\n range.collapse(true)\n }\n sel.removeAllRanges()\n sel.addRange(range)\n}\n\nconst cleanEditor = (editor, acceptedTags) => {\n Array.prototype.slice.call(editor.querySelectorAll('.Apple-interchange-newline')).forEach(el => el.remove())\n Array.prototype.slice.call(editor.querySelectorAll('iframe')).forEach(el => el.remove())\n\n const acceptedStyles = acceptedTags.map(t => TAG_TO_STYLE_PROPERTY[t]).filter(_.identity)\n\n const newSpace = document.createTextNode('\\u00A0')\n if (window.getSelection().rangeCount) {\n const container = window.getSelection().getRangeAt(0).startContainer\n if (container.nodeType === 3) {\n container.parentNode.insertBefore(newSpace, container.nextSibling)\n } else {\n container.appendChild(newSpace)\n }\n if (newSpace.previousSibling && newSpace.previousSibling.textContent === '\\u00A0') {\n newSpace.previousSibling.remove()\n }\n setSelectionRange(newSpace, 0)\n }\n\n const clean = (children) => {\n Array.prototype.slice.call(children).forEach(el => {\n try {\n if (el.nodeType === 3)\n return\n if (!el.tagName) {\n el.remove()\n return\n }\n let tagName = el.tagName.toLowerCase()\n const style = getComputedStyle(el)\n const rect = el.getBoundingClientRect()\n const isHidden = style.display === 'none' || rect.width === 0 || rect.height === 0\n if (isHidden && (el.children && !el.children.length) && tagName !== 'br') {\n el.remove()\n } else if (acceptedTags.indexOf(tagName) >= 0) {\n clean(el.childNodes)\n el.removeAttribute('class')\n if (tagName === 'a') {\n el.setAttribute('target', '_blank')\n }\n if (el.getAttribute('style')) {\n const usedStyles = _.toPairs(_.pick(acceptedStyles, el.style)).filter(([k, v]) => v !== \"\")\n const fixedStyle = _.fromPairs(usedStyles.map(([k, v]) => [k, (FIX_STYLE[k] || _.identity)(v, el)]))\n el.removeAttribute('style')\n Object.assign(el.style, fixedStyle)\n }\n } else if (tagName === 'a') {\n clean(el.childNodes)\n if (el.textContent !== el.href || el.textContent.length < 5)\n el.outerHTML = el.innerHTML\n } else {\n clean(el.childNodes)\n if (el.hasChildNodes()) {\n const newTagName = style.display === 'inline' ? 'span' : 'div'\n const newEl = document.createElement(newTagName)\n Array.prototype.slice.call(el.childNodes).forEach(child => newEl.appendChild(child))\n el.parentNode.replaceChild(newEl, el)\n } else {\n el.remove()\n }\n }\n } catch (e) {\n if (el && el.remove)\n el.remove()\n }\n })\n }\n clean(editor.childNodes)\n}\n\nconst insertToken = (node, offset) => {\n const parent = node.parentNode\n const token = document.createElement(\"span\")\n if (node.nodeType === Node.TEXT_NODE) {\n const splitted = node.splitText(offset)\n parent.insertBefore(token, splitted)\n } else {\n parent.insertBefore(token, node)\n }\n return token\n}\n\n/*\n* pagely reformat\n .replace(/^[a-z]/, function (e) {\n return e.toUpperCase()\n })\n* */\n\nconst parseAndExecCommand = (c) => {\n if (c === \"strikethrough\" || c === \"underline\") {\n document.execCommand('styleWithCSS', false, false)\n } else {\n document.execCommand('styleWithCSS', false, true)\n }\n if (c.indexOf('fontSize') === 0) {\n const direction = c.indexOf('Up') > 0 ? 1 : -1\n const newValue = Math.min(7, Math.max(1, parseInt(document.queryCommandValue('fontSize') || 3) + direction))\n document.execCommand('fontSize', false, newValue)\n } else {\n const sanitizedCommand = (c.indexOf(\"List\") >= 0 && document.queryCommandState(c)) ? 'outdent' : c // FIX CHROME HANGS when list is called and already active\n\n document.execCommand(sanitizedCommand)\n }\n}\n\nexport const RichText = ({path, inputRef, label, autoHideToolbar, autoFocus, disabled, minHeight, placeholder, className, formatTools = ['bold', 'italic', 'underline', 'strikethrough', 'separator', 'link'], reformatText = _.identity, mandatory, descText, helpText, linkColor, tabIndex = 1, value, setValue,raw, locked}) => {\n\n const linkPopup = usePopupToggle()\n\n const input = useEnsureRef(inputRef)\n const activeLinkNode = useRef()\n const container = useRef()\n const linkJustCreated = useRefState()\n\n // auto-hide needs\n const startSelectionToken = useRefState()\n const endSelectionToken = useRefState()\n const commands = useRefState([])\n const containerFocused = useToggle()\n\n const needsNormalize = useRefState()\n const alreadyCancelled = useRefState()\n\n // const [formValue, setFormValue] = useInput({path})\n const [formValue, _setFormValue, {hasErrors}] = useInput({path,value,setValue},raw)\n\n // const tempValue = useConstant(formValue)\n const tempValue = useRef(formValue)\n const setFormValue = (v) => {\n tempValue.current = v\n _setFormValue(v)\n }\n\n useEffect(() => {\n if((value === formValue) && (formValue !== tempValue)){\n tempValue.current = formValue\n }\n },[path])\n\n const [activatedTools, setActivatedTools] = useState({})\n\n const validElements = useLazyConstant(() => ['br', 'div', 'p', 'span'].concat(_.flatten(formatTools.map(tool => FORMAT_TOOLS[tool] || []))))\n\n useEffect(() => {\n cleanEditor(input.current, validElements)\n }, [])\n\n const focus = () => input.current && input.current.focus()\n\n // Foco inicial opcional (ex.: abrir a dialog já no campo de descrição). Em\n // rAF pra rodar depois que a dialog termina de montar e não perder o foco.\n useEffect(() => {\n if (autoFocus) {\n requestAnimationFrame(focus)\n }\n }, [])\n\n useEffect(() => {\n if (needsNormalize.get()) {\n input.current.normalize()\n needsNormalize.set(false)\n }\n })\n\n const triggerScrollForPanel = (d) => {\n requestAnimationFrame((time) => {\n if (time > d + 250) return\n window.dispatchEvent(new Event('scroll'))\n triggerScrollForPanel(d)\n }\n )\n }\n\n const containerFocus = () => {\n containerFocused.openWith(2)\n triggerScrollForPanel(Date.now())\n }\n\n const containerBlur = (e) => {\n if (containerFocused.isOpen !== 1) {\n containerFocused.close()\n triggerScrollForPanel(Date.now())\n }\n }\n\n\n const onBlur = (e) => {\n const newValue = input.current.textContent.length === 0 ? '' : input.current.innerHTML\n // Só reescreve se o conteúdo mudou de fato: focar/desfocar sem editar não pode\n // marcar o form como alterado (senão dispara a confirmação de descarte à toa).\n // textContent vazio equivale a valor ausente/'' do form.\n if (newValue !== (formValue || '')) {\n setFormValue(newValue)\n }\n }\n\n const keydownHandler = (e) => {\n if (containerFocused.isOpen === 2){\n if (formatTools.indexOf('link') < 0) {\n return\n }\n if((e.key === \"k\" && e.ctrlKey) || (e.key === \"k\" && e.metaKey)){\n e.preventDefault();\n execCommand(null,'link')\n }\n }\n }\n\n useEffect(() => {\n document.addEventListener('keydown',keydownHandler);\n return () => document.removeEventListener('keydown',keydownHandler);\n }, [containerFocused.isOpen])\n\n const execCommand = (e, command) => {\n if (command === 'link') {\n let nodeEl\n if (!isSelectionInsideRichTextEditor()) {\n let anchor = document.createElement('a')\n anchor.innerHTML = '​'\n input.current.appendChild(anchor)\n nodeEl = anchor\n } else {\n const range = window.getSelection().getRangeAt(0)\n const selectedNode = range.startContainer\n if (range.collapsed) {\n const start = getNextRegularCharIndex(selectedNode.textContent, range.startOffset, -1)\n const end = getNextRegularCharIndex(selectedNode.textContent, range.startOffset - 1, 1)\n if (start < range.startOffset && end > range.startOffset - 1) {\n range.setStart(selectedNode, start)\n range.setEnd(selectedNode, end + 1)\n }\n }\n const selectedEl = selectedNode.nodeType === Node.TEXT_NODE ? selectedNode.parentNode : selectedNode\n const parent = selectedEl.closest('a,.'+JS_CLASS)\n if (parent && parent.matches('a')) {\n nodeEl = parent\n } else {\n let anchor = document.createElement('a')\n anchor.innerHTML = '​'\n if (range.collapsed) {\n range.insertNode(anchor)\n } else {\n if (range.commonAncestorContainer === input.current) {\n range.setStart(range.endContainer,0)\n }\n document.execCommand('createLink', false, '_')\n anchor = window.getSelection().anchorNode\n }\n const parent = range.commonAncestorContainer.nodeType === 3 ? range.commonAncestorContainer.parentNode : range.commonAncestorContainer\n const links = parent.querySelectorAll(\"a[href='_']\")\n Array.from(links).slice(0,-1).forEach(removeLinkFromNode)\n nodeEl = _.last(links)\n nodeEl.setAttribute('href', ' ')\n }\n }\n tempValue.current = input.current.innerHTML\n openDialog(nodeEl)\n } else {\n if (!isSelectionInsideRichTextEditor()) {\n input.current.focus()\n const last = document.createTreeWalker(input.current, NodeFilter.SHOW_TEXT).lastChild()\n const range = document.createRange()\n range.selectNodeContents(last || input.current)\n range.collapse(false)\n const sel = window.getSelection()\n sel.removeAllRanges()\n sel.addRange(range)\n }\n document.execCommand(command)\n setFormValue(input.current.innerHTML)\n toggleButtonsState()\n focus()\n }\n }\n\n const isSelectionInsideRichTextEditor = () => {\n const range = window.getSelection().getRangeAt(0)\n if (!range) return false\n const el = range.startContainer\n if (!el) return false\n const node = el.closest ? el : (el.parentNode || document.body)\n return node.closest('.'+JS_CLASS) === input.current\n }\n\n\n const saveRichTextLink = ({linkUrl, linkText}) => {\n const currentActiveLinkNode = activeLinkNode.current\n currentActiveLinkNode.setAttribute('href', addHttp(linkUrl))\n currentActiveLinkNode.setAttribute('target', '_blank')\n if (currentActiveLinkNode.textContent !== linkText) {\n currentActiveLinkNode.innerText = linkText\n }\n linkPopup.close()\n setSelectionRange(currentActiveLinkNode.lastChild, currentActiveLinkNode.textContent.length, 0)\n focus()\n setFormValue(input.current.innerHTML)\n }\n\n const cancelRichTextLink = (e) => {\n if (alreadyCancelled.get()) return\n const currentActiveLinkNode = activeLinkNode.current\n const span = document.createElement('span')\n if (currentActiveLinkNode.nextSibling)\n (currentActiveLinkNode.parentNode).insertBefore(span, currentActiveLinkNode.nextSibling)\n else\n (currentActiveLinkNode.parentNode).append(span)\n setSelectionRange(span, 0, 0)\n focus()\n if (currentActiveLinkNode.getAttribute('href') === ' ') {\n removeLink(e)\n }\n alreadyCancelled.set(true)\n span.remove()\n if (input.current) {\n input.current.normalize()\n } else {\n needsNormalize.set(true)\n }\n linkPopup.close()\n }\n\n const handleKeyUp = (e) => {\n toggleButtonsState()\n setFormValue(reformatText(input.current.innerHTML))\n }\n\n const handleKeyDown = (e) => {\n /*if (linkJustCreated.current && e.which === 8) {\n linkJustCreated.current.outerHTML = linkJustCreated.current.innerHTML\n input.current.normalize()\n return\n }\n commands.set([])\n linkJustCreated.set(null)\n const selectedRange = window.getSelection().getRangeAt(0)\n if (!selectedRange) return\n const possibleTextNode = selectedRange.startContainer\n const node = possibleTextNode.nodeType === Node.TEXT_NODE ? possibleTextNode.parentNode : possibleTextNode\n const parent = node.closest('a,.'+JS_CLASS)\n if ((e.key === 'Enter' || e.which === 32) && parent && parent.matches('.'+JS_CLASS)) {\n const range = document.createRange()\n range.setEnd(selectedRange.startContainer, selectedRange.startOffset)\n range.setStart(selectedRange.startContainer, 0)\n traverseAndAddLink(range)\n }*/\n }\n\n const traverseAndAddLink = (range) => {\n const match = range.toString().match(/[\\s\\t\\n\\r]([^\\s\\t\\n\\r]*)$/)\n if (match) {\n if ((/^(https?:\\/\\/|www\\.)/).test(match[1]) && linkRegex.test(match[1])) {\n range.setStart(range.startContainer, (match).index + 1);\n (range.endContainer).splitText(range.endContainer.textContent.length - 1)\n const newNode = document.createElement('a')\n newNode.href = match[1]\n newNode.appendChild(range.extractContents())\n range.insertNode(newNode)\n window.getSelection().getRangeAt(0).setEndAfter(newNode)\n window.getSelection().getRangeAt(0).setStartAfter(newNode)\n linkJustCreated.set(newNode)\n }\n } else {\n const previous = getPreviousElement(range.startContainer)\n if (previous) {\n range.setStart(previous, 0)\n traverseAndAddLink(range)\n }\n }\n }\n\n const getPreviousElement = (node) => {\n if (node.previousSibling) {\n const rightMost = getRightMostElement(node.previousSibling)\n if (rightMost.nodeType === Node.TEXT_NODE) {\n return rightMost\n } else {\n return getPreviousElement(rightMost)\n }\n } else if (node.parentNode && node !== input.current) {\n return getPreviousElement(node.parentNode)\n } else {\n return null\n }\n }\n\n const handlePasteDrop = (e) => setTimeout(() => pasted(e), 1)\n\n const handleClick = (e) => {\n toggleButtonsState()\n const el = e.target.closest('a,.'+JS_CLASS)\n if (el && el.matches('a') && el.getAttribute('href')) {\n openDialog(el)\n }\n }\n\n const openDialog = (el) => {\n activeLinkNode.current = el\n alreadyCancelled.set(false)\n linkPopup.openWith({linkText: el.textContent, linkUrl: (el.getAttribute('href') || '').trim()})\n }\n\n\n const removeLinkFromNode = (node) => {\n node.outerHTML = node.innerHTML === '\\u200b' ? '' : node.innerHTML\n }\n\n const removeLink = (e) => {\n if (e) e.preventDefault()\n alreadyCancelled.set(true)\n removeLinkFromNode(activeLinkNode.current)\n linkPopup.close()\n if (input.current) {\n setFormValue(input.current.innerHTML)\n input.current.normalize()\n }\n }\n\n const pasted = (e) => {\n cleanEditor(input.current, validElements)\n }\n\n const toggleButtonsState = () => {\n return setActivatedTools(_.zipObject(formatTools,formatTools.map((t)=>window.document.queryCommandState(t))))\n }\n\n const toolButton = (tool) => <ToolButton\n key={tool}\n tabIndex={-1}\n onClick={(e) => execCommand(e, tool)}\n className={'button exec-command rich-text-button only-icon ' + (activatedTools[tool] ? 'activated' : '')}\n type=\"button\"\n >\n <span className={'icon icon-' + tool}/>\n </ToolButton>\n\n const richTextElement = <RichTextContainer\n linkColor={linkColor}\n ref={container}\n onFocus={containerFocus}\n onBlur={containerBlur}\n focus={containerFocused.isOpen}\n showToolbar={!disabled & !autoHideToolbar || containerFocused.isOpen}\n className={className}\n >\n <ToolsContainer className=\"rich-text-tools\">\n {formatTools.map((t, i) => t === 'separator' ? <ToolSeparator className=\"separator\"\n key={\"separator-\" + i}/> : toolButton(t))}\n </ToolsContainer>\n <RichTextInput>\n <ContentEditable\n className={JS_CLASS}\n innerRef={input}\n html={tempValue.current || \"\"}\n onBlur={onBlur}\n onClick={handleClick}\n onKeyUp={handleKeyUp}\n onKeyDown={handleKeyDown}\n onPaste={handlePasteDrop}\n onDrop={handlePasteDrop}\n tabIndex={tabIndex}\n disabled={disabled}\n minHeight={minHeight}\n placeholder={placeholder}\n />\n </RichTextInput>\n {locked && <InputIcon icon=\"lock\"/>}\n {\n linkPopup.isOpen &&\n <EditLinkPopup\n input={input}\n activeLinkNode={activeLinkNode}\n cancel={cancelRichTextLink}\n values={linkPopup.isOpen}\n removeLink={removeLink}\n saveLink={saveRichTextLink}\n />\n }\n </RichTextContainer>\n return (label\n ? <Field labelClick={focus} descText={descText} helpText={helpText} label={label} mandatory={mandatory}>\n {richTextElement}\n </Field>\n : richTextElement\n )\n}\n\nconst EditLinkPopup = ({cancel, removeLink, activeLinkNode, input, saveLink, values}) => {\n const linkPopup = useRef()\n const formRef = useRef()\n const linkTextRef = useRef()\n const linkUrlRef = useRef()\n const LABELS = useContext(StartlibsContext).labels.RichText\n\n\n const preValidation = (formValues) => {\n let errors\n if (!formValues.linkText) {\n errors = {'linkText': [LABELS.linkTextError]}\n }\n if (!formValues.linkUrl || formValues.linkUrl === ' ' || !linkRegex.test(formValues.linkUrl.trim())) {\n errors = {...errors, 'linkUrl': [LABELS.linkUrlError]}\n }\n return errors\n }\n\n const checkEscOrEnter = (e) => {\n if (e.keyCode === 27) {\n e.stopPropagation()\n cancel(e)\n } else if (e.keyCode === 13) {\n e.preventDefault()\n e.stopPropagation()\n formRef.current.submitForm()\n }\n }\n\n useEffect(() => {\n const currentActiveLinkNode = activeLinkNode.current\n const currentLinkPopup = linkPopup.current\n const offsetLeft = currentActiveLinkNode.getClientRects().length > 1 ? input.offsetLeft : currentActiveLinkNode.offsetLeft\n const left = ((currentActiveLinkNode.offsetWidth) / 2) - (currentLinkPopup.offsetWidth / 2) + offsetLeft\n const top = (currentActiveLinkNode.offsetHeight) + currentActiveLinkNode.offsetTop\n Object.assign(currentLinkPopup.style, {\n 'position': 'absolute',\n 'left': left + 'px',\n 'top': top + 'px'\n })\n if (values.linkText) {\n linkUrlRef.current.focus()\n } else {\n linkTextRef.current.focus()\n }\n return cancel\n }, [])\n\n return <WithForm skipDom ref={formRef} action={saveLink} values={values} preValidation={preValidation}>{form =>\n <div onClick={stopPropagation()} ref={linkPopup} onKeyDown={checkEscOrEnter}\n className=\"popup rich-text-link-editor ignore-link\" contentEditable={false}>\n <TextInput\n ref={linkTextRef}\n mandatory\n path=\"linkText\"\n label={LABELS.popupLinkText}\n />\n <TextInput\n ref={linkUrlRef}\n mandatory\n path=\"linkUrl\"\n label={LABELS.popupLinkUrl}\n />\n <div className=\"popup-footer\">\n <Button className=\"remove-link\" icon=\"remove\" onClick={removeLink}>\n {LABELS.popupRemove}\n </Button>\n <Button onClick={cancel} tabIndex={0}>{LABELS.popupCancel}</Button>\n <Button highlight onClick={form.willSubmitForm}>{LABELS.popupConfirm}</Button>\n </div>\n <Errors/>\n </div>\n }</WithForm>\n}"],"names":["InputIcon","styled","Icon","withConfig","displayName","componentId","getColor","FORMAT_TOOLS","TAG_TO_STYLE_PROPERTY","GET_LIMITS_FONT_SIZE_PX","s","document","createElement","style","fontSize","body","appendChild","parseInt","getComputedStyle","removeChild","limits","wrapWith","el","wrapper","parentNode","insertBefore","FIX_STYLE","fontWeight","v","intFontWeight","window","min","max","intFontSize","Math","textDecoration","values","split","filter","indexOf","RichTextContainer","div","props","hasErrors","concat","showToolbar","ToolsContainer","focus","locked","css","linkColor","darken","RichTextInput","minHeight","disabled","ToolButton","Button","ToolSeparator","span","JS_CLASS","getNextRegularCharIndex","text","offset","direction","regex","cursor","match","addHttp","replace","setSelectionRange","input","selectionStart","selectionEnd","arguments","length","undefined","range","createRange","sel","getSelection","setStart","setEnd","collapse","removeAllRanges","addRange","cleanEditor","editor","acceptedTags","Array","prototype","slice","call","querySelectorAll","forEach","remove","acceptedStyles","map","t","_identity","newSpace","createTextNode","rangeCount","container","getRangeAt","startContainer","nodeType","nextSibling","previousSibling","textContent","clean","children","tagName","toLowerCase","rect","getBoundingClientRect","isHidden","display","width","height","childNodes","removeAttribute","setAttribute","getAttribute","usedStyles","_toPairs","_pick","_ref","k","fixedStyle","_fromPairs","_ref2","Object","assign","href","outerHTML","innerHTML","hasChildNodes","newTagName","newEl","child","replaceChild","e","RichText","_ref3","path","inputRef","label","autoHideToolbar","autoFocus","placeholder","className","formatTools","reformatText","mandatory","descText","helpText","tabIndex","value","setValue","raw","linkPopup","usePopupToggle","useEnsureRef","activeLinkNode","useRef","useRefState","containerFocused","useToggle","needsNormalize","alreadyCancelled","formValue","_setFormValue","useInput","tempValue","setFormValue","current","useEffect","activatedTools","setActivatedTools","useState","validElements","useLazyConstant","_flatten","tool","requestAnimationFrame","get","normalize","set","triggerScrollForPanel","d","time","dispatchEvent","Event","containerFocus","openWith","Date","now","containerBlur","isOpen","close","onBlur","newValue","keydownHandler","key","ctrlKey","metaKey","preventDefault","execCommand","addEventListener","removeEventListener","command","nodeEl","isSelectionInsideRichTextEditor","anchor","selectedNode","collapsed","start","startOffset","end","selectedEl","Node","TEXT_NODE","parent","closest","matches","insertNode","commonAncestorContainer","endContainer","anchorNode","links","from","removeLinkFromNode","_last","openDialog","last","createTreeWalker","NodeFilter","SHOW_TEXT","lastChild","selectNodeContents","toggleButtonsState","node","saveRichTextLink","_ref4","linkUrl","linkText","currentActiveLinkNode","innerText","cancelRichTextLink","append","removeLink","handleKeyUp","handleKeyDown","handlePasteDrop","setTimeout","pasted","handleClick","target","trim","_zipObject","queryCommandState","toolButton","React","onClick","type","richTextElement","ref","onFocus","i","ContentEditable","innerRef","html","onKeyUp","onKeyDown","onPaste","onDrop","icon","EditLinkPopup","cancel","saveLink","Field","labelClick","_ref5","formRef","linkTextRef","linkUrlRef","LABELS","useContext","StartlibsContext","labels","preValidation","formValues","errors","linkTextError","linkRegex","test","_objectSpread","linkUrlError","checkEscOrEnter","keyCode","stopPropagation","submitForm","currentLinkPopup","offsetLeft","getClientRects","left","offsetWidth","top","offsetHeight","offsetTop","WithForm","skipDom","action","form","contentEditable","TextInput","popupLinkText","popupLinkUrl","popupRemove","popupCancel","highlight","willSubmitForm","popupConfirm","Errors"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAMA,SAAS,gBAAGC,MAAM,CAACC,IAAI,CAAC,CAAAC,UAAA,CAAA;EAAAC,WAAA,EAAA,qBAAA;EAAAC,WAAA,EAAA,aAAA;AAAA,CAAA,CAAA,CAAA,CAAA,uHAAA,EAAA,GAAA,CAAA,EASnBC,QAAQ,CAAC,SAAS,CAAC,CAC7B,CAAA;AAED,MAAMC,YAAY,GAAG;AACnB,EAAA,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC;AACvB,EAAA,QAAQ,EAAE,GAAG;AACb,EAAA,WAAW,EAAE,GAAG;AAChB,EAAA,eAAe,EAAE,QAAQ;AACzB,EAAA,MAAM,EAAE,GAAG;AACX,EAAA,qBAAqB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AACnC,EAAA,mBAAmB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AACjC,EAAA,SAAS,EAAE,EAAE;AACb,EAAA,QAAQ,EAAE,YAAY;AACtB,EAAA,YAAY,EAAE,MAAM;AACpB,EAAA,cAAc,EAAE,MAAA;AAClB,CAAC,CAAA;AAED,MAAMC,qBAAqB,GAAG;AAC5B,EAAA,GAAG,EAAE,YAAY;AACjB,EAAA,QAAQ,EAAE,YAAY;AACtB,EAAA,GAAG,EAAE,gBAAgB;AACrB,EAAA,QAAQ,EAAE,gBAAgB;AAC1B,EAAA,MAAM,EAAE,UAAU;AAClB,EAAA,GAAG,EAAE,WAAA;AACP,CAAC,CAAA;AAED,IAAIC,uBAAuB,GAAGA,MAAM;AAClC,EAAA,MAAMC,CAAC,GAAGC,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC,CAAA;AACxCF,EAAAA,CAAC,CAACG,KAAK,CAACC,QAAQ,GAAG,QAAQ,CAAA;AAC3BH,EAAAA,QAAQ,CAACI,IAAI,CAACC,WAAW,CAACN,CAAC,CAAC,CAAA;EAC5B,MAAMI,QAAQ,GAAGG,QAAQ,CAACC,gBAAgB,CAACR,CAAC,CAAC,CAACI,QAAQ,CAAC,CAAA;AACvDH,EAAAA,QAAQ,CAACI,IAAI,CAACI,WAAW,CAACT,CAAC,CAAC,CAAA;AAC5B,EAAA,MAAMU,MAAM,GAAG,CAACN,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAEA,QAAQ,GAAG,CAAC,CAAC,CAAA;EAC/CL,uBAAuB,GAAGA,MAAMW,MAAM,CAAA;AACtC,EAAA,OAAOA,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAMC,QAAQ,GAAGA,CAACC,EAAE,EAACC,OAAO,KAAK;EAC/BD,EAAE,CAACE,UAAU,CAACC,YAAY,CAACF,OAAO,EAAED,EAAE,CAAC,CAAA;AACvCC,EAAAA,OAAO,CAACP,WAAW,CAACM,EAAE,CAAC,CAAA;AACzB,CAAC,CAAA;AAED,MAAMI,SAAS,GAAG;AAChB,EAAA,YAAY,EAAEC,CAACC,CAAC,EAAEN,EAAE,KAAK;AACvB,IAAA,MAAMO,aAAa,GAAGZ,QAAQ,CAACa,MAAM,CAACZ,gBAAgB,CAACI,EAAE,CAAC,CAACK,UAAU,CAAC,CAAA;AACtE,IAAA,OAAOE,aAAa,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;GACxC;AACD,EAAA,UAAU,EAAEf,CAACc,CAAC,EAAEN,EAAE,KAAK;IACrB,MAAM,CAACS,GAAG,EAAEC,GAAG,CAAC,GAAGvB,uBAAuB,EAAE,CAAA;AAC5C,IAAA,MAAMwB,WAAW,GAAGhB,QAAQ,CAACa,MAAM,CAACZ,gBAAgB,CAACI,EAAE,CAAC,CAACR,QAAQ,CAAC,CAAA;AAClE,IAAA,OAAOoB,IAAI,CAACH,GAAG,CAACC,GAAG,EAAEE,IAAI,CAACF,GAAG,CAACD,GAAG,EAAEE,WAAW,CAAC,CAAC,GAAG,IAAI,CAAA;GACxD;AACD,EAAA,gBAAgB,EAAEE,CAACP,CAAC,EAACN,EAAE,KAAK;IAC1B,MAAMc,MAAM,GAAGR,CAAC,CAACS,KAAK,CAAC,GAAG,CAAC,CAACC,MAAM,CAACV,CAAC,IAAIA,CAAC,KAAK,WAAW,IAAIA,CAAC,KAAK,cAAc,CAAC,CAAA;IAClF,IAAIQ,MAAM,CAACG,OAAO,CAAC,WAAW,CAAC,IAAE,CAAC,EAAE;MAClClB,QAAQ,CAACC,EAAE,EAACX,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;AAC1C,KAAA;IACA,IAAIwB,MAAM,CAACG,OAAO,CAAC,cAAc,CAAC,IAAE,CAAC,EAAE;MACrClB,QAAQ,CAACC,EAAE,EAACX,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;AAC/C,KAAA;AACA,IAAA,OAAO,EAAE,CAAA;AACX,GAAA;AACF,CAAC,CAAA;MAEY4B,iBAAiB,gBAAGvC,MAAM,CAACwC,GAAG,CAAAtC,UAAA,CAAA;EAAAC,WAAA,EAAA,6BAAA;EAAAC,WAAA,EAAA,aAAA;AAAA,CAAA,CAAA,CAAA,CAAA,gDAAA,EAAA,sCAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,6GAAA,CAAA,EAGrBC,QAAQ,CAAC,SAAS,CAAC,EAGrCoC,KAAK,IAAIA,KAAK,CAACC,SAAS,qBAAAC,MAAA,CAAqBtC,QAAQ,CAACoC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAE,EACvEA,KAAK,IAAIA,KAAK,CAACG,WAAW,IAAA,QAAA,CAAAD,MAAA,CACxBE,cAAc,EAMjB,yHAAA,CAAA,EACCJ,KAAK,IAAIA,KAAK,CAACK,KAAK,IAAAH,sBAAAA,CAAAA,MAAA,CACJtC,QAAQ,CAAC,SAAS,CAAC,4DAEpC,EACCoC,KAAK,IAAIA,KAAK,CAACM,MAAM,IAAIC,GAAG,CAAA,CAAA,qDAAA,CAAA,CAG7B,EACCP,KAAK,IAAIA,KAAK,CAACQ,SAAS,IAAID,GAAG,CAEpBP,CAAAA,qCAAAA,EAAAA,kBAAAA,EAAAA,IAAAA,CAAAA,EAAAA,KAAK,CAACQ,SAAS,EAGfC,MAAM,CAAC,IAAI,EAAET,KAAK,CAACQ,SAAS,CAAC,CAEzC,EASF;MAEYE,aAAa,gBAAGnD,MAAM,CAACwC,GAAG,CAAAtC,UAAA,CAAA;EAAAC,WAAA,EAAA,yBAAA;EAAAC,WAAA,EAAA,aAAA;AAAA,CAAA,CAAA,CAAA,CAAA,uBAAA,EAAA,6FAAA,EAAA,sKAAA,EAAA,EAAA,CAAA,EAE5BC,QAAQ,CAAC,QAAQ,CAAC,EAOXoC,KAAK,IAAEA,KAAK,CAACW,SAAS,IAAI,EAAE,EAa1CX,KAAK,IAAIA,KAAK,CAACY,QAAQ,yHAKxB,EACF;AAED,MAAMR,cAAc,gBAAG7C,MAAM,CAACwC,GAAG,CAAAtC,UAAA,CAAA;EAAAC,WAAA,EAAA,0BAAA;EAAAC,WAAA,EAAA,aAAA;AAAA,CAAA,CAAA,CAAA,CAAA,aAAA,EAAA,gLAAA,CAAA,EACjBC,QAAQ,CAAC,iBAAiB,CAAC,CAU1C,CAAA;AAED,MAAMiD,UAAU,gBAAGtD,MAAM,CAACuD,MAAM,CAAC,CAAArD,UAAA,CAAA;EAAAC,WAAA,EAAA,sBAAA;EAAAC,WAAA,EAAA,aAAA;AAAA,CAAA,CAAA,CAAA,CAAA,uJAAA,EAAA,yOAAA,CAAA,EAWlBC,QAAQ,CAAC,QAAQ,CAAC,CAgBhC,CAAA;AAED,MAAMmD,aAAa,gBAAGxD,MAAM,CAACyD,IAAI,CAAAvD,UAAA,CAAA;EAAAC,WAAA,EAAA,yBAAA;EAAAC,WAAA,EAAA,aAAA;AAAA,CAKhC,CAAA,CAAA,CAAA,8FAAA,CAAA,CAAA,CAAA;AAED,MAAMsD,QAAQ,GAAG,YAAY,CAAA;AAE7B,MAAMC,uBAAuB,GAAGA,CAACC,IAAI,EAAEC,MAAM,EAAEC,SAAS,KAAK;EAC3D,MAAMC,KAAK,GAAG,4EAA4E,CAAA;EAC1F,IAAIC,MAAM,GAAGH,MAAM,CAAA;AACnB,EAAA,OAAO,CAACD,IAAI,CAACI,MAAM,GAAGF,SAAS,CAAC,IAAI,EAAE,EAAEG,KAAK,CAACF,KAAK,CAAC,EAAE;AACpDC,IAAAA,MAAM,IAAIF,SAAS,CAAA;AACrB,GAAA;AACA,EAAA,OAAOE,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAME,OAAO,GAAIzD,CAAC,IAAK;EACrBA,CAAC,GAAGA,CAAC,CAAC0D,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AACxB,EAAA,IAAI1D,CAAC,CAAC6B,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI7B,CAAC,CAAC6B,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC7D,IAAA,OAAO7B,CAAC,CAAA;AACV,GAAC,MAAM;IACL,OAAO,SAAS,GAAGA,CAAC,CAAA;AACtB,GAAA;AACF,CAAC,CAAA;AAUD,MAAM2D,iBAAiB,GAAG,UAACC,KAAK,EAAEC,cAAc,EAAuB;AAAA,EAAA,IAArBC,YAAY,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC,CAAA;EAChE,IAAI,CAACH,KAAK,EAAE,OAAA;AACZ,EAAA,IAAIM,KAAK,GAAGjE,QAAQ,CAACkE,WAAW,EAAE,CAAA;AAClC,EAAA,IAAIC,GAAG,GAAGhD,MAAM,CAACiD,YAAY,EAAE,CAAA;AAC/BH,EAAAA,KAAK,CAACI,QAAQ,CAACV,KAAK,EAAEC,cAAc,CAAC,CAAA;AACrC,EAAA,IAAIC,YAAY,EAAE;AAChBI,IAAAA,KAAK,CAACK,MAAM,CAACX,KAAK,EAAEE,YAAY,CAAC,CAAA;AACnC,GAAC,MAAM;AACLI,IAAAA,KAAK,CAACM,QAAQ,CAAC,IAAI,CAAC,CAAA;AACtB,GAAA;EACAJ,GAAG,CAACK,eAAe,EAAE,CAAA;AACrBL,EAAAA,GAAG,CAACM,QAAQ,CAACR,KAAK,CAAC,CAAA;AACrB,CAAC,CAAA;AAED,MAAMS,WAAW,GAAGA,CAACC,MAAM,EAAEC,YAAY,KAAK;EAC5CC,KAAK,CAACC,SAAS,CAACC,KAAK,CAACC,IAAI,CAACL,MAAM,CAACM,gBAAgB,CAAC,4BAA4B,CAAC,CAAC,CAACC,OAAO,CAACvE,EAAE,IAAIA,EAAE,CAACwE,MAAM,EAAE,CAAC,CAAA;EAC5GN,KAAK,CAACC,SAAS,CAACC,KAAK,CAACC,IAAI,CAACL,MAAM,CAACM,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAACC,OAAO,CAACvE,EAAE,IAAIA,EAAE,CAACwE,MAAM,EAAE,CAAC,CAAA;AAExF,EAAA,MAAMC,cAAc,GAAGR,YAAY,CAACS,GAAG,CAACC,CAAC,IAAIzF,qBAAqB,CAACyF,CAAC,CAAC,CAAC,CAAC3D,MAAM,CAAA4D,SAAW,CAAC,CAAA;AAEzF,EAAA,MAAMC,QAAQ,GAAGxF,QAAQ,CAACyF,cAAc,CAAC,QAAQ,CAAC,CAAA;AAClD,EAAA,IAAItE,MAAM,CAACiD,YAAY,EAAE,CAACsB,UAAU,EAAE;AACtC,IAAA,MAAMC,SAAS,GAAGxE,MAAM,CAACiD,YAAY,EAAE,CAACwB,UAAU,CAAC,CAAC,CAAC,CAACC,cAAc,CAAA;AACpE,IAAA,IAAIF,SAAS,CAACG,QAAQ,KAAK,CAAC,EAAE;MAC5BH,SAAS,CAAC9E,UAAU,CAACC,YAAY,CAAC0E,QAAQ,EAAEG,SAAS,CAACI,WAAW,CAAC,CAAA;AACpE,KAAC,MAAM;AACLJ,MAAAA,SAAS,CAACtF,WAAW,CAACmF,QAAQ,CAAC,CAAA;AACjC,KAAA;IACE,IAAIA,QAAQ,CAACQ,eAAe,IAAIR,QAAQ,CAACQ,eAAe,CAACC,WAAW,KAAK,QAAQ,EAAE;AACjFT,MAAAA,QAAQ,CAACQ,eAAe,CAACb,MAAM,EAAE,CAAA;AACrC,KAAA;AACAzB,IAAAA,iBAAiB,CAAC8B,QAAQ,EAAE,CAAC,CAAC,CAAA;AAC9B,GAAA;EAEA,MAAMU,KAAK,GAAIC,QAAQ,IAAK;AAC1BtB,IAAAA,KAAK,CAACC,SAAS,CAACC,KAAK,CAACC,IAAI,CAACmB,QAAQ,CAAC,CAACjB,OAAO,CAACvE,EAAE,IAAI;MACjD,IAAI;AACJ,QAAA,IAAIA,EAAE,CAACmF,QAAQ,KAAK,CAAC,EACnB,OAAA;AACF,QAAA,IAAI,CAACnF,EAAE,CAACyF,OAAO,EAAE;UACfzF,EAAE,CAACwE,MAAM,EAAE,CAAA;AACX,UAAA,OAAA;AACF,SAAA;QACA,IAAIiB,OAAO,GAAGzF,EAAE,CAACyF,OAAO,CAACC,WAAW,EAAE,CAAA;AACtC,QAAA,MAAMnG,KAAK,GAAGK,gBAAgB,CAACI,EAAE,CAAC,CAAA;AAClC,QAAA,MAAM2F,IAAI,GAAG3F,EAAE,CAAC4F,qBAAqB,EAAE,CAAA;AACvC,QAAA,MAAMC,QAAQ,GAAGtG,KAAK,CAACuG,OAAO,KAAK,MAAM,IAAIH,IAAI,CAACI,KAAK,KAAK,CAAC,IAAIJ,IAAI,CAACK,MAAM,KAAK,CAAC,CAAA;AAClF,QAAA,IAAIH,QAAQ,IAAK7F,EAAE,CAACwF,QAAQ,IAAI,CAACxF,EAAE,CAACwF,QAAQ,CAACpC,MAAO,IAAIqC,OAAO,KAAK,IAAI,EAAE;UACxEzF,EAAE,CAACwE,MAAM,EAAE,CAAA;SACZ,MAAM,IAAIP,YAAY,CAAChD,OAAO,CAACwE,OAAO,CAAC,IAAI,CAAC,EAAE;AAC7CF,UAAAA,KAAK,CAACvF,EAAE,CAACiG,UAAU,CAAC,CAAA;AACpBjG,UAAAA,EAAE,CAACkG,eAAe,CAAC,OAAO,CAAC,CAAA;UACzB,IAAIT,OAAO,KAAK,GAAG,EAAE;AACnBzF,YAAAA,EAAE,CAACmG,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACrC,WAAA;AACA,UAAA,IAAInG,EAAE,CAACoG,YAAY,CAAC,OAAO,CAAC,EAAE;AAC5B,YAAA,MAAMC,UAAU,GAAGC,QAAA,CAAUC,KAAA,CAAO9B,cAAc,EAAEzE,EAAE,CAACT,KAAK,CAAC,CAAC,CAACyB,MAAM,CAACwF,IAAA,IAAA;AAAA,cAAA,IAAC,CAACC,CAAC,EAAEnG,CAAC,CAAC,GAAAkG,IAAA,CAAA;cAAA,OAAKlG,CAAC,KAAK,EAAE,CAAA;aAAC,CAAA,CAAA;YAC3F,MAAMoG,UAAU,GAAGC,UAAA,CAAYN,UAAU,CAAC3B,GAAG,CAACkC,KAAA,IAAA;AAAA,cAAA,IAAC,CAACH,CAAC,EAAEnG,CAAC,CAAC,GAAAsG,KAAA,CAAA;AAAA,cAAA,OAAK,CAACH,CAAC,EAAE,CAACrG,SAAS,CAACqG,CAAC,CAAC,IAAA7B,SAAc,EAAEtE,CAAC,EAAEN,EAAE,CAAC,CAAC,CAAA;AAAA,aAAA,CAAC,CAAC,CAAA;AACxGA,YAAAA,EAAE,CAACkG,eAAe,CAAC,OAAO,CAAC,CAAA;YACvBW,MAAM,CAACC,MAAM,CAAC9G,EAAE,CAACT,KAAK,EAAEmH,UAAU,CAAC,CAAA;AACrC,WAAA;AACJ,SAAC,MAAM,IAAIjB,OAAO,KAAK,GAAG,EAAE;AAC1BF,UAAAA,KAAK,CAACvF,EAAE,CAACiG,UAAU,CAAC,CAAA;UACpB,IAAIjG,EAAE,CAACsF,WAAW,KAAKtF,EAAE,CAAC+G,IAAI,IAAI/G,EAAE,CAACsF,WAAW,CAAClC,MAAM,GAAG,CAAC,EACzDpD,EAAE,CAACgH,SAAS,GAAGhH,EAAE,CAACiH,SAAS,CAAA;AAC/B,SAAC,MAAM;AACL1B,UAAAA,KAAK,CAACvF,EAAE,CAACiG,UAAU,CAAC,CAAA;AACpB,UAAA,IAAIjG,EAAE,CAACkH,aAAa,EAAE,EAAE;YACtB,MAAMC,UAAU,GAAG5H,KAAK,CAACuG,OAAO,KAAK,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAA;AAC9D,YAAA,MAAMsB,KAAK,GAAG/H,QAAQ,CAACC,aAAa,CAAC6H,UAAU,CAAC,CAAA;YAChDjD,KAAK,CAACC,SAAS,CAACC,KAAK,CAACC,IAAI,CAACrE,EAAE,CAACiG,UAAU,CAAC,CAAC1B,OAAO,CAAC8C,KAAK,IAAID,KAAK,CAAC1H,WAAW,CAAC2H,KAAK,CAAC,CAAC,CAAA;YACpFrH,EAAE,CAACE,UAAU,CAACoH,YAAY,CAACF,KAAK,EAAEpH,EAAE,CAAC,CAAA;AACvC,WAAC,MAAM;YACLA,EAAE,CAACwE,MAAM,EAAE,CAAA;AACb,WAAA;AACA,SAAA;OACD,CAAC,OAAO+C,CAAC,EAAE;QACV,IAAIvH,EAAE,IAAIA,EAAE,CAACwE,MAAM,EACjBxE,EAAE,CAACwE,MAAM,EAAE,CAAA;AACf,OAAA;AACF,KAAC,CAAC,CAAA;GACH,CAAA;AACDe,EAAAA,KAAK,CAACvB,MAAM,CAACiC,UAAU,CAAC,CAAA;AAC1B,CAAC,CAAA;AAsCYuB,MAAAA,QAAQ,GAAGC,KAAA,IAA2S;EAAA,IAA1S;IAACC,IAAI;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,eAAe;IAAEC,SAAS;IAAE9F,QAAQ;IAAED,SAAS;IAAEgG,WAAW;IAAEC,SAAS;AAAEC,IAAAA,WAAW,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,CAAC;AAAEC,IAAAA,YAAY,GAAAtD,SAAa;IAAEuD,SAAS;IAAEC,QAAQ;IAAEC,QAAQ;IAAEzG,SAAS;AAAE0G,IAAAA,QAAQ,GAAG,CAAC;IAAEC,KAAK;IAAEC,QAAQ;IAACC,GAAG;AAAE/G,IAAAA,MAAAA;AAAM,GAAC,GAAA+F,KAAA,CAAA;AAE5T,EAAA,MAAMiB,SAAS,GAAGC,cAAc,EAAE,CAAA;AAElC,EAAA,MAAM3F,KAAK,GAAG4F,YAAY,CAACjB,QAAQ,CAAC,CAAA;AACpC,EAAA,MAAMkB,cAAc,GAAGC,MAAM,EAAE,CAAA;AAC/B,EAAA,MAAM9D,SAAS,GAAG8D,MAAM,EAAE,CAAA;AAC1B,EAAwBC,WAAW,GAAE;;AAErC;AACA,EAA4BA,WAAW,GAAE;AACzC,EAA0BA,WAAW,GAAE;AACvC,EAAiBA,WAAW,CAAC,EAAE,EAAC;AAChC,EAAA,MAAMC,gBAAgB,GAAGC,SAAS,EAAE,CAAA;AAEpC,EAAA,MAAMC,cAAc,GAAGH,WAAW,EAAE,CAAA;AACpC,EAAA,MAAMI,gBAAgB,GAAGJ,WAAW,EAAE,CAAA;;AAEtC;AACA,EAAA,MAAM,CAACK,SAAS,EAAEC,aAAa,EAAE;AAAChI,IAAAA,SAAAA;GAAU,CAAC,GAAGiI,QAAQ,CAAC;IAAC5B,IAAI;IAACa,KAAK;AAACC,IAAAA,QAAAA;GAAS,EAACC,GAAG,CAAC,CAAA;;AAEnF;AACA,EAAA,MAAMc,SAAS,GAAGT,MAAM,CAACM,SAAS,CAAC,CAAA;EACnC,MAAMI,YAAY,GAAIlJ,CAAC,IAAK;IAC1BiJ,SAAS,CAACE,OAAO,GAAGnJ,CAAC,CAAA;IACrB+I,aAAa,CAAC/I,CAAC,CAAC,CAAA;GACjB,CAAA;AAEDoJ,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAInB,KAAK,KAAKa,SAAS,IAAMA,SAAS,KAAKG,SAAU,EAAC;MACpDA,SAAS,CAACE,OAAO,GAAGL,SAAS,CAAA;AAC/B,KAAA;AACF,GAAC,EAAC,CAAC1B,IAAI,CAAC,CAAC,CAAA;EAET,MAAM,CAACiC,cAAc,EAAEC,iBAAiB,CAAC,GAAGC,QAAQ,CAAC,EAAE,CAAC,CAAA;AAExD,EAAA,MAAMC,aAAa,GAAGC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAACzI,MAAM,CAAC0I,QAAA,CAAU/B,WAAW,CAACvD,GAAG,CAACuF,IAAI,IAAIhL,YAAY,CAACgL,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAE5IP,EAAAA,SAAS,CAAC,MAAM;AACd3F,IAAAA,WAAW,CAACf,KAAK,CAACyG,OAAO,EAAEK,aAAa,CAAC,CAAA;GAC1C,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,MAAMrI,KAAK,GAAGA,MAAMuB,KAAK,CAACyG,OAAO,IAAIzG,KAAK,CAACyG,OAAO,CAAChI,KAAK,EAAE,CAAA;;AAE1D;AACA;AACAiI,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAI5B,SAAS,EAAE;MACboC,qBAAqB,CAACzI,KAAK,CAAC,CAAA;AAC9B,KAAA;GACD,EAAE,EAAE,CAAC,CAAA;AAENiI,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAIR,cAAc,CAACiB,GAAG,EAAE,EAAE;AACxBnH,MAAAA,KAAK,CAACyG,OAAO,CAACW,SAAS,EAAE,CAAA;AACzBlB,MAAAA,cAAc,CAACmB,GAAG,CAAC,KAAK,CAAC,CAAA;AAC3B,KAAA;AACF,GAAC,CAAC,CAAA;EAEF,MAAMC,qBAAqB,GAAIC,CAAC,IAAK;IACnCL,qBAAqB,CAAEM,IAAI,IAAK;AAC5B,MAAA,IAAIA,IAAI,GAAGD,CAAC,GAAG,GAAG,EAAE,OAAA;MACpB/J,MAAM,CAACiK,aAAa,CAAC,IAAIC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;MACzCJ,qBAAqB,CAACC,CAAC,CAAC,CAAA;AAC1B,KACF,CAAC,CAAA;GACF,CAAA;EAED,MAAMI,cAAc,GAAGA,MAAM;AAC3B3B,IAAAA,gBAAgB,CAAC4B,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC5BN,IAAAA,qBAAqB,CAACO,IAAI,CAACC,GAAG,EAAE,CAAC,CAAA;GAClC,CAAA;EAED,MAAMC,aAAa,GAAIxD,CAAC,IAAK;AAC3B,IAAA,IAAIyB,gBAAgB,CAACgC,MAAM,KAAK,CAAC,EAAE;MACjChC,gBAAgB,CAACiC,KAAK,EAAE,CAAA;AACxBX,MAAAA,qBAAqB,CAACO,IAAI,CAACC,GAAG,EAAE,CAAC,CAAA;AACnC,KAAA;GACD,CAAA;EAGD,MAAMI,MAAM,GAAI3D,CAAC,IAAK;AACpB,IAAA,MAAM4D,QAAQ,GAAGnI,KAAK,CAACyG,OAAO,CAACnE,WAAW,CAAClC,MAAM,KAAK,CAAC,GAAG,EAAE,GAAGJ,KAAK,CAACyG,OAAO,CAACxC,SAAS,CAAA;AACtF;AACA;AACA;AACA,IAAA,IAAIkE,QAAQ,MAAM/B,SAAS,IAAI,EAAE,CAAC,EAAE;MAClCI,YAAY,CAAC2B,QAAQ,CAAC,CAAA;AACxB,KAAA;GACD,CAAA;EAED,MAAMC,cAAc,GAAI7D,CAAC,IAAK;AAC5B,IAAA,IAAIyB,gBAAgB,CAACgC,MAAM,KAAK,CAAC,EAAC;MAChC,IAAI/C,WAAW,CAAChH,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACnC,QAAA,OAAA;AACF,OAAA;AACA,MAAA,IAAIsG,CAAC,CAAC8D,GAAG,KAAK,GAAG,IAAI9D,CAAC,CAAC+D,OAAO,IAAM/D,CAAC,CAAC8D,GAAG,KAAK,GAAG,IAAI9D,CAAC,CAACgE,OAAQ,EAAC;QAC9DhE,CAAC,CAACiE,cAAc,EAAE,CAAA;AAClBC,QAAAA,WAAW,CAAC,IAAI,EAAC,MAAM,CAAC,CAAA;AAC1B,OAAA;AACF,KAAA;GACD,CAAA;AAED/B,EAAAA,SAAS,CAAC,MAAM;AACdrK,IAAAA,QAAQ,CAACqM,gBAAgB,CAAC,SAAS,EAACN,cAAc,CAAC,CAAA;IACnD,OAAO,MAAM/L,QAAQ,CAACsM,mBAAmB,CAAC,SAAS,EAACP,cAAc,CAAC,CAAA;AACrE,GAAC,EAAE,CAACpC,gBAAgB,CAACgC,MAAM,CAAC,CAAC,CAAA;AAE7B,EAAA,MAAMS,WAAW,GAAGA,CAAClE,CAAC,EAAEqE,OAAO,KAAK;IAClC,IAAIA,OAAO,KAAK,MAAM,EAAE;AACtB,MAAA,IAAIC,MAAM,CAAA;AACV,MAAA,IAAI,CAACC,+BAA+B,EAAE,EAAE;AACtC,QAAA,IAAIC,MAAM,GAAG1M,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAC,CAAA;QACxCyM,MAAM,CAAC9E,SAAS,GAAG,SAAS,CAAA;AAC5BjE,QAAAA,KAAK,CAACyG,OAAO,CAAC/J,WAAW,CAACqM,MAAM,CAAC,CAAA;AACjCF,QAAAA,MAAM,GAAGE,MAAM,CAAA;AACjB,OAAC,MAAM;QACL,MAAMzI,KAAK,GAAG9C,MAAM,CAACiD,YAAY,EAAE,CAACwB,UAAU,CAAC,CAAC,CAAC,CAAA;AACjD,QAAA,MAAM+G,YAAY,GAAG1I,KAAK,CAAC4B,cAAc,CAAA;QACzC,IAAI5B,KAAK,CAAC2I,SAAS,EAAE;AACnB,UAAA,MAAMC,KAAK,GAAG5J,uBAAuB,CAAC0J,YAAY,CAAC1G,WAAW,EAAEhC,KAAK,CAAC6I,WAAW,EAAE,CAAC,CAAC,CAAC,CAAA;AACtF,UAAA,MAAMC,GAAG,GAAG9J,uBAAuB,CAAC0J,YAAY,CAAC1G,WAAW,EAAEhC,KAAK,CAAC6I,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;AACvF,UAAA,IAAID,KAAK,GAAG5I,KAAK,CAAC6I,WAAW,IAAIC,GAAG,GAAG9I,KAAK,CAAC6I,WAAW,GAAG,CAAC,EAAE;AAC5D7I,YAAAA,KAAK,CAACI,QAAQ,CAACsI,YAAY,EAAEE,KAAK,CAAC,CAAA;YACnC5I,KAAK,CAACK,MAAM,CAACqI,YAAY,EAAEI,GAAG,GAAG,CAAC,CAAC,CAAA;AACrC,WAAA;AACF,SAAA;AACA,QAAA,MAAMC,UAAU,GAAGL,YAAY,CAAC7G,QAAQ,KAAKmH,IAAI,CAACC,SAAS,GAAGP,YAAY,CAAC9L,UAAU,GAAG8L,YAAY,CAAA;QACpG,MAAMQ,MAAM,GAAGH,UAAU,CAACI,OAAO,CAAC,KAAK,GAACpK,QAAQ,CAAC,CAAA;QACjD,IAAImK,MAAM,IAAIA,MAAM,CAACE,OAAO,CAAC,GAAG,CAAC,EAAE;AACjCb,UAAAA,MAAM,GAAGW,MAAM,CAAA;AACjB,SAAC,MAAM;AACL,UAAA,IAAIT,MAAM,GAAG1M,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAC,CAAA;UACxCyM,MAAM,CAAC9E,SAAS,GAAG,SAAS,CAAA;UAC5B,IAAI3D,KAAK,CAAC2I,SAAS,EAAE;AACnB3I,YAAAA,KAAK,CAACqJ,UAAU,CAACZ,MAAM,CAAC,CAAA;AAC1B,WAAC,MAAM;AACL,YAAA,IAAIzI,KAAK,CAACsJ,uBAAuB,KAAK5J,KAAK,CAACyG,OAAO,EAAE;cACnDnG,KAAK,CAACI,QAAQ,CAACJ,KAAK,CAACuJ,YAAY,EAAC,CAAC,CAAC,CAAA;AACtC,aAAA;YACAxN,QAAQ,CAACoM,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;AAC9CM,YAAAA,MAAM,GAAGvL,MAAM,CAACiD,YAAY,EAAE,CAACqJ,UAAU,CAAA;AAC3C,WAAA;AACA,UAAA,MAAMN,MAAM,GAAGlJ,KAAK,CAACsJ,uBAAuB,CAACzH,QAAQ,KAAK,CAAC,GAAG7B,KAAK,CAACsJ,uBAAuB,CAAC1M,UAAU,GAAGoD,KAAK,CAACsJ,uBAAuB,CAAA;AACtI,UAAA,MAAMG,KAAK,GAAGP,MAAM,CAAClI,gBAAgB,CAAC,aAAa,CAAC,CAAA;AACpDJ,UAAAA,KAAK,CAAC8I,IAAI,CAACD,KAAK,CAAC,CAAC3I,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAACG,OAAO,CAAC0I,kBAAkB,CAAC,CAAA;AACzDpB,UAAAA,MAAM,GAAGqB,KAAA,CAAOH,KAAK,CAAC,CAAA;AACtBlB,UAAAA,MAAM,CAAC1F,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAClC,SAAA;AACF,OAAA;AACAoD,MAAAA,SAAS,CAACE,OAAO,GAAGzG,KAAK,CAACyG,OAAO,CAACxC,SAAS,CAAA;MAC3CkG,UAAU,CAACtB,MAAM,CAAC,CAAA;AACpB,KAAC,MAAM;AACL,MAAA,IAAI,CAACC,+BAA+B,EAAE,EAAE;AACtC9I,QAAAA,KAAK,CAACyG,OAAO,CAAChI,KAAK,EAAE,CAAA;AACrB,QAAA,MAAM2L,IAAI,GAAG/N,QAAQ,CAACgO,gBAAgB,CAACrK,KAAK,CAACyG,OAAO,EAAE6D,UAAU,CAACC,SAAS,CAAC,CAACC,SAAS,EAAE,CAAA;AACvF,QAAA,MAAMlK,KAAK,GAAGjE,QAAQ,CAACkE,WAAW,EAAE,CAAA;QACpCD,KAAK,CAACmK,kBAAkB,CAACL,IAAI,IAAIpK,KAAK,CAACyG,OAAO,CAAC,CAAA;AAC/CnG,QAAAA,KAAK,CAACM,QAAQ,CAAC,KAAK,CAAC,CAAA;AACrB,QAAA,MAAMJ,GAAG,GAAGhD,MAAM,CAACiD,YAAY,EAAE,CAAA;QACjCD,GAAG,CAACK,eAAe,EAAE,CAAA;AACrBL,QAAAA,GAAG,CAACM,QAAQ,CAACR,KAAK,CAAC,CAAA;AACrB,OAAA;AACAjE,MAAAA,QAAQ,CAACoM,WAAW,CAACG,OAAO,CAAC,CAAA;AAC7BpC,MAAAA,YAAY,CAACxG,KAAK,CAACyG,OAAO,CAACxC,SAAS,CAAC,CAAA;AACrCyG,MAAAA,kBAAkB,EAAE,CAAA;AACpBjM,MAAAA,KAAK,EAAE,CAAA;AACT,KAAA;GACD,CAAA;EAED,MAAMqK,+BAA+B,GAAGA,MAAM;IAC5C,MAAMxI,KAAK,GAAG9C,MAAM,CAACiD,YAAY,EAAE,CAACwB,UAAU,CAAC,CAAC,CAAC,CAAA;AACjD,IAAA,IAAI,CAAC3B,KAAK,EAAE,OAAO,KAAK,CAAA;AACxB,IAAA,MAAMtD,EAAE,GAAGsD,KAAK,CAAC4B,cAAc,CAAA;AAC/B,IAAA,IAAI,CAAClF,EAAE,EAAE,OAAO,KAAK,CAAA;AACrB,IAAA,MAAM2N,IAAI,GAAG3N,EAAE,CAACyM,OAAO,GAAGzM,EAAE,GAAIA,EAAE,CAACE,UAAU,IAAIb,QAAQ,CAACI,IAAK,CAAA;IAC/D,OAAOkO,IAAI,CAAClB,OAAO,CAAC,GAAG,GAACpK,QAAQ,CAAC,KAAKW,KAAK,CAACyG,OAAO,CAAA;GACpD,CAAA;EAGD,MAAMmE,gBAAgB,GAAGC,KAAA,IAAyB;IAAA,IAAxB;MAACC,OAAO;AAAEC,MAAAA,QAAAA;AAAQ,KAAC,GAAAF,KAAA,CAAA;AAC3C,IAAA,MAAMG,qBAAqB,GAAGnF,cAAc,CAACY,OAAO,CAAA;IACpDuE,qBAAqB,CAAC7H,YAAY,CAAC,MAAM,EAAEtD,OAAO,CAACiL,OAAO,CAAC,CAAC,CAAA;AAC5DE,IAAAA,qBAAqB,CAAC7H,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACtD,IAAA,IAAI6H,qBAAqB,CAAC1I,WAAW,KAAKyI,QAAQ,EAAE;MAClDC,qBAAqB,CAACC,SAAS,GAAGF,QAAQ,CAAA;AAC5C,KAAA;IACArF,SAAS,CAACuC,KAAK,EAAE,CAAA;AACjBlI,IAAAA,iBAAiB,CAACiL,qBAAqB,CAACR,SAAS,EAAEQ,qBAAqB,CAAC1I,WAAW,CAAClC,MAAM,EAAE,CAAC,CAAC,CAAA;AAC/F3B,IAAAA,KAAK,EAAE,CAAA;AACP+H,IAAAA,YAAY,CAACxG,KAAK,CAACyG,OAAO,CAACxC,SAAS,CAAC,CAAA;GACtC,CAAA;EAED,MAAMiH,kBAAkB,GAAI3G,CAAC,IAAK;AAChC,IAAA,IAAI4B,gBAAgB,CAACgB,GAAG,EAAE,EAAE,OAAA;AAC5B,IAAA,MAAM6D,qBAAqB,GAAGnF,cAAc,CAACY,OAAO,CAAA;AACpD,IAAA,MAAMrH,IAAI,GAAG/C,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3C,IAAI0O,qBAAqB,CAAC5I,WAAW,EAClC4I,qBAAqB,CAAC9N,UAAU,CAAEC,YAAY,CAACiC,IAAI,EAAE4L,qBAAqB,CAAC5I,WAAW,CAAC,CAAA,KAEvF4I,qBAAqB,CAAC9N,UAAU,CAAEiO,MAAM,CAAC/L,IAAI,CAAC,CAAA;AACjDW,IAAAA,iBAAiB,CAACX,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAC7BX,IAAAA,KAAK,EAAE,CAAA;IACP,IAAIuM,qBAAqB,CAAC5H,YAAY,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;MACtDgI,UAAU,CAAC7G,CAAC,CAAC,CAAA;AACf,KAAA;AACA4B,IAAAA,gBAAgB,CAACkB,GAAG,CAAC,IAAI,CAAC,CAAA;IAC1BjI,IAAI,CAACoC,MAAM,EAAE,CAAA;IACb,IAAIxB,KAAK,CAACyG,OAAO,EAAE;AACjBzG,MAAAA,KAAK,CAACyG,OAAO,CAACW,SAAS,EAAE,CAAA;AAC3B,KAAC,MAAM;AACLlB,MAAAA,cAAc,CAACmB,GAAG,CAAC,IAAI,CAAC,CAAA;AAC1B,KAAA;IACA3B,SAAS,CAACuC,KAAK,EAAE,CAAA;GAClB,CAAA;EAED,MAAMoD,WAAW,GAAI9G,CAAC,IAAK;AACzBmG,IAAAA,kBAAkB,EAAE,CAAA;IACpBlE,YAAY,CAACtB,YAAY,CAAClF,KAAK,CAACyG,OAAO,CAACxC,SAAS,CAAC,CAAC,CAAA;GACpD,CAAA;EAED,MAAMqH,aAAa,GAAI/G,CAAC,IAAK;AAC3B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACG,CAAA;AAwCD,EAAA,MAAMgH,eAAe,GAAIhH,CAAC,IAAKiH,UAAU,CAAC,MAAMC,MAAM,CAAE,CAAC,EAAE,CAAC,CAAC,CAAA;EAE7D,MAAMC,WAAW,GAAInH,CAAC,IAAK;AACzBmG,IAAAA,kBAAkB,EAAE,CAAA;IACpB,MAAM1N,EAAE,GAAGuH,CAAC,CAACoH,MAAM,CAAClC,OAAO,CAAC,KAAK,GAACpK,QAAQ,CAAC,CAAA;AAC3C,IAAA,IAAIrC,EAAE,IAAIA,EAAE,CAAC0M,OAAO,CAAC,GAAG,CAAC,IAAI1M,EAAE,CAACoG,YAAY,CAAC,MAAM,CAAC,EAAE;MACpD+G,UAAU,CAACnN,EAAE,CAAC,CAAA;AAChB,KAAA;GACD,CAAA;EAED,MAAMmN,UAAU,GAAInN,EAAE,IAAK;IACzB6I,cAAc,CAACY,OAAO,GAAGzJ,EAAE,CAAA;AAC3BmJ,IAAAA,gBAAgB,CAACkB,GAAG,CAAC,KAAK,CAAC,CAAA;IAC3B3B,SAAS,CAACkC,QAAQ,CAAC;MAACmD,QAAQ,EAAE/N,EAAE,CAACsF,WAAW;AAAEwI,MAAAA,OAAO,EAAE,CAAC9N,EAAE,CAACoG,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAEwI,IAAI,EAAC;AAAC,KAAC,CAAC,CAAA;GAChG,CAAA;EAGD,MAAM3B,kBAAkB,GAAIU,IAAI,IAAK;AACnCA,IAAAA,IAAI,CAAC3G,SAAS,GAAG2G,IAAI,CAAC1G,SAAS,KAAK,QAAQ,GAAG,EAAE,GAAG0G,IAAI,CAAC1G,SAAS,CAAA;GACnE,CAAA;EAED,MAAMmH,UAAU,GAAI7G,CAAC,IAAK;AACxB,IAAA,IAAIA,CAAC,EAAEA,CAAC,CAACiE,cAAc,EAAE,CAAA;AACzBrC,IAAAA,gBAAgB,CAACkB,GAAG,CAAC,IAAI,CAAC,CAAA;AAC1B4C,IAAAA,kBAAkB,CAACpE,cAAc,CAACY,OAAO,CAAC,CAAA;IAC1Cf,SAAS,CAACuC,KAAK,EAAE,CAAA;IACjB,IAAIjI,KAAK,CAACyG,OAAO,EAAE;AACjBD,MAAAA,YAAY,CAACxG,KAAK,CAACyG,OAAO,CAACxC,SAAS,CAAC,CAAA;AACrCjE,MAAAA,KAAK,CAACyG,OAAO,CAACW,SAAS,EAAE,CAAA;AAC3B,KAAA;GACD,CAAA;EAED,MAAMqE,MAAM,GAAIlH,CAAC,IAAK;AACpBxD,IAAAA,WAAW,CAACf,KAAK,CAACyG,OAAO,EAAEK,aAAa,CAAC,CAAA;GAC1C,CAAA;EAED,MAAM4D,kBAAkB,GAAGA,MAAM;IAC/B,OAAO9D,iBAAiB,CAACiF,UAAA,CAAY5G,WAAW,EAACA,WAAW,CAACvD,GAAG,CAAEC,CAAC,IAAGnE,MAAM,CAACnB,QAAQ,CAACyP,iBAAiB,CAACnK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;GAC9G,CAAA;EAED,MAAMoK,UAAU,GAAI9E,IAAI,iBAAK+E,KAAA,CAAA1P,aAAA,CAAC2C,UAAU,EAAA;AACtCoJ,IAAAA,GAAG,EAAEpB,IAAK;IACV3B,QAAQ,EAAE,CAAC,CAAE;IACb2G,OAAO,EAAG1H,CAAC,IAAKkE,WAAW,CAAClE,CAAC,EAAE0C,IAAI,CAAE;IACrCjC,SAAS,EAAE,iDAAiD,IAAI2B,cAAc,CAACM,IAAI,CAAC,GAAG,WAAW,GAAG,EAAE,CAAE;AACzGiF,IAAAA,IAAI,EAAC,QAAA;GAELF,eAAAA,KAAA,CAAA1P,aAAA,CAAA,MAAA,EAAA;IAAM0I,SAAS,EAAE,YAAY,GAAGiC,IAAAA;AAAK,GAAC,CAC5B,CAAC,CAAA;AAEb,EAAA,MAAMkF,eAAe,gBAAGH,KAAA,CAAA1P,aAAA,CAAC4B,iBAAiB,EAAA;AACxCU,IAAAA,SAAS,EAAEA,SAAU;AACrBwN,IAAAA,GAAG,EAAEpK,SAAU;AACfqK,IAAAA,OAAO,EAAE1E,cAAe;AACxBO,IAAAA,MAAM,EAAEH,aAAc;IACtBtJ,KAAK,EAAEuH,gBAAgB,CAACgC,MAAO;IAC/BzJ,WAAW,EAAE,CAACS,QAAQ,GAAG,CAAC6F,eAAe,IAAImB,gBAAgB,CAACgC,MAAO;AACrEhD,IAAAA,SAAS,EAAEA,SAAAA;AAAU,GAAA,eAErBgH,KAAA,CAAA1P,aAAA,CAACkC,cAAc,EAAA;AAACwG,IAAAA,SAAS,EAAC,iBAAA;AAAiB,GAAA,EACxCC,WAAW,CAACvD,GAAG,CAAC,CAACC,CAAC,EAAE2K,CAAC,KAAK3K,CAAC,KAAK,WAAW,gBAAGqK,KAAA,CAAA1P,aAAA,CAAC6C,aAAa,EAAA;AAAC6F,IAAAA,SAAS,EAAC,WAAW;IACrBqD,GAAG,EAAE,YAAY,GAAGiE,CAAAA;AAAE,GAAC,CAAC,GAAGP,UAAU,CAACpK,CAAC,CAAC,CACxF,CAAC,eACjBqK,KAAA,CAAA1P,aAAA,CAACwC,aAAa,EAAA,IAAA,eACZkN,KAAA,CAAA1P,aAAA,CAACiQ,eAAe,EAAA;AACdvH,IAAAA,SAAS,EAAE3F,QAAS;AACpBmN,IAAAA,QAAQ,EAAExM,KAAM;AAChByM,IAAAA,IAAI,EAAElG,SAAS,CAACE,OAAO,IAAI,EAAG;AAC9ByB,IAAAA,MAAM,EAAEA,MAAO;AACf+D,IAAAA,OAAO,EAAEP,WAAY;AACrBgB,IAAAA,OAAO,EAAErB,WAAY;AACrBsB,IAAAA,SAAS,EAAErB,aAAc;AACzBsB,IAAAA,OAAO,EAAErB,eAAgB;AACzBsB,IAAAA,MAAM,EAAEtB,eAAgB;AACxBjG,IAAAA,QAAQ,EAAEA,QAAS;AACnBtG,IAAAA,QAAQ,EAAEA,QAAS;AACnBD,IAAAA,SAAS,EAAEA,SAAU;AACrBgG,IAAAA,WAAW,EAAEA,WAAAA;GACd,CACY,CAAC,EACfrG,MAAM,iBAAIsN,KAAA,CAAA1P,aAAA,CAACZ,SAAS,EAAA;AAACoR,IAAAA,IAAI,EAAC,MAAA;GAAO,CAAC,EAEjCpH,SAAS,CAACsC,MAAM,iBAChBgE,KAAA,CAAA1P,aAAA,CAACyQ,aAAa,EAAA;AACZ/M,IAAAA,KAAK,EAAEA,KAAM;AACb6F,IAAAA,cAAc,EAAEA,cAAe;AAC/BmH,IAAAA,MAAM,EAAE9B,kBAAmB;IAC3BpN,MAAM,EAAE4H,SAAS,CAACsC,MAAO;AACzBoD,IAAAA,UAAU,EAAEA,UAAW;AACvB6B,IAAAA,QAAQ,EAAErC,gBAAAA;AAAiB,GAC5B,CAEc,CAAC,CAAA;AACpB,EAAA,OAAQhG,KAAK,gBACPoH,KAAA,CAAA1P,aAAA,CAAC4Q,KAAK,EAAA;AAACC,IAAAA,UAAU,EAAE1O,KAAM;AAAC2G,IAAAA,QAAQ,EAAEA,QAAS;AAACC,IAAAA,QAAQ,EAAEA,QAAS;AAACT,IAAAA,KAAK,EAAEA,KAAM;AAACO,IAAAA,SAAS,EAAEA,SAAAA;GAC5FgH,EAAAA,eACI,CAAC,GACJA,eAAe,CAAA;AAEvB,EAAC;AAED,MAAMY,aAAa,GAAGK,KAAA,IAAmE;EAAA,IAAlE;IAACJ,MAAM;IAAE5B,UAAU;IAAEvF,cAAc;IAAE7F,KAAK;IAAEiN,QAAQ;AAAEnP,IAAAA,MAAAA;AAAM,GAAC,GAAAsP,KAAA,CAAA;AAClF,EAAA,MAAM1H,SAAS,GAAGI,MAAM,EAAE,CAAA;AAC1B,EAAA,MAAMuH,OAAO,GAAGvH,MAAM,EAAE,CAAA;AACxB,EAAA,MAAMwH,WAAW,GAAGxH,MAAM,EAAE,CAAA;AAC5B,EAAA,MAAMyH,UAAU,GAAGzH,MAAM,EAAE,CAAA;EAC3B,MAAM0H,MAAM,GAAGC,UAAU,CAACC,gBAAgB,CAAC,CAACC,MAAM,CAACnJ,QAAQ,CAAA;EAG3D,MAAMoJ,aAAa,GAAIC,UAAU,IAAK;AACpC,IAAA,IAAIC,MAAM,CAAA;AACV,IAAA,IAAI,CAACD,UAAU,CAAC9C,QAAQ,EAAE;AACxB+C,MAAAA,MAAM,GAAG;AAAC,QAAA,UAAU,EAAE,CAACN,MAAM,CAACO,aAAa,CAAA;OAAE,CAAA;AAC/C,KAAA;IACA,IAAI,CAACF,UAAU,CAAC/C,OAAO,IAAI+C,UAAU,CAAC/C,OAAO,KAAK,GAAG,IAAI,CAACkD,SAAS,CAACC,IAAI,CAACJ,UAAU,CAAC/C,OAAO,CAACc,IAAI,EAAE,CAAC,EAAE;AACnGkC,MAAAA,MAAM,GAAAI,aAAA,CAAAA,aAAA,KAAOJ,MAAM,CAAA,EAAA,EAAA,EAAA;AAAE,QAAA,SAAS,EAAE,CAACN,MAAM,CAACW,YAAY,CAAA;OAAE,CAAA,CAAA;AACxD,KAAA;AACA,IAAA,OAAOL,MAAM,CAAA;GACd,CAAA;EAED,MAAMM,eAAe,GAAI7J,CAAC,IAAK;AAC7B,IAAA,IAAIA,CAAC,CAAC8J,OAAO,KAAK,EAAE,EAAE;MACpB9J,CAAC,CAAC+J,eAAe,EAAE,CAAA;MACnBtB,MAAM,CAACzI,CAAC,CAAC,CAAA;AACX,KAAC,MAAM,IAAIA,CAAC,CAAC8J,OAAO,KAAK,EAAE,EAAE;MAC3B9J,CAAC,CAACiE,cAAc,EAAE,CAAA;MAClBjE,CAAC,CAAC+J,eAAe,EAAE,CAAA;AACnBjB,MAAAA,OAAO,CAAC5G,OAAO,CAAC8H,UAAU,EAAE,CAAA;AAC9B,KAAA;GACD,CAAA;AAED7H,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,MAAMsE,qBAAqB,GAAGnF,cAAc,CAACY,OAAO,CAAA;AACpD,IAAA,MAAM+H,gBAAgB,GAAG9I,SAAS,CAACe,OAAO,CAAA;AAC1C,IAAA,MAAMgI,UAAU,GAAGzD,qBAAqB,CAAC0D,cAAc,EAAE,CAACtO,MAAM,GAAG,CAAC,GAAGJ,KAAK,CAACyO,UAAU,GAAGzD,qBAAqB,CAACyD,UAAU,CAAA;AAC1H,IAAA,MAAME,IAAI,GAAK3D,qBAAqB,CAAC4D,WAAW,GAAI,CAAC,GAAKJ,gBAAgB,CAACI,WAAW,GAAG,CAAE,GAAGH,UAAU,CAAA;IACxG,MAAMI,GAAG,GAAI7D,qBAAqB,CAAC8D,YAAY,GAAI9D,qBAAqB,CAAC+D,SAAS,CAAA;AAClFlL,IAAAA,MAAM,CAACC,MAAM,CAAC0K,gBAAgB,CAACjS,KAAK,EAAE;AACpC,MAAA,UAAU,EAAE,UAAU;MACtB,MAAM,EAAEoS,IAAI,GAAG,IAAI;MACnB,KAAK,EAAEE,GAAG,GAAG,IAAA;AACf,KAAC,CAAC,CAAA;IACF,IAAI/Q,MAAM,CAACiN,QAAQ,EAAE;AACnBwC,MAAAA,UAAU,CAAC9G,OAAO,CAAChI,KAAK,EAAE,CAAA;AAC5B,KAAC,MAAM;AACL6O,MAAAA,WAAW,CAAC7G,OAAO,CAAChI,KAAK,EAAE,CAAA;AAC7B,KAAA;AACA,IAAA,OAAOuO,MAAM,CAAA;GACd,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,oBAAOhB,KAAA,CAAA1P,aAAA,CAAC0S,QAAQ,EAAA;IAACC,OAAO,EAAA,IAAA;AAAC7C,IAAAA,GAAG,EAAEiB,OAAQ;AAAC6B,IAAAA,MAAM,EAAEjC,QAAS;AAACnP,IAAAA,MAAM,EAAEA,MAAO;AAAC8P,IAAAA,aAAa,EAAEA,aAAAA;AAAc,GAAA,EAAEuB,IAAI,iBAC1GnD,KAAA,CAAA1P,aAAA,CAAA,KAAA,EAAA;IAAK2P,OAAO,EAAEqC,eAAe,EAAG;AAAClC,IAAAA,GAAG,EAAE1G,SAAU;AAACiH,IAAAA,SAAS,EAAEyB,eAAgB;AAC1EpJ,IAAAA,SAAS,EAAC,yCAAyC;AAACoK,IAAAA,eAAe,EAAE,KAAA;AAAM,GAAA,eAC3EpD,KAAA,CAAA1P,aAAA,CAAC+S,SAAS,EAAA;AACRjD,IAAAA,GAAG,EAAEkB,WAAY;IACjBnI,SAAS,EAAA,IAAA;AACTT,IAAAA,IAAI,EAAC,UAAU;IACfE,KAAK,EAAE4I,MAAM,CAAC8B,aAAAA;AAAc,GAC7B,CAAC,eACFtD,KAAA,CAAA1P,aAAA,CAAC+S,SAAS,EAAA;AACRjD,IAAAA,GAAG,EAAEmB,UAAW;IAChBpI,SAAS,EAAA,IAAA;AACTT,IAAAA,IAAI,EAAC,SAAS;IACdE,KAAK,EAAE4I,MAAM,CAAC+B,YAAAA;AAAa,GAC5B,CAAC,eACFvD,KAAA,CAAA1P,aAAA,CAAA,KAAA,EAAA;AAAK0I,IAAAA,SAAS,EAAC,cAAA;AAAc,GAAA,eAC3BgH,KAAA,CAAA1P,aAAA,CAAC4C,MAAM,EAAA;AAAC8F,IAAAA,SAAS,EAAC,aAAa;AAAC8H,IAAAA,IAAI,EAAC,QAAQ;AAACb,IAAAA,OAAO,EAAEb,UAAAA;GACpDoC,EAAAA,MAAM,CAACgC,WACF,CAAC,eACTxD,KAAA,CAAA1P,aAAA,CAAC4C,MAAM,EAAA;AAAC+M,IAAAA,OAAO,EAAEe,MAAO;AAAC1H,IAAAA,QAAQ,EAAE,CAAA;GAAIkI,EAAAA,MAAM,CAACiC,WAAoB,CAAC,eACnEzD,KAAA,CAAA1P,aAAA,CAAC4C,MAAM,EAAA;IAACwQ,SAAS,EAAA,IAAA;IAACzD,OAAO,EAAEkD,IAAI,CAACQ,cAAAA;AAAe,GAAA,EAAEnC,MAAM,CAACoC,YAAqB,CAC1E,CAAC,eACN5D,KAAA,CAAA1P,aAAA,CAACuT,MAAM,EAAC,IAAA,CACL,CACI,CAAC,CAAA;AACd,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"RichText.mjs","sources":["../src/RichText.jsx"],"sourcesContent":["import React, {useContext, useEffect, useRef, useState} from 'react'\nimport styled, {css} from 'styled-components'\nimport ContentEditableModule from 'react-contenteditable'\nimport {darken} from 'polished'\nimport _ from 'lodash/fp'\nimport {getColor, linkRegex, stopPropagation} from '@startlibs/utils'\nimport {StartlibsContext, useEnsureRef, useLazyConstant, useToggle, usePopupToggle, useRefState} from '@startlibs/core'\nimport {Errors} from './Errors'\nimport {Field} from './Field'\nimport {WithForm} from './Form'\nimport {TextInput} from './TextInput'\nimport {useInput} from './enhanceInput'\nimport {Button, Icon} from '@startlibs/components'\n\n// Node/esbuild interop em .mjs devolve module.exports; Rollup devolve o default. Cobre os dois.\nconst ContentEditable = ContentEditableModule.default || ContentEditableModule\n\nconst InputIcon = styled(Icon)`\n position: absolute;\n outline: none;\n bottom: 0;\n font-size: 21px;\n line-height: 3rem;\n right: 0;\n width: 2rem;\n pointer-events: none;\n color: ${getColor('gray150')};\n`\n\nconst FORMAT_TOOLS = {\n 'bold': ['b', 'strong'],\n 'italic': 'i',\n 'underline': 'u',\n 'strikethrough': 'strike',\n 'link': 'a',\n 'insertUnorderedList': ['ul', 'li'],\n 'insertOrderedList': ['ol', 'li'],\n 'outdent': '',\n 'indent': 'blockquote',\n 'fontSizeUp': 'font',\n 'fontSizeDown': 'font'\n}\n\nconst TAG_TO_STYLE_PROPERTY = {\n 'b': 'fontWeight',\n 'strong': 'fontWeight',\n 'u': 'textDecoration',\n 'strike': 'textDecoration',\n 'font': 'fontSize',\n 'i': 'fontStyle'\n}\n\nlet GET_LIMITS_FONT_SIZE_PX = () => {\n const s = document.createElement('span')\n s.style.fontSize = 'medium'\n document.body.appendChild(s)\n const fontSize = parseInt(getComputedStyle(s).fontSize)\n document.body.removeChild(s)\n const limits = [fontSize * 3 / 5, fontSize * 3]\n GET_LIMITS_FONT_SIZE_PX = () => limits\n return limits\n}\n\nconst wrapWith = (el,wrapper) => {\n el.parentNode.insertBefore(wrapper, el);\n wrapper.appendChild(el)\n}\n\nconst FIX_STYLE = {\n 'fontWeight': (v, el) => {\n const intFontWeight = parseInt(window.getComputedStyle(el).fontWeight)\n return intFontWeight <= 400 ? 400 : 600\n },\n 'fontSize': (v, el) => {\n const [min, max] = GET_LIMITS_FONT_SIZE_PX()\n const intFontSize = parseInt(window.getComputedStyle(el).fontSize)\n return Math.min(max, Math.max(min, intFontSize)) + 'px'\n },\n 'textDecoration': (v,el) => {\n const values = v.split(' ').filter(v => v === 'underline' || v === 'line-through')\n if (values.indexOf('underline')>=0) {\n wrapWith(el,document.createElement('u'))\n }\n if (values.indexOf('line-through')>=0) {\n wrapWith(el,document.createElement('strike'))\n }\n return ''\n }\n}\n\nexport const RichTextContainer = styled.div`\n position:relative;\n width: 100%;\n border: 1px solid ${getColor('gray210')};\n border-radius: 8px;\n background: white;\n ${props => props.hasErrors && `border-color: ${getColor(props)('alert')}`};\n ${props => props.showToolbar && `\n ${ToolsContainer} {\n transition: 0.5s;\n max-height: 7.5rem;\n transition: 0.6s;\n pointer-events: auto;\n }\n `};\n ${props => props.focus && `\n border-color: ${getColor('gray180')};\n box-shadow: 0px 0px 0px 2px rgba(0,0,0,0.1);\n `}\n ${props => props.locked && css`\n padding-right: 2.25rem;\n background: rgba(0,0,0,0.075);\n `}\n ${props => props.linkColor && css`\n a, a:visited, a:focus, a:active {\n color: ${props.linkColor};\n }\n a:hover {\n color: ${darken(0.05, props.linkColor)};\n }\n `}\n ul {\n list-style-type: disc;\n }\n ul, ol {\n padding-inline-start: 25px;\n margin-block-start: 0.5em;\n margin-block-end: 0.5em;\n }\n`\n\nexport const RichTextInput = styled.div`\n font-size: 14px;\n color: ${getColor('gray60')};\n background: white;\n border-radius: 7px;\n > div {\n overflow: auto;\n width: 100%;\n outline: none;\n min-height: ${props=>props.minHeight || 60}px;\n padding: 0.7rem;\n }\n b, strong {\n font-weight: 600;\n }\n a {\n text-decoration: underline;\n }\n > div[contenteditable=true]:empty:before {\n content: attr(placeholder);\n color: rgba(0,0,0,0.3);\n }\n ${props => props.disabled && `\n &[disabled] {\n background: rgba(0, 0, 0, 0.075) !important;\n opacity: 0.75 !important;\n }\n `}\n`\n\nconst ToolsContainer = styled.div`\n background: ${getColor('lightBluishGray')};\n padding: 0 0.125rem;\n border-top-left-radius: 7px;\n border-top-right-radius: 7px;\n transition: 0.225s;\n max-height: 0;\n pointer-events: none;\n overflow: hidden;\n display: flex;\n align-items: center;\n`\n\nconst ToolButton = styled(Button)`\n min-height: 2rem;\n min-width: 2rem;\n background: transparent;\n box-shadow: none;\n margin: 0.25rem 0.125rem;\n & ~ & {\n margin-left: 0.125rem;\n }\n .icon {\n font-size: 23px;\n color: ${getColor('gray90')};\n position: absolute;\n top: 50%;\n left: 50%;\n -webkit-transform: translate(-50%,-50%);\n transform: translate(-50%,-50%);\n }\n &:hover, &.activated:hover {\n background: rgba(0,0,0,0.11);\n }\n &.activated {\n background: rgba(0,0,0,0.09);\n }\n &:focus:after {\n content: none;\n }\n`\n\nconst ToolSeparator = styled.span`\n border-left: 1px solid rgba(0,0,0,0.1);\n margin-left: 0.75rem;\n margin-right: 0.5rem;\n height: 1.5rem;\n`\n\nconst JS_CLASS = \"EDITOR--JS\"\n\nconst getNextRegularCharIndex = (text, offset, direction) => {\n const regex = /[A-Za-z0-9ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏàáâãäåæçèéêëìíîïÐÑÒÓÔÕÖØÙÚÛÜÝÞßðñòóôõöøùúûüýþÿ]/g\n let cursor = offset\n while ((text[cursor + direction] || '').match(regex)) {\n cursor += direction\n }\n return cursor\n}\n\nconst addHttp = (s) => {\n s = s.replace(/^\\s/, '')\n if (s.indexOf('http://') === 0 || s.indexOf('https://') === 0) {\n return s\n } else {\n return 'http://' + s\n }\n}\n\nconst getRightMostElement = (node) => {\n if (node.childNodes.length) {\n return getRightMostElement(node.childNodes[node.childNodes.length - 1])\n } else {\n return node\n }\n}\n\nconst setSelectionRange = (input, selectionStart, selectionEnd = 0) => {\n if (!input) return\n let range = document.createRange()\n let sel = window.getSelection()\n range.setStart(input, selectionStart)\n if (selectionEnd) {\n range.setEnd(input, selectionEnd)\n } else {\n range.collapse(true)\n }\n sel.removeAllRanges()\n sel.addRange(range)\n}\n\nconst cleanEditor = (editor, acceptedTags) => {\n Array.prototype.slice.call(editor.querySelectorAll('.Apple-interchange-newline')).forEach(el => el.remove())\n Array.prototype.slice.call(editor.querySelectorAll('iframe')).forEach(el => el.remove())\n\n const acceptedStyles = acceptedTags.map(t => TAG_TO_STYLE_PROPERTY[t]).filter(_.identity)\n\n const newSpace = document.createTextNode('\\u00A0')\n if (window.getSelection().rangeCount) {\n const container = window.getSelection().getRangeAt(0).startContainer\n if (container.nodeType === 3) {\n container.parentNode.insertBefore(newSpace, container.nextSibling)\n } else {\n container.appendChild(newSpace)\n }\n if (newSpace.previousSibling && newSpace.previousSibling.textContent === '\\u00A0') {\n newSpace.previousSibling.remove()\n }\n setSelectionRange(newSpace, 0)\n }\n\n const clean = (children) => {\n Array.prototype.slice.call(children).forEach(el => {\n try {\n if (el.nodeType === 3)\n return\n if (!el.tagName) {\n el.remove()\n return\n }\n let tagName = el.tagName.toLowerCase()\n const style = getComputedStyle(el)\n const rect = el.getBoundingClientRect()\n const isHidden = style.display === 'none' || rect.width === 0 || rect.height === 0\n if (isHidden && (el.children && !el.children.length) && tagName !== 'br') {\n el.remove()\n } else if (acceptedTags.indexOf(tagName) >= 0) {\n clean(el.childNodes)\n el.removeAttribute('class')\n if (tagName === 'a') {\n el.setAttribute('target', '_blank')\n }\n if (el.getAttribute('style')) {\n const usedStyles = _.toPairs(_.pick(acceptedStyles, el.style)).filter(([k, v]) => v !== \"\")\n const fixedStyle = _.fromPairs(usedStyles.map(([k, v]) => [k, (FIX_STYLE[k] || _.identity)(v, el)]))\n el.removeAttribute('style')\n Object.assign(el.style, fixedStyle)\n }\n } else if (tagName === 'a') {\n clean(el.childNodes)\n if (el.textContent !== el.href || el.textContent.length < 5)\n el.outerHTML = el.innerHTML\n } else {\n clean(el.childNodes)\n if (el.hasChildNodes()) {\n const newTagName = style.display === 'inline' ? 'span' : 'div'\n const newEl = document.createElement(newTagName)\n Array.prototype.slice.call(el.childNodes).forEach(child => newEl.appendChild(child))\n el.parentNode.replaceChild(newEl, el)\n } else {\n el.remove()\n }\n }\n } catch (e) {\n if (el && el.remove)\n el.remove()\n }\n })\n }\n clean(editor.childNodes)\n}\n\nconst insertToken = (node, offset) => {\n const parent = node.parentNode\n const token = document.createElement(\"span\")\n if (node.nodeType === Node.TEXT_NODE) {\n const splitted = node.splitText(offset)\n parent.insertBefore(token, splitted)\n } else {\n parent.insertBefore(token, node)\n }\n return token\n}\n\n/*\n* pagely reformat\n .replace(/^[a-z]/, function (e) {\n return e.toUpperCase()\n })\n* */\n\nconst parseAndExecCommand = (c) => {\n if (c === \"strikethrough\" || c === \"underline\") {\n document.execCommand('styleWithCSS', false, false)\n } else {\n document.execCommand('styleWithCSS', false, true)\n }\n if (c.indexOf('fontSize') === 0) {\n const direction = c.indexOf('Up') > 0 ? 1 : -1\n const newValue = Math.min(7, Math.max(1, parseInt(document.queryCommandValue('fontSize') || 3) + direction))\n document.execCommand('fontSize', false, newValue)\n } else {\n const sanitizedCommand = (c.indexOf(\"List\") >= 0 && document.queryCommandState(c)) ? 'outdent' : c // FIX CHROME HANGS when list is called and already active\n\n document.execCommand(sanitizedCommand)\n }\n}\n\nexport const RichText = ({path, inputRef, label, autoHideToolbar, autoFocus, disabled, minHeight, placeholder, className, formatTools = ['bold', 'italic', 'underline', 'strikethrough', 'separator', 'link'], reformatText = _.identity, mandatory, descText, helpText, linkColor, tabIndex = 1, value, setValue,raw, locked}) => {\n\n const linkPopup = usePopupToggle()\n\n const input = useEnsureRef(inputRef)\n const activeLinkNode = useRef()\n const container = useRef()\n const linkJustCreated = useRefState()\n\n // auto-hide needs\n const startSelectionToken = useRefState()\n const endSelectionToken = useRefState()\n const commands = useRefState([])\n const containerFocused = useToggle()\n\n const needsNormalize = useRefState()\n const alreadyCancelled = useRefState()\n\n // const [formValue, setFormValue] = useInput({path})\n const [formValue, _setFormValue, {hasErrors}] = useInput({path,value,setValue},raw)\n\n // const tempValue = useConstant(formValue)\n const tempValue = useRef(formValue)\n const setFormValue = (v) => {\n tempValue.current = v\n _setFormValue(v)\n }\n\n useEffect(() => {\n if((value === formValue) && (formValue !== tempValue)){\n tempValue.current = formValue\n }\n },[path])\n\n const [activatedTools, setActivatedTools] = useState({})\n\n const validElements = useLazyConstant(() => ['br', 'div', 'p', 'span'].concat(_.flatten(formatTools.map(tool => FORMAT_TOOLS[tool] || []))))\n\n useEffect(() => {\n cleanEditor(input.current, validElements)\n }, [])\n\n const focus = () => input.current && input.current.focus()\n\n // Foco inicial opcional (ex.: abrir a dialog já no campo de descrição). Em\n // rAF pra rodar depois que a dialog termina de montar e não perder o foco.\n useEffect(() => {\n if (autoFocus) {\n requestAnimationFrame(focus)\n }\n }, [])\n\n useEffect(() => {\n if (needsNormalize.get()) {\n input.current.normalize()\n needsNormalize.set(false)\n }\n })\n\n const triggerScrollForPanel = (d) => {\n requestAnimationFrame((time) => {\n if (time > d + 250) return\n window.dispatchEvent(new Event('scroll'))\n triggerScrollForPanel(d)\n }\n )\n }\n\n const containerFocus = () => {\n containerFocused.openWith(2)\n triggerScrollForPanel(Date.now())\n }\n\n const containerBlur = (e) => {\n if (containerFocused.isOpen !== 1) {\n containerFocused.close()\n triggerScrollForPanel(Date.now())\n }\n }\n\n\n const onBlur = (e) => {\n const newValue = input.current.textContent.length === 0 ? '' : input.current.innerHTML\n // Só reescreve se o conteúdo mudou de fato: focar/desfocar sem editar não pode\n // marcar o form como alterado (senão dispara a confirmação de descarte à toa).\n // textContent vazio equivale a valor ausente/'' do form.\n if (newValue !== (formValue || '')) {\n setFormValue(newValue)\n }\n }\n\n const keydownHandler = (e) => {\n if (containerFocused.isOpen === 2){\n if (formatTools.indexOf('link') < 0) {\n return\n }\n if((e.key === \"k\" && e.ctrlKey) || (e.key === \"k\" && e.metaKey)){\n e.preventDefault();\n execCommand(null,'link')\n }\n }\n }\n\n useEffect(() => {\n document.addEventListener('keydown',keydownHandler);\n return () => document.removeEventListener('keydown',keydownHandler);\n }, [containerFocused.isOpen])\n\n const execCommand = (e, command) => {\n if (command === 'link') {\n let nodeEl\n if (!isSelectionInsideRichTextEditor()) {\n let anchor = document.createElement('a')\n anchor.innerHTML = '​'\n input.current.appendChild(anchor)\n nodeEl = anchor\n } else {\n const range = window.getSelection().getRangeAt(0)\n const selectedNode = range.startContainer\n if (range.collapsed) {\n const start = getNextRegularCharIndex(selectedNode.textContent, range.startOffset, -1)\n const end = getNextRegularCharIndex(selectedNode.textContent, range.startOffset - 1, 1)\n if (start < range.startOffset && end > range.startOffset - 1) {\n range.setStart(selectedNode, start)\n range.setEnd(selectedNode, end + 1)\n }\n }\n const selectedEl = selectedNode.nodeType === Node.TEXT_NODE ? selectedNode.parentNode : selectedNode\n const parent = selectedEl.closest('a,.'+JS_CLASS)\n if (parent && parent.matches('a')) {\n nodeEl = parent\n } else {\n let anchor = document.createElement('a')\n anchor.innerHTML = '​'\n if (range.collapsed) {\n range.insertNode(anchor)\n } else {\n if (range.commonAncestorContainer === input.current) {\n range.setStart(range.endContainer,0)\n }\n document.execCommand('createLink', false, '_')\n anchor = window.getSelection().anchorNode\n }\n const parent = range.commonAncestorContainer.nodeType === 3 ? range.commonAncestorContainer.parentNode : range.commonAncestorContainer\n const links = parent.querySelectorAll(\"a[href='_']\")\n Array.from(links).slice(0,-1).forEach(removeLinkFromNode)\n nodeEl = _.last(links)\n nodeEl.setAttribute('href', ' ')\n }\n }\n tempValue.current = input.current.innerHTML\n openDialog(nodeEl)\n } else {\n if (!isSelectionInsideRichTextEditor()) {\n input.current.focus()\n const last = document.createTreeWalker(input.current, NodeFilter.SHOW_TEXT).lastChild()\n const range = document.createRange()\n range.selectNodeContents(last || input.current)\n range.collapse(false)\n const sel = window.getSelection()\n sel.removeAllRanges()\n sel.addRange(range)\n }\n document.execCommand(command)\n setFormValue(input.current.innerHTML)\n toggleButtonsState()\n focus()\n }\n }\n\n const isSelectionInsideRichTextEditor = () => {\n const range = window.getSelection().getRangeAt(0)\n if (!range) return false\n const el = range.startContainer\n if (!el) return false\n const node = el.closest ? el : (el.parentNode || document.body)\n return node.closest('.'+JS_CLASS) === input.current\n }\n\n\n const saveRichTextLink = ({linkUrl, linkText}) => {\n const currentActiveLinkNode = activeLinkNode.current\n currentActiveLinkNode.setAttribute('href', addHttp(linkUrl))\n currentActiveLinkNode.setAttribute('target', '_blank')\n if (currentActiveLinkNode.textContent !== linkText) {\n currentActiveLinkNode.innerText = linkText\n }\n linkPopup.close()\n setSelectionRange(currentActiveLinkNode.lastChild, currentActiveLinkNode.textContent.length, 0)\n focus()\n setFormValue(input.current.innerHTML)\n }\n\n const cancelRichTextLink = (e) => {\n if (alreadyCancelled.get()) return\n const currentActiveLinkNode = activeLinkNode.current\n const span = document.createElement('span')\n if (currentActiveLinkNode.nextSibling)\n (currentActiveLinkNode.parentNode).insertBefore(span, currentActiveLinkNode.nextSibling)\n else\n (currentActiveLinkNode.parentNode).append(span)\n setSelectionRange(span, 0, 0)\n focus()\n if (currentActiveLinkNode.getAttribute('href') === ' ') {\n removeLink(e)\n }\n alreadyCancelled.set(true)\n span.remove()\n if (input.current) {\n input.current.normalize()\n } else {\n needsNormalize.set(true)\n }\n linkPopup.close()\n }\n\n const handleKeyUp = (e) => {\n toggleButtonsState()\n setFormValue(reformatText(input.current.innerHTML))\n }\n\n const handleKeyDown = (e) => {\n /*if (linkJustCreated.current && e.which === 8) {\n linkJustCreated.current.outerHTML = linkJustCreated.current.innerHTML\n input.current.normalize()\n return\n }\n commands.set([])\n linkJustCreated.set(null)\n const selectedRange = window.getSelection().getRangeAt(0)\n if (!selectedRange) return\n const possibleTextNode = selectedRange.startContainer\n const node = possibleTextNode.nodeType === Node.TEXT_NODE ? possibleTextNode.parentNode : possibleTextNode\n const parent = node.closest('a,.'+JS_CLASS)\n if ((e.key === 'Enter' || e.which === 32) && parent && parent.matches('.'+JS_CLASS)) {\n const range = document.createRange()\n range.setEnd(selectedRange.startContainer, selectedRange.startOffset)\n range.setStart(selectedRange.startContainer, 0)\n traverseAndAddLink(range)\n }*/\n }\n\n const traverseAndAddLink = (range) => {\n const match = range.toString().match(/[\\s\\t\\n\\r]([^\\s\\t\\n\\r]*)$/)\n if (match) {\n if ((/^(https?:\\/\\/|www\\.)/).test(match[1]) && linkRegex.test(match[1])) {\n range.setStart(range.startContainer, (match).index + 1);\n (range.endContainer).splitText(range.endContainer.textContent.length - 1)\n const newNode = document.createElement('a')\n newNode.href = match[1]\n newNode.appendChild(range.extractContents())\n range.insertNode(newNode)\n window.getSelection().getRangeAt(0).setEndAfter(newNode)\n window.getSelection().getRangeAt(0).setStartAfter(newNode)\n linkJustCreated.set(newNode)\n }\n } else {\n const previous = getPreviousElement(range.startContainer)\n if (previous) {\n range.setStart(previous, 0)\n traverseAndAddLink(range)\n }\n }\n }\n\n const getPreviousElement = (node) => {\n if (node.previousSibling) {\n const rightMost = getRightMostElement(node.previousSibling)\n if (rightMost.nodeType === Node.TEXT_NODE) {\n return rightMost\n } else {\n return getPreviousElement(rightMost)\n }\n } else if (node.parentNode && node !== input.current) {\n return getPreviousElement(node.parentNode)\n } else {\n return null\n }\n }\n\n const handlePasteDrop = (e) => setTimeout(() => pasted(e), 1)\n\n const handleClick = (e) => {\n toggleButtonsState()\n const el = e.target.closest('a,.'+JS_CLASS)\n if (el && el.matches('a') && el.getAttribute('href')) {\n openDialog(el)\n }\n }\n\n const openDialog = (el) => {\n activeLinkNode.current = el\n alreadyCancelled.set(false)\n linkPopup.openWith({linkText: el.textContent, linkUrl: (el.getAttribute('href') || '').trim()})\n }\n\n\n const removeLinkFromNode = (node) => {\n node.outerHTML = node.innerHTML === '\\u200b' ? '' : node.innerHTML\n }\n\n const removeLink = (e) => {\n if (e) e.preventDefault()\n alreadyCancelled.set(true)\n removeLinkFromNode(activeLinkNode.current)\n linkPopup.close()\n if (input.current) {\n setFormValue(input.current.innerHTML)\n input.current.normalize()\n }\n }\n\n const pasted = (e) => {\n cleanEditor(input.current, validElements)\n }\n\n const toggleButtonsState = () => {\n return setActivatedTools(_.zipObject(formatTools,formatTools.map((t)=>window.document.queryCommandState(t))))\n }\n\n const toolButton = (tool) => <ToolButton\n key={tool}\n tabIndex={-1}\n onClick={(e) => execCommand(e, tool)}\n className={'button exec-command rich-text-button only-icon ' + (activatedTools[tool] ? 'activated' : '')}\n type=\"button\"\n >\n <span className={'icon icon-' + tool}/>\n </ToolButton>\n\n const richTextElement = <RichTextContainer\n linkColor={linkColor}\n ref={container}\n onFocus={containerFocus}\n onBlur={containerBlur}\n focus={containerFocused.isOpen}\n showToolbar={!disabled & !autoHideToolbar || containerFocused.isOpen}\n className={className}\n >\n <ToolsContainer className=\"rich-text-tools\">\n {formatTools.map((t, i) => t === 'separator' ? <ToolSeparator className=\"separator\"\n key={\"separator-\" + i}/> : toolButton(t))}\n </ToolsContainer>\n <RichTextInput>\n <ContentEditable\n className={JS_CLASS}\n innerRef={input}\n html={tempValue.current || \"\"}\n onBlur={onBlur}\n onClick={handleClick}\n onKeyUp={handleKeyUp}\n onKeyDown={handleKeyDown}\n onPaste={handlePasteDrop}\n onDrop={handlePasteDrop}\n tabIndex={tabIndex}\n disabled={disabled}\n minHeight={minHeight}\n placeholder={placeholder}\n />\n </RichTextInput>\n {locked && <InputIcon icon=\"lock\"/>}\n {\n linkPopup.isOpen &&\n <EditLinkPopup\n input={input}\n activeLinkNode={activeLinkNode}\n cancel={cancelRichTextLink}\n values={linkPopup.isOpen}\n removeLink={removeLink}\n saveLink={saveRichTextLink}\n />\n }\n </RichTextContainer>\n return (label\n ? <Field labelClick={focus} descText={descText} helpText={helpText} label={label} mandatory={mandatory}>\n {richTextElement}\n </Field>\n : richTextElement\n )\n}\n\nconst EditLinkPopup = ({cancel, removeLink, activeLinkNode, input, saveLink, values}) => {\n const linkPopup = useRef()\n const formRef = useRef()\n const linkTextRef = useRef()\n const linkUrlRef = useRef()\n const LABELS = useContext(StartlibsContext).labels.RichText\n\n\n const preValidation = (formValues) => {\n let errors\n if (!formValues.linkText) {\n errors = {'linkText': [LABELS.linkTextError]}\n }\n if (!formValues.linkUrl || formValues.linkUrl === ' ' || !linkRegex.test(formValues.linkUrl.trim())) {\n errors = {...errors, 'linkUrl': [LABELS.linkUrlError]}\n }\n return errors\n }\n\n const checkEscOrEnter = (e) => {\n if (e.keyCode === 27) {\n e.stopPropagation()\n cancel(e)\n } else if (e.keyCode === 13) {\n e.preventDefault()\n e.stopPropagation()\n formRef.current.submitForm()\n }\n }\n\n useEffect(() => {\n const currentActiveLinkNode = activeLinkNode.current\n const currentLinkPopup = linkPopup.current\n const offsetLeft = currentActiveLinkNode.getClientRects().length > 1 ? input.offsetLeft : currentActiveLinkNode.offsetLeft\n const left = ((currentActiveLinkNode.offsetWidth) / 2) - (currentLinkPopup.offsetWidth / 2) + offsetLeft\n const top = (currentActiveLinkNode.offsetHeight) + currentActiveLinkNode.offsetTop\n Object.assign(currentLinkPopup.style, {\n 'position': 'absolute',\n 'left': left + 'px',\n 'top': top + 'px'\n })\n if (values.linkText) {\n linkUrlRef.current.focus()\n } else {\n linkTextRef.current.focus()\n }\n return cancel\n }, [])\n\n return <WithForm skipDom ref={formRef} action={saveLink} values={values} preValidation={preValidation}>{form =>\n <div onClick={stopPropagation()} ref={linkPopup} onKeyDown={checkEscOrEnter}\n className=\"popup rich-text-link-editor ignore-link\" contentEditable={false}>\n <TextInput\n ref={linkTextRef}\n mandatory\n path=\"linkText\"\n label={LABELS.popupLinkText}\n />\n <TextInput\n ref={linkUrlRef}\n mandatory\n path=\"linkUrl\"\n label={LABELS.popupLinkUrl}\n />\n <div className=\"popup-footer\">\n <Button className=\"remove-link\" icon=\"remove\" onClick={removeLink}>\n {LABELS.popupRemove}\n </Button>\n <Button onClick={cancel} tabIndex={0}>{LABELS.popupCancel}</Button>\n <Button highlight onClick={form.willSubmitForm}>{LABELS.popupConfirm}</Button>\n </div>\n <Errors/>\n </div>\n }</WithForm>\n}"],"names":["ContentEditable","ContentEditableModule","default","InputIcon","styled","Icon","withConfig","displayName","componentId","getColor","FORMAT_TOOLS","TAG_TO_STYLE_PROPERTY","GET_LIMITS_FONT_SIZE_PX","s","document","createElement","style","fontSize","body","appendChild","parseInt","getComputedStyle","removeChild","limits","wrapWith","el","wrapper","parentNode","insertBefore","FIX_STYLE","fontWeight","v","intFontWeight","window","min","max","intFontSize","Math","textDecoration","values","split","filter","indexOf","RichTextContainer","div","props","hasErrors","concat","showToolbar","ToolsContainer","focus","locked","css","linkColor","darken","RichTextInput","minHeight","disabled","ToolButton","Button","ToolSeparator","span","JS_CLASS","getNextRegularCharIndex","text","offset","direction","regex","cursor","match","addHttp","replace","setSelectionRange","input","selectionStart","selectionEnd","arguments","length","undefined","range","createRange","sel","getSelection","setStart","setEnd","collapse","removeAllRanges","addRange","cleanEditor","editor","acceptedTags","Array","prototype","slice","call","querySelectorAll","forEach","remove","acceptedStyles","map","t","_identity","newSpace","createTextNode","rangeCount","container","getRangeAt","startContainer","nodeType","nextSibling","previousSibling","textContent","clean","children","tagName","toLowerCase","rect","getBoundingClientRect","isHidden","display","width","height","childNodes","removeAttribute","setAttribute","getAttribute","usedStyles","_toPairs","_pick","_ref","k","fixedStyle","_fromPairs","_ref2","Object","assign","href","outerHTML","innerHTML","hasChildNodes","newTagName","newEl","child","replaceChild","e","RichText","_ref3","path","inputRef","label","autoHideToolbar","autoFocus","placeholder","className","formatTools","reformatText","mandatory","descText","helpText","tabIndex","value","setValue","raw","linkPopup","usePopupToggle","useEnsureRef","activeLinkNode","useRef","useRefState","containerFocused","useToggle","needsNormalize","alreadyCancelled","formValue","_setFormValue","useInput","tempValue","setFormValue","current","useEffect","activatedTools","setActivatedTools","useState","validElements","useLazyConstant","_flatten","tool","requestAnimationFrame","get","normalize","set","triggerScrollForPanel","d","time","dispatchEvent","Event","containerFocus","openWith","Date","now","containerBlur","isOpen","close","onBlur","newValue","keydownHandler","key","ctrlKey","metaKey","preventDefault","execCommand","addEventListener","removeEventListener","command","nodeEl","isSelectionInsideRichTextEditor","anchor","selectedNode","collapsed","start","startOffset","end","selectedEl","Node","TEXT_NODE","parent","closest","matches","insertNode","commonAncestorContainer","endContainer","anchorNode","links","from","removeLinkFromNode","_last","openDialog","last","createTreeWalker","NodeFilter","SHOW_TEXT","lastChild","selectNodeContents","toggleButtonsState","node","saveRichTextLink","_ref4","linkUrl","linkText","currentActiveLinkNode","innerText","cancelRichTextLink","append","removeLink","handleKeyUp","handleKeyDown","handlePasteDrop","setTimeout","pasted","handleClick","target","trim","_zipObject","queryCommandState","toolButton","React","onClick","type","richTextElement","ref","onFocus","i","innerRef","html","onKeyUp","onKeyDown","onPaste","onDrop","icon","EditLinkPopup","cancel","saveLink","Field","labelClick","_ref5","formRef","linkTextRef","linkUrlRef","LABELS","useContext","StartlibsContext","labels","preValidation","formValues","errors","linkTextError","linkRegex","test","_objectSpread","linkUrlError","checkEscOrEnter","keyCode","stopPropagation","submitForm","currentLinkPopup","offsetLeft","getClientRects","left","offsetWidth","top","offsetHeight","offsetTop","WithForm","skipDom","action","form","contentEditable","TextInput","popupLinkText","popupLinkUrl","popupRemove","popupCancel","highlight","willSubmitForm","popupConfirm","Errors"],"mappings":"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"}
|