@startlibs/form 1.1.3 → 1.2.0-rc.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 +7 -7
- package/lib/AutoComplete.mjs.map +1 -1
- package/lib/Checkbox.mjs +4 -2
- package/lib/Checkbox.mjs.map +1 -1
- package/lib/Combobox.mjs +1 -1
- package/lib/Combobox.mjs.map +1 -1
- package/lib/DatePicker.mjs +25 -9
- package/lib/DatePicker.mjs.map +1 -1
- package/lib/Errors.mjs +20 -10
- package/lib/Errors.mjs.map +1 -1
- package/lib/ExpandableBox.mjs +1 -1
- package/lib/ExpandableBox.mjs.map +1 -1
- package/lib/Field.mjs +10 -5
- package/lib/Field.mjs.map +1 -1
- package/lib/FieldBox.mjs +3 -3
- package/lib/FieldBox.mjs.map +1 -1
- package/lib/InputboxGroup.mjs +1 -1
- package/lib/InputboxGroup.mjs.map +1 -1
- package/lib/RichText.mjs +11 -6
- package/lib/RichText.mjs.map +1 -1
- package/lib/TextInput.mjs +4 -4
- package/lib/TextInput.mjs.map +1 -1
- package/lib/alt/checkbox/SimpleCheckbox.mjs +1 -1
- package/lib/alt/checkbox/SimpleCheckbox.mjs.map +1 -1
- package/lib/alt/checkbox/ToggleCheckbox.mjs +4 -3
- package/lib/alt/checkbox/ToggleCheckbox.mjs.map +1 -1
- package/lib/alt/radiobox/CleanTabRadiobox.mjs +1 -1
- package/lib/alt/radiobox/CleanTabRadiobox.mjs.map +1 -1
- package/lib/alt/radiobox/SimpleRadiobox.mjs +2 -2
- package/lib/alt/radiobox/SimpleRadiobox.mjs.map +1 -1
- package/lib/alt/radiobox/TabRadiobox.mjs +1 -1
- package/lib/alt/radiobox/TabRadiobox.mjs.map +1 -1
- package/lib/index.cjs +94 -51
- package/lib/index.cjs.map +1 -1
- package/lib/index.mjs +2 -2
- package/lib/withFormImageInput.mjs +1 -1
- package/lib/withFormImageInput.mjs.map +1 -1
- package/lib-yak/AutoComplete.mjs +705 -0
- package/lib-yak/AutoComplete.mjs.map +1 -0
- package/lib-yak/Checkbox.mjs +80 -0
- package/lib-yak/Checkbox.mjs.map +1 -0
- package/lib-yak/Combobox.mjs +652 -0
- package/lib-yak/Combobox.mjs.map +1 -0
- package/lib-yak/ComboboxWithCustom.mjs +77 -0
- package/lib-yak/ComboboxWithCustom.mjs.map +1 -0
- package/lib-yak/DatePicker.mjs +774 -0
- package/lib-yak/DatePicker.mjs.map +1 -0
- package/lib-yak/EditableBox.mjs +495 -0
- package/lib-yak/EditableBox.mjs.map +1 -0
- package/lib-yak/Errors.mjs +226 -0
- package/lib-yak/Errors.mjs.map +1 -0
- package/lib-yak/ExpandableBox.mjs +247 -0
- package/lib-yak/ExpandableBox.mjs.map +1 -0
- package/lib-yak/Field.mjs +93 -0
- package/lib-yak/Field.mjs.map +1 -0
- package/lib-yak/FieldBox.mjs +173 -0
- package/lib-yak/FieldBox.mjs.map +1 -0
- package/lib-yak/Form.mjs +322 -0
- package/lib-yak/Form.mjs.map +1 -0
- package/lib-yak/FormValue.mjs +111 -0
- package/lib-yak/FormValue.mjs.map +1 -0
- package/lib-yak/InputboxGroup.mjs +146 -0
- package/lib-yak/InputboxGroup.mjs.map +1 -0
- package/lib-yak/Radiobox.mjs +69 -0
- package/lib-yak/Radiobox.mjs.map +1 -0
- package/lib-yak/RichText.mjs +776 -0
- package/lib-yak/RichText.mjs.map +1 -0
- package/lib-yak/TextInput.mjs +589 -0
- package/lib-yak/TextInput.mjs.map +1 -0
- package/lib-yak/alt/checkbox/SimpleCheckbox.mjs +225 -0
- package/lib-yak/alt/checkbox/SimpleCheckbox.mjs.map +1 -0
- package/lib-yak/alt/checkbox/ToggleCheckbox.mjs +173 -0
- package/lib-yak/alt/checkbox/ToggleCheckbox.mjs.map +1 -0
- package/lib-yak/alt/radiobox/CleanTabRadiobox.mjs +87 -0
- package/lib-yak/alt/radiobox/CleanTabRadiobox.mjs.map +1 -0
- package/lib-yak/alt/radiobox/IconRadioBox.mjs +138 -0
- package/lib-yak/alt/radiobox/IconRadioBox.mjs.map +1 -0
- package/lib-yak/alt/radiobox/SimpleRadiobox.mjs +203 -0
- package/lib-yak/alt/radiobox/SimpleRadiobox.mjs.map +1 -0
- package/lib-yak/alt/radiobox/TabRadiobox.mjs +117 -0
- package/lib-yak/alt/radiobox/TabRadiobox.mjs.map +1 -0
- package/lib-yak/enhanceInput.mjs +131 -0
- package/lib-yak/enhanceInput.mjs.map +1 -0
- package/lib-yak/index.mjs +28 -0
- package/lib-yak/index.mjs.map +1 -0
- package/lib-yak/useConfirmDialog.mjs +117 -0
- package/lib-yak/useConfirmDialog.mjs.map +1 -0
- package/lib-yak/useDraftConfirmation.mjs +56 -0
- package/lib-yak/useDraftConfirmation.mjs.map +1 -0
- package/lib-yak/validation.mjs +91 -0
- package/lib-yak/validation.mjs.map +1 -0
- package/lib-yak/withFormImageInput.mjs +298 -0
- package/lib-yak/withFormImageInput.mjs.map +1 -0
- package/package.json +13 -3
- package/src/AutoComplete.jsx +12 -12
- package/src/Checkbox.jsx +2 -2
- package/src/Combobox.jsx +1 -1
- package/src/DatePicker.jsx +25 -22
- package/src/Errors.jsx +18 -8
- package/src/ExpandableBox.jsx +3 -3
- package/src/Field.jsx +9 -4
- package/src/FieldBox.jsx +6 -6
- package/src/IconRadioBoxOldHubt.jsx +1 -1
- package/src/InputboxGroup.jsx +1 -1
- package/src/RichText.jsx +17 -13
- package/src/TextInput.jsx +37 -26
- package/src/alt/checkbox/SimpleCheckbox.jsx +5 -5
- package/src/alt/checkbox/ToggleCheckbox.jsx +9 -8
- package/src/alt/radiobox/CleanTabRadiobox.jsx +2 -2
- package/src/alt/radiobox/SimpleRadiobox.jsx +7 -7
- package/src/alt/radiobox/TabRadiobox.jsx +4 -4
- package/src/withFormImageInput.jsx +2 -2
|
@@ -0,0 +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 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\n// Precisa vir antes de RichTextContainer: o yak resolve `${ToolsContainer}` (seletor dentro de\n// props.showToolbar) estaticamente lendo o módulo de cima pra baixo — em tempo de execução\n// (sc) a ordem nunca importou, já que o template só lê ToolsContainer dentro de um callback\n// (props => ...), chamado bem depois do módulo inteiro já ter sido avaliado.\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\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 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","__yakProps","v","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","intFontWeight","window","min","max","intFontSize","Math","textDecoration","values","split","filter","indexOf","ToolsContainer","yakDomTag","RichTextContainer","attrs","className","props","hasErrors","css","showToolbar","focus","locked","linkColor","darken","RichTextInput","minHeight","disabled","ToolButton","Button","ToolSeparator","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","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","concat","_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","span","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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"}
|