@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":"withFormImageInput.mjs","sources":["../src/withFormImageInput.jsx"],"sourcesContent":["import React, {useContext, useState} from 'react'\nimport styled from 'styled-components'\nimport {FormContext, useFormValue} from './Form'\nimport {useToggle} from '@startlibs/core'\nimport {getUID, callIfFunction} from '@startlibs/utils'\nimport _ from 'lodash/fp'\n\nexport const FileInput = styled.input.attrs({type: 'file'})`\n z-index: 1;\n cursor: pointer;\n opacity: 0;\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n &::-webkit-file-upload-button {\n visibility: hidden;\n }\n &::file-upload-button {\n visibility: hidden;\n }\n `\n\n\nexport const WithImageInput = ({children, multiple, path = [\"image\"], preValidation = _.stubFalse, onChangeFile, onClose, onClick, uploadFetcher, onSuccess, onFailure, ajaxError, onTouchEnd, ...rest}) => {\n const form = useContext(FormContext)\n const loading = useToggle()\n const [tempImage, setTempImage] = useState()\n const getPath = (str,fileIndex = 0) => typeof path === 'function' ? [].concat(path(str,fileIndex)) : str !== 'image' ? [].concat(path).slice(0, -1).concat(str) : path\n\n const imagePath = getPath('image')\n const [formImage] = useFormValue(imagePath)\n const image = tempImage || formImage\n\n const validate = (files) => {\n const validations = files.map(preValidation).filter(Boolean)\n if (validations.length) {\n validations.forEach(v =>\n form.setError(getPath('image').join('.'), v)\n )\n return files.filter((file) => !preValidation(file))\n }\n return files\n }\n\n const handleFileEvent = (e) => {\n e.preventDefault()\n callIfFunction(onClose)\n const files = Array.from((e.nativeEvent.dataTransfer || e.nativeEvent.target).files)\n if (files.length > 0) {\n validate(files.slice(0,multiple ? undefined : 1)).forEach( (file,i) =>\n handleFile(file,e,i)\n )\n }\n }\n\n const handleFile = (file, eventTarget, fileIndex = 0) => {\n const getIndexedPath = (str) => getPath(str,fileIndex)\n const path = getIndexedPath()\n const oldUploadStatus = form.getMeta(getIndexedPath('uploadStatus'))\n const oldImage = form.getValue(getIndexedPath('image'))\n const oldImageHeight = form.getValue(getIndexedPath('imageHeight'))\n const oldImageWidth = form.getValue(getIndexedPath('imageWidth'))\n const oldFilename = form.getValue(getIndexedPath('fileName'))\n\n const objectUrl = URL.createObjectURL(file)\n const image = document.createElement('img')\n image.onload = () => {\n const {naturalWidth: imageWidth, naturalHeight: imageHeight} = image\n const newValues = {image: file, filename: file.name, imageWidth, imageHeight}\n form.setValues(_.flow(\n _.set(getIndexedPath('filename'), file.name),\n _.set(getIndexedPath('image'), file),\n _.set(getIndexedPath('imageWidth'), imageWidth),\n _.set(getIndexedPath('imageHeight'), imageHeight)\n ))\n form.setMeta(_.flow(\n _.update('submittingFiles', (v) => v ? v + 1 : 1),\n _.update('uploadingPaths', _.union([path.join(\".\")])),\n _.set(getIndexedPath('uploadStatus'), 'loading')\n ))\n setTempImage(objectUrl)\n callIfFunction(onChangeFile,file)\n loading.open()\n uploadFetcher(file, newValues)\n .then(({image, uploadStatus}) => {\n loading.close()\n if (form.getValue(getIndexedPath('image')) !== file) {\n form.setMeta(_.update(['submittingFiles'], (v) => v - 1))\n return\n }\n form.clearErrors()\n form.setValue(getIndexedPath('image'), image, false)\n form.setMeta(_.flow(\n _.update('uploadingPaths', _.difference(_,[path.join(\".\")])),\n _.update(['submittingFiles'], (v) => v - 1),\n _.update(['submittedFiles'], (v) => (v || []).concat([{path, file, image}])),\n _.set(getIndexedPath('uploadStatus'), uploadStatus)\n ))\n setTempImage(null)\n callIfFunction(onSuccess, {image, uploadStatus, imageWidth, imageHeight})\n }).catch((e) => {\n loading.close()\n if (form.getValue(getIndexedPath('image')) !== file) {\n form.setMeta(_.update(['submittingFiles'], (v) => v - 1))\n return\n }\n form.setError(getIndexedPath('image').join('.'), callIfFunction(ajaxError,_.get('[1].status',e)))\n form.setValues(_.flow(\n _.set(getIndexedPath('filename'), oldFilename),\n _.set(getIndexedPath('image'), oldImage),\n _.set(getIndexedPath('imageWidth'), oldImageWidth),\n _.set(getIndexedPath('imageHeight'), oldImageHeight)\n ),\n false\n )\n form.setMeta(_.flow(\n _.update('uploadingPaths', _.difference(_,[path.join(\".\")])),\n _.update(['submittingFiles'], (v) => v - 1),\n _.update(['submittedFiles'], (v) => (v || []).concat([{path, file, image}])),\n _.set(getIndexedPath('uploadStatus'), oldUploadStatus)\n ))\n setTempImage(null)\n callIfFunction(onFailure)\n })\n if (eventTarget && eventTarget.parentNode && typeof eventTarget.parentNode.click === 'function')\n eventTarget.parentNode.click()\n }\n image.src = objectUrl\n }\n\n const listenToClose = () => {\n }\n\n const handleClick = (e) => {\n callIfFunction(onClick,e)\n listenToClose()\n }\n const handleTouchEnd = (e) => {\n callIfFunction(onTouchEnd,e)\n listenToClose()\n }\n\n return children(\n <FileInput multiple={multiple} onChange={handleFileEvent} onClick={handleClick} tabIndex={-1} onTouchEnd={handleTouchEnd}/>,\n {\n image,\n isLoading: loading.isOpen,\n handleFile,\n handleFileEvent,\n Input: FileInput\n }\n )\n}\n\n\n\n\nexport const WithFileInput = ({children, multiple, path = [\"file\"], preValidation = _.stubFalse, onChangeFile, onClose, onClick, uploadFetcher, onSuccess, onFailure, ajaxError, onTouchEnd, maxFiles, ...rest}) => {\n const form = useContext(FormContext)\n const loading = useToggle()\n const [tempImage, setTempImage] = useState()\n const getPath = (str,fileIndex) => typeof path === 'function' ? [].concat(path(str,fileIndex)) : str !== 'file' ? [].concat(path).slice(0, -1).concat(str) : path\n\n const validate = (files) => {\n const validations = files.map(preValidation).filter(Boolean)\n if (validations.length) {\n validations.forEach(v =>\n form.setError(getPath('file',0).join('.'), v)\n )\n return files.filter((file) => !preValidation(file))\n }\n return files\n }\n\n const handleFileEvent = (e) => {\n e.preventDefault()\n callIfFunction(onClose)\n const files = Array.from((e.nativeEvent.dataTransfer || e.nativeEvent.target).files)\n if (files.length > 0) {\n validate(files.slice(0,multiple ? undefined : 1)).forEach( (file,i) =>\n handleFile(file,e,i)\n )\n }\n }\n\n const handleFile = (file, eventTarget) => {\n const currentFileIndex = (form.getValue(getPath()) || []).length\n if (currentFileIndex >= maxFiles) {\n form.setErrors({'': 'Número máximo de arquivos atingido'})\n return\n }\n const createGetIndexedPath = (index) => (str) => getPath(str,index)\n const getIndexedPath = createGetIndexedPath(currentFileIndex)\n const path = getIndexedPath()\n const oldUploadStatus = form.getMeta(getIndexedPath('uploadStatus'))\n const oldFile = form.getValue(getIndexedPath('file'))\n const oldFilename = form.getValue(getIndexedPath('fileName'))\n\n const uid = getUID()\n\n form.setValues(_.flow(\n _.set(getIndexedPath('filename'), file.name),\n _.set(getIndexedPath('file'), file),\n _.set(getIndexedPath('uid'), uid),\n ))\n form.setMeta(_.flow(\n _.update('submittingFiles', (v) => v ? v + 1 : 1),\n _.update('uploadingPaths', _.union([path.join(\".\")])),\n _.set(getIndexedPath('uploadStatus'), 'loading')\n ))\n callIfFunction(onChangeFile,file)\n\n loading.open()\n uploadFetcher(file)\n .then(({file, uploadStatus, response}) => {\n loading.close()\n const list = (form.getValue(getPath()) || [])\n const index = list.findIndex((f) => f.uid === uid)\n if (index < 0) {\n form.setMeta(_.update(['submittingFiles'], (v) => v - 1))\n return\n }\n const getIndexedPath = createGetIndexedPath(index)\n form.clearErrors()\n form.setValue(getIndexedPath('file'), response, false)\n form.setMeta(_.flow(\n _.update('uploadingPaths', _.difference(_,[path.join(\".\")])),\n _.update(['submittingFiles'], (v) => v - 1),\n _.update(['submittedFiles'], (v) => (v || []).concat([{path, file}])),\n _.set(getIndexedPath('uploadStatus'), uploadStatus)\n ))\n callIfFunction(onSuccess, {file, uploadStatus})\n }).catch((e) => {\n loading.close()\n const list = (form.getValue(getPath()) || [])\n const index = list.findIndex((f) => f.uid === uid)\n if (index < 0) {\n form.setMeta(_.update(['submittingFiles'], (v) => v - 1))\n return\n }\n const getIndexedPath = createGetIndexedPath(index)\n form.setError(getIndexedPath('file').join('.'), callIfFunction(ajaxError,_.get('[1].status',e)))\n if (oldFile) {\n form.setValues(\n _.flow(\n _.set(getIndexedPath('filename'), oldFilename),\n _.set(getIndexedPath('file'), oldFile),\n ),\n false\n )\n } else {\n form.setValues(\n _.update(getPath(), _.filter((f) => f.uid !== uid)),\n false\n )\n }\n form.setMeta(_.flow(\n _.update('uploadingPaths', _.difference(_,[path.join(\".\")])),\n _.update(['submittingFiles'], (v) => v - 1),\n _.update(['submittedFiles'], (v) => (v || []).concat([{path, file}])),\n _.set(getIndexedPath('uploadStatus'), oldUploadStatus)\n ))\n callIfFunction(onFailure)\n })\n if (eventTarget && eventTarget.parentNode && typeof eventTarget.parentNode.click === 'function')\n eventTarget.parentNode.click()\n }\n\n const listenToClose = () => {\n }\n\n const handleClick = (e) => {\n callIfFunction(onClick,e)\n listenToClose()\n }\n const handleTouchEnd = (e) => {\n callIfFunction(onTouchEnd,e)\n listenToClose()\n }\n\n return children(\n <FileInput multiple={multiple} onChange={handleFileEvent} onClick={handleClick} tabIndex={-1} onTouchEnd={handleTouchEnd}/>,\n {\n isLoading: loading.isOpen,\n handleFile,\n handleFileEvent,\n Input: FileInput\n }\n )\n}\n\n\n"],"names":["FileInput","styled","yakDomTag","attrs","type","className","WithImageInput","_ref","children","multiple","path","preValidation","_stubFalse","onChangeFile","onClose","onClick","uploadFetcher","onSuccess","onFailure","ajaxError","onTouchEnd","rest","_objectWithoutProperties","_excluded","form","useContext","FormContext","loading","useToggle","tempImage","setTempImage","useState","getPath","str","fileIndex","arguments","length","undefined","concat","slice","imagePath","formImage","useFormValue","image","validate","files","validations","map","filter","Boolean","forEach","v","setError","join","file","handleFileEvent","e","preventDefault","callIfFunction","Array","from","nativeEvent","dataTransfer","target","i","handleFile","eventTarget","getIndexedPath","oldUploadStatus","getMeta","oldImage","getValue","oldImageHeight","oldImageWidth","oldFilename","objectUrl","URL","createObjectURL","document","createElement","onload","naturalWidth","imageWidth","naturalHeight","imageHeight","newValues","filename","name","setValues","_flow","_set","setMeta","_update","_union","open","then","_ref2","uploadStatus","close","clearErrors","setValue","_difference","placeholder","catch","_get","parentNode","click","src","handleClick","handleTouchEnd","React","onChange","tabIndex","isLoading","isOpen","Input","WithFileInput","_ref3","maxFiles","_excluded2","currentFileIndex","setErrors","createGetIndexedPath","index","oldFile","uid","getUID","_ref4","response","list","findIndex","f","_filter"],"mappings":";;;;;;;;;;;;;;;;;;AAOO,MAAMA,SAAS,GAAGC,MAAA,CAAAC,SAAA,CAAA,OAAA,CAAA,CAAA,CAAaC,KAAK,CAAC;AAACC,EAAAA,IAAI,EAAE,MAAM;EAAAC,SAAA,EAAA,mBAAA;AAAA,CAAC,CAAC,CAAA;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAG,EAAA;AAGUC,MAAAA,cAAc,GAAGC,IAAA,IAA8K;EAA7K,IAAA;MAACC,QAAQ;MAAEC,QAAQ;MAAEC,IAAI,GAAG,CAAC,OAAO,CAAC;AAAEC,MAAAA,aAAa,GAAAC,UAAc;MAAEC,YAAY;MAAEC,OAAO;MAAEC,OAAO;MAAEC,aAAa;MAAEC,SAAS;MAAEC,SAAS;MAAEC,SAAS;AAAEC,MAAAA,UAAAA;AAAmB,KAAC,GAAAb,IAAA,CAAA;AAALc,IAAIC,wBAAA,CAAAf,IAAA,EAAAgB,SAAA,EAAA;AACpM,EAAA,MAAMC,IAAI,GAAGC,UAAU,CAACC,WAAW,CAAC,CAAA;AACpC,EAAA,MAAMC,OAAO,GAAGC,SAAS,EAAE,CAAA;EAC3B,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGC,QAAQ,EAAE,CAAA;AAC5C,EAAA,MAAMC,OAAO,GAAG,UAACC,GAAG,EAAA;AAAA,IAAA,IAACC,SAAS,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC,CAAA;AAAA,IAAA,OAAK,OAAOzB,IAAI,KAAK,UAAU,GAAG,EAAE,CAAC4B,MAAM,CAAC5B,IAAI,CAACuB,GAAG,EAACC,SAAS,CAAC,CAAC,GAAGD,GAAG,KAAK,OAAO,GAAG,EAAE,CAACK,MAAM,CAAC5B,IAAI,CAAC,CAAC6B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACD,MAAM,CAACL,GAAG,CAAC,GAAGvB,IAAI,CAAA;AAAA,GAAA,CAAA;AAEtK,EAAA,MAAM8B,SAAS,GAAGR,OAAO,CAAC,OAAO,CAAC,CAAA;AAClC,EAAA,MAAM,CAACS,SAAS,CAAC,GAAGC,YAAY,CAACF,SAAS,CAAC,CAAA;AAC3C,EAAA,MAAMG,KAAK,GAAGd,SAAS,IAAIY,SAAS,CAAA;EAEpC,MAAMG,QAAQ,GAAIC,KAAK,IAAK;AAC1B,IAAA,MAAMC,WAAW,GAAGD,KAAK,CAACE,GAAG,CAACpC,aAAa,CAAC,CAACqC,MAAM,CAACC,OAAO,CAAC,CAAA;IAC5D,IAAIH,WAAW,CAACV,MAAM,EAAE;MACtBU,WAAW,CAACI,OAAO,CAACC,CAAC,IACnB3B,IAAI,CAAC4B,QAAQ,CAACpB,OAAO,CAAC,OAAO,CAAC,CAACqB,IAAI,CAAC,GAAG,CAAC,EAAEF,CAAC,CAC7C,CAAC,CAAA;MACD,OAAON,KAAK,CAACG,MAAM,CAAEM,IAAI,IAAK,CAAC3C,aAAa,CAAC2C,IAAI,CAAC,CAAC,CAAA;AACrD,KAAA;AACA,IAAA,OAAOT,KAAK,CAAA;GACb,CAAA;EAED,MAAMU,eAAe,GAAIC,CAAC,IAAK;IAC7BA,CAAC,CAACC,cAAc,EAAE,CAAA;IAClBC,cAAc,CAAC5C,OAAO,CAAC,CAAA;IACvB,MAAM+B,KAAK,GAAGc,KAAK,CAACC,IAAI,CAAC,CAACJ,CAAC,CAACK,WAAW,CAACC,YAAY,IAAIN,CAAC,CAACK,WAAW,CAACE,MAAM,EAAElB,KAAK,CAAC,CAAA;AACpF,IAAA,IAAIA,KAAK,CAACT,MAAM,GAAG,CAAC,EAAE;AACpBQ,MAAAA,QAAQ,CAACC,KAAK,CAACN,KAAK,CAAC,CAAC,EAAC9B,QAAQ,GAAG4B,SAAS,GAAG,CAAC,CAAC,CAAC,CAACa,OAAO,CAAE,CAACI,IAAI,EAACU,CAAC,KAChEC,UAAU,CAACX,IAAI,EAACE,CAAC,EAACQ,CAAC,CACrB,CAAC,CAAA;AACH,KAAA;GACD,CAAA;AAED,EAAA,MAAMC,UAAU,GAAG,UAACX,IAAI,EAAEY,WAAW,EAAoB;AAAA,IAAA,IAAlBhC,SAAS,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC,CAAA;IAClD,MAAMgC,cAAc,GAAIlC,GAAG,IAAKD,OAAO,CAACC,GAAG,EAACC,SAAS,CAAC,CAAA;AACtD,IAAA,MAAMxB,IAAI,GAAGyD,cAAc,EAAE,CAAA;IAC7B,MAAMC,eAAe,GAAG5C,IAAI,CAAC6C,OAAO,CAACF,cAAc,CAAC,cAAc,CAAC,CAAC,CAAA;IACpE,MAAMG,QAAQ,GAAG9C,IAAI,CAAC+C,QAAQ,CAACJ,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,MAAMK,cAAc,GAAGhD,IAAI,CAAC+C,QAAQ,CAACJ,cAAc,CAAC,aAAa,CAAC,CAAC,CAAA;IACnE,MAAMM,aAAa,GAAGjD,IAAI,CAAC+C,QAAQ,CAACJ,cAAc,CAAC,YAAY,CAAC,CAAC,CAAA;IACjE,MAAMO,WAAW,GAAGlD,IAAI,CAAC+C,QAAQ,CAACJ,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;AAE7D,IAAA,MAAMQ,SAAS,GAAGC,GAAG,CAACC,eAAe,CAACvB,IAAI,CAAC,CAAA;AAC3C,IAAA,MAAMX,KAAK,GAAGmC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC3CpC,KAAK,CAACqC,MAAM,GAAG,MAAM;MACnB,MAAM;AAACC,QAAAA,YAAY,EAAEC,UAAU;AAAEC,QAAAA,aAAa,EAAEC,WAAAA;AAAW,OAAC,GAAGzC,KAAK,CAAA;AACpE,MAAA,MAAM0C,SAAS,GAAG;AAAC1C,QAAAA,KAAK,EAAEW,IAAI;QAAEgC,QAAQ,EAAEhC,IAAI,CAACiC,IAAI;QAAEL,UAAU;AAAEE,QAAAA,WAAAA;OAAY,CAAA;MAC7E5D,IAAI,CAACgE,SAAS,CAACC,KAAA,CACbC,IAAA,CAAMvB,cAAc,CAAC,UAAU,CAAC,EAAEb,IAAI,CAACiC,IAAI,CAAC,EAC5CG,IAAA,CAAMvB,cAAc,CAAC,OAAO,CAAC,EAAEb,IAAI,CAAC,EACpCoC,IAAA,CAAMvB,cAAc,CAAC,YAAY,CAAC,EAAEe,UAAU,CAAC,EAC/CQ,IAAA,CAAMvB,cAAc,CAAC,aAAa,CAAC,EAAEiB,WAAW,CAClD,CAAC,CAAC,CAAA;MACF5D,IAAI,CAACmE,OAAO,CAACF,KAAA,CACXG,OAAA,CAAS,iBAAiB,EAAGzC,CAAC,IAAKA,CAAC,GAAGA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EACjDyC,OAAA,CAAS,gBAAgB,EAAEC,MAAA,CAAQ,CAACnF,IAAI,CAAC2C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EACrDqC,IAAA,CAAMvB,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CACjD,CAAC,CAAC,CAAA;MACFrC,YAAY,CAAC6C,SAAS,CAAC,CAAA;AACvBjB,MAAAA,cAAc,CAAC7C,YAAY,EAACyC,IAAI,CAAC,CAAA;MACjC3B,OAAO,CAACmE,IAAI,EAAE,CAAA;MACd9E,aAAa,CAACsC,IAAI,EAAE+B,SAAS,CAAC,CAC3BU,IAAI,CAACC,KAAA,IAA2B;QAAA,IAA1B;UAACrD,KAAK;AAAEsD,UAAAA,YAAAA;AAAY,SAAC,GAAAD,KAAA,CAAA;QAC1BrE,OAAO,CAACuE,KAAK,EAAE,CAAA;QACf,IAAI1E,IAAI,CAAC+C,QAAQ,CAACJ,cAAc,CAAC,OAAO,CAAC,CAAC,KAAKb,IAAI,EAAE;AACnD9B,UAAAA,IAAI,CAACmE,OAAO,CAACC,OAAA,CAAS,CAAC,iBAAiB,CAAC,EAAGzC,CAAC,IAAKA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACzD,UAAA,OAAA;AACF,SAAA;QACA3B,IAAI,CAAC2E,WAAW,EAAE,CAAA;QAClB3E,IAAI,CAAC4E,QAAQ,CAACjC,cAAc,CAAC,OAAO,CAAC,EAAExB,KAAK,EAAE,KAAK,CAAC,CAAA;QACpDnB,IAAI,CAACmE,OAAO,CAACF,KAAA,CACXG,OAAA,CAAS,gBAAgB,EAAES,WAAA,CAAAA,WAAA,CAAAC,WAAA,EAAe,CAAC5F,IAAI,CAAC2C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC5DuC,OAAA,CAAS,CAAC,iBAAiB,CAAC,EAAGzC,CAAC,IAAKA,CAAC,GAAG,CAAC,CAAC,EAC3CyC,OAAA,CAAS,CAAC,gBAAgB,CAAC,EAAGzC,CAAC,IAAK,CAACA,CAAC,IAAI,EAAE,EAAEb,MAAM,CAAC,CAAC;UAAC5B,IAAI;UAAE4C,IAAI;AAAEX,UAAAA,KAAAA;AAAK,SAAC,CAAC,CAAC,CAAC,EAC5E+C,IAAA,CAAMvB,cAAc,CAAC,cAAc,CAAC,EAAE8B,YAAY,CACpD,CAAC,CAAC,CAAA;QACFnE,YAAY,CAAC,IAAI,CAAC,CAAA;QAClB4B,cAAc,CAACzC,SAAS,EAAE;UAAC0B,KAAK;UAAEsD,YAAY;UAAEf,UAAU;AAAEE,UAAAA,WAAAA;AAAW,SAAC,CAAC,CAAA;AAC3E,OAAC,CAAC,CAACmB,KAAK,CAAE/C,CAAC,IAAK;QACd7B,OAAO,CAACuE,KAAK,EAAE,CAAA;QACf,IAAI1E,IAAI,CAAC+C,QAAQ,CAACJ,cAAc,CAAC,OAAO,CAAC,CAAC,KAAKb,IAAI,EAAE;AACnD9B,UAAAA,IAAI,CAACmE,OAAO,CAACC,OAAA,CAAS,CAAC,iBAAiB,CAAC,EAAGzC,CAAC,IAAKA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACzD,UAAA,OAAA;AACF,SAAA;QACA3B,IAAI,CAAC4B,QAAQ,CAACe,cAAc,CAAC,OAAO,CAAC,CAACd,IAAI,CAAC,GAAG,CAAC,EAAEK,cAAc,CAACvC,SAAS,EAACqF,IAAA,CAAM,YAAY,EAAChD,CAAC,CAAC,CAAC,CAAC,CAAA;QACjGhC,IAAI,CAACgE,SAAS,CAACC,KAAA,CACbC,IAAA,CAAMvB,cAAc,CAAC,UAAU,CAAC,EAAEO,WAAW,CAAC,EAC9CgB,IAAA,CAAMvB,cAAc,CAAC,OAAO,CAAC,EAAEG,QAAQ,CAAC,EACxCoB,IAAA,CAAMvB,cAAc,CAAC,YAAY,CAAC,EAAEM,aAAa,CAAC,EAClDiB,IAAA,CAAMvB,cAAc,CAAC,aAAa,CAAC,EAAEK,cAAc,CACnD,CAAC,EACD,KACF,CAAC,CAAA;QACDhD,IAAI,CAACmE,OAAO,CAACF,KAAA,CACXG,OAAA,CAAS,gBAAgB,EAAES,WAAA,CAAAA,WAAA,CAAAC,WAAA,EAAe,CAAC5F,IAAI,CAAC2C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC5DuC,OAAA,CAAS,CAAC,iBAAiB,CAAC,EAAGzC,CAAC,IAAKA,CAAC,GAAG,CAAC,CAAC,EAC3CyC,OAAA,CAAS,CAAC,gBAAgB,CAAC,EAAGzC,CAAC,IAAK,CAACA,CAAC,IAAI,EAAE,EAAEb,MAAM,CAAC,CAAC;UAAC5B,IAAI;UAAE4C,IAAI;AAAEX,UAAAA,KAAAA;AAAK,SAAC,CAAC,CAAC,CAAC,EAC5E+C,IAAA,CAAMvB,cAAc,CAAC,cAAc,CAAC,EAAEC,eAAe,CACvD,CAAC,CAAC,CAAA;QACFtC,YAAY,CAAC,IAAI,CAAC,CAAA;QAClB4B,cAAc,CAACxC,SAAS,CAAC,CAAA;AAC3B,OAAC,CAAC,CAAA;MACJ,IAAIgD,WAAW,IAAIA,WAAW,CAACuC,UAAU,IAAI,OAAOvC,WAAW,CAACuC,UAAU,CAACC,KAAK,KAAK,UAAU,EAC7FxC,WAAW,CAACuC,UAAU,CAACC,KAAK,EAAE,CAAA;KACjC,CAAA;IACD/D,KAAK,CAACgE,GAAG,GAAGhC,SAAS,CAAA;GACtB,CAAA;EAKD,MAAMiC,WAAW,GAAIpD,CAAC,IAAK;AACzBE,IAAAA,cAAc,CAAC3C,OAAO,EAACyC,CAAC,CAAC,CAAA;GAE1B,CAAA;EACD,MAAMqD,cAAc,GAAIrD,CAAC,IAAK;AAC5BE,IAAAA,cAAc,CAACtC,UAAU,EAACoC,CAAC,CAAC,CAAA;GAE7B,CAAA;AAED,EAAA,OAAOhD,QAAQ,cACbsG,KAAA,CAAA/B,aAAA,CAAC/E,SAAS,EAAA;AAACS,IAAAA,QAAQ,EAAEA,QAAS;AAACsG,IAAAA,QAAQ,EAAExD,eAAgB;AAACxC,IAAAA,OAAO,EAAE6F,WAAY;IAACI,QAAQ,EAAE,CAAC,CAAE;AAAC5F,IAAAA,UAAU,EAAEyF,cAAAA;AAAe,GAAC,CAAC,EAC3H;IACElE,KAAK;IACLsE,SAAS,EAAEtF,OAAO,CAACuF,MAAM;IACzBjD,UAAU;IACVV,eAAe;AACf4D,IAAAA,KAAK,EAAEnH,SAAAA;AACT,GACF,CAAC,CAAA;AACH,EAAC;AAKYoH,MAAAA,aAAa,GAAGC,KAAA,IAAuL;EAAtL,IAAA;MAAC7G,QAAQ;MAAEC,QAAQ;MAAEC,IAAI,GAAG,CAAC,MAAM,CAAC;AAAEC,MAAAA,aAAa,GAAAC,UAAc;MAAEC,YAAY;MAAEC,OAAO;MAAEC,OAAO;MAAEC,aAAa;MAAEC,SAAS;MAAEC,SAAS;MAAEC,SAAS;MAAEC,UAAU;AAAEkG,MAAAA,QAAAA;AAAiB,KAAC,GAAAD,KAAA,CAAA;AAALhG,IAAIC,wBAAA,CAAA+F,KAAA,EAAAE,UAAA,EAAA;AAC5M,EAAA,MAAM/F,IAAI,GAAGC,UAAU,CAACC,WAAW,CAAC,CAAA;AACpC,EAAA,MAAMC,OAAO,GAAGC,SAAS,EAAE,CAAA;EACOG,QAAQ,GAAE;EAC5C,MAAMC,OAAO,GAAGA,CAACC,GAAG,EAACC,SAAS,KAAK,OAAOxB,IAAI,KAAK,UAAU,GAAG,EAAE,CAAC4B,MAAM,CAAC5B,IAAI,CAACuB,GAAG,EAACC,SAAS,CAAC,CAAC,GAAGD,GAAG,KAAK,MAAM,GAAG,EAAE,CAACK,MAAM,CAAC5B,IAAI,CAAC,CAAC6B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACD,MAAM,CAACL,GAAG,CAAC,GAAGvB,IAAI,CAAA;EAEjK,MAAMkC,QAAQ,GAAIC,KAAK,IAAK;AAC1B,IAAA,MAAMC,WAAW,GAAGD,KAAK,CAACE,GAAG,CAACpC,aAAa,CAAC,CAACqC,MAAM,CAACC,OAAO,CAAC,CAAA;IAC5D,IAAIH,WAAW,CAACV,MAAM,EAAE;MACtBU,WAAW,CAACI,OAAO,CAACC,CAAC,IACC3B,IAAI,CAAC4B,QAAQ,CAACpB,OAAO,CAAC,MAAM,EAAC,CAAC,CAAC,CAACqB,IAAI,CAAC,GAAG,CAAC,EAAEF,CAAC,CAClE,CAAC,CAAA;MACD,OAAON,KAAK,CAACG,MAAM,CAAEM,IAAI,IAAK,CAAC3C,aAAa,CAAC2C,IAAI,CAAC,CAAC,CAAA;AACrD,KAAA;AACA,IAAA,OAAOT,KAAK,CAAA;GACb,CAAA;EAED,MAAMU,eAAe,GAAIC,CAAC,IAAK;IAC7BA,CAAC,CAACC,cAAc,EAAE,CAAA;IAClBC,cAAc,CAAC5C,OAAO,CAAC,CAAA;IACvB,MAAM+B,KAAK,GAAGc,KAAK,CAACC,IAAI,CAAC,CAACJ,CAAC,CAACK,WAAW,CAACC,YAAY,IAAIN,CAAC,CAACK,WAAW,CAACE,MAAM,EAAElB,KAAK,CAAC,CAAA;AACpF,IAAA,IAAIA,KAAK,CAACT,MAAM,GAAG,CAAC,EAAE;AACpBQ,MAAAA,QAAQ,CAACC,KAAK,CAACN,KAAK,CAAC,CAAC,EAAC9B,QAAQ,GAAG4B,SAAS,GAAG,CAAC,CAAC,CAAC,CAACa,OAAO,CAAE,CAACI,IAAI,EAACU,CAAC,KACLC,UAAU,CAACX,IAAI,EAACE,CAAG,CAChF,CAAC,CAAA;AACH,KAAA;GACD,CAAA;AAED,EAAA,MAAMS,UAAU,GAAGA,CAACX,IAAI,EAAEY,WAAW,KAAK;AACxC,IAAA,MAAMsD,gBAAgB,GAAG,CAAChG,IAAI,CAAC+C,QAAQ,CAACvC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAEI,MAAM,CAAA;IAChE,IAAIoF,gBAAgB,IAAIF,QAAQ,EAAE;MAChC9F,IAAI,CAACiG,SAAS,CAAC;AAAC,QAAA,EAAE,EAAE,oCAAA;AAAoC,OAAC,CAAC,CAAA;AAC1D,MAAA,OAAA;AACF,KAAA;IACA,MAAMC,oBAAoB,GAAIC,KAAK,IAAM1F,GAAG,IAAKD,OAAO,CAACC,GAAG,EAAC0F,KAAK,CAAC,CAAA;AACnE,IAAA,MAAMxD,cAAc,GAAGuD,oBAAoB,CAACF,gBAAgB,CAAC,CAAA;AAC7D,IAAA,MAAM9G,IAAI,GAAGyD,cAAc,EAAE,CAAA;IAC7B,MAAMC,eAAe,GAAG5C,IAAI,CAAC6C,OAAO,CAACF,cAAc,CAAC,cAAc,CAAC,CAAC,CAAA;IACpE,MAAMyD,OAAO,GAAGpG,IAAI,CAAC+C,QAAQ,CAACJ,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;IACrD,MAAMO,WAAW,GAAGlD,IAAI,CAAC+C,QAAQ,CAACJ,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;AAE7D,IAAA,MAAM0D,GAAG,GAAGC,MAAM,EAAE,CAAA;AAEpBtG,IAAAA,IAAI,CAACgE,SAAS,CAACC,KAAA,CACbC,IAAA,CAAMvB,cAAc,CAAC,UAAU,CAAC,EAAEb,IAAI,CAACiC,IAAI,CAAC,EAC5CG,IAAA,CAAMvB,cAAc,CAAC,MAAM,CAAC,EAAEb,IAAI,CAAC,EACnCoC,IAAA,CAAMvB,cAAc,CAAC,KAAK,CAAC,EAAE0D,GAAG,CAClC,CAAC,CAAC,CAAA;IACFrG,IAAI,CAACmE,OAAO,CAACF,KAAA,CACXG,OAAA,CAAS,iBAAiB,EAAGzC,CAAC,IAAKA,CAAC,GAAGA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EACjDyC,OAAA,CAAS,gBAAgB,EAAEC,MAAA,CAAQ,CAACnF,IAAI,CAAC2C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EACrDqC,IAAA,CAAMvB,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CACjD,CAAC,CAAC,CAAA;AACFT,IAAAA,cAAc,CAAC7C,YAAY,EAACyC,IAAI,CAAC,CAAA;IAEjC3B,OAAO,CAACmE,IAAI,EAAE,CAAA;AACd9E,IAAAA,aAAa,CAACsC,IAAI,CAAC,CAClByC,IAAI,CAACgC,KAAA,IAAoC;MAAA,IAAnC;QAACzE,IAAI;QAAE2C,YAAY;AAAE+B,QAAAA,QAAAA;AAAQ,OAAC,GAAAD,KAAA,CAAA;MACnCpG,OAAO,CAACuE,KAAK,EAAE,CAAA;MACf,MAAM+B,IAAI,GAAIzG,IAAI,CAAC+C,QAAQ,CAACvC,OAAO,EAAE,CAAC,IAAI,EAAG,CAAA;AAC7C,MAAA,MAAM2F,KAAK,GAAGM,IAAI,CAACC,SAAS,CAAEC,CAAC,IAAKA,CAAC,CAACN,GAAG,KAAKA,GAAG,CAAC,CAAA;MAClD,IAAIF,KAAK,GAAG,CAAC,EAAE;AACbnG,QAAAA,IAAI,CAACmE,OAAO,CAACC,OAAA,CAAS,CAAC,iBAAiB,CAAC,EAAGzC,CAAC,IAAKA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACzD,QAAA,OAAA;AACF,OAAA;AACA,MAAA,MAAMgB,cAAc,GAAGuD,oBAAoB,CAACC,KAAK,CAAC,CAAA;MAClDnG,IAAI,CAAC2E,WAAW,EAAE,CAAA;MAClB3E,IAAI,CAAC4E,QAAQ,CAACjC,cAAc,CAAC,MAAM,CAAC,EAAE6D,QAAQ,EAAE,KAAK,CAAC,CAAA;MACtDxG,IAAI,CAACmE,OAAO,CAACF,KAAA,CACXG,OAAA,CAAS,gBAAgB,EAAES,WAAA,CAAAA,WAAA,CAAAC,WAAA,EAAe,CAAC5F,IAAI,CAAC2C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC5DuC,OAAA,CAAS,CAAC,iBAAiB,CAAC,EAAGzC,CAAC,IAAKA,CAAC,GAAG,CAAC,CAAC,EAC3CyC,OAAA,CAAS,CAAC,gBAAgB,CAAC,EAAGzC,CAAC,IAAK,CAACA,CAAC,IAAI,EAAE,EAAEb,MAAM,CAAC,CAAC;QAAC5B,IAAI;AAAE4C,QAAAA,IAAAA;AAAI,OAAC,CAAC,CAAC,CAAC,EACrEoC,IAAA,CAAMvB,cAAc,CAAC,cAAc,CAAC,EAAE8B,YAAY,CACpD,CAAC,CAAC,CAAA;MACFvC,cAAc,CAACzC,SAAS,EAAE;QAACqC,IAAI;AAAE2C,QAAAA,YAAAA;AAAY,OAAC,CAAC,CAAA;AACjD,KAAC,CAAC,CAACM,KAAK,CAAE/C,CAAC,IAAK;MACd7B,OAAO,CAACuE,KAAK,EAAE,CAAA;MACf,MAAM+B,IAAI,GAAIzG,IAAI,CAAC+C,QAAQ,CAACvC,OAAO,EAAE,CAAC,IAAI,EAAG,CAAA;AAC7C,MAAA,MAAM2F,KAAK,GAAGM,IAAI,CAACC,SAAS,CAAEC,CAAC,IAAKA,CAAC,CAACN,GAAG,KAAKA,GAAG,CAAC,CAAA;MAClD,IAAIF,KAAK,GAAG,CAAC,EAAE;AACbnG,QAAAA,IAAI,CAACmE,OAAO,CAACC,OAAA,CAAS,CAAC,iBAAiB,CAAC,EAAGzC,CAAC,IAAKA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACzD,QAAA,OAAA;AACF,OAAA;AACA,MAAA,MAAMgB,cAAc,GAAGuD,oBAAoB,CAACC,KAAK,CAAC,CAAA;MAClDnG,IAAI,CAAC4B,QAAQ,CAACe,cAAc,CAAC,MAAM,CAAC,CAACd,IAAI,CAAC,GAAG,CAAC,EAAEK,cAAc,CAACvC,SAAS,EAACqF,IAAA,CAAM,YAAY,EAAChD,CAAC,CAAC,CAAC,CAAC,CAAA;AAChG,MAAA,IAAIoE,OAAO,EAAE;QACXpG,IAAI,CAACgE,SAAS,CACZC,KAAA,CACEC,IAAA,CAAMvB,cAAc,CAAC,UAAU,CAAC,EAAEO,WAAW,CAAC,EAC9CgB,IAAA,CAAMvB,cAAc,CAAC,MAAM,CAAC,EAAEyD,OAAO,CACvC,CAAC,EACD,KACF,CAAC,CAAA;AACH,OAAC,MAAM;QACLpG,IAAI,CAACgE,SAAS,CACZI,OAAA,CAAS5D,OAAO,EAAE,EAAEoG,OAAA,CAAUD,CAAC,IAAKA,CAAC,CAACN,GAAG,KAAKA,GAAG,CAAC,CAAC,EACnD,KACF,CAAC,CAAA;AACH,OAAA;MACArG,IAAI,CAACmE,OAAO,CAACF,KAAA,CACXG,OAAA,CAAS,gBAAgB,EAAES,WAAA,CAAAA,WAAA,CAAAC,WAAA,EAAe,CAAC5F,IAAI,CAAC2C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC5DuC,OAAA,CAAS,CAAC,iBAAiB,CAAC,EAAGzC,CAAC,IAAKA,CAAC,GAAG,CAAC,CAAC,EAC3CyC,OAAA,CAAS,CAAC,gBAAgB,CAAC,EAAGzC,CAAC,IAAK,CAACA,CAAC,IAAI,EAAE,EAAEb,MAAM,CAAC,CAAC;QAAC5B,IAAI;AAAE4C,QAAAA,IAAAA;AAAI,OAAC,CAAC,CAAC,CAAC,EACrEoC,IAAA,CAAMvB,cAAc,CAAC,cAAc,CAAC,EAAEC,eAAe,CACvD,CAAC,CAAC,CAAA;MACFV,cAAc,CAACxC,SAAS,CAAC,CAAA;AAC3B,KAAC,CAAC,CAAA;IACF,IAAIgD,WAAW,IAAIA,WAAW,CAACuC,UAAU,IAAI,OAAOvC,WAAW,CAACuC,UAAU,CAACC,KAAK,KAAK,UAAU,EAC7FxC,WAAW,CAACuC,UAAU,CAACC,KAAK,EAAE,CAAA;GACjC,CAAA;EAKD,MAAME,WAAW,GAAIpD,CAAC,IAAK;AACzBE,IAAAA,cAAc,CAAC3C,OAAO,EAACyC,CAAC,CAAC,CAAA;GAE1B,CAAA;EACD,MAAMqD,cAAc,GAAIrD,CAAC,IAAK;AAC5BE,IAAAA,cAAc,CAACtC,UAAU,EAACoC,CAAC,CAAC,CAAA;GAE7B,CAAA;AAED,EAAA,OAAOhD,QAAQ,cACbsG,KAAA,CAAA/B,aAAA,CAAC/E,SAAS,EAAA;AAACS,IAAAA,QAAQ,EAAEA,QAAS;AAACsG,IAAAA,QAAQ,EAAExD,eAAgB;AAACxC,IAAAA,OAAO,EAAE6F,WAAY;IAACI,QAAQ,EAAE,CAAC,CAAE;AAAC5F,IAAAA,UAAU,EAAEyF,cAAAA;AAAe,GAAC,CAAC,EAC3H;IACEI,SAAS,EAAEtF,OAAO,CAACuF,MAAM;IACzBjD,UAAU;IACVV,eAAe;AACf4D,IAAAA,KAAK,EAAEnH,SAAAA;AACT,GACF,CAAC,CAAA;AACH;;;;"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@startlibs/form",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0-rc.2",
|
|
4
|
+
"packageManager": "yarn@4.18.1",
|
|
4
5
|
"description": "Startlibs Form",
|
|
5
6
|
"main": "lib/index.cjs",
|
|
6
7
|
"exports": {
|
|
7
8
|
".": {
|
|
8
9
|
"source": "./src/index.js",
|
|
10
|
+
"yak": "./lib-yak/index.mjs",
|
|
9
11
|
"require": "./lib/index.cjs",
|
|
10
12
|
"import": "./lib/index.mjs",
|
|
11
13
|
"default": "./lib/index.mjs"
|
|
12
14
|
},
|
|
13
15
|
"./package.json": "./package.json",
|
|
14
16
|
"./*": {
|
|
17
|
+
"yak": "./lib-yak/*.mjs",
|
|
15
18
|
"import": "./lib/*.mjs"
|
|
16
19
|
}
|
|
17
20
|
},
|
|
@@ -20,7 +23,8 @@
|
|
|
20
23
|
"peerDependencies": {
|
|
21
24
|
"@startlibs/components": "*",
|
|
22
25
|
"@startlibs/core": "*",
|
|
23
|
-
"@startlibs/utils": "
|
|
26
|
+
"@startlibs/utils": ">=1.2.0-rc.2",
|
|
27
|
+
"@yak/react": "10.0.0",
|
|
24
28
|
"lodash": "^4.17.21",
|
|
25
29
|
"polished": "^2.0.0 || ^3.0.0 || ^4.0.0",
|
|
26
30
|
"react": ">=16.8",
|
|
@@ -28,6 +32,11 @@
|
|
|
28
32
|
"reselect": "^4.0.0 || ^5.0.0",
|
|
29
33
|
"styled-components": ">=5"
|
|
30
34
|
},
|
|
35
|
+
"peerDependenciesMeta": {
|
|
36
|
+
"@yak/react": {
|
|
37
|
+
"optional": true
|
|
38
|
+
}
|
|
39
|
+
},
|
|
31
40
|
"devDependencies": {
|
|
32
41
|
"@babel/core": "^7.2.0",
|
|
33
42
|
"@babel/plugin-transform-runtime": "^7.2.0",
|
|
@@ -50,7 +59,7 @@
|
|
|
50
59
|
},
|
|
51
60
|
"scripts": {
|
|
52
61
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
53
|
-
"build": "rollup -c",
|
|
62
|
+
"build": "rollup -c && rollup -c --environment YAK",
|
|
54
63
|
"prepare": "patch-package"
|
|
55
64
|
},
|
|
56
65
|
"repository": {
|
|
@@ -73,6 +82,7 @@
|
|
|
73
82
|
},
|
|
74
83
|
"files": [
|
|
75
84
|
"lib",
|
|
85
|
+
"lib-yak",
|
|
76
86
|
"src"
|
|
77
87
|
],
|
|
78
88
|
"module": "lib/index.mjs",
|
package/src/AutoComplete.jsx
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React, {useEffect, useRef, useState} from 'react'
|
|
2
2
|
import ContentEditableModule from 'react-contenteditable'
|
|
3
3
|
import {useRefState, useToggle, useEnsureRef} from '@startlibs/core'
|
|
4
|
-
import {ContextMenu, Li, Loading, Icon} from '@startlibs/components'
|
|
5
|
-
import {Errors, useProvideErrors} from './Errors'
|
|
4
|
+
import {ContextMenu, Li, ListItem, Loading, Icon} from '@startlibs/components'
|
|
5
|
+
import {Errors, ErrorsCloseIcon, ErrorsItem, useProvideErrors} from './Errors'
|
|
6
6
|
import {Field} from './Field'
|
|
7
7
|
import {useInput} from './enhanceInput'
|
|
8
8
|
import _ from 'lodash/fp'
|
|
@@ -96,11 +96,11 @@ const AddedBox = styled.span`
|
|
|
96
96
|
white-space: nowrap;
|
|
97
97
|
overflow: hidden;
|
|
98
98
|
text-overflow: ellipsis;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
/* isSafari não depende de props; uma const de módulo com um css condicional (ternário)
|
|
100
|
+
não é um mixin válido pro yak ("not a valid css value or css mixin"). Em posição de
|
|
101
|
+
valor, uma arrow function comum (mesmo sem usar props) segue a mesma regra de qualquer
|
|
102
|
+
valor dinâmico (R3). */
|
|
103
|
+
vertical-align: ${() => isSafari ? '2px' : '-7px'};
|
|
104
104
|
`
|
|
105
105
|
const RemoveIcon = styled(Icon)`
|
|
106
106
|
width: 20px;
|
|
@@ -116,7 +116,7 @@ const RemoveIcon = styled(Icon)`
|
|
|
116
116
|
text-align: center;
|
|
117
117
|
cursor: pointer;
|
|
118
118
|
color: ${getColor('gray120')};
|
|
119
|
-
|
|
119
|
+
&:hover {
|
|
120
120
|
background-color: ${getColor('gray210')};
|
|
121
121
|
color: ${props => darken(0.05, getColor('alert')(props))};
|
|
122
122
|
}
|
|
@@ -126,7 +126,7 @@ const AutoCompleteMenu = styled(ContextMenu)`
|
|
|
126
126
|
box-shadow: 0 2px 3px 1px rgba(0,0,0,0.2),0 0px 0px 1px rgba(0,0,0,0.05);
|
|
127
127
|
max-height: 22rem;
|
|
128
128
|
overflow: auto;
|
|
129
|
-
${
|
|
129
|
+
${ListItem} {
|
|
130
130
|
> * {
|
|
131
131
|
padding: 11px;
|
|
132
132
|
}
|
|
@@ -134,14 +134,14 @@ const AutoCompleteMenu = styled(ContextMenu)`
|
|
|
134
134
|
`
|
|
135
135
|
|
|
136
136
|
const AutoCompleteError = styled(Errors)`
|
|
137
|
-
${
|
|
137
|
+
${ErrorsItem} {
|
|
138
138
|
background: transparent;
|
|
139
139
|
border: none;
|
|
140
140
|
color: ${getColor('alert')};
|
|
141
141
|
padding: 0;
|
|
142
142
|
margin-top: 0.5rem;
|
|
143
143
|
font-weight: 600;
|
|
144
|
-
${
|
|
144
|
+
${ErrorsCloseIcon} {
|
|
145
145
|
display: none;
|
|
146
146
|
}
|
|
147
147
|
}
|
|
@@ -170,7 +170,7 @@ const DropdownIconContainer = styled(Icon)`
|
|
|
170
170
|
text-align: center;
|
|
171
171
|
cursor: pointer;
|
|
172
172
|
color: ${getColor('gray90')};
|
|
173
|
-
|
|
173
|
+
&:hover, &:active {
|
|
174
174
|
background: rgba(0,0,0,0.15);
|
|
175
175
|
}
|
|
176
176
|
}
|
package/src/Checkbox.jsx
CHANGED
|
@@ -11,7 +11,7 @@ const HiddenInput = styled.input`
|
|
|
11
11
|
pointer-events: none;
|
|
12
12
|
`
|
|
13
13
|
|
|
14
|
-
export const Checkbox = ({className, children, isChecked = _.identity, isList, onClick, disabled, inverted, path, tabIndex = 1, raw, ...rest}) => {
|
|
14
|
+
export const Checkbox = ({className, style, children, isChecked = _.identity, isList, onClick, disabled, inverted, path, tabIndex = 1, raw, ...rest}) => {
|
|
15
15
|
const focused = useToggle()
|
|
16
16
|
const [v, ,{name, toggle, toggleItem, hasErrors}] = useInput({ path, isChecked,...rest}, raw)
|
|
17
17
|
const testInvert = (v) => inverted ? !v : v
|
|
@@ -27,7 +27,7 @@ export const Checkbox = ({className, children, isChecked = _.identity, isList, o
|
|
|
27
27
|
e.preventDefault();
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
return <label onClick={_onClick} data-drag="false" className={className}>
|
|
30
|
+
return <label onClick={_onClick} data-drag="false" className={className} style={style}>
|
|
31
31
|
{
|
|
32
32
|
!isTouchDevice() && <HiddenInput
|
|
33
33
|
onFocus={focused.open}
|
package/src/Combobox.jsx
CHANGED
package/src/DatePicker.jsx
CHANGED
|
@@ -2,7 +2,7 @@ import React, {forwardRef, useContext, useEffect, useRef, useState} from 'react'
|
|
|
2
2
|
import styled, {css} from 'styled-components'
|
|
3
3
|
import _ from 'lodash/fp'
|
|
4
4
|
import {StartlibsContext, useEnsureRef, usePopupToggle, usePrevious} from '@startlibs/core'
|
|
5
|
-
import {formatDate, formatDateToPattern, getColor, getNumberInputType, ifProp, media, parseDate} from '@startlibs/utils'
|
|
5
|
+
import {formatDate, formatDateToPattern, getColor, getNumberInputType, ifProp, insertKeyframes, media, parseDate} from '@startlibs/utils'
|
|
6
6
|
import {Icon} from '@startlibs/components'
|
|
7
7
|
import {Field} from './Field'
|
|
8
8
|
import {TextInput} from './TextInput'
|
|
@@ -16,7 +16,22 @@ export const CALENDAR_LEVEL_YEAR = 'year'
|
|
|
16
16
|
|
|
17
17
|
const LEVELS = [CALENDAR_LEVEL_DAY, CALENDAR_LEVEL_MONTH, CALENDAR_LEVEL_YEAR]
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
// Nome fixo do @keyframes preservado: um `keyframes` do styled-components geraria um nome
|
|
20
|
+
// com hash, diferente do atual "datePickerFadeInDown" (quebraria quem lê animationName). Por
|
|
21
|
+
// isso o bloco fica fora de um template styled/css/keyframes, registrado pelo CSSOM (sem
|
|
22
|
+
// nonce) no primeiro render do DatePickerContainer (mesmo padrão de components/src/Loading.jsx).
|
|
23
|
+
const injectDatePickerFadeInDownKeyframes = () => insertKeyframes('datePickerFadeInDown',
|
|
24
|
+
'from { opacity: 0; transform: translateY(-10px); pointer-events: none; } to { opacity: 1; transform: none; pointer-events: none; }')
|
|
25
|
+
|
|
26
|
+
// styled(DatePickerContainerBase) mira num componente, não numa tag: ao contrário do antigo
|
|
27
|
+
// styled.div, o styled-components não filtra prop inválida pra <div> nesse caso. O template
|
|
28
|
+
// abaixo não lê nenhuma prop custom, então repassar tudo com {...props} é seguro.
|
|
29
|
+
const DatePickerContainerBase = React.forwardRef((props, ref) => {
|
|
30
|
+
injectDatePickerFadeInDownKeyframes()
|
|
31
|
+
return <div ref={ref} {...props}/>
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
const DatePickerContainer = styled(DatePickerContainerBase)`
|
|
20
35
|
width: 20rem;
|
|
21
36
|
position: absolute;
|
|
22
37
|
z-index: 100;
|
|
@@ -38,18 +53,6 @@ const DatePickerContainer = styled.div`
|
|
|
38
53
|
width: 2.5rem;
|
|
39
54
|
`}
|
|
40
55
|
}
|
|
41
|
-
@keyframes datePickerFadeInDown {
|
|
42
|
-
from {
|
|
43
|
-
opacity: 0;
|
|
44
|
-
transform: translateY(-10px);
|
|
45
|
-
pointer-events: none;
|
|
46
|
-
}
|
|
47
|
-
to {
|
|
48
|
-
opacity: 1;
|
|
49
|
-
transform: none;
|
|
50
|
-
pointer-events: none;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
56
|
`
|
|
54
57
|
|
|
55
58
|
const CalendarHeader = styled.div`
|
|
@@ -75,7 +78,7 @@ const WeekHeader = styled(CalendarContentContainer)`
|
|
|
75
78
|
`
|
|
76
79
|
|
|
77
80
|
const CalendarClickable = styled.a`
|
|
78
|
-
|
|
81
|
+
&:hover, &:focus {
|
|
79
82
|
background-color: rgba(0,0,0,0.1);
|
|
80
83
|
cursor: pointer;
|
|
81
84
|
}
|
|
@@ -115,12 +118,12 @@ const CalendarContent = styled(CalendarClickable)`
|
|
|
115
118
|
)}
|
|
116
119
|
${ifProp('isCurrent', css`
|
|
117
120
|
background: ${getColor('main')};
|
|
118
|
-
color: #FFF;
|
|
119
|
-
|
|
121
|
+
color: #FFF;
|
|
122
|
+
&:hover {
|
|
120
123
|
background-color: ${props => darken(0.075, getColor('main')(props))};
|
|
121
124
|
}
|
|
122
125
|
${ifProp('isSelected', 'box-shadow: none;')}
|
|
123
|
-
`)}
|
|
126
|
+
`)}
|
|
124
127
|
`
|
|
125
128
|
|
|
126
129
|
const DayItem = styled(CalendarContent)`
|
|
@@ -146,7 +149,7 @@ const DatePickerInputIcon = styled(Icon)`
|
|
|
146
149
|
width: 2rem;
|
|
147
150
|
cursor: pointer;
|
|
148
151
|
color: ${getColor('gray150')};
|
|
149
|
-
|
|
152
|
+
&:hover {
|
|
150
153
|
color: ${getColor('main')};
|
|
151
154
|
}
|
|
152
155
|
display: none;
|
|
@@ -173,7 +176,7 @@ const ClearButton = styled(Icon)`
|
|
|
173
176
|
text-align: center;
|
|
174
177
|
border-radius: 50%;
|
|
175
178
|
background: rgba(0,0,0,0.1);
|
|
176
|
-
|
|
179
|
+
&:hover {
|
|
177
180
|
background: #f7d3d4;
|
|
178
181
|
color: ${getColor('alert')};
|
|
179
182
|
}
|
|
@@ -199,10 +202,10 @@ const ShortcutsWrapper = styled.div`
|
|
|
199
202
|
font-size: 13px;
|
|
200
203
|
`}
|
|
201
204
|
|
|
202
|
-
|
|
205
|
+
&:hover {
|
|
203
206
|
color: ${getColor('main')};
|
|
204
207
|
}
|
|
205
|
-
|
|
208
|
+
|
|
206
209
|
${ifProp('disabled', css`
|
|
207
210
|
pointer-events: none;
|
|
208
211
|
opacity: 0.5;
|
package/src/Errors.jsx
CHANGED
|
@@ -118,25 +118,31 @@ export const Errors = ({path,filter,className, autoScroll}) => {
|
|
|
118
118
|
}
|
|
119
119
|
},[uniqErrors])
|
|
120
120
|
|
|
121
|
-
return <TransitionDiv block>{uniqErrors.length > 0 && <
|
|
121
|
+
return <TransitionDiv block>{uniqErrors.length > 0 && <ErrorsContainer ref={ref} className={className}>
|
|
122
122
|
{uniqErrors.map(([value]) => value && value !== true &&
|
|
123
|
-
<
|
|
123
|
+
<ErrorsItem key={value}>
|
|
124
124
|
{value}
|
|
125
|
-
<
|
|
126
|
-
</
|
|
125
|
+
<ErrorsCloseIcon onClick={willRemoveError(value, path)}/>
|
|
126
|
+
</ErrorsItem>
|
|
127
127
|
)}
|
|
128
|
-
</
|
|
128
|
+
</ErrorsContainer>}</TransitionDiv>
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
Errors.displayName = 'Errors'
|
|
132
132
|
|
|
133
|
-
Errors.Container =
|
|
133
|
+
// Nomes próprios (não `Errors.Container = ...`) porque o yak resolve `${Errors.Item}` num outro
|
|
134
|
+
// arquivo tentando avaliar o módulo inteiro de `Errors` (um componente React de verdade, com
|
|
135
|
+
// hooks) em tempo de build — e falha ("rename Errors.mjs so its exports run at build time (or
|
|
136
|
+
// replace Errors.Item with a literal value)"). Um export próprio resolve direto, sem depender do
|
|
137
|
+
// componente. `Errors.Container`/`Errors.Item`/`Errors.CloseIcon` continuam existindo (uso
|
|
138
|
+
// interno e compatibilidade de quem já importa `Errors` e lê essas propriedades).
|
|
139
|
+
export const ErrorsContainer = styled.ul`
|
|
134
140
|
list-style-type: none;
|
|
135
141
|
margin: 0;
|
|
136
142
|
padding: 0;
|
|
137
143
|
`
|
|
138
144
|
|
|
139
|
-
|
|
145
|
+
export const ErrorsItem = styled.li`
|
|
140
146
|
background-color: ${props => lighten(0.42, props.theme.colors.alert)};
|
|
141
147
|
padding: 1rem 3.5rem 1rem 1rem;
|
|
142
148
|
border-radius: 8px;
|
|
@@ -151,7 +157,7 @@ Errors.Item = styled.li`
|
|
|
151
157
|
}
|
|
152
158
|
${customTheme('ErrorItem')}
|
|
153
159
|
`
|
|
154
|
-
|
|
160
|
+
export const ErrorsCloseIcon = styled(Icon).attrs({icon: 'x'})`
|
|
155
161
|
color: ${getColor('alert')};
|
|
156
162
|
font-weight: 600;
|
|
157
163
|
display: inline-block;
|
|
@@ -172,3 +178,7 @@ Errors.CloseIcon = styled(Icon).attrs({icon: 'x'})`
|
|
|
172
178
|
}
|
|
173
179
|
`
|
|
174
180
|
|
|
181
|
+
Errors.Container = ErrorsContainer
|
|
182
|
+
Errors.Item = ErrorsItem
|
|
183
|
+
Errors.CloseIcon = ErrorsCloseIcon
|
|
184
|
+
|
package/src/ExpandableBox.jsx
CHANGED
|
@@ -31,17 +31,17 @@ const ExpandableBoxStyled = styled.div`
|
|
|
31
31
|
${props => props.collapsed ? css`
|
|
32
32
|
cursor: pointer;
|
|
33
33
|
padding-right: 3.25rem;
|
|
34
|
-
|
|
34
|
+
&:hover {
|
|
35
35
|
background: ${props => darken(0.035, getColor('lightBluishGray')(props))};
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
&:active {
|
|
38
38
|
background: ${props => darken(0.05, getColor('lightBluishGray')(props))};
|
|
39
39
|
transition: none;
|
|
40
40
|
}
|
|
41
41
|
`: css`
|
|
42
42
|
padding: 1.5rem;
|
|
43
43
|
${media.max(340)`
|
|
44
|
-
padding 1rem;
|
|
44
|
+
padding: 1rem;
|
|
45
45
|
`}
|
|
46
46
|
${props => props.fixMarginBottom && `
|
|
47
47
|
padding-bottom: 0.5rem !important;
|
package/src/Field.jsx
CHANGED
|
@@ -16,7 +16,12 @@ const Container = styled.div`
|
|
|
16
16
|
margin-bottom: ${props => getMargin(props.theme.Field.margins)(props)};
|
|
17
17
|
text-align: left;
|
|
18
18
|
`
|
|
19
|
-
|
|
19
|
+
// Nome próprio (não só `Field.Label = ...`): TextInput.jsx usa `${Field.Label}` como seletor
|
|
20
|
+
// (FloatingFieldType) num ARQUIVO DIFERENTE, e o yak tenta resolver isso avaliando o módulo
|
|
21
|
+
// inteiro de `Field` (um componente React de verdade) em tempo de build — falha com um
|
|
22
|
+
// `undefined` na saída (mesmo problema do Errors.Item, ver Errors.jsx). `Field.Label` continua
|
|
23
|
+
// existindo (uso interno e compatibilidade).
|
|
24
|
+
export const FieldLabel = styled.label`
|
|
20
25
|
font-weight: 550;
|
|
21
26
|
display: inline-block;
|
|
22
27
|
font-size: ${props => props.labelFontSize ? props.labelFontSize : '15'}px;
|
|
@@ -58,18 +63,18 @@ export const Field = React.forwardRef((
|
|
|
58
63
|
<Container ref={ref} {...rest} className={className}>
|
|
59
64
|
{
|
|
60
65
|
label &&
|
|
61
|
-
<
|
|
66
|
+
<FieldLabel {...rest} onClick={labelClick} labelFontSize={labelFontSize}>
|
|
62
67
|
{label}{mandatory && <Mandatory mandatory={mandatory}>*</Mandatory>}
|
|
63
68
|
{helpText && <HelpText> {helpText}</HelpText>}
|
|
64
69
|
{descText && <FieldDescription>{descText}</FieldDescription>}
|
|
65
|
-
</
|
|
70
|
+
</FieldLabel>
|
|
66
71
|
}
|
|
67
72
|
{children}
|
|
68
73
|
{bellowDescText && <BellowFieldDescription>{bellowDescText}</BellowFieldDescription>}
|
|
69
74
|
</Container>
|
|
70
75
|
)
|
|
71
76
|
|
|
72
|
-
Field.Label =
|
|
77
|
+
Field.Label = FieldLabel
|
|
73
78
|
Field.Container = Container
|
|
74
79
|
Field.HelpText = HelpText
|
|
75
80
|
Field.Description = FieldDescription
|
package/src/FieldBox.jsx
CHANGED
|
@@ -45,10 +45,10 @@ const DeleteButton = styled(Icon).attrs({icon: 'x'})`
|
|
|
45
45
|
color: ${getColor('gray120')};
|
|
46
46
|
background-color: rgba(0,0,0,0.08);
|
|
47
47
|
flex-shrink: 0;
|
|
48
|
-
|
|
48
|
+
&:hover {
|
|
49
49
|
background: rgba(0,0,0,0.11);
|
|
50
50
|
}
|
|
51
|
-
|
|
51
|
+
&:active {
|
|
52
52
|
background: rgba(0,0,0,0.13);
|
|
53
53
|
}
|
|
54
54
|
`
|
|
@@ -66,10 +66,10 @@ const DropdownButton = styled(Icon).attrs({icon: 'arrow-down'})`
|
|
|
66
66
|
background-color: rgba(0,0,0,0.08);
|
|
67
67
|
flex-shrink: 0;
|
|
68
68
|
position: relative;
|
|
69
|
-
|
|
69
|
+
&:hover {
|
|
70
70
|
background: rgba(0,0,0,0.11);
|
|
71
71
|
}
|
|
72
|
-
|
|
72
|
+
&:active {
|
|
73
73
|
background: rgba(0,0,0,0.13);
|
|
74
74
|
}
|
|
75
75
|
`
|
|
@@ -115,10 +115,10 @@ export const FieldBox = styled(({className,label,helpText,descText,actionLabel,r
|
|
|
115
115
|
transition: border-radius 0.5s ease;
|
|
116
116
|
${props => props.onClick && css`
|
|
117
117
|
cursor: pointer;
|
|
118
|
-
|
|
118
|
+
&:hover {
|
|
119
119
|
background: ${props => darken(0.035, getColor('lightBluishGray')(props))};
|
|
120
120
|
}
|
|
121
|
-
|
|
121
|
+
&:active {
|
|
122
122
|
background: ${props => darken(0.05, getColor('lightBluishGray')(props))};
|
|
123
123
|
transition: none;
|
|
124
124
|
}
|
package/src/InputboxGroup.jsx
CHANGED
package/src/RichText.jsx
CHANGED
|
@@ -88,6 +88,23 @@ const FIX_STYLE = {
|
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
// Precisa vir antes de RichTextContainer: o yak resolve `${ToolsContainer}` (seletor dentro de
|
|
92
|
+
// props.showToolbar) estaticamente lendo o módulo de cima pra baixo — em tempo de execução
|
|
93
|
+
// (sc) a ordem nunca importou, já que o template só lê ToolsContainer dentro de um callback
|
|
94
|
+
// (props => ...), chamado bem depois do módulo inteiro já ter sido avaliado.
|
|
95
|
+
const ToolsContainer = styled.div`
|
|
96
|
+
background: ${getColor('lightBluishGray')};
|
|
97
|
+
padding: 0 0.125rem;
|
|
98
|
+
border-top-left-radius: 7px;
|
|
99
|
+
border-top-right-radius: 7px;
|
|
100
|
+
transition: 0.225s;
|
|
101
|
+
max-height: 0;
|
|
102
|
+
pointer-events: none;
|
|
103
|
+
overflow: hidden;
|
|
104
|
+
display: flex;
|
|
105
|
+
align-items: center;
|
|
106
|
+
`
|
|
107
|
+
|
|
91
108
|
export const RichTextContainer = styled.div`
|
|
92
109
|
position:relative;
|
|
93
110
|
width: 100%;
|
|
@@ -159,19 +176,6 @@ export const RichTextInput = styled.div`
|
|
|
159
176
|
`}
|
|
160
177
|
`
|
|
161
178
|
|
|
162
|
-
const ToolsContainer = styled.div`
|
|
163
|
-
background: ${getColor('lightBluishGray')};
|
|
164
|
-
padding: 0 0.125rem;
|
|
165
|
-
border-top-left-radius: 7px;
|
|
166
|
-
border-top-right-radius: 7px;
|
|
167
|
-
transition: 0.225s;
|
|
168
|
-
max-height: 0;
|
|
169
|
-
pointer-events: none;
|
|
170
|
-
overflow: hidden;
|
|
171
|
-
display: flex;
|
|
172
|
-
align-items: center;
|
|
173
|
-
`
|
|
174
|
-
|
|
175
179
|
const ToolButton = styled(Button)`
|
|
176
180
|
min-height: 2rem;
|
|
177
181
|
min-width: 2rem;
|