{"version":3,"sources":["../node_modules/diginet-core-ui/components/form-control/control/index.js","../node_modules/diginet-core-ui/components/form-control/calendar/function.js","../node_modules/diginet-core-ui/components/chip/attach.js","../node_modules/diginet-core-ui/components/collapse/index.js","../node_modules/diginet-core-ui/components/divider/index.js","../node_modules/diginet-core-ui/components/form-control/attachment/index.js","../node_modules/diginet-core-ui/components/form-control/checkbox/index.js","../node_modules/diginet-core-ui/components/form-control/date-range-picker/index.js","../node_modules/diginet-core-ui/components/form-control/dropdown/index.js","../node_modules/diginet-core-ui/components/form-control/dropdown-box/index.js","../node_modules/diginet-core-ui/components/form-control/form-group/index.js","../node_modules/diginet-core-ui/components/form-control/calendar/index.js","../node_modules/diginet-core-ui/components/form-control/date-picker/index.js","../node_modules/diginet-core-ui/components/chip/index.js","../node_modules/diginet-core-ui/components/form-control/helper-text/index.js"],"names":["danger","colors","semantic","Control","memo","forwardRef","_ref","reference","children","className","disabled","error","style","props","_objectWithoutProperties","_excluded","ref","useRef","classes","useLayoutEffect","current","classList","add","querySelector","remove","useImperativeHandle","currentRef","_instance","instance","jsx","_objectSpread","join","trim","replace","css","controlRootCSS","_templateObject","_taggedTemplateLiteral","displayBlock","positionRelative","pointerEventsNone","userSelectNone","defaultProps","propTypes","PropTypes","oneOfType","element","node","isRequired","string","bool","object","boxShadowsLarge","useTheme","boxShadows","large","generateCalendarCSS","unique","boxShadow","arguments","length","undefined","onClickActive","displayFlex","flexCol","boxBorder","borderRadius","bgColor","parseWidth","parseMaxWidth","navigator","flexRow","justifyBetween","itemsCenter","mg","around","center","table","container","pd","data","cursorPointer","textCenter","textColor","day","limit","cursorDefault","_templateObject2","active","today","border","between","from","to","positionAbsolute","inset","header","parseHeight","mgt","parseMinWidth","parseWidthHeight","icon","typographyProps","color","alignItems","display","height","justifyContent","margin","transition","width","type","buttonIconProps","circular","viewType","size","isValidDate","value","Date","isNaN","getDateOfWeek","date","getDay","isToday","moment","diff","isActive","Array","isArray","isLimit","max","min","isBeforeLimit","isAfterLimit","isBetween","time","setHours","renderHeader","weekdays","getGlobal","tableHeader","i","push","key","Typography","raw","renderNavigator","refs","dbLeftFn","leftFn","rightFn","dbRightFn","fn","ButtonIcon","name","onClick","doubleLeft","left","Button","textTransform","buttonTextProps","content","right","doubleRight","onUpdateNavigator","_refs$doubleLeft$curr","_refs$doubleLeft$curr2","_refs$doubleRight$cur","_refs$doubleRight$cur2","_refs$left$current","_refs$left$current$in","_refs$right$current","_refs$right$current$i","el","vl","getMonth","getFullYear","renderNavigatorContent","year","locale","get","concat","innerHTML","firstDayOfMin","setDate","firstDayOfMax","option","setTimeout","_refs$doubleLeft$curr3","_refs$doubleLeft$curr4","_refs$doubleLeft$curr5","_refs$doubleLeft$curr6","_refs$left$current2","_refs$left$current2$i","_refs$doubleRight$cur3","_refs$doubleRight$cur4","_refs$doubleRight$cur5","_refs$doubleRight$cur6","_refs$right$current2","_refs$right$current2$","onUpdateCalendar","navigatorRefs","activeValue","displayAnotherMonth","onTableDataClick","onUpdateNavigatorValue","child","firstDay","lastDay","prevDay","lastDate","getDate","prevDate","tableBody","tableRaw","tableData","weekDateFirst","weekDateLast","parse","j","week","renderTableBody","render","appendChild","document","createElement","FileTypeIcon","Pdf","Word","Sheet","Presentation","Image","Compressed","Another","AttachChip","label","file","maxLength","onView","onDownload","onRemove","moreActionRef","_useState","useState","_useState2","_slicedToArray","open","setOpen","MoreAction","clickOutAction","event","contains","target","removeEventListener","attachView","useMemo","ModalSample","title","FileName","onClose","Slider","SliderItem","url","URL","Fragment","Chip","clearAble","slice","startIcon","_file$FileName","lastIndexOfDot","lastIndexOf","fileExt","fileType","getFileType","FileIcon","capitalize","viewBox","getStartIcon","endIcon","addEventListener","e","viewAction","fetch","then","resp","blob","window","createObjectURL","a","href","download","body","click","revokeObjectURL","catch","alert","downloadAction","parentNode","deleteAction","shape","number","any","Collapse","id","onClosed","onOpened","timer","useEffect","clearTimeout","scrollHeight","duration","Math","transitionDuration","_onOpen","_onClose","CollapseRoot","func","Divider","_ref$action","action","direction","_DividerRoot","DividerRoot","__proto__","classNames","isVertical","borderNone","flexShrink0","oneOf","OptionWrapper","_regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","defineProperty","obj","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","arg","call","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","resolve","reject","invoke","record","result","__await","unwrapped","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","return","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","constructor","mark","setPrototypeOf","awrap","async","Promise","iter","keys","val","reverse","pop","skipTempReset","prev","charAt","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","lineNormal","line","normal","icons","pdf","word","sheet","presentation","image","compressed","default","oldAttached","allNewAttached","FormData","attached","chosenItems","getType","_type$match","test","match","_data$FileName","FileExt","getDateTime","String","format","getNewUnitSize","sizeName","totalSize","num","arraySize","index","indexOf","newTotalSize","pow","divideSizeMap","Map","Attachment","accept","allowSort","deleteNotifyText","domain","hintText","inputProps","isStripDomain","maxFile","maxSizeProp","maxSize","multiple","onChange","onDownloadProp","onRemoveProp","onViewProp","ownerName","readOnly","required","unitSize","uploadErrorInfo","attachTextRef","attachmentHandleIconRef","attachmentInputRef","attachedRef","popupRef","popoverRef","isDeleteAll","notifyRef","removedAttachedRef","prevent","existClickOutOfItem","Infinity","showModal","setShowModal","_useState3","_useState4","showPopup","setShowPopup","_useState5","_useState6","viewTypeState","setViewTypeState","_useState7","_useState8","newDataState","setNewDataState","_useState9","_useState10","dataState","setDataState","isEnable","isEmpty","_AttachmentRootCSS","AttachmentRootCSS","onSortElement","multi","currentActive","currentTarget","attachedList","querySelectorAll","sort","b","textA","textContent","textB","text","objA","find","attach","objB","FileSize","toString","localeCompare","numeric","valueA","valueB","CreateDate","getTime","onChangeFiles","_ref2","_asyncToGenerator","_callee","_e$target","_e$target$files","files","lengthAttached","_files$i","_files$i2","_files$i3","_files$i4","_i","_i2","_context","persist","checkExistingFile","checkAcceptFileType","show","removeFileOutInputFiles","_toConsumableArray","onProgressing","insertAttached","stripDomain","newAttached","getAll","_x","apply","reader","FileReader","readAsDataURL","onload","onloadstart","AttachedLinearCSS","childNodes","onprogress","loaded","total","onloadend","onerror","console","log","calculateSize","unitSizeName","divideSize","toUpperCase","_getNewUnitSize","_getNewUnitSize2","_formatBytes","bytes","decimals","k","dm","sizes","floor","parseFloat","toFixed","formatBytes","_formatBytes2","round","onShowPopup","onClosePopup","removeActiveChosenItem","onDownloadMultiple","mountDomain","onRemoveMultiple","attachedItems","nodeList","recentRemovedAttached","tempDataState","tempNewDataState","itemEl","parent","deletedFile","findIndex","splice","tempAttachedItems","removedAttached","clearAllAttached","confirmPopup","allAttachEl","attachEl","firstChild","onGetViewItem","AttachmentID","keeping","_step","dt","DataTransfer","_iterator","_createForOfIteratorHelper","s","n","items","f","delete","append","_step2","tempArr","_iterator2","newFile","some","acceptType","includes","extFile","onChooseItem","ctrlKey","shiftKey","startIndex","endIndex","AttachedItemCSS","indexEl","shift","removeAllChosenItems","onKeyDown","clickOutOfItem","checkChosenMultiple","actionIcons","preventDefault","itemsNode","chosenItemsNode","filter","scrollIntoView","block","behavior","_popupRef$current","_popupRef$current$sty","item","cloneItem","JSON","stringify","re","RegExp","_item$URL","_item$URL2","numberSize","unitMaxSize","unit","getBit","setAttribute","removeAttribute","triggerClickInput","onDropInput","clear","openFileDialog","AttachHeaderView","AttachmentHeaderCSS","AttachmentInfoCSS","Label","uppercase","HelperText","AttachmentHeaderIconCSS","AttachmentHandleIconCSS","AttachmentImageEmptyCSS","AttachmentImageCSS","AttachmentImageCenterCSS","justifyEnd","ButtonAttachmentCSS","Popover","anchor","marginRight","anchorOrigin","vertical","horizontal","transformOrigin","List","ListItem","ListItemText","AttachmentInputView","AttachmentInputCSS","onDrop","onDragLeave","renderAttachmentItem","idx","isNew","isViewTypeIcon","toISOString","onDoubleClick","AttachedItemInfoCSS","AttachedItemInfoIconCSS","lastModifiedDate","mgl","lineClamp","AttachedItemOwnerCSS","DetailInfoCSS","UserName","LinearProgress","determinate","percent","AttachedView","ScrollBar","AttachmentListCSS","AttachedCSS","map","PopupView","Popup","description","pressESCToClose","onConfirm","onCancel","ModalView","onDragEnter","Notify","progressing","autoDisappear","displayNone","mgr","_templateObject3","gap","_templateObject4","_templateObject5","top","_templateObject6","justifyCenter","_templateObject7","_templateObject8","_templateObject9","_templateObject10","borderRadius4px","_templateObject11","boxContent","parseMaxWidthHeight","borderRadius50","_templateObject12","_templateObject13","displayInlineBlock","truncate","floatRight","textRight","_templateObject14","_templateObject15","_templateObject16","mgx","mgb","flexWrap","bottom","_templateObject17","_templateObject18","justifyStart","existingFile","array","_useTheme","_useTheme$colors","systemWhite","system","white","_useTheme$colors$fill","fill","fillHover","hover","fillPressed","pressed","spacing","Checkbox","checked","defaultChecked","forTreeView","inputRef","labelProps","stopPropagation","checkedState","setCheckedState","randomString","allowNumber","allowSymbol","_CheckBoxSquareCSS","CheckBoxSquareCSS","_CheckBoxInputCSS","CheckBoxInputCSS","setChecked","check","Boolean","getChecked","CheckboxContainerCSS","_inputRef$current$cli","_inputRef$current","CheckBoxRootCSS","oldLogicChecked","currentInputRef","hidden","CheckBoxLabelCSS","marginLeft","parseMinWidthHeight","scale","borderColor","cursorNotAllowed","CheckBoxSquareCSSName","itemsStart","zIndexCORE","zIndex","getDaysFrom1970","t","parseInt","getTimezoneOffset","toLocalTimestamp","formatValue","utc","v","isBefore","isAfter","parseDate","DateRangePicker","actionIconAt","controls","defaultValue","displayFormat","helperTextProps","inputStyle","onShowTooltip","placeholder","returnFormat","showUnitCount","startFromZero","textAlign","unitCount","footerRef","iconRef","ipConRef","ipRef","pickerRef","tableFrRef","tableToRef","tooltipRef","tempValues","valueFr","valueTo","selected","now","setValues","setTempValues","setValueFr","setValueTo","setSelected","_useState11","_useState12","valueState","setValueState","navigatorFromRefs","navigatorToRefs","closeText","cancelText","confirmText","unitText","updateValues","useCallback","updateTempValues","updateSelected","updateValueFr","updateValueTo","dayParsed","countDay","Number","onChangeValue","setInputValue","onDayClick","dataset","renderPicker","setButtonState","renderCalendar","pointerEvents","updateFromTo","times","timeFr","timeTo","update","isValidValues","createPicker","picker","cssText","_window","innerHeight","innerWidth","Element","getBoundingClientRect","pickerHeight","pickerWidth","pickerCSS","styles","getPickerStyle","setPrevTime","level","firstDayOfTime","setMonth","setFullYear","setNextTime","isVisible","isEqual","query","selector","close","cancel","confirm","visibility","visible","assign","closePicker","onSwap","hiddenStyle","previousSibling","activeStyle","nextSibling","onScroll","getElementById","updatePosition","onResize","onDayHover","arr","currentTime","tooltipContent","firstValue","dates","abs","start","end","countDays","tooltip","tooltipBounding","dayBounding","pickerBounding","onPickerHover","tagName","toLowerCase","clearDayHovering","pressESCHandler","onClickOutside","openPicker","backGr","background","portal","createBackground","pickerComp","getElementsByTagName","focus","blur","onInputFocus","unshift","tempValue","enUnitText","capitalizeSentenceCase","newMin","newMax","iconComp","IconAreaCSS","footerMemo","ControlContainerCSS","footer","buttonProps","leftCalendarComp","rightCalendarComp","tooltipComp","wrapper","divider","ControlComp","InputBase","textOverflow","startIconProps","opacity","padding","positionFixed","whiteSpaceNoWrap","invisible","z","position","transform","arrayOf","instanceOf","paragraph1","typography","currentValue","currentObjectDefault","isSearch","allValue","separatorPattern","regexBetween","regexInclude","checkHasValue","convertData","valueExpr","valueTemp","Dropdown","_ref2$action","allowSearch","closeAfterSelect","dataSource","displayExpr","dropdownItemStyle","iconExpr","itemMode","loading","maximumSelectionLength","multilineSelectedItem","noDataText","onInput","onLoadMore","renderItem","renderSelectedItem","searchDelayTime","searchExpr","searchMode","selectBox","skip","subText","treeViewID","treeViewParentID","valueProp","valueObjectDefault","_searchDelayTime$matc","_searchDelayTime$matc2","m","ms","convertSearchDelayTime","dropdownRef","timerRef","formRef","dropdownListRef","searchRef","loadMoreTimer","dataChosen","openState","setOpenState","showClear","setShowClear","valueSingle","setValueSingle","txtSearch","setTxtSearch","popoverWidth","setPopoverWidth","_useState13","_useState14","loadingState","setLoadingState","_useState15","_useState16","totalState","setTotalState","_useState17","_useState18","dataSourceState","setDataSourceState","_useState19","substitle","_useState20","popupDataState","setPopupDataState","_useState21","_useState22","valueMulti","setValueMulti","_isMobile","isMobile","_InputCSS","InputCSS","_DropdownInputCSS","DropdownInputCSS","_IconCSS","IconCSS","_DropdownFormCSS","DropdownFormCSS","_DropdownListCSS","DropdownListCSS","_DropdownItemCSS","DropdownItemCSS","_DropdownRootCSS","DropdownRootCSS","setShowDropdown","triggerBlur","setValueIntoInput","onClickInput","moveOnItem","closeDropdown","activeEl","activeElement","nextElementSibling","previousElementSibling","customizeWidthDropdown","onLoadMoreHandler","handleRenderBySearch","startsWith","displayValue","_displayExpr","mask","_","mapDropdown","_currentObjectDefault","_dataSourceUsable","dataSourceUsable","loadData","existItemQuantity","_loop","_loop2","_index","displayText","itemDisabled","getIconFromData","isMaximumSelection","DisabledCSS","tabIndex","CheckBoxCSS","EmptyDataText","mapTreeView","TreeView","searchProps","autoFocus","parentID","renderData","keyArr","pattern","separatorArr","split","str","_src","insideChip","prefix","suffix","Avatar","src","handleActionLoadData","isReset","_filter$current","search","strSearch","params","_data","originalError","message","customMessage","codeError","code","_customMessage","messageError","subtitle","_data$data","Message","rows","scrollTop","offsetHeight","ceil","_dropdownListRef$curr","_currentObjectDefault3","onPreventKeyDownHandler","onChangeInput","_e$target$value","newValueArrState","onClear","setPreviousValue","source","displayKey","valueArr","Set","_currentObjectDefault4","setMultipleValueHandler","itemOfValue","valueObject","_currentObjectDefault5","setSingleValueHandler","parseMinHeight","parseMaxHeight","valueWithIcon","hoverTooltip","showDropdown","setValue","DOM","_dropdownListRef$curr2","_dropdownListRef$curr3","_currentObjectDefault6","loadMoreItemsDropdown","_currentObjectDefault2","_displayExpr2","notExistItem","_loop3","_loop4","normalize","dropdownItem","ReactDOM","_ret3","LabelView","InputView","dataFilter","getData","_displayExpr3","removed","lineHeight","CircularProgress","animation","ErrorView","DropdownView","overflowHidden","dropdown","delayOnChange","marginBottom","LoadingProgressCSS","outlineNone","pdt","pdb","pdl","breakWord","DropdownInputCSSName","pdy","borderBottomColor","insetX","borderBottom","overflowAuto","italic","DropdownFormCSSName","MAX_SAFE_INTEGER","_colors$fill","fillDisabled","scrollbar","timing","DropdownBox","openOnClickAt","delayOnInput","dropdownBoxRef","onTriggerDropdown","closeDropdownBox","openDropdownBox","onClickOutsideOfInput","_ref$current$getBound","positionTop","certain","_Array$from","_Array$from$classList","portals","DropdownBoxRootCSS","createPortal","DropdownBoxCSS","theme","FormGroup","fullWidth","oneHelperText","previousError","FormGroupRoot","allUnderlined","outlined","input","resetLabelPosition","isError","Children","Calendar","actions","tableRef","navigatorValue","setActiveValue","setNavigatorValue","onUpdateActiveValue","onUpdate","newValue","getCurrentTime","timeStamp","objNewDate","_navigatorValue","objNewDateMonth","objNewDateYear","navigatorMonth","navigatorYear","setNextMonth","setPrevMonth","tableMemo","DatePicker","_ipRef$current","_ipRef$current2","errorProps","calRef","focusedValue","setDisplayValue","setFocusedValue","_IconAreaCSS","handleDisplayValue","handleFocusedValue","onCalendarClick","_ipConRef$current$get","PickerCSS","CalendarComp","getInputContainer","getInput","getCalendar","getIcon","Tooltip","clientWidth","minHeight","positionLeft","_useTheme$colors$syst","rest","disabledCl","dark","_useTheme$colors$sema","semanticSuccess","success","semanticWarning","warning","semanticDanger","semanticInfo","colorMap","iconSizeMap","typographySizeMap","paddingSizeMap","minHeightSizeMap","colorProps","onDbClick","IconRef","infoChip","contentColor","backgroundColor","iconSize","paddingSize","typographySize","minHeightSize","onRemoveHandler","startIconView","Icon","ChipIconCSS","labelView","ChipLabelCSS","endIconView","ChipRootCSS","displayInlineFlex","hexToRGBA","systemDisabled","status","HelperTextRootCSS"],"mappings":"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","file":"static/js/main~8dfc28e4.42c43748.chunk.js","sourcesContent":["/** @jsxRuntime classic */\n/** @jsx jsx */\n\nimport { forwardRef, memo, useImperativeHandle, useLayoutEffect, useRef } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport PropTypes from 'prop-types';\nimport { displayBlock, pointerEventsNone, positionRelative, userSelectNone } from \"../../../styles/general\";\nimport { useColor as colors } from \"../../../theme\";\nconst {\n semantic: {\n danger\n }\n} = colors;\nconst Control = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({\n children,\n className,\n disabled,\n error,\n style,\n ...props\n}, reference) => {\n const ref = useRef(null);\n const classes = {\n disabled: 'DGN-UI-Control-disabled',\n error: 'DGN-UI-Control-error'\n };\n useLayoutEffect(() => {\n if (disabled) {\n ref.current.classList.add(classes.disabled);\n }\n if (!disabled && error) {\n ref.current.classList.add(classes.error);\n ref.current.querySelector('div.DGN-UI-InputBase').classList.add('danger');\n }\n return () => {\n if (disabled) {\n ref.current.classList.remove(classes.disabled);\n }\n if (!disabled && error) {\n ref.current.classList.remove(classes.error);\n ref.current.querySelector('div.DGN-UI-InputBase').classList.remove('danger');\n }\n };\n }, [disabled, error]);\n useImperativeHandle(reference, () => {\n const currentRef = ref.current || {};\n const _instance = {}; // methods\n _instance.__proto__ = {}; // hidden methods\n currentRef.instance = _instance;\n return currentRef;\n });\n return jsx(\"div\", {\n ...props,\n className: ['DGN-UI-Control', className].join(' ').trim().replace(/\\s+/g, ' '),\n css: controlRootCSS(classes),\n style: style,\n ref: ref\n }, children);\n}));\nconst controlRootCSS = classes => css`\n ${displayBlock}\n ${positionRelative}\n margin-bottom: 20px;\n &.${classes.disabled} {\n ${pointerEventsNone}\n ${userSelectNone}\n }\n &.${classes.error} {\n * :not(label) {\n color: ${danger};\n }\n }\n`;\nControl.defaultProps = {\n className: '',\n style: {},\n disabled: false,\n error: ''\n};\nControl.propTypes = {\n /** children of the form control */\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.node]).isRequired,\n /** the class for the form control */\n className: PropTypes.string,\n /** prevent all event if true, hide all icon */\n disabled: PropTypes.bool,\n /** error for input */\n error: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /** style of the component */\n style: PropTypes.object\n};\nexport default Control;","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { css, jsx } from '@emotion/core';\nimport { Button, ButtonIcon, Typography } from \"../..\";\nimport { getGlobal } from \"../../../global\";\nimport locale from \"../../../locale\";\nimport { render } from 'react-dom';\nimport { bgColor, border, borderRadius, boxBorder, cursorDefault, cursorPointer, displayFlex, flexCol, flexRow, inset, itemsCenter, justifyBetween, mg, mgt, parseHeight, parseMaxWidth, parseMinWidth, parseWidth, parseWidthHeight, pd, pointerEventsNone, positionAbsolute, positionRelative, textCenter, textColor, userSelectNone } from \"../../../styles/general\";\nimport { useTheme } from \"../../../theme\";\nimport { date as moment } from \"../../../utils\";\nconst {\n boxShadows: {\n large: boxShadowsLarge\n }\n} = useTheme();\n\n/**\r\n * START STYLE\r\n */\n\n/**\r\n *\r\n * @param {Object} unique\r\n * @param {Boolean} boxShadow\r\n * @param onClickActive\r\n * @returns\r\n */\nconst generateCalendarCSS = (unique, boxShadow = true, onClickActive = true) => css`\n ${displayFlex};\n ${flexCol};\n ${boxBorder};\n ${borderRadius('0px 0px 4px 4px')};\n ${bgColor('system/white')};\n ${parseWidth('100%')};\n ${parseMaxWidth(400)};\n box-shadow: ${boxShadow ? boxShadowsLarge : 'none'};\n .${unique.navigator.navigator} {\n ${displayFlex};\n ${flexRow};\n ${justifyBetween};\n ${itemsCenter};\n ${parseMaxWidth(400)};\n ${mg([4, 4, 0])};\n .${unique.navigator.around} {\n ${displayFlex};\n ${flexRow};\n }\n .${unique.navigator.center} {\n ${parseWidth('100%')};\n }\n }\n .${unique.table.container} {\n ${displayFlex};\n ${flexRow};\n ${mg([2, 0])};\n }\n .${unique.table.table} {\n ${mg([0, 4])};\n ${pd(0)};\n ${parseWidth('calc(100% - 32px)')};\n border-collapse: separate;\n table-layout: fixed;\n .${unique.table.data} {\n &:not(.empty) {\n ${cursorPointer};\n ${positionRelative};\n ${textCenter};\n ${userSelectNone};\n ${textColor('text/main')};\n &:nth-of-type(7n - 1) {\n ${textColor('info8')};\n }\n &:nth-of-type(7n) {\n ${textColor('danger8')};\n }\n &.next_month,\n &.previous_month,\n &.${unique.day.limit} {\n opacity: 0.25;\n }\n &.${unique.day.limit} {\n ${pointerEventsNone};\n ${cursorDefault};\n }\n &:hover {\n span.${unique.day.day} {\n ${bgColor('fill/hover')};\n }\n }\n ${onClickActive && css`\n &:active {\n span.${unique.day.day} {\n ${bgColor('fill/pressed')};\n }\n }\n `}\n &.${unique.day.active} {\n span.${unique.day.day} {\n ${bgColor('fill/focus')};\n }\n }\n &.${unique.day.today} {\n span {\n ${boxBorder};\n ${border(1, 'system/active')};\n }\n }\n &.${unique.day.between} {\n opacity: 1;\n &::before {\n ${bgColor('fill/hover')};\n }\n }\n &.${unique.day.from} {\n opacity: 1;\n &::before {\n ${bgColor('fill/hover')};\n border-bottom-left-radius: 12px;\n border-top-left-radius: 12px;\n left: calc((100% - 24px) / 2);\n }\n }\n &.${unique.day.to} {\n opacity: 1;\n &::before {\n ${bgColor('fill/hover')};\n border-bottom-right-radius: 12px;\n border-top-right-radius: 12px;\n right: calc((100% - 24px) / 2);\n }\n }\n ::before {\n ${positionAbsolute};\n ${inset('1px -2px')};\n content: '';\n }\n }\n }\n .${unique.table.header} {\n ${userSelectNone};\n ${textCenter};\n ${parseHeight(24)};\n ${textColor('text/normal_label')};\n &:nth-of-type(6) {\n ${textColor('info8')};\n }\n &:nth-of-type(7) {\n ${textColor('danger8')};\n }\n }\n }\n @media only screen and (max-width: 800px) {\n .${unique.navigator.navigator} {\n ${parseHeight(24)};\n ${mgt(14)};\n .${unique.navigator.center} {\n ${parseMinWidth(130)};\n ${parseHeight(24)};\n ${mg(0)};\n }\n .${unique.navigator.around} {\n ${parseWidthHeight(56, 24)};\n }\n .${unique.icon} {\n ${parseWidthHeight(24)};\n ${mg('0 2px')};\n svg,\n path,\n g {\n ${pointerEventsNone};\n }\n }\n }\n .${unique.table.container} {\n ${mg('6px 0')};\n }\n .${unique.table.table} {\n ${mg('0 10px')};\n ${parseWidth('calc(100% - 20px)')};\n .DGN-UI-Typography {\n font-size: 14px;\n }\n }\n }\n`;\n/**\r\n * END STYLE\r\n */\n\n/**\r\n *\r\n * @description return props of the typography.\r\n * @param {String} className\r\n * @returns {Object} props of the typography\r\n */\nconst typographyProps = className => {\n return {\n className,\n color: 'inherit',\n style: {\n alignItems: 'center',\n borderRadius: '50%',\n display: 'flex',\n height: 24,\n justifyContent: 'center',\n margin: 'auto',\n transition: 'background-color 150ms linear',\n width: 24\n },\n type: 'h6'\n };\n};\n/**\r\n *\r\n * @description return props of the button icon.\r\n * @param {String} className\r\n * @returns {Object} props of the button icon\r\n */\nconst buttonIconProps = className => {\n return {\n className,\n circular: true,\n viewType: 'text',\n size: 'small'\n };\n};\n/**\r\n *\r\n * @description return props of the button icon.\r\n * @param {Function} fn\r\n * @returns {Object} props of the button text\r\n */\nconst buttonTextProps = fn => {\n return {\n onClick: fn,\n color: 'primary',\n size: 'small',\n style: {\n borderRadius: 20,\n textTransform: 'initial',\n width: '100%'\n }\n };\n};\n\n/**\r\n * @description detect value is a Date object\r\n * @param {String | Number | Array} value\r\n * @returns boolean\r\n */\nconst isValidDate = value => {\n return new Date(value) instanceof Date && !isNaN(new Date(value));\n};\n/**\r\n *\r\n * @description set Sunday (0) to the last day of week.\r\n * @param {Date} date\r\n * @returns number of day from 0 (Monday) to 6 (Sunday).\r\n */\nconst getDateOfWeek = date => {\n let day = date.getDay();\n if (day === 0) day = 7;\n return day - 1;\n};\n/**\r\n *\r\n * @description check day is today.\r\n * @param {Date} day\r\n * @param {Date} today\r\n * @param {String} className\r\n * @returns {Boolean} is today\r\n */\nconst isToday = (day, today, className) => {\n return +moment(day).diff(today) === 0 ? className : '';\n};\n/**\r\n *\r\n * @description check day is active day.\r\n * @param {Date} day\r\n * @param {Date} active\r\n * @param {String} className\r\n * @returns {Boolean} is active day\r\n */\nconst isActive = (day, active, className) => {\n if (Array.isArray(active)) {\n if (+moment(day).diff(active[0]) === 0 || +moment(day).diff(active[1]) === 0) {\n return className;\n }\n }\n if (+moment(day).diff(active) === 0) {\n return className;\n }\n return '';\n};\n/**\r\n *\r\n * @description check day is min/max day.\r\n * @param {Date} day\r\n * @param {Date} max\r\n * @param {Date} min\r\n * @param {Object} className\r\n * @returns {Boolean} is limited day\r\n */\nconst isLimit = (day, max, min, className) => {\n return isBeforeLimit(min, day) || isAfterLimit(max, day) ? className : '';\n};\nconst isBetween = (day, from, to, className) => {\n if (from && isValidDate(from) && +moment(day).diff(from) === 0) {\n return className.from;\n }\n if (to && isValidDate(to) && +moment(day).diff(to) === 0) {\n return className.to;\n }\n if (from && to && isValidDate(from) && isValidDate(to) && +moment(day).diff(from) > 0 && +moment(day).diff(to) < 0) {\n return className.between;\n }\n return '';\n};\nconst isBeforeLimit = (min, time) => {\n return min && isValidDate(min) && moment(new Date(time).setHours(0, 0, 0, 0)).diff(new Date(min).setHours(0, 0, 0, 0)) < 0;\n};\nconst isAfterLimit = (max, time) => {\n return max && isValidDate(max) && moment(new Date(time).setHours(0, 0, 0, 0)).diff(new Date(max).setHours(0, 0, 0, 0)) > 0;\n};\n/**\r\n *\r\n * @description return the table body of the calendar.\r\n * @param {Date} time\r\n * @param {Date} activeValue\r\n * @param {Object} className\r\n * @param {Boolean} displayAnotherMonth\r\n * @param {Function} onTableDataClick\r\n * @param {Date} min\r\n * @param {Date} max\r\n * @returns {Element}\r\n */\nconst renderTableBody = (time, activeValue, className, displayAnotherMonth, onTableDataClick, min, max) => {\n time = new Date(time);\n const firstDay = new Date(new Date(time).setDate(1)),\n lastDay = new Date(firstDay.getFullYear(), firstDay.getMonth() + 1, 0),\n prevDay = new Date(firstDay.getFullYear(), firstDay.getMonth(), 0),\n today = new Date().setHours(0, 0, 0, 0),\n lastDate = lastDay.getDate(),\n prevDate = prevDay.getDate();\n let active = Array.isArray(activeValue) ? new Date(activeValue[0]) : new Date(activeValue);\n let tableBody = [],\n tableRaw = [],\n tableData = [],\n weekDateFirst = getDateOfWeek(firstDay),\n weekDateLast = getDateOfWeek(lastDay);\n if (activeValue && Array.isArray(activeValue) && activeValue.length === 2 && activeValue[0] !== activeValue[1]) {\n /**\r\n * days of previous month\r\n */\n active = activeValue;\n for (let i = weekDateFirst; i > 0; i--) {\n const day = new Date(time.getFullYear(), time.getMonth() - 1,\n // displayAnotherMonth ? prevDate - i + 1 : 1\n 1);\n tableData.push(jsx(\"td\", {\n key: `previous_month-${prevDate - i + 1}`,\n \"data-time\": Date.parse(day) - 1 /*(displayAnotherMonth ? 0 : 1)*/,\n className: `${[className.table.data, 'previous_month', isToday(day, today, className.day.today), isActive(day, active, className.day.active), isBetween(day, active[0], active[1], className.day)].join(' ')}`\n }, jsx(Typography, {\n ...typographyProps(className.day.day)\n }, '')));\n }\n /**\r\n * days of this month\r\n */\n for (let i = 0; i < lastDate; i++) {\n const day = new Date(time.getFullYear(), time.getMonth(), i + 1);\n tableData.push(jsx(\"td\", {\n key: `this_month-${i + 1}`,\n \"data-time\": Date.parse(day),\n className: `${[className.table.data, 'this_month', isToday(day, today, className.day.today), isActive(day, active, className.day.active), isLimit(day, max, min, className.day.limit), isBetween(day, active[0], active[1], className.day)].join(' ')}`,\n onClick: onTableDataClick\n }, jsx(Typography, {\n ...typographyProps(className.day.day)\n }, i + 1)));\n }\n /**\r\n * days of next month\r\n */\n for (let i = 0; i < 20 - weekDateLast; i++) {\n const day = new Date(time.getFullYear(), time.getMonth() + 1,\n // displayAnotherMonth ? i + 1 : 6 - weekDateLast\n 6 - weekDateLast);\n tableData.push(jsx(\"td\", {\n key: `next_month-${i + 1}`,\n \"data-time\": Date.parse(day) + 1 /*(displayAnotherMonth ? 0 : 1)*/,\n className: `${[className.table.data, 'next_month', isToday(day, today, className.day.today), isActive(day, active, className.day.active), isBetween(day, active[0], active[1], className.day)].join(' ')}`\n }, jsx(Typography, {\n ...typographyProps(className.day.day)\n }, '')));\n }\n } else {\n /**\r\n * days of previous month\r\n */\n for (let i = weekDateFirst; i > 0; i--) {\n const day = new Date(time.getFullYear(), time.getMonth() - 1, displayAnotherMonth ? prevDate - i + 1 : 1);\n tableData.push(jsx(\"td\", {\n key: `previous_month-${prevDate - i + 1}`,\n \"data-time\": Date.parse(day) - (displayAnotherMonth ? 0 : 1),\n className: `${[className.table.data, 'previous_month', isToday(day, today, className.day.today), isActive(day, active, className.day.active), isLimit(day, max, min, className.day.limit)].join(' ')}`,\n onClick: onTableDataClick\n }, jsx(Typography, {\n ...typographyProps(className.day.day)\n }, displayAnotherMonth ? prevDate - i + 1 : '')));\n }\n /**\r\n * days of this month\r\n */\n for (let i = 0; i < lastDate; i++) {\n const day = new Date(time.getFullYear(), time.getMonth(), i + 1);\n tableData.push(jsx(\"td\", {\n key: `this_month-${i + 1}`,\n \"data-time\": Date.parse(day),\n className: `${[className.table.data, 'this_month', isToday(day, today, className.day.today), isActive(day, active, className.day.active), isLimit(day, max, min, className.day.limit)].join(' ')}`,\n onClick: onTableDataClick\n }, jsx(Typography, {\n ...typographyProps(className.day.day)\n }, i + 1)));\n }\n /**\r\n * days of next month\r\n */\n for (let i = 0; i < 20 - weekDateLast; i++) {\n const day = new Date(time.getFullYear(), time.getMonth() + 1, displayAnotherMonth ? i + 1 : 6 - weekDateLast);\n tableData.push(jsx(\"td\", {\n key: `next_month-${i + 1}`,\n \"data-time\": Date.parse(day) + (displayAnotherMonth ? 0 : 1),\n className: `${[className.table.data, 'next_month', isToday(day, today, className.day.today), isActive(day, active, className.day.active), isLimit(day, max, min, className.day.limit)].join(' ')}`,\n onClick: onTableDataClick\n }, jsx(Typography, {\n ...typographyProps(className.day.day)\n }, displayAnotherMonth ? i + 1 : '')));\n }\n }\n for (let i = 0; i < 6; i++) {\n for (let j = 0; j < 7; j++) {\n tableRaw.push(tableData[7 * i + j]);\n }\n tableBody.push(jsx(\"tr\", {\n key: i,\n className: className.day.week\n }, tableRaw));\n tableRaw = [];\n }\n return tableBody;\n};\n/**\r\n *\r\n * @param {Object} className\r\n * @returns\r\n */\nconst renderHeader = className => {\n const weekdays = getGlobal(['weekdaysLong']);\n const tableHeader = [];\n for (let i in weekdays) {\n tableHeader.push(jsx(\"th\", {\n key: i,\n className: className.table.header\n }, jsx(Typography, {\n color: 'inherit',\n type: 'h6'\n }, weekdays[i])));\n }\n return jsx(\"thead\", null, jsx(\"tr\", {\n className: className.table.raw\n }, tableHeader));\n};\n/**\r\n *\r\n * @param {Object} className\r\n * @param {Object} refs\r\n * @param {Function} dbLeftFn\r\n * @param {Function} leftFn\r\n * @param {Function} rightFn\r\n * @param {Function} dbRightFn\r\n * @param fn\r\n * @returns navigator\r\n */\nconst renderNavigator = (className, refs, dbLeftFn, leftFn, rightFn, dbRightFn, fn) => jsx(\"div\", {\n className: className.navigator.navigator\n}, jsx(\"div\", {\n className: className.navigator.around\n}, jsx(ButtonIcon, {\n ...buttonIconProps(className.icon),\n name: 'ArrowDoubleLeft',\n onClick: dbLeftFn,\n ref: refs.doubleLeft\n}), jsx(ButtonIcon, {\n ...buttonIconProps(className.icon),\n name: 'ArrowLeft',\n onClick: leftFn,\n ref: refs.left\n})), jsx(\"div\", {\n className: className.navigator.center\n}, jsx(Button, {\n ...buttonTextProps(fn)\n}, jsx(Typography, {\n color: 'primary',\n type: 'h3',\n ref: refs.content\n}))), jsx(\"div\", {\n className: className.navigator.around\n}, jsx(ButtonIcon, {\n ...buttonIconProps(className.icon),\n name: 'ArrowRight',\n onClick: rightFn,\n ref: refs.right\n}), jsx(ButtonIcon, {\n ...buttonIconProps(className.icon),\n name: 'ArrowDoubleRight',\n onClick: dbRightFn,\n ref: refs.doubleRight\n})));\n/**\r\n *\r\n * @param {Date} time\r\n * @returns {String} month year\r\n */\nconst renderNavigatorContent = time => {\n const value = new Date(time);\n const months = getGlobal(['months', 'full']);\n return [months[value.getMonth()], value.getFullYear()];\n};\n/**\r\n *\r\n * @param {Date} time\r\n * @param {Object} refs\r\n * @param {Date} min\r\n * @param {Date} max\r\n */\nconst onUpdateNavigator = (time, refs, min, max) => {\n var _refs$doubleLeft$curr, _refs$doubleLeft$curr2, _refs$doubleRight$cur, _refs$doubleRight$cur2, _refs$left$current, _refs$left$current$in, _refs$right$current, _refs$right$current$i;\n const el = refs.content.current;\n const vl = renderNavigatorContent(time);\n const year = locale.get() === 'vi' ? ` ${getGlobal(['year'])} ` : '';\n if (el) {\n el.innerHTML = `${vl[0]} ${year}${vl[1]}`;\n }\n const firstDayOfMin = new Date(new Date(new Date(min).setDate(1)).setHours(0, 0, 0, 0));\n const firstDayOfMax = new Date(new Date(new Date(max).setDate(1)).setHours(0, 0, 0, 0));\n (_refs$doubleLeft$curr = refs.doubleLeft.current) === null || _refs$doubleLeft$curr === void 0 ? void 0 : (_refs$doubleLeft$curr2 = _refs$doubleLeft$curr.instance) === null || _refs$doubleLeft$curr2 === void 0 ? void 0 : _refs$doubleLeft$curr2.option('disabled', false);\n (_refs$doubleRight$cur = refs.doubleRight.current) === null || _refs$doubleRight$cur === void 0 ? void 0 : (_refs$doubleRight$cur2 = _refs$doubleRight$cur.instance) === null || _refs$doubleRight$cur2 === void 0 ? void 0 : _refs$doubleRight$cur2.option('disabled', false);\n (_refs$left$current = refs.left.current) === null || _refs$left$current === void 0 ? void 0 : (_refs$left$current$in = _refs$left$current.instance) === null || _refs$left$current$in === void 0 ? void 0 : _refs$left$current$in.option('disabled', false);\n (_refs$right$current = refs.right.current) === null || _refs$right$current === void 0 ? void 0 : (_refs$right$current$i = _refs$right$current.instance) === null || _refs$right$current$i === void 0 ? void 0 : _refs$right$current$i.option('disabled', false);\n setTimeout(() => {\n if (min && isValidDate(min)) {\n if (moment(time).diff(firstDayOfMin) < 365) {\n var _refs$doubleLeft$curr3, _refs$doubleLeft$curr4;\n (_refs$doubleLeft$curr3 = refs.doubleLeft.current) === null || _refs$doubleLeft$curr3 === void 0 ? void 0 : (_refs$doubleLeft$curr4 = _refs$doubleLeft$curr3.instance) === null || _refs$doubleLeft$curr4 === void 0 ? void 0 : _refs$doubleLeft$curr4.option('disabled', true);\n }\n if (moment(time).diff(firstDayOfMin) <= 28 && moment(time).diff(firstDayOfMin, 'months') > 1 || moment(time).diff(firstDayOfMin, 'months') < 1) {\n var _refs$doubleLeft$curr5, _refs$doubleLeft$curr6, _refs$left$current2, _refs$left$current2$i;\n (_refs$doubleLeft$curr5 = refs.doubleLeft.current) === null || _refs$doubleLeft$curr5 === void 0 ? void 0 : (_refs$doubleLeft$curr6 = _refs$doubleLeft$curr5.instance) === null || _refs$doubleLeft$curr6 === void 0 ? void 0 : _refs$doubleLeft$curr6.option('disabled', true);\n (_refs$left$current2 = refs.left.current) === null || _refs$left$current2 === void 0 ? void 0 : (_refs$left$current2$i = _refs$left$current2.instance) === null || _refs$left$current2$i === void 0 ? void 0 : _refs$left$current2$i.option('disabled', true);\n }\n }\n if (max && isValidDate(max)) {\n if (moment(time).diff(firstDayOfMax) > -334) {\n var _refs$doubleRight$cur3, _refs$doubleRight$cur4;\n (_refs$doubleRight$cur3 = refs.doubleRight.current) === null || _refs$doubleRight$cur3 === void 0 ? void 0 : (_refs$doubleRight$cur4 = _refs$doubleRight$cur3.instance) === null || _refs$doubleRight$cur4 === void 0 ? void 0 : _refs$doubleRight$cur4.option('disabled', true);\n }\n if (moment(time).diff(firstDayOfMax) > -1) {\n var _refs$doubleRight$cur5, _refs$doubleRight$cur6, _refs$right$current2, _refs$right$current2$;\n (_refs$doubleRight$cur5 = refs.doubleRight.current) === null || _refs$doubleRight$cur5 === void 0 ? void 0 : (_refs$doubleRight$cur6 = _refs$doubleRight$cur5.instance) === null || _refs$doubleRight$cur6 === void 0 ? void 0 : _refs$doubleRight$cur6.option('disabled', true);\n (_refs$right$current2 = refs.right.current) === null || _refs$right$current2 === void 0 ? void 0 : (_refs$right$current2$ = _refs$right$current2.instance) === null || _refs$right$current2$ === void 0 ? void 0 : _refs$right$current2$.option('disabled', true);\n }\n }\n });\n};\n/**\r\n *\r\n * @param {Date} time\r\n * @param {Object} navigatorRefs\r\n * @param {Date} min\r\n * @param {Date} max\r\n * @param {Element} table\r\n * @param {Date} activeValue\r\n * @param {Object} className\r\n * @param {Boolean} displayAnotherMonth\r\n * @param {Function} onTableDataClick\r\n * @param {Function} onUpdateNavigatorValue\r\n */\nconst onUpdateCalendar = (time, navigatorRefs, min, max, table, activeValue, className, displayAnotherMonth, onTableDataClick, onUpdateNavigatorValue) => {\n onUpdateNavigator(time, navigatorRefs, min, max);\n onUpdateNavigatorValue(time);\n if (table) {\n const child = renderTableBody(time, activeValue, className, displayAnotherMonth, onTableDataClick, min, max);\n table.querySelector('tbody').remove();\n render(child, table.appendChild(document.createElement('tbody')));\n }\n};\nexport { renderTableBody, renderHeader, renderNavigator, onUpdateNavigator, renderNavigatorContent, onUpdateCalendar, isBeforeLimit, isAfterLimit, isValidDate, generateCalendarCSS };","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { Fragment, memo, useMemo, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx, css } from '@emotion/core';\nimport Chip from \"./\";\nimport { Pdf, Word, Sheet, Presentation, Image, Compressed, Another } from \"../../icons\";\nimport { capitalize, getFileType } from \"../../utils\";\nimport { ButtonIcon, ModalSample, Slider, SliderItem } from \"../\";\nconst FileTypeIcon = {\n Pdf,\n Word,\n Sheet,\n Presentation,\n Image,\n Compressed,\n Another\n};\nconst AttachChip = /*#__PURE__*/memo(({\n file,\n maxLength,\n onView,\n onDownload,\n onRemove,\n ...props\n}) => {\n const moreActionRef = useRef(null);\n const [open, setOpen] = useState(false);\n const MoreAction = css`\n display: none;\n justify-content: space-evenly;\n align-items: center;\n position: absolute;\n top: -34px;\n right: -1px;\n width: 120px;\n height: 36px;\n background: #ffffff;\n box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n &.DGN-UI-Chip-show {\n display: flex;\n }\n `;\n const getStartIcon = () => {\n var _file$FileName;\n const lastIndexOfDot = (_file$FileName = file.FileName) === null || _file$FileName === void 0 ? void 0 : _file$FileName.lastIndexOf('.');\n if (!lastIndexOfDot) return null;\n const fileExt = file.FileName.slice(lastIndexOfDot + 1);\n if (!fileExt) return null;\n const fileType = getFileType(fileExt);\n const FileIcon = FileTypeIcon[capitalize(fileType)];\n return jsx(FileIcon, {\n size: 'small',\n viewBox: true\n });\n };\n const clickOutAction = event => {\n if (!moreActionRef.current) {\n document.removeEventListener('click', clickOutAction);\n return;\n }\n if (!moreActionRef.current.contains(event.target)) {\n moreActionRef.current.classList.remove('DGN-UI-Chip-show');\n document.removeEventListener('click', clickOutAction);\n }\n };\n const onShowMoreOption = () => {\n if (!moreActionRef.current.classList.contains('DGN-UI-Chip-show')) {\n moreActionRef.current.classList.add('DGN-UI-Chip-show');\n setTimeout(() => {\n document.addEventListener('click', clickOutAction);\n }, 100);\n }\n };\n const viewAction = (e, file) => {\n if (onView) {\n onView(e, file);\n } else {\n setOpen(true);\n }\n };\n const downloadAction = (e, file = {}) => {\n if (onDownload) onDownload(e, file);else if (file.URL) {\n fetch(file.URL).then(resp => resp.blob()).then(blob => {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.style.display = 'none';\n a.href = url;\n // the filename you want\n a.download = file.FileName;\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(url);\n }).catch(() => alert('File not found'));\n }\n };\n const deleteAction = (e, file) => {\n if (onRemove) onRemove(e, file);\n setTimeout(() => {\n if (moreActionRef.current && moreActionRef.current.parentNode) moreActionRef.current.parentNode.remove();\n }, 0);\n };\n const renderLabel = label => {\n if (maxLength && label && label.length > maxLength) {\n label = label.slice(0, maxLength) + '...';\n }\n return label;\n };\n const attachView = useMemo(() => {\n return jsx(ModalSample, {\n open: open,\n title: file.FileName,\n onClose: () => setOpen(false)\n }, jsx(Slider, null, jsx(SliderItem, {\n url: file.URL\n })));\n }, [open]);\n return jsx(Fragment, null, jsx(Chip, {\n ...props,\n clearAble: false,\n label: renderLabel(file.FileName),\n startIcon: getStartIcon(),\n endIcon: jsx(ButtonIcon, {\n viewType: 'ghost',\n name: 'more',\n size: 'tiny',\n onClick: onShowMoreOption\n })\n }, jsx(\"div\", {\n css: MoreAction,\n ref: moreActionRef\n }, jsx(ButtonIcon, {\n viewType: 'ghost',\n name: 'view',\n onClick: e => viewAction(e, file)\n }), jsx(ButtonIcon, {\n viewType: 'ghost',\n name: 'download',\n onClick: e => downloadAction(e, file)\n }), jsx(ButtonIcon, {\n viewType: 'ghost',\n name: 'delete',\n onClick: e => deleteAction(e, file)\n }))), attachView);\n});\nAttachChip.propTypes = {\n /** the file info, such as:
\r\n * {
\r\n * URL: https://url.com/pathname,
\r\n * FileName: file.name,
\r\n * }\r\n */\n file: PropTypes.shape({\n URL: PropTypes.string.isRequired,\n FileName: PropTypes.string.isRequired\n }).isRequired,\n /** max length content to display was allowed */\n maxLength: PropTypes.number,\n /** any props else of Chip component */\n props: PropTypes.any\n};\nexport default AttachChip;","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { forwardRef, memo, useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport { css, jsx } from '@emotion/core';\nimport PropTypes from 'prop-types';\nimport { displayBlock, parseWidthHeight, positionRelative } from \"../../styles/general\";\nconst Collapse = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({\n children,\n className,\n id,\n onClosed,\n onOpened,\n open,\n style\n}, reference) => {\n const ref = useRef(null);\n const timer = useRef(null);\n const _onOpen = () => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n const scrollHeight = ref.current.scrollHeight;\n const duration = Math.min(scrollHeight, 1500);\n ref.current.style.transitionDuration = duration + 'ms';\n ref.current.style.height = scrollHeight + 'px';\n timer.current = setTimeout(() => {\n if (ref.current) {\n ref.current.style.height = 'auto';\n }\n onOpened && onOpened(ref.current);\n }, duration);\n };\n const _onClose = () => {\n if (ref.current) {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n const scrollHeight = ref.current.scrollHeight;\n ref.current.style.height = scrollHeight + 'px';\n timer.current = setTimeout(() => {\n if (ref.current) {\n ref.current.style.height = null;\n }\n onClosed && onClosed(ref.current);\n });\n }\n };\n useEffect(() => {\n if (open) {\n _onOpen();\n } else {\n _onClose();\n }\n }, [open]);\n useImperativeHandle(reference, () => ({\n element: ref.current,\n instance: {}\n }));\n return useMemo(() => jsx(\"div\", {\n css: CollapseRoot,\n ref: ref,\n id: id,\n style: style,\n className: ['DGN-UI-Collapse', className].join(' ').trim().replace(/\\s+/g, ' ')\n }, children), [children, className, id, onClosed, onOpened, open, style]);\n}));\nconst CollapseRoot = css`\n ${displayBlock};\n ${positionRelative};\n ${parseWidthHeight('100%', 0)};\n transition: height 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n overflow-y: clip;\n`;\nCollapse.defaultProps = {\n className: '',\n open: false,\n style: {}\n};\nCollapse.propTypes = {\n /** The content of the component. */\n children: PropTypes.node,\n /** Class for component. */\n className: PropTypes.string,\n /** Callback fired when the component closed. */\n onClosed: PropTypes.func,\n /** Callback fired when the component opened. */\n onOpened: PropTypes.func,\n /** If `true`, the content is shown. */\n open: PropTypes.bool,\n /** Style inline of component. */\n style: PropTypes.object\n};\nexport default Collapse;","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { css, jsx } from '@emotion/core';\nimport OptionWrapper from \"../others/option-wrapper\";\nimport PropTypes from 'prop-types';\nimport { forwardRef, memo, useImperativeHandle, useMemo, useRef } from 'react';\nimport { bgColor, borderNone, flexShrink0, mg, parseWidthHeight } from \"../../styles/general\";\nimport { classNames } from \"../../utils\";\nconst Divider = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({\n action = {},\n className,\n color,\n direction,\n height,\n id,\n style,\n width\n}, reference) => {\n if (!reference) reference = useRef(null);\n const ref = useRef(null);\n const isVertical = direction === 'vertical';\n const _DividerRoot = DividerRoot(color, width, height, isVertical);\n useImperativeHandle(reference, () => {\n const currentRef = ref.current || {};\n currentRef.element = ref.current;\n const _instance = {\n ...action\n }; // methods\n _instance.__proto__ = {}; // hidden methods\n currentRef.instance = _instance;\n return currentRef;\n });\n return useMemo(() => {\n return jsx(\"hr\", {\n css: _DividerRoot,\n ref: ref,\n id: id,\n style: style,\n className: classNames('DGN-UI-Divider', className)\n });\n }, [className, color, direction, height, id, style, width]);\n}));\nconst DividerRoot = (color, width, height, isVertical) => css`\n ${borderNone};\n ${flexShrink0};\n ${mg(0)};\n ${bgColor(color)};\n ${parseWidthHeight(width || (isVertical ? 1 : '100%'), height || (isVertical ? 'auto' : 1))};\n`;\nDivider.defaultProps = {\n className: '',\n color: 'system.disabled',\n direction: 'horizontal',\n style: {}\n};\nDivider.propTypes = {\n /** Class for component. */\n className: PropTypes.string,\n /** The color of the component. */\n color: PropTypes.string,\n /** direction of divider */\n direction: PropTypes.oneOf(['vertical', 'horizontal']),\n /** Height oof the component. */\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /** Style inline of component. */\n style: PropTypes.object,\n /** Width of the component. */\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nexport { Divider };\nexport default OptionWrapper(Divider);","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { css, jsx } from '@emotion/core';\nimport { ButtonIcon, HelperText, Label, LinearProgress, List, ListItem, ListItemText, ModalSample, Notify, Popover, Popup, ScrollBar, Slider, SliderItem, Typography } from \"../..\";\nimport { getGlobal } from \"../../../global\";\nimport { Another, Compressed, Image, Pdf, Presentation, Sheet, Word } from \"../../../icons\";\nimport PropTypes from 'prop-types';\nimport { forwardRef, memo, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { bgColor, border, borderRadius4px, borderRadius50, bottom, boxBorder, boxContent, cursorPointer, displayBlock, displayFlex, displayInlineBlock, displayNone, flexCol, flexRow, flexWrap, floatRight, gap, itemsCenter, justifyBetween, justifyCenter, justifyEnd, justifyStart, left, mg, mgb, mgl, mgr, mgx, parseHeight, parseMaxWidth, parseMaxWidthHeight, parseMinWidth, parseWidth, parseWidthHeight, pd, positionAbsolute, positionRelative, textCenter, textColor, textRight, top, truncate, userSelectNone } from \"../../../styles/general\";\nimport { useTheme } from \"../../../theme\";\nimport { classNames, date as moment, getFileType } from \"../../../utils\";\nconst {\n colors: {\n line: {\n normal: lineNormal\n }\n }\n} = useTheme();\nconst icons = {\n pdf: jsx(Pdf, {\n width: '100%',\n height: '100%'\n }),\n word: jsx(Word, {\n width: '100%',\n height: '100%'\n }),\n sheet: jsx(Sheet, {\n width: '100%',\n height: '100%'\n }),\n presentation: jsx(Presentation, {\n width: '100%',\n height: '100%'\n }),\n image: jsx(Image, {\n width: '100%',\n height: '100%'\n }),\n compressed: jsx(Compressed, {\n width: '100%',\n height: '100%'\n }),\n default: jsx(Another, {\n width: '100%',\n height: '100%'\n })\n};\nconst oldAttached = [];\nconst allNewAttached = new FormData();\nconst attached = []; // attached = [...dataState, ...newDataState]\nconst chosenItems = [];\nconst getType = data => {\n if (data.type !== undefined) {\n var _type$match;\n const pattern = /word|sheet|presentation|pdf|image|compressed/i;\n let type = data.type;\n if (!type) {\n if (/rar/.test(data.name)) {\n type = 'compressed';\n }\n }\n return ((_type$match = type.match(pattern)) === null || _type$match === void 0 ? void 0 : _type$match[0]) || 'default';\n } else {\n var _data$FileName;\n const FileExt = (_data$FileName = data.FileName) === null || _data$FileName === void 0 ? void 0 : _data$FileName.slice(data.FileName.lastIndexOf('.'));\n return getFileType(FileExt, 'default');\n }\n};\nconst getDateTime = date => {\n if (String(date) === 'Invalid Date') return 'unknown';\n return moment(date).format('DD/MM/YYYY, HH:mm:ss');\n};\nconst getNewUnitSize = (sizeName, totalSize, num) => {\n if (sizeName === 'B' && num === 1 || sizeName === 'TB' && num === -1) return [sizeName, totalSize];\n const arraySize = ['TB', 'GB', 'MB', 'KB', 'B'];\n const index = arraySize.indexOf(sizeName);\n const newTotalSize = totalSize * Math.pow(1024, num);\n // newTotalSize = Math.round(newTotalSize*100)/100;\n return [arraySize[index + num], newTotalSize];\n};\nconst getBit = (size, unit) => {\n switch (true) {\n case /^B$/i.test(unit):\n return size * 1;\n case /KB/i.test(unit):\n return size * 1024;\n case /MB/i.test(unit):\n return size * 1024 ** 2;\n case /GB/i.test(unit):\n return size * 1024 ** 3;\n case /TB/i.test(unit):\n return size * 1024 ** 4;\n default:\n return size * 1024 * 1024;\n }\n};\nconst formatBytes = (bytes, decimals = 2) => {\n if (!+bytes) return '0 Bytes';\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n // return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`\n return [parseFloat((bytes / Math.pow(k, i)).toFixed(dm)), sizes[i]];\n};\nconst divideSizeMap = new Map([['B', 1], ['KB', 1024], ['MB', 1024 ** 2], ['GB', 1024 ** 3], ['TB', 1024 ** 4]]);\nconst Attachment = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({\n accept,\n allowSort,\n className,\n data,\n deleteNotifyText,\n disabled,\n domain,\n error,\n hintText,\n id,\n inputProps,\n isStripDomain,\n label,\n maxFile,\n maxSize: maxSizeProp,\n multiple,\n onChange,\n onDownload: onDownloadProp,\n onRemove: onRemoveProp,\n onView: onViewProp,\n ownerName,\n readOnly,\n //deprecated\n required,\n style,\n unitSize,\n uploadErrorInfo,\n viewType\n}, reference) => {\n if (!reference) reference = useRef(null);\n const ref = useRef(null);\n const attachTextRef = useRef(null);\n const attachmentHandleIconRef = useRef(null);\n const attachmentInputRef = useRef(null);\n const attachedRef = useRef(null);\n // const newAttachedRef = useRef([]);\n const popupRef = useRef(null);\n const popoverRef = useRef(null);\n const isDeleteAll = useRef(false);\n const notifyRef = useRef(null);\n const removedAttachedRef = useRef([]);\n const prevent = useRef(null);\n const existClickOutOfItem = useRef(null);\n const maxSize = useRef(Infinity);\n const timer = useRef(null);\n const [showModal, setShowModal] = useState(false);\n const [showPopup, setShowPopup] = useState(false);\n const [viewTypeState, setViewTypeState] = useState(viewType);\n const [newDataState, setNewDataState] = useState([]);\n const [dataState, setDataState] = useState([]);\n const isEnable = !readOnly && !disabled;\n const isEmpty = !((dataState === null || dataState === void 0 ? void 0 : dataState.length) + (newDataState === null || newDataState === void 0 ? void 0 : newDataState.length));\n const _AttachmentRootCSS = AttachmentRootCSS(isEmpty, isEnable);\n\n // Start handler\n const onSortElement = (e, type) => {\n let multi = 1;\n const currentActive = popoverRef.current.querySelector('.DGN-Active');\n if (currentActive) {\n if (e.currentTarget.classList.contains('DGN-Active')) {\n if (e.currentTarget.classList.contains('DGN-Decrease')) {\n e.currentTarget.classList.remove('DGN-Decrease');\n } else {\n multi = -1;\n e.currentTarget.classList.add('DGN-Decrease');\n }\n } else {\n currentActive.classList.remove('DGN-Decrease');\n currentActive.classList.remove('DGN-Active');\n }\n }\n e.currentTarget.classList.add('DGN-Active');\n const attachedList = Array.from(attachedRef.current.querySelectorAll('.attachment-row'));\n attachedList.sort((a, b) => {\n let textA = a.querySelector('.' + (type === 'filesize' ? 'filename' : type)).textContent;\n let textB = b.querySelector('.' + (type === 'filesize' ? 'filename' : type)).textContent;\n if (type === 'datetime') {\n textA = textA.replace(/.{10}/, text => moment(text, 'DD/MM/YYYY').format('YYYY/MM/DD'));\n textB = textB.replace(/.{10}/, text => moment(text, 'DD/MM/YYYY').format('YYYY/MM/DD'));\n } else if (type === 'filesize') {\n const objA = attached.find(attach => attach.FileName === textA);\n const objB = attached.find(attach => attach.FileName === textB);\n textA = (objA.size || objA.FileSize).toString();\n textB = (objB.size || objB.FileSize).toString();\n }\n return multi * textA.localeCompare(textB, 'en', {\n numeric: type === 'filesize'\n });\n });\n attached.sort((a, b) => {\n let valueA, valueB;\n if (type === 'filesize' || type === 'datetime') {\n if (type === 'filesize') {\n valueA = a.size || a.FileSize;\n valueB = b.size || b.FileSize;\n } else {\n valueA = new Date(a.CreateDate).getTime();\n valueB = new Date(b.CreateDate).getTime();\n }\n } else if (type === 'filetype') {\n // filetype\n valueA = getType(a);\n valueB = getType(b);\n } else {\n valueA = a[type === 'filename' ? 'FileName' : 'UserName'] || ownerName;\n valueB = b[type === 'filename' ? 'FileName' : 'UserName'] || ownerName;\n }\n return multi * valueA.toString().localeCompare(valueB.toString(), 'en', {\n numeric: type === 'filesize' || type === 'datetime'\n });\n });\n attachedList.forEach(el => {\n attachedRef.current.appendChild(el);\n });\n };\n\n // const afterChangeFile = (length = 0) => {\n // setIsEmpty(!length);\n // };\n\n const onChangeFiles = async e => {\n var _e$target, _e$target$files;\n if (!isEnable) return;\n e.persist();\n if (e !== null && e !== void 0 && (_e$target = e.target) !== null && _e$target !== void 0 && (_e$target$files = _e$target.files) !== null && _e$target$files !== void 0 && _e$target$files.length) {\n let files = e.target.files;\n const lengthAttached = attached.length;\n for (let i = 0; i < files.length; i++) {\n if (i + 1 > maxFile - lengthAttached || files[i].size > maxSize.current || checkExistingFile(files[i]) || !checkAcceptFileType(files[i])) {\n if (i + 1 > maxFile - lengthAttached) {\n var _files$i;\n notifyRef.current.instance.show(`${(_files$i = files[i]) === null || _files$i === void 0 ? void 0 : _files$i.name} - ${uploadErrorInfo['maxFile']}`);\n } else if (files[i].size > maxSize.current) {\n var _files$i2;\n notifyRef.current.instance.show(`${(_files$i2 = files[i]) === null || _files$i2 === void 0 ? void 0 : _files$i2.name} - ${uploadErrorInfo['maxSize']}`);\n } else if (!checkAcceptFileType(files[i])) {\n var _files$i3;\n notifyRef.current.instance.show(`${(_files$i3 = files[i]) === null || _files$i3 === void 0 ? void 0 : _files$i3.name} - ${uploadErrorInfo['fileType']}`);\n } else {\n var _files$i4;\n notifyRef.current.instance.show(`${(_files$i4 = files[i]) === null || _files$i4 === void 0 ? void 0 : _files$i4.name} - ${uploadErrorInfo['existingFile']}`);\n }\n files = removeFileOutInputFiles(i, true);\n i--;\n }\n }\n const length = files.length;\n if (!lengthAttached && !length) {\n // afterChangeFile();\n return;\n }\n // afterChangeFile(lengthAttached + length);\n if (multiple || inputProps && inputProps.multiple) {\n for (let i = 0; i < length; i++) {\n files[i].FileName = files[i].name;\n attached.push(files[i]);\n }\n setNewDataState([...newDataState, ...Array.from(files)]);\n for (let i = 0; i < length; i++) {\n files[i].URL = await onProgressing(files[i]);\n }\n } else if (length) {\n files[0].FileName = files[0].name;\n setNewDataState([...newDataState, files[0]]);\n attached.push(files[0]);\n files[0].URL = await onProgressing(files[0]);\n }\n insertAttached(files);\n stripDomain();\n if (onChange) onChange({\n element: e.target,\n attached,\n oldAttached,\n newAttached: files,\n allNewAttached: allNewAttached.getAll('files')\n });\n }\n // else if (!attached.length) {\n // afterChangeFile();\n // }\n };\n\n const onProgressing = file => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n let url;\n reader.readAsDataURL(file);\n reader.onload = e => {\n url = e.target.result;\n };\n reader.onloadstart = () => {\n attachedRef.current.querySelector(`.css-${AttachedLinearCSS.name}-attached`).childNodes[0].style.width = '0%';\n };\n reader.onprogress = e => {\n attachedRef.current.querySelector(`.css-${AttachedLinearCSS.name}-attached`).childNodes[0].style.width = e.loaded / e.total * 100 + '%';\n };\n reader.onloadend = () => {\n setTimeout(() => {\n attachedRef.current.querySelector(`.css-${AttachedLinearCSS.name}-attached`).parentNode.remove();\n resolve(url);\n }, 200);\n };\n reader.onerror = () => {\n console.log('Upload file fail');\n reject(false);\n };\n });\n };\n const calculateSize = size => {\n if (!size && size !== 0) return 'unknown';\n let totalSize;\n let unitSizeName;\n const divideSize = unitSize ? divideSizeMap.get(unitSize.toUpperCase()) : null;\n if (divideSize) {\n totalSize = size / divideSize;\n unitSizeName = unitSize.toUpperCase();\n while (totalSize < 0.01 && unitSizeName !== 'B') {\n [unitSizeName, totalSize] = getNewUnitSize(unitSizeName, totalSize, 1);\n }\n } else {\n // auto-detect unit size name\n [totalSize, unitSizeName] = formatBytes(size);\n }\n if (totalSize < 1000) {\n totalSize = Math.round(totalSize * 100) / 100;\n } else {\n totalSize = Math.round(totalSize);\n }\n return totalSize + ' ' + unitSizeName;\n };\n const onShowPopup = () => {\n setShowPopup(true);\n };\n const onClosePopup = () => {\n setShowPopup(false);\n if (isDeleteAll.current) {\n isDeleteAll.current = false;\n chosenItems.length = 0;\n removeActiveChosenItem();\n }\n };\n const onDownloadMultiple = () => {\n const index = chosenItems[0];\n let file;\n if (index < oldAttached.length) {\n file = mountDomain(oldAttached[index]);\n onDownload(file.URL, file.FileName);\n } else {\n const files = allNewAttached.getAll('files');\n file = mountDomain(files[index - oldAttached.length]);\n onDownload(file.URL, file.name);\n }\n };\n const onRemoveMultiple = () => {\n const attachedItems = [...dataState, ...newDataState];\n const nodeList = attachedRef.current.querySelectorAll('.chosen');\n const recentRemovedAttached = [];\n const tempDataState = [...dataState];\n const tempNewDataState = [...newDataState];\n nodeList.forEach(itemEl => {\n const parent = itemEl.parentNode;\n const index = Array.from(attachedRef.current.children).indexOf(parent);\n const deletedFile = attachedItems[index];\n removedAttachedRef.current.push(deletedFile);\n recentRemovedAttached.push(deletedFile);\n if (Object.prototype.toString.call(deletedFile) === '[object File]' && tempNewDataState !== null && tempNewDataState !== void 0 && tempNewDataState.length) {\n removeFileOutInputFiles(tempNewDataState.findIndex(attach => (attach === null || attach === void 0 ? void 0 : attach.FileName) === (deletedFile === null || deletedFile === void 0 ? void 0 : deletedFile.FileName) && (attach === null || attach === void 0 ? void 0 : attach.CreateDate) === (deletedFile === null || deletedFile === void 0 ? void 0 : deletedFile.CreateDate)));\n tempNewDataState.splice(tempNewDataState.findIndex(attach => (attach === null || attach === void 0 ? void 0 : attach.FileName) === (deletedFile === null || deletedFile === void 0 ? void 0 : deletedFile.FileName) && (attach === null || attach === void 0 ? void 0 : attach.CreateDate) === (deletedFile === null || deletedFile === void 0 ? void 0 : deletedFile.CreateDate)), 1);\n setNewDataState(tempNewDataState);\n } else {\n oldAttached.splice(oldAttached.findIndex(attach => (attach === null || attach === void 0 ? void 0 : attach.FileName) === (deletedFile === null || deletedFile === void 0 ? void 0 : deletedFile.FileName) && (attach === null || attach === void 0 ? void 0 : attach.CreateDate) === (deletedFile === null || deletedFile === void 0 ? void 0 : deletedFile.CreateDate)), 1);\n tempDataState.splice(tempDataState.findIndex(attach => (attach === null || attach === void 0 ? void 0 : attach.FileName) === (deletedFile === null || deletedFile === void 0 ? void 0 : deletedFile.FileName) && (attach === null || attach === void 0 ? void 0 : attach.CreateDate) === (deletedFile === null || deletedFile === void 0 ? void 0 : deletedFile.CreateDate)), 1);\n setDataState(tempDataState);\n }\n });\n const tempAttachedItems = [...tempDataState, ...tempNewDataState];\n // if (tempAttachedItems.length < 2) {\n // afterChangeFile(tempAttachedItems?.length || 0);\n // }\n stripDomain();\n if (onChange) onChange({\n element: nodeList,\n attached: tempAttachedItems,\n recentRemovedAttached,\n removedAttached: removedAttachedRef.current,\n oldAttached,\n allNewAttached: allNewAttached.getAll('files')\n });\n !!onRemoveProp && onRemoveProp(recentRemovedAttached);\n onClosePopup();\n };\n const clearAllAttached = (confirmPopup = false) => {\n const allAttachEl = attachedRef.current.querySelectorAll('.attachment-row');\n if (allAttachEl && allAttachEl.length) {\n allAttachEl.forEach(attachEl => attachEl.firstChild.classList.add('chosen'));\n isDeleteAll.current = true;\n confirmPopup ? onShowPopup() : onRemoveMultiple();\n }\n };\n const onGetViewItem = (i = 0) => {\n const index = chosenItems[i];\n const node = attachedRef.current.childNodes[index];\n const AttachmentID = attached[index].AttachmentID;\n onView(node, AttachmentID);\n };\n const onView = (node, AttachmentID) => {\n if (timer.current) {\n prevent.current = true;\n clearTimeout(timer.current);\n }\n const index = Array.from(attachedRef.current.children).indexOf(node);\n if (onViewProp) onViewProp(AttachmentID, index);else {\n setShowModal(true);\n }\n setTimeout(() => {\n prevent.current = false;\n }, 110);\n };\n const onDownload = (url, name) => {\n if (!url) return;\n fetch(url).then(resp => resp.blob()).then(blob => {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.style.display = 'none';\n a.href = url;\n // the filename you want\n a.download = name;\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(url);\n }).catch(() => alert('File not found'));\n if (onDownloadProp) onDownloadProp(url);\n };\n const removeFileOutInputFiles = (index, keeping) => {\n const dt = new DataTransfer();\n for (let file of attachmentInputRef.current.files) {\n if (file !== attachmentInputRef.current.files[index]) {\n dt.items.add(file);\n }\n }\n if (!keeping) {\n const files = allNewAttached.getAll('files');\n files.splice(index, 1);\n allNewAttached.delete('files');\n files.forEach(file => allNewAttached.append('files', file));\n // newAttachedRef.current = files || [];\n // setNewDataState(files || []);\n }\n\n attachmentInputRef.current.files = dt.files;\n return dt.files;\n };\n const insertAttached = files => {\n if (multiple || inputProps && inputProps.multiple) {\n let tempArr = [];\n for (let file of files) {\n allNewAttached.append('files', file);\n // newAttachedRef.current.push(file);\n tempArr.push(file);\n }\n setNewDataState([...newDataState, ...tempArr]);\n } else if (files[0]) {\n allNewAttached.delete('files');\n allNewAttached.append('files', files[0]);\n // newAttachedRef.current = [files[0]];\n setNewDataState([files[0]]);\n }\n // attachmentInputRef.current.files = allNewAttached.getAll('files');\n };\n\n const checkExistingFile = newFile => {\n const files = [...dataState, ...newDataState];\n return files.some(file => ((file === null || file === void 0 ? void 0 : file.FileName) || (file === null || file === void 0 ? void 0 : file.name)) === ((newFile === null || newFile === void 0 ? void 0 : newFile.FileName) || (newFile === null || newFile === void 0 ? void 0 : newFile.name)) && ((file === null || file === void 0 ? void 0 : file.FileSize) || (file === null || file === void 0 ? void 0 : file.size)) === ((newFile === null || newFile === void 0 ? void 0 : newFile.FileSize) || (newFile === null || newFile === void 0 ? void 0 : newFile.size)));\n // const files = allNewAttached.getAll('files');\n // if (files && files.length) {\n // const length = files.length;\n // for (let i = 0; i < length; i++) {\n // if (parseStringify(newFile) === parseStringify(files[i])) return true;\n // }\n // }\n // return false;\n };\n\n const checkAcceptFileType = newFile => {\n if (!accept || !accept.length) return true;\n const type = typeof accept === 'string' ? accept : accept.join('-');\n if (typeof accept === 'string') {\n const acceptType = type.replace('/*', '');\n return newFile.type.includes(acceptType);\n }\n const extFile = newFile.name.slice(newFile.name.lastIndexOf('.') + 1);\n return accept.join('-').includes(extFile);\n };\n const onChooseItem = e => {\n const ctrlKey = e.ctrlKey;\n const shiftKey = e.shiftKey;\n const itemEl = e.currentTarget;\n timer.current = setTimeout(() => {\n if (!prevent.current) {\n const index = Array.from(attachedRef.current.children).indexOf(itemEl.parentNode);\n if (shiftKey && !ctrlKey) {\n let startIndex = chosenItems[chosenItems.length - 1] || 0;\n let endIndex = index;\n if (startIndex > endIndex) {\n endIndex = startIndex;\n startIndex = index;\n }\n chosenItems.length = 0;\n attachedRef.current.querySelectorAll(`.css-${AttachedItemCSS.name}`).forEach((itemEl, indexEl) => {\n if (startIndex <= indexEl && indexEl <= endIndex) {\n if (!itemEl.classList.contains('chosen')) {\n itemEl.classList.add('chosen');\n }\n chosenItems.push(indexEl);\n } else if (itemEl.classList.contains('chosen')) {\n itemEl.classList.remove('chosen');\n }\n });\n if (chosenItems[chosenItems.length - 1] !== index) {\n chosenItems.shift();\n chosenItems.push(index);\n }\n } else if (!ctrlKey) {\n chosenItems.length = 0;\n removeActiveChosenItem();\n chosenItems.push(index);\n itemEl.classList.add('chosen');\n } else if (itemEl.classList.contains('chosen')) {\n chosenItems.splice(chosenItems.indexOf(index));\n itemEl.classList.remove('chosen');\n if (!chosenItems.length) {\n setTimeout(() => {\n removeAllChosenItems();\n }, 0);\n }\n } else {\n chosenItems.push(index);\n itemEl.classList.add('chosen');\n }\n // Add event listener click out of item\n if (!existClickOutOfItem.current) {\n existClickOutOfItem.current = true;\n attachmentHandleIconRef.current.style.display = 'block';\n document.addEventListener('keydown', onKeyDown);\n document.addEventListener('click', clickOutOfItem);\n }\n checkChosenMultiple();\n }\n prevent.current = false;\n }, 100);\n };\n const removeActiveChosenItem = () => {\n attachedRef.current.querySelectorAll('.chosen').forEach(itemEl => {\n itemEl.classList.remove('chosen');\n });\n };\n const checkChosenMultiple = () => {\n const actionIcons = attachmentHandleIconRef.current.childNodes;\n if (chosenItems.length > 1 && actionIcons[0].style.display !== 'none') {\n actionIcons[0].style.display = 'none';\n actionIcons[1].style.display = 'none';\n } else if (chosenItems.length === 1 && actionIcons[0].style.display === 'none') {\n actionIcons[0].style.display = null;\n actionIcons[1].style.display = null;\n }\n };\n const onKeyDown = event => {\n const key = event.key;\n if (key === 'Delete') {\n // Press Delete key to delete item(s)\n onShowPopup();\n } else if (key === 'Enter') {\n if (popupRef.current.style.display !== 'flex') {\n onGetViewItem(chosenItems.length - 1);\n }\n } else if (/a/i.test(key) && event.ctrlKey) {\n chosenItems.length = 0;\n const allAttachEl = attachedRef.current.querySelectorAll('.attachment-row');\n if (allAttachEl && allAttachEl.length) {\n allAttachEl.forEach((attachEl, index) => chosenItems.push(index) & attachEl.firstChild.classList.add('chosen'));\n }\n event.preventDefault();\n return false;\n } else if (/Arrow/.test(key)) {\n // Press Arrow key to select another item\n event.preventDefault();\n const itemsNode = attachedRef.current.querySelectorAll('.attachment-row');\n const chosenItemsNode = Array.from(itemsNode).filter(el => el.firstChild.classList.contains('chosen'));\n const length = itemsNode.length;\n let index;\n if (key === 'ArrowDown' || key === 'ArrowRight') {\n for (let id = length - 1; id >= 0; id--) {\n if (Array.from(itemsNode)[id].firstChild.classList.contains('chosen')) {\n index = id;\n break;\n }\n }\n if (index === length - 1) {\n if (chosenItemsNode.length !== 1 && !event.shiftKey) {\n chosenItemsNode.forEach((node, i) => {\n if (i !== index) {\n node.firstChild.classList.remove('chosen');\n }\n });\n chosenItems.length = 0;\n chosenItems.push(index);\n Array.from(itemsNode)[index].scrollIntoView({\n block: 'center',\n behavior: 'smooth'\n });\n }\n return;\n }\n Array.from(itemsNode)[index + 1].scrollIntoView({\n block: 'center',\n behavior: 'smooth'\n });\n if (!event.shiftKey) {\n itemsNode.forEach(node => {\n node.firstChild.classList.remove('chosen');\n });\n }\n itemsNode[index + 1].firstChild.classList.add('chosen');\n chosenItems.push(index + 1);\n } else if (key === 'ArrowUp' || key === 'ArrowLeft') {\n index = Array.from(itemsNode).findIndex(el => el.firstChild.classList.contains('chosen'));\n if (index === 0) {\n if (chosenItemsNode.length !== 1 && !event.shiftKey) {\n chosenItemsNode.forEach((node, i) => {\n if (i !== index) {\n node.firstChild.classList.remove('chosen');\n }\n });\n chosenItems.length = 0;\n chosenItems.push(index);\n Array.from(itemsNode)[index].scrollIntoView({\n block: 'center',\n behavior: 'smooth'\n });\n }\n return;\n }\n Array.from(itemsNode)[index - 1].scrollIntoView({\n block: 'center',\n behavior: 'smooth'\n });\n if (!event.shiftKey) {\n chosenItemsNode.forEach(node => {\n node.firstChild.classList.remove('chosen');\n });\n }\n itemsNode[index - 1].firstChild.classList.add('chosen');\n chosenItems.push(index - 1);\n }\n if (!event.shiftKey) {\n chosenItems.length = 1;\n }\n }\n };\n const clickOutOfItem = e => {\n var _popupRef$current, _popupRef$current$sty;\n if (!attachedRef || !attachedRef.current) {\n document.removeEventListener('keydown', onKeyDown);\n document.removeEventListener('click', clickOutOfItem);\n return;\n }\n if (!(attachedRef.current.contains(e.target) && attachedRef.current !== e.target) && !attachmentHandleIconRef.current.contains(e.target) && !isDeleteAll.current && (((_popupRef$current = popupRef.current) === null || _popupRef$current === void 0 ? void 0 : (_popupRef$current$sty = _popupRef$current.style) === null || _popupRef$current$sty === void 0 ? void 0 : _popupRef$current$sty.display) !== 'flex' || popupRef.current.querySelector('button.filled.info').contains(e.target))) {\n removeAllChosenItems();\n removeActiveChosenItem();\n }\n };\n const removeAllChosenItems = () => {\n chosenItems.length = 0;\n existClickOutOfItem.current = false;\n attachmentHandleIconRef.current.style.display = null;\n document.removeEventListener('keydown', onKeyDown);\n document.removeEventListener('click', clickOutOfItem);\n };\n\n // const parseStringify = fileInfo =>\n // JSON.stringify({\n // lastModified: fileInfo.lastModified,\n // lastModifiedDate: fileInfo.lastModifiedDate,\n // name: fileInfo.name,\n // size: fileInfo.size,\n // type: fileInfo.type,\n // webkitRelativePath: fileInfo.webkitRelativePath,\n // });\n\n const mountDomain = item => {\n if (!item) return item;\n const cloneItem = JSON.parse(JSON.stringify(item));\n if (domain) {\n if (!/\\/$/.test(domain)) {\n domain = domain + '/';\n }\n if (cloneItem !== null && cloneItem !== void 0 && cloneItem.URL) {\n cloneItem.URL = cloneItem.URL.indexOf('http') < 0 ? domain + cloneItem.URL : cloneItem.URL;\n }\n }\n return cloneItem;\n };\n const stripDomain = () => {\n if (isStripDomain && domain) {\n const re = new RegExp(domain + '/?');\n attached.forEach(item => {\n var _item$URL;\n item.URL = (item === null || item === void 0 ? void 0 : (_item$URL = item.URL) === null || _item$URL === void 0 ? void 0 : _item$URL.replace(re, '')) || '';\n });\n oldAttached.forEach(item => {\n var _item$URL2;\n item.URL = (item === null || item === void 0 ? void 0 : (_item$URL2 = item.URL) === null || _item$URL2 === void 0 ? void 0 : _item$URL2.replace(re, '')) || '';\n });\n }\n };\n useEffect(() => {\n if (attached !== null && attached !== void 0 && attached.length) {\n attached.length = 0;\n }\n return () => {\n existClickOutOfItem.current = false;\n };\n }, []);\n useEffect(() => {\n setViewTypeState(viewType);\n }, [viewType]);\n useEffect(() => {\n if (maxSizeProp) {\n if (!isNaN(maxSizeProp)) {\n maxSize.current = maxSizeProp * 1024 * 1024;\n } else {\n const numberSize = maxSizeProp.match(/\\d+/g);\n const unitMaxSize = maxSizeProp.match(/\\D+/g);\n maxSize.current = getBit(numberSize, unitMaxSize);\n }\n }\n attachmentInputRef.current.multiple = multiple;\n if (accept && typeof accept === 'string') {\n attachmentInputRef.current.accept = `${accept}/*`.replace('/*/*', '/*');\n }\n return () => {\n maxSize.current = Infinity;\n };\n }, [maxFile, maxSizeProp, multiple, accept]);\n useEffect(() => {\n oldAttached.length = 0;\n // afterChangeFile((data?.length || 0) + (newDataState?.length || 0));\n if (data) {\n // Load files data was uploaded\n const length = data.length;\n for (let i = 0; i < length; i++) {\n if (Object.prototype.toString.call(data[i]) === '[object File]') {\n allNewAttached.append('files', data[i]);\n // newAttachedRef.current.push(data[i]);\n attached.push(data[i]);\n } else {\n const item = mountDomain(data[i]);\n oldAttached.push(item);\n attached.push(item);\n }\n }\n setDataState(data);\n }\n return () => {\n // if (attachedRef.current) {\n // attachedRef.current.innerHTML = null;\n // }\n oldAttached.length = 0;\n attached.length = 0;\n chosenItems.length = 0;\n allNewAttached.delete('files');\n if (attachmentInputRef.current) {\n attachmentInputRef.current.value = '';\n }\n };\n }, [data]);\n useEffect(() => {\n setNewDataState([]);\n }, [dataState]);\n useEffect(() => {\n if (inputProps && Object.keys(inputProps).length) {\n Object.keys(inputProps).forEach(name => {\n if (typeof inputProps[name] === 'boolean') {\n attachmentInputRef.current[name] = inputProps[name];\n } else {\n attachmentInputRef.current.setAttribute(name, inputProps[name]);\n }\n });\n return () => {\n if (attachmentInputRef.current) {\n Object.keys(inputProps).forEach(name => {\n if (typeof inputProps[name] === 'boolean') {\n attachmentInputRef.current[name] = false;\n } else {\n attachmentInputRef.current.removeAttribute(name);\n }\n });\n }\n };\n }\n }, [inputProps]);\n const triggerClickInput = () => {\n attachmentInputRef.current.click();\n };\n const onDragFileStart = () => {\n attachmentInputRef.current.parentNode.style.display = 'block';\n };\n const onDropInput = () => {\n attachmentInputRef.current.parentNode.style.display = null;\n };\n // End handler\n\n useImperativeHandle(reference, () => {\n stripDomain();\n const currentRef = ref.current || {};\n currentRef.element = ref.current;\n const _instance = {\n oldAttached: oldAttached,\n allNewAttached: allNewAttached,\n attached: attached,\n clear: confirmPopup => clearAllAttached(confirmPopup),\n openFileDialog: triggerClickInput\n }; // methods\n _instance.__proto__ = {}; // hidden methods\n currentRef.instance = _instance;\n currentRef.oldAttached = oldAttached;\n currentRef.allNewAttached = allNewAttached;\n currentRef.attached = attached;\n currentRef.clear = confirmPopup => clearAllAttached(confirmPopup);\n currentRef.openFileDialog = triggerClickInput;\n return currentRef;\n });\n\n // Start view\n const AttachHeaderView = useMemo(() => {\n return jsx(\"div\", {\n css: AttachmentHeaderCSS,\n className: 'DGN-UI-Attachment-Header'\n }, jsx(\"div\", {\n css: AttachmentInfoCSS\n }, jsx(Label, {\n uppercase: true,\n required: required,\n type: 'h5',\n color: 'text/sub',\n ref: attachTextRef\n }, label), error ? jsx(HelperText, null, error) : null), jsx(\"div\", {\n css: AttachmentHeaderIconCSS\n }, jsx(\"div\", {\n css: AttachmentHandleIconCSS,\n ref: attachmentHandleIconRef\n }, jsx(ButtonIcon, {\n viewType: 'ghost',\n className: 'view',\n name: 'view',\n onClick: () => onGetViewItem()\n }), jsx(ButtonIcon, {\n viewType: 'ghost',\n className: 'download',\n name: 'download',\n onClick: onDownloadMultiple\n }), isEnable ? jsx(ButtonIcon, {\n viewType: 'ghost',\n className: 'delete',\n name: 'delete',\n onClick: onShowPopup\n }) : null), jsx(\"div\", {\n css: isEmpty ? AttachmentImageEmptyCSS : AttachmentImageCSS\n }, jsx(\"div\", {\n css: [AttachmentImageCenterCSS, !isEnable && [parseHeight('calc(100% - 32px)'), justifyEnd]]\n }, isEnable ? jsx(\"div\", {\n css: AttachmentImageCenterCSS\n }, jsx(ButtonIcon, {\n css: isEmpty && ButtonAttachmentCSS,\n circular: isEmpty,\n viewType: isEmpty ? 'text' : 'ghost',\n name: 'Attachment',\n size: isEmpty ? 'extraGiant' : 'medium',\n onClick: triggerClickInput\n }), isEmpty ? jsx(Typography, {\n css: userSelectNone,\n type: 'p3',\n color: 'system/rest'\n }, hintText) : null) : isEmpty ? jsx(Typography, {\n css: userSelectNone,\n type: 'p3',\n color: 'system/rest'\n }, getGlobal('noFileText')) : null)), allowSort && !isEmpty ? jsx(Popover, {\n ref: popoverRef,\n anchor: jsx(ButtonIcon, {\n viewType: 'ghost',\n name: 'Sort',\n style: {\n marginRight: 8\n }\n }),\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'right'\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'right'\n }\n }, jsx(List, null, jsx(ListItem, {\n onClick: e => onSortElement(e, 'filename')\n }, jsx(ListItemText, null, getGlobal('byName'))), jsx(ListItem, {\n onClick: e => onSortElement(e, 'filetype')\n }, jsx(ListItemText, null, getGlobal('byType'))), jsx(ListItem, {\n onClick: e => onSortElement(e, 'filesize')\n }, jsx(ListItemText, null, getGlobal('bySize'))), jsx(ListItem, {\n onClick: e => onSortElement(e, 'datetime')\n }, jsx(ListItemText, null, getGlobal('byDate'))), jsx(ListItem, {\n onClick: e => onSortElement(e, 'username')\n }, jsx(ListItemText, null, getGlobal('byOwner'))))) : null, !isEmpty ? jsx(ButtonIcon, {\n viewType: 'ghost',\n name: viewTypeState === 'detail' ? 'IconView' : 'ListView',\n onClick: () => setViewTypeState(viewTypeState === 'icon' ? 'detail' : 'icon')\n }) : null));\n }, [allowSort, disabled, domain, error, hintText, label, readOnly, required, isEmpty, viewTypeState]);\n const AttachmentInputView = useMemo(() => {\n return jsx(\"div\", {\n css: AttachmentInputCSS,\n className: 'DGN-UI-Attachment-Input'\n }, jsx(\"input\", {\n type: \"file\",\n ref: attachmentInputRef,\n title: \"\",\n onDrop: onDropInput,\n onDragLeave: onDropInput,\n onClick: e => e.target.value = null // Fix not fire onChange when select same file\n ,\n onChange: onChangeFiles,\n ...inputProps\n }));\n }, [accept, disabled, domain, inputProps, isStripDomain, maxFile, multiple, onChange, readOnly, uploadErrorInfo, newDataState]);\n const renderAttachmentItem = (item, idx, isNew = false) => {\n const isViewTypeIcon = viewTypeState === 'icon';\n const date = isNew ? new Date() : new Date(item.CreateDate);\n if (isNew) item.CreateDate = date.toISOString();\n const type = getType(item);\n const name = isNew ? item.name : item.FileName;\n return jsx(\"div\", {\n key: idx,\n className: 'attachment-row'\n }, jsx(\"div\", {\n css: AttachedItemCSS,\n onClick: e => onChooseItem(e),\n onDoubleClick: e => onView(e.currentTarget.parentNode, isNew ? null : item.AttachmentID)\n }, jsx(\"span\", {\n css: AttachedItemInfoCSS\n }, jsx(\"span\", {\n css: AttachedItemInfoIconCSS,\n className: classNames((item.lastModifiedDate || isNew) && 'new-file')\n }, icons[type], jsx(\"span\", {\n className: 'filetype',\n style: {\n display: 'none'\n }\n }, type)), jsx(Typography, {\n className: 'filename',\n css: [isViewTypeIcon ? mg([0, 2]) : mgl([3])],\n type: isViewTypeIcon ? 'p3' : 'p1',\n lineClamp: isViewTypeIcon ? 2 : 1\n }, name)), jsx(\"span\", {\n css: AttachedItemOwnerCSS\n }, !isViewTypeIcon ? jsx(\"span\", {\n css: DetailInfoCSS,\n className: 'detail-info'\n }, jsx(Typography, {\n className: 'username',\n type: 'p2',\n color: 'text/sub'\n }, (item === null || item === void 0 ? void 0 : item.UserName) || item.lastModifiedDate && ownerName || ''), jsx(Typography, {\n className: 'datetime',\n type: 'p2',\n color: 'text/sub'\n }, getDateTime(date)), jsx(Typography, {\n className: 'filesize',\n type: 'p2',\n color: 'text/sub'\n }, calculateSize(item.FileSize || item.size))) : null, isNew ? jsx(\"span\", {\n css: AttachedLinearCSS\n }, jsx(LinearProgress, {\n className: `css-${AttachedLinearCSS.name}-attached`,\n determinate: true,\n percent: 0\n })) : null)));\n };\n const AttachedView = useMemo(() => {\n const isViewTypeIcon = viewTypeState === 'icon';\n return jsx(ScrollBar, {\n css: AttachmentListCSS,\n className: 'DGN-UI-Attachment-List'\n }, jsx(\"div\", {\n css: AttachedCSS,\n ref: attachedRef,\n className: classNames(isViewTypeIcon && 'icon-view')\n }, dataState.map((item, idx) => {\n return renderAttachmentItem(item, idx);\n }), newDataState.map((item, idx) => {\n return renderAttachmentItem(item, (data === null || data === void 0 ? void 0 : data.length) + idx, true);\n })));\n }, [data, onViewProp, unitSize, dataState, newDataState, viewTypeState]);\n const PopupView = useMemo(() => {\n return jsx(Popup, {\n open: showPopup,\n ref: popupRef,\n type: 'yesno',\n description: deleteNotifyText,\n pressESCToClose: true,\n onClose: onClosePopup,\n onConfirm: onRemoveMultiple,\n onCancel: onClosePopup\n });\n }, [deleteNotifyText, onChange, onRemoveProp, showPopup]);\n const ModalView = useMemo(() => {\n if (!chosenItems.length) return setShowModal(false);\n const index = chosenItems[0];\n const data = mountDomain(attached[index]);\n // let data = oldAttached[index] || allNewAttached.getAll('files')[index-oldAttached.length];\n return jsx(ModalSample, {\n open: showModal,\n title: data.FileName,\n onClose: () => setShowModal(false)\n }, jsx(Slider, null, jsx(SliderItem, {\n url: data.URL\n })));\n }, [domain, showModal]);\n // End view\n\n return jsx(\"div\", {\n ref: ref,\n css: _AttachmentRootCSS,\n id: id,\n className: classNames('DGN-UI-Attachment', className),\n style: style,\n onDragEnter: onDragFileStart\n }, AttachHeaderView, AttachmentInputView, AttachedView, PopupView, ModalView, jsx(Notify, {\n ref: notifyRef,\n progressing: true,\n autoDisappear: true,\n color: 'danger'\n }));\n}));\nconst AttachmentHandleIconCSS = css`\n ${displayNone};\n ${parseHeight(24)};\n ${mgr([2])};\n border-right: 1px solid ${lineNormal};\n button {\n ${mgr([2])};\n }\n`;\nconst AttachmentHeaderCSS = css`\n ${displayFlex};\n ${itemsCenter};\n ${justifyBetween};\n ${boxBorder};\n ${parseWidth('100%')};\n ${pd([4, 4])};\n`;\nconst AttachmentInfoCSS = css`\n ${displayFlex};\n ${gap([2])};\n`;\nconst AttachmentHeaderIconCSS = css`\n ${displayFlex};\n ${itemsCenter};\n`;\nconst AttachmentInputCSS = css`\n ${displayNone};\n ${positionAbsolute};\n ${parseWidthHeight('100%')};\n ${top(0)};\n ${left(0)};\n input {\n ${positionRelative};\n ${parseWidthHeight('100%', 'calc(100% + 20px)')};\n opacity: 0;\n }\n`;\nconst AttachmentImageCenterCSS = css`\n ${displayFlex};\n ${flexCol};\n ${justifyCenter};\n ${itemsCenter};\n ${parseWidthHeight('100%')};\n`;\nconst ButtonAttachmentCSS = css`\n border: 1px dashed ${lineNormal} !important;\n ${mg([0, 'auto', 4])};\n`;\nconst AttachmentImageCSS = css`\n ${mgr([2])};\n`;\nconst AttachmentImageEmptyCSS = css`\n ${positionAbsolute};\n ${parseWidthHeight('100%')};\n ${top(0)};\n ${left(0)};\n`;\nconst AttachedItemInfoCSS = css`\n ${displayFlex};\n ${itemsCenter};\n ${borderRadius4px};\n ${userSelectNone};\n ${parseMinWidth('calc(50% - 10px)')};\n ${mgr([2])};\n`;\nconst AttachedItemInfoIconCSS = css`\n ${displayFlex};\n ${flexRow};\n ${positionRelative};\n ${boxContent};\n ${parseMaxWidthHeight(14, 16)};\n ${pd([1, 1.25])};\n &.new-file:after {\n content: '';\n ${positionAbsolute};\n ${borderRadius50};\n ${parseWidthHeight(4, 4)};\n ${bgColor('semantic/success')};\n ${top(4.5)};\n ${left(-2)};\n }\n`;\nconst AttachedItemOwnerCSS = css`\n ${displayFlex};\n ${positionRelative};\n ${itemsCenter};\n ${userSelectNone};\n ${parseHeight('100%')};\n ${textColor('text/sub')};\n`;\nconst DetailInfoCSS = css`\n ${displayFlex};\n ${parseMinWidth(333)};\n .username {\n ${displayInlineBlock};\n ${truncate};\n ${parseMinWidth(120)};\n ${parseMaxWidth(120)};\n }\n .datetime {\n ${displayInlineBlock};\n ${parseMinWidth('max-content')};\n ${parseMaxWidth('max-content')};\n }\n .filesize {\n ${floatRight};\n ${textRight};\n ${mgl(['auto'])};\n }\n`;\nconst AttachedLinearCSS = css`\n ${displayFlex};\n ${positionAbsolute};\n ${itemsCenter};\n ${bgColor('system/white')};\n ${parseWidthHeight('100%')};\n ${top(0)};\n`;\nconst AttachedItemCSS = css`\n ${displayFlex};\n ${justifyBetween};\n ${positionRelative};\n ${borderRadius4px};\n ${cursorPointer};\n ${parseHeight(24)};\n ${pd([0, 2])};\n transition: padding 0.5s ease;\n`;\nconst AttachedCSS = css`\n ${positionRelative};\n ${parseHeight('100%')};\n ${mgx([2])};\n overflow-y: visible;\n .attachment-row {\n ${displayBlock};\n ${mgb([2])};\n &:last-child {\n ${mgb(0)};\n }\n }\n &.icon-view {\n ${displayFlex};\n ${flexWrap};\n ${justifyBetween};\n &::after {\n content: '';\n flex: auto;\n }\n ${parseMaxWidthHeight('calc(100% - 26px)', 200)};\n ${parseWidth('max-content')};\n ${mgl(0)};\n .attachment-row {\n ${positionRelative};\n ${mgl([4])};\n overflow-y: visible;\n }\n .css-${AttachedItemCSS.name} {\n ${displayBlock};\n ${parseWidthHeight(80)};\n ${pd(0)};\n .css-${AttachedItemInfoCSS.name} {\n ${displayBlock};\n ${positionRelative};\n ${textCenter};\n ${truncate};\n ${parseWidth('max-content')};\n ${parseMaxWidth(80)};\n ${parseMinWidth(70)};\n ${mgx(['auto'])};\n .css-${AttachedItemInfoIconCSS.name} {\n ${displayBlock};\n ${parseWidthHeight(40)};\n ${parseMaxWidthHeight(40)};\n ${mg([1, 'auto', 0.5])};\n ${pd(0)};\n &.new-file:after {\n ${parseWidthHeight(8)};\n ${top(-1)};\n ${left(-7)};\n }\n }\n }\n .css-${AttachedItemOwnerCSS.name} {\n ${parseHeight('auto')};\n position: inherit;\n .css-${AttachedLinearCSS.name} {\n ${parseHeight('auto')};\n ${bottom(0)};\n top: unset;\n background: none;\n }\n }\n }\n }\n &:not(.icon-view) {\n ${parseMinWidth(684)};\n }\n`;\nconst AttachmentListCSS = css`\n ${boxBorder};\n ${mgr([1.25])};\n ${pd([0, 1.75, 0])};\n overflow-y: overlay;\n`;\nconst AttachmentRootCSS = (isEmpty, isEnable) => css`\n ${displayFlex};\n ${flexCol};\n ${justifyStart};\n ${positionRelative};\n ${borderRadius4px};\n ${boxBorder};\n ${border(1, 'line/normal')};\n ${parseHeight(isEmpty && !isEnable ? 120 : 280)};\n ${bgColor('system/white')};\n .css-${AttachedCSS.name} {\n .css-${AttachedItemCSS.name} {\n &:hover {\n ${bgColor('fill/hover')};\n .css-${AttachedLinearCSS.name} {\n ${bgColor('fill/hover')};\n }\n }\n &:active {\n ${bgColor('fill/pressed')};\n .css-${AttachedLinearCSS.name} {\n ${bgColor('fill/pressed')};\n }\n }\n &.chosen {\n ${bgColor('fill/focus')};\n .css-${AttachedItemInfoCSS.name}, .css-${AttachedItemOwnerCSS.name} {\n ${bgColor('fill/focus')};\n }\n }\n }\n }\n @media (max-width: 716px) {\n .css-${AttachedCSS.name}:not(.icon-view) {\n ${parseMinWidth(575)};\n }\n .css-${AttachedItemInfoCSS.name} {\n ${parseMaxWidth('calc(40% - 10px)')};\n }\n }\n`;\nAttachment.defaultProps = {\n deleteNotifyText: getGlobal('deleteNotifyText'),\n hintText: getGlobal('dropFileHere'),\n label: getGlobal('attachText'),\n maxSize: getGlobal('maxSizeUpload'),\n uploadErrorInfo: {\n maxFile: getGlobal(['errorDefault', 'maxFile']),\n maxSize: getGlobal(['errorDefault', 'maxSize']),\n fileType: getGlobal(['errorDefault', 'fileType']),\n existingFile: getGlobal(['errorDefault', 'existingFile'])\n },\n ...getGlobal(['components', 'attachment', 'defaultProps'])\n};\nAttachment.propTypes = {\n /** File types that can be accepted. */\n accept: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /** If `true`, allow sort. */\n allowSort: PropTypes.bool,\n /** Class for component. */\n className: PropTypes.string,\n /** List attachment:
\r\n * [{
\r\n * \"AttachmentID\": \"ATT2U8O7YPTF1KSNCW3X\",
\r\n * \"URL\": \"https://apricot.diginet.com.vn/cdn-dev/file/8a07bee1eeff17a14eee.jpg?path=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmaWxlUGF0aCI6Ii8yMDIwLzA4LzQ0YjNhYjQ4LTMwNGQtNDQ3NC05ZDk0LWNkNGVlMDQwOGNlMy5qcGciLCJmaWxlTmFtZSI6IjhhMDdiZWUxZWVmZjE3YTE0ZWVlLmpwZyIsImZpbGVTaXplIjoyNDg4MzcsImZpbGVUeXBlIjoiaW1hZ2UvanBlZyIsImlhdCI6MTU5ODI0NDMwMiwiZXhwIjo4Nzk5ODI0NDMwMn0.fow6O5fp2z3vieA9gom5RRwQ7xxwBx9_7X2Fe8T2YI0\",
\r\n * \"FileName\": \"8a07bee1eeff17a14eee.jpg\",
\r\n * \"FileSize\": 248837,
\r\n * \"KeyID\": \"W39OAD3YGLCWAQKV1D6PGEKNW4RLGVTZTUWLYEVFQ2QG8AOCXW\",
\r\n * \"CreateUserID\": \"LEMONADMIN\",
\r\n * \"CreateDate\": \"2020-08-24T11:54:04.307Z\",
\r\n * \"UserName\": \"Quản trị hệ thống\"
\r\n * }, ...]\r\n */\n data: PropTypes.array,\n /** The message to display when deleting files. */\n deleteNotifyText: PropTypes.string,\n /** If `true`, the component is disabled. */\n disabled: PropTypes.bool,\n /** Domain of attachments. */\n domain: PropTypes.string,\n /** Error of attachment. */\n error: PropTypes.string,\n /** Suggested passage attached. */\n hintText: PropTypes.string,\n /** [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attributes) applied to the input element. */\n inputProps: PropTypes.object,\n /** If `true`, strip domain of attachments. */\n isStripDomain: PropTypes.bool,\n /** Label of the component. */\n label: PropTypes.string,\n /** Limit the number of uploaded files. */\n maxFile: PropTypes.number,\n /** Limit the size of uploaded files. */\n maxSize: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /** Allows to attach multiple files. */\n multiple: PropTypes.bool,\n /** Callback fired when the files attached is changed. */\n onChange: PropTypes.func,\n /** Download attached event, if not it will use default. */\n onDownload: PropTypes.func,\n /**\r\n * event when removed file(s)\r\n *\r\n * return data: {
\r\n * attached: [Files] (insist old and all new files )
\r\n * allNewAttached: [Files]
\r\n * oldAttached: [Files]
\r\n * removedAttached: [Files]
\r\n * element: [NodeList (just removed)]
\r\n * }\r\n */\n onRemove: PropTypes.func,\n /** View attached event, if not it will use default. */\n onView: PropTypes.func,\n /** Name of the person who attached the file when uploading the file. */\n ownerName: PropTypes.string,\n /** At least one attachment is required. */\n required: PropTypes.bool,\n /** Style inline of component. */\n style: PropTypes.object,\n /** Unit size name, default auto-detect. */\n unitSize: PropTypes.string,\n /** Errors show up when the file upload is corrupted. */\n uploadErrorInfo: PropTypes.object,\n /** The view type of files. */\n viewType: PropTypes.oneOf(['detail', 'icon'])\n};\nexport default Attachment;","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { css, jsx } from '@emotion/core';\nimport { Typography } from \"../..\";\nimport PropTypes from 'prop-types';\nimport { forwardRef, Fragment, memo, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { bgColor, border, borderColor, borderRadius, boxBorder, cursorNotAllowed, cursorPointer, displayBlock, displayFlex, flexRow, itemsCenter, itemsStart, left, mg, mgb, parseMinWidthHeight, parseWidth, parseWidthHeight, positionAbsolute, positionRelative, scale, textColor, top } from \"../../../styles/general\";\nimport { useTheme } from \"../../../theme\";\nimport { classNames, randomString, refType as ref } from \"../../../utils\";\nconst {\n colors: {\n system: {\n white: systemWhite\n },\n fill: {\n hover: fillHover,\n pressed: fillPressed\n }\n },\n spacing\n} = useTheme();\nconst padding = 0.75;\nconst Checkbox = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({\n action = {},\n checked,\n children,\n className,\n color,\n defaultChecked,\n determinate,\n disabled,\n forTreeView,\n id,\n inputProps,\n inputRef,\n label,\n labelProps,\n name,\n onChange,\n readOnly,\n required,\n stopPropagation,\n value,\n width,\n ...props\n}, reference) => {\n if (!reference) reference = useRef(null);\n if (!inputRef) inputRef = useRef(null);\n const ref = useRef(null);\n if (typeof width === 'number') width += 'px';\n const [checkedState, setCheckedState] = useState(checked || defaultChecked);\n if (!id) {\n [id] = useState('DGN-UI-' + randomString(10, {\n allowNumber: false,\n allowSymbol: false\n }));\n }\n const _CheckBoxSquareCSS = CheckBoxSquareCSS(width, color);\n const _CheckBoxInputCSS = CheckBoxInputCSS(_CheckBoxSquareCSS.name, color);\n const handleChange = event => {\n stopPropagation && event.stopPropagation();\n if (readOnly || inputProps.readOnly || disabled || inputProps.disabled) return;\n const oldLogicChecked = inputRef.current.checked; //Use for TreeView\n if (forTreeView) {\n inputRef.current.checked = !oldLogicChecked; //Use for TreeView\n }\n\n setChecked(checked !== undefined ? Boolean(checked) : !checkedState);\n const currentInputRef = inputRef.current;\n if (!forTreeView) inputRef.current.checked = !checkedState;\n const e = {\n value: forTreeView ? oldLogicChecked : !checkedState,\n target: currentInputRef\n };\n if (onChange) onChange(e, checkedState);\n };\n const setChecked = check => {\n if (typeof check === 'boolean') {\n setCheckedState(check);\n }\n };\n useEffect(() => {\n if (checked !== undefined) setCheckedState(Boolean(checked));\n }, [checked]);\n useImperativeHandle(reference, () => {\n const currentRef = ref.current || {};\n currentRef.element = ref.current;\n const _instance = {\n determinate: determinate,\n setChecked: setChecked,\n getChecked: () => checkedState,\n ...action\n }; // methods\n _instance.__proto__ = {}; // hidden methods\n currentRef.instance = _instance;\n currentRef.determinate = determinate;\n currentRef.setChecked = setChecked;\n currentRef.getChecked = () => checkedState;\n return currentRef;\n });\n return jsx(\"div\", {\n id: 'DGN-UI-Checkbox-' + id.replace('DGN-UI-', ''),\n css: CheckboxContainerCSS,\n className: classNames('DGN-UI-Checkbox', className),\n ref: ref,\n ...props,\n onClick: () => {\n var _inputRef$current$cli, _inputRef$current;\n return (_inputRef$current$cli = (_inputRef$current = inputRef.current).click) === null || _inputRef$current$cli === void 0 ? void 0 : _inputRef$current$cli.call(_inputRef$current);\n }\n }, jsx(\"div\", {\n css: CheckBoxRootCSS,\n className: classNames('DGN-UI-Checkbox-Root', disabled && 'disabled', readOnly && 'read-only')\n }, jsx(\"input\", {\n value: value,\n ...inputProps,\n className: classNames(determinate ? 'determinate' : 'indeterminate', inputProps === null || inputProps === void 0 ? void 0 : inputProps.className),\n readOnly: readOnly || inputProps.readOnly,\n disabled: disabled || inputProps.disabled,\n ref: inputRef,\n css: _CheckBoxInputCSS,\n id: id,\n name: name,\n type: \"checkbox\",\n checked: checkedState,\n onChange: handleChange,\n hidden: true\n }), jsx(\"label\", {\n css: CheckBoxLabelCSS\n }, jsx(\"span\", {\n className: classNames(determinate ? 'determinate' : 'indeterminate', readOnly && 'read-only', disabled && 'disabled'),\n css: _CheckBoxSquareCSS\n }), children || label ? jsx(Typography, {\n type: 'p1',\n style: {\n marginLeft: spacing(1)\n },\n color: disabled ? 'system.disabled' : '',\n ...labelProps\n }, jsx(Fragment, null, children || label, required ? jsx(\"span\", {\n css: textColor(disabled ? 'system.disabled' : 'semantic.danger')\n }, \"*\") : null)) : null)));\n}));\nconst CheckBoxSquareCSS = (width, color) => css`\n ${displayFlex};\n ${flexRow};\n ${positionRelative};\n ${cursorPointer};\n ${boxBorder};\n ${parseWidthHeight(width)};\n ${border(2, 'system.rest')};\n ${parseMinWidthHeight(width)};\n ${bgColor('white')};\n ${borderRadius(2)};\n ${mg([padding])};\n &.determinate {\n &::after {\n ${displayBlock};\n ${positionAbsolute};\n ${parseWidthHeight(12.6, 7)};\n ${left('50%')};\n ${top('43%')};\n content: '';\n transform: translate(-50%, -50%) scale(0) rotate(45deg);\n transition: transform 0.3s;\n }\n }\n &.indeterminate {\n &::after {\n ${displayFlex};\n ${flexRow};\n ${positionAbsolute};\n ${parseWidthHeight(10, 2)};\n ${bgColor('white')};\n ${left(2)};\n ${top(6)};\n ${scale(0)};\n content: '';\n transition: transform 0.3s;\n }\n }\n &:not(.disabled):not(.read-only) {\n &:hover {\n box-shadow: 0 0 0 3px ${fillHover};\n ${bgColor('fill.hover')};\n ${borderColor(color)};\n }\n &:focus,\n &:active {\n box-shadow: 0 0 0 3px ${fillPressed};\n ${bgColor('fill.pressed')};\n }\n }\n &:not(disabled):focus {\n box-shadow: 0 0 0 3px ${fillPressed};\n ${bgColor('fill.pressed')};\n }\n &.disabled,\n &.read-only {\n ${cursorNotAllowed};\n }\n`;\nconst CheckBoxInputCSS = (CheckBoxSquareCSSName, color) => css`\n &:checked + label > span.css-${CheckBoxSquareCSSName} {\n &.determinate {\n &::after {\n transform: translate(-50%, -66%) scale(1) rotate(-45deg);\n background: linear-gradient(${systemWhite}, ${systemWhite}) left bottom/2px 100%,\n linear-gradient(${systemWhite}, ${systemWhite}) left bottom/100% 2px;\n background-repeat: no-repeat;\n }\n }\n &.indeterminate {\n &::after {\n ${scale(1)};\n }\n }\n }\n &:checked:not(:disabled) + label > span.css-${CheckBoxSquareCSSName} {\n ${bgColor(color)};\n ${borderColor(color)};\n }\n &:checked:disabled {\n & + label > span.css-${CheckBoxSquareCSSName} {\n &:not(.indeterminate) {\n ${bgColor('system.disabled')};\n }\n &.indeterminate {\n ${bgColor('formal2')};\n ${borderColor('formal2')};\n }\n }\n }\n &:disabled {\n & + label > span.css-${CheckBoxSquareCSSName} {\n ${borderColor('system.disabled')};\n }\n }\n`;\nconst CheckBoxLabelCSS = css`\n ${displayFlex};\n ${flexRow};\n ${positionRelative};\n ${itemsCenter};\n ${boxBorder};\n`;\nconst CheckBoxRootCSS = css`\n ${displayFlex};\n ${flexRow};\n ${itemsStart};\n ${boxBorder};\n & > label {\n ${mgb(0)};\n }\n`;\nconst CheckboxContainerCSS = css`\n ${displayBlock};\n ${positionRelative};\n ${parseWidth('fit-content')};\n`;\nCheckbox.defaultProps = {\n className: '',\n color: 'primary',\n defaultChecked: false,\n determinate: true,\n disabled: false,\n inputProps: {},\n label: '',\n labelProps: {},\n readOnly: false,\n stopPropagation: true,\n width: 18\n};\nCheckbox.propTypes = {\n /** If `true`, the component is checked. */\n checked: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf([0, 1])]),\n /** Class for component. */\n className: PropTypes.string,\n /** The main color of the component. ['primary', 'info', 'success', 'warning', 'danger', #hex, rgb(#, #, #)] */\n color: PropTypes.string,\n /** The default checked state. Use when the component is not controlled. */\n defaultChecked: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf([0, 1])]),\n /** If `true` display tick or indeterminate if `false`. */\n determinate: PropTypes.bool,\n /** If `true`, the component is disabled. */\n disabled: PropTypes.bool,\n /** The id of the component. */\n id: PropTypes.string,\n /** [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element. */\n inputProps: PropTypes.object,\n /** Pass a ref to the input element. */\n inputRef: ref,\n /** The name of the Radio is displayed on the interface. */\n label: PropTypes.string,\n /** [Props](https://core.diginet.com.vn/ui/?path=/docs/typography--title) applied to the `Typography` label. */\n labelProps: PropTypes.object,\n /** The name of the Checkbox corresponds to the label displayed on the interface. */\n name: PropTypes.string,\n /**\r\n * Callback fired when the state is changed.\r\n *\r\n * You can pull out the new checked state by accessing `event.value` or `event.target.checked` (boolean).\r\n */\n onChange: PropTypes.func,\n /** If `true`, the component is readonly. */\n readOnly: PropTypes.bool,\n /** If `true`, the label will indicate that the checkbox is required. */\n required: PropTypes.bool,\n /** The value of input */\n value: PropTypes.any,\n /** The width of checkbox. */\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nexport default Checkbox;","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { css, jsx } from '@emotion/core';\nimport { Button, ButtonIcon, Divider, HelperText, InputBase, Label, Typography } from \"../..\";\nimport { getGlobal } from \"../../../global\";\nimport locale from \"../../../locale\";\nimport PropTypes from 'prop-types';\nimport { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { render } from 'react-dom';\nimport { bgColor, borderRadius4px, cursorPointer, displayBlock, displayFlex, displayNone, flexCol, flexRow, invisible, justifyEnd, left, mg, parseHeight, parseMaxWidth, parseMinWidth, pd, pointerEventsNone, positionFixed, textCenter, top, userSelectNone, whiteSpaceNoWrap, z } from \"../../../styles/general\";\nimport { useTheme } from \"../../../theme\";\nimport { capitalizeSentenceCase, classNames, date as moment, isEqual, randomString, updatePosition } from \"../../../utils\";\nimport { generateCalendarCSS, onUpdateNavigator, renderHeader, renderNavigator } from \"../calendar/function\";\nimport ControlComp from \"../control\";\nconst {\n boxShadows: {\n large: boxShadowsLarge\n },\n spacing,\n zIndex: zIndexCORE\n} = useTheme();\nconst toLocalTimestamp = t => {\n if (typeof t === 'object' && t.getTime) {\n t = t.getTime();\n }\n if (typeof t === 'string' && !t.match(/\\d{13}/)) {\n t = Date.parse(t).getTime();\n }\n t = parseInt(t, 10) - new Date().getTimezoneOffset() * 60 * 1000;\n return t;\n};\nconst getDaysFrom1970 = t => {\n return Math.floor(toLocalTimestamp(t) / 86400000);\n};\nconst countDays = (start, end, startFromZero) => {\n return Math.abs(getDaysFrom1970(start) - getDaysFrom1970(end)) + (startFromZero ? 0 : 1);\n};\nconst formatValue = (value, format, utc = false) => {\n return moment(value).format(format, utc);\n};\nconst getDateOfWeek = date => {\n let day = date.getDay();\n if (day === 0) day = 7;\n return day - 1;\n};\nconst isValidDate = v => {\n if (!v) return false;\n if (Object.prototype.toString.call(v) === '[object Date]') {\n return true;\n }\n return !isNaN(Date.parse(new Date(v)));\n};\nconst isValidValues = v => {\n if (!v || !Array.isArray(v) || v.length !== 2) {\n return false;\n }\n return !!(isValidDate(v[0]) && isValidDate(v[1]) && +moment(v[0]).diff(v[1]) <= 0);\n};\nconst isToday = day => {\n return +moment(day).diff(new Date().setHours(0, 0, 0, 0)) === 0 ? unique.day.today : '';\n};\nconst isLimit = (day, max, min) => {\n return isBefore(min, day) || isAfter(max, day) ? unique.day.limit : '';\n};\nconst isBefore = (min, time) => {\n return min && isValidDate(min) && moment(time).diff(min) < 0;\n};\nconst isAfter = (max, time) => {\n return max && isValidDate(max) && moment(time).diff(max) > 0;\n};\nconst parseDate = day => {\n return Date.parse(new Date(day));\n};\nconst DateRangePicker = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({\n action = {},\n actionIconAt,\n clearAble,\n controls,\n defaultValue,\n disabled,\n displayFormat,\n error,\n helperTextProps,\n inputProps,\n inputStyle,\n label,\n labelProps,\n max,\n min,\n onChange,\n onShowTooltip,\n placeholder,\n pressESCToClose,\n readOnly,\n required,\n returnFormat,\n showUnitCount,\n startFromZero,\n style,\n textAlign,\n unitCount,\n value,\n viewType,\n ...props\n}, reference) => {\n if (!reference) reference = useRef(null);\n const footerRef = useRef(null);\n const iconRef = useRef(null);\n const ipConRef = useRef(null);\n const ipRef = useRef(null);\n const pickerRef = useRef(null);\n const tableFrRef = useRef(null);\n const tableToRef = useRef(null);\n const tooltipRef = useRef(null);\n const ref = useRef(null);\n const tempValues = useRef([]);\n const values = useRef([]);\n const valueFr = useRef(null);\n const valueTo = useRef(null);\n const selected = useRef(0);\n const [, setValues] = useState(Date.now());\n const [, setTempValues] = useState(Date.now());\n const [, setValueFr] = useState(Date.now());\n const [, setValueTo] = useState(Date.now());\n const [, setSelected] = useState(Date.now());\n const [valueState, setValueState] = useState();\n const navigatorFromRefs = {\n doubleLeft: useRef(null),\n doubleRight: useRef(null),\n left: useRef(null),\n right: useRef(null),\n content: useRef(null)\n };\n const navigatorToRefs = {\n doubleLeft: useRef(null),\n doubleRight: useRef(null),\n left: useRef(null),\n right: useRef(null),\n content: useRef(null)\n };\n const isEnable = !readOnly && !disabled;\n const closeText = getGlobal(['close']);\n const cancelText = getGlobal(['cancel']);\n const confirmText = getGlobal(['confirm']);\n const unitText = getGlobal([unitCount]);\n const updateValues = useCallback(v => {\n values.current = v;\n setValues();\n }, [values]);\n const updateTempValues = useCallback(v => {\n tempValues.current = v;\n setTempValues();\n }, [tempValues]);\n const updateSelected = useCallback(v => {\n selected.current = v;\n setSelected();\n }, [selected]);\n const updateValueFr = useCallback(v => {\n valueFr.current = v;\n setValueFr();\n }, [valueFr]);\n const updateValueTo = useCallback(v => {\n valueTo.current = v;\n setValueTo();\n }, [valueTo]);\n const isActive = day => {\n if (values.current[0] && +moment(values.current[0]).diff(day) === 0) {\n if (values.current[1] && +moment(values.current[0]).diff(values.current[1]) < 0) {\n return `${unique.day.from + ' ' + unique.day.active}`;\n } else {\n return unique.day.active;\n }\n } else if (values.current[1] && parseDate(values.current[1]) === parseDate(day)) {\n return `${unique.day.to + ' ' + unique.day.active}`;\n }\n return '';\n };\n const isBetween = dayParsed => {\n if (values.current[0] && values.current[1] && parseDate(values.current[0]) < dayParsed && dayParsed < parseDate(values.current[1])) {\n return unique.day.between;\n }\n return '';\n };\n const countDay = v => {\n if ((v === null || v === void 0 ? void 0 : v.length) === 2) {\n return Number(+moment(v[1]).diff(v[0]) + (startFromZero ? 0 : 1));\n }\n return Number(startFromZero ? 0 : 1);\n };\n const onChangeValue = v => {\n setInputValue(v[0], true);\n setInputValue(v[1], false);\n !!onChange && onChange({\n value: [formatValue(v[0], returnFormat), formatValue(v[1], returnFormat), selected.current]\n });\n };\n const onDayClick = e => {\n const el = e.currentTarget;\n const v = parseInt(el.dataset.time, 10);\n if (values.current.length === 0) {\n //push\n el.classList.add(unique.day.active);\n updateValues([v]);\n updateSelected(countDay(values.current));\n renderPicker();\n controls ? setButtonState() : onChangeValue([values.current[0], values.current[0]]);\n } else {\n if (values.current.length === 1) {\n if (+moment(values.current[0]).diff(new Date(v)) > 0) {\n //unshift\n el.classList.add(unique.day.active);\n updateValues([v, values.current[0]]);\n updateSelected(countDay(values.current));\n renderPicker();\n controls ? setButtonState() : onChangeValue(values.current);\n } else if (+moment(values.current[0]).diff(new Date(v)) < 0) {\n //push\n el.classList.add(unique.day.active);\n updateValues([values.current[0], v]);\n updateSelected(countDay(values.current));\n renderPicker();\n controls ? setButtonState() : onChangeValue(values.current);\n } else {\n //cancel\n e.preventDefault();\n }\n } else {\n //restart\n pickerRef.current.querySelectorAll(`.${unique.day.active}`).forEach(element => {\n element.classList.remove(unique.day.active, unique.day.from, unique.day.to);\n });\n el.classList.add(unique.day.active);\n updateValues([v]);\n updateSelected(countDay(values.current));\n renderPicker();\n controls ? setButtonState() : onChangeValue([values.current[0], values.current[0]]);\n }\n }\n };\n const renderCalendar = (time, type) => {\n time = new Date(time);\n const firstDay = new Date(new Date(time).setDate(1)),\n lastDay = new Date(firstDay.getFullYear(), firstDay.getMonth() + 1, 0),\n prevDay = new Date(firstDay.getFullYear(), firstDay.getMonth(), 0),\n lastDate = lastDay.getDate(),\n prevDate = prevDay.getDate();\n let tableBody = [],\n tableRaw = [],\n tableData = [],\n weekDateFirst = getDateOfWeek(firstDay),\n weekDateLast = getDateOfWeek(lastDay);\n /**\r\n * days of previous month\r\n */\n for (let i = weekDateFirst; i > 0; i--) {\n const day = Date.parse(new Date(time.getFullYear(), time.getMonth(), 1));\n tableData.push(jsx(\"td\", {\n key: `previous_month-${prevDate - i + 1}`,\n \"data-time\": day - 1,\n className: classNames(unique.table.data, 'previous_month', isBetween(day - 1), 'empty')\n }, jsx(\"span\", {\n className: unique.day.day\n })));\n }\n /**\r\n * days of current month\r\n */\n for (let i = 0; i < lastDate; i++) {\n const day = new Date(time.getFullYear(), time.getMonth(), i + 1);\n tableData.push(jsx(\"td\", {\n key: `this_month-${i + 1}`,\n \"data-time\": Date.parse(day),\n className: classNames(unique.table.data, 'this_month', isToday(day), isActive(day), (max || min) && isLimit(day, new Date(max).setHours(0, 0, 0, 0), new Date(min).setHours(0, 0, 0, 0)), isBetween(Date.parse(day))),\n onClick: onDayClick\n }, jsx(Typography, {\n className: unique.day.day,\n color: 'inherit',\n style: {\n alignItems: 'center',\n borderRadius: '50%',\n display: 'flex',\n height: 24,\n justifyContent: 'center',\n margin: 'auto',\n pointerEvents: 'none',\n transition: 'background-color 150ms linear',\n width: 24\n },\n type: 'h6'\n }, i + 1)));\n }\n /**\r\n * days of next month\r\n */\n for (let i = 0; i < 13 - weekDateLast; i++) {\n const day = Date.parse(new Date(time.getFullYear(), time.getMonth() + 1, 0));\n tableData.push(jsx(\"td\", {\n key: `next_month-${i + 1}`,\n \"data-time\": i < 6 - weekDateLast && day + 1,\n className: classNames(unique.table.data, 'next_month', i < 6 - weekDateLast && isBetween(day + 1), 'empty')\n }, jsx(\"span\", {\n className: unique.day.day\n })));\n }\n for (let i = 0; i < 6; i++) {\n for (let j = 0; j < 7; j++) {\n tableRaw.push(tableData[7 * i + j] || jsx(\"td\", {\n key: 7 * i + j,\n className: classNames(unique.table.data, 'next_month')\n }));\n }\n tableBody.push(jsx(\"tr\", {\n key: i,\n className: unique.day.week\n }, tableRaw));\n tableRaw = [];\n }\n if (type === 'from') {\n onUpdateNavigator(time, navigatorFromRefs);\n if (tableFrRef.current) {\n tableFrRef.current.querySelector('tbody').remove();\n render(tableBody, tableFrRef.current.appendChild(document.createElement('tbody')));\n }\n } else if (type === 'to') {\n onUpdateNavigator(time, navigatorToRefs);\n if (tableToRef.current) {\n tableToRef.current.querySelector('tbody').remove();\n render(tableBody, tableToRef.current.appendChild(document.createElement('tbody')));\n }\n }\n };\n const updateFromTo = (times = [new Date(), new Date()]) => {\n const timeFr = new Date(times[0]);\n const timeTo = new Date(times[1]);\n const from = new Date(timeFr.getFullYear(), timeFr.getMonth());\n const to = new Date(timeTo.getFullYear(), timeTo.getMonth());\n // const to = new Date(\n // timeTo.getFullYear(),\n // +moment(timeTo).diff(timeFr, 'months') === 0 ? timeTo.getMonth() + 1 : timeTo.getMonth()\n // );\n updateValueFr(from);\n updateValueTo(to);\n };\n const update = v => {\n if (v) {\n if (isValidValues(v)) {\n updateValues([new Date(v[0]).setHours(0, 0, 0, 0), new Date(v[1]).setHours(0, 0, 0, 0)]);\n updateSelected(countDay(values.current));\n updateFromTo(values.current);\n setInputValue(values.current[0], true);\n setInputValue(values.current[1], false);\n } else {\n updateValues([]);\n updateFromTo([new Date(), new Date(new Date().getFullYear(), new Date().getMonth() + 1)]);\n }\n } else {\n updateValues([new Date().setHours(0, 0, 0, 0), new Date().setHours(0, 0, 0, 0)]);\n updateSelected(0);\n updateFromTo(values.current);\n // setInputValue(values.current[0], true);\n // setInputValue(values.current[1], false);\n }\n };\n\n const getPickerStyle = anchor => {\n const {\n innerHeight,\n innerWidth\n } = window;\n const {\n left,\n height,\n top\n } = anchor instanceof Element ? anchor.getBoundingClientRect() : ref.current.getBoundingClientRect();\n const pickerHeight = innerWidth < 567 ? controls ? 550 : 495 : controls ? 310 : 256;\n let style = {};\n style.left = left;\n style.top = top + height + 4;\n style.transformOrigin = '50% 20%';\n if (style.top + pickerHeight > innerHeight) {\n if (top > pickerHeight) {\n style.top = innerHeight - pickerHeight - 4;\n style.transformOrigin = '50% 80%';\n } else {\n style.top = Math.round((innerHeight - pickerHeight - 16) / 2);\n style.transformOrigin = 'center';\n }\n }\n const pickerWidth = window.innerWidth <= 633 ? 300 : 633;\n if (left + pickerWidth > innerWidth) {\n if (innerWidth > pickerWidth) {\n style.left = (innerWidth - pickerWidth) / 2;\n }\n }\n return pickerCSS.picker(style).styles;\n };\n const clearDayHovering = arr => {\n if (values.current.length !== 2) {\n for (let i in arr) {\n arr[i].classList.remove(unique.day.from, unique.day.to, unique.day.between);\n }\n tooltipRef.current.style.visibility = 'hidden';\n }\n };\n const createBackground = () => {\n let background = document.getElementById(unique.backGr);\n if (!background) {\n background = document.createElement('div');\n background.id = unique.backGr;\n background.classList.add(unique.portal, unique.backGr);\n document.body.appendChild(background);\n }\n background.style.cssText = pickerCSS.backGr;\n return background;\n };\n const createPicker = anchor => {\n const picker = document.createElement('div');\n picker.id = unique.picker;\n picker.style.cssText = getPickerStyle(anchor);\n return picker;\n };\n const setPrevTime = (e, level, time, type) => {\n if (!valueFr.current || !time) return;\n const firstDayOfMin = min && new Date(new Date(min).setDate(1)).setHours(0, 0, 0, 0);\n const firstDayOfTime = new Date(new Date(time).setDate(1)).setHours(0, 0, 0, 0);\n if (level === 'month') {\n if (firstDayOfMin) {\n if (type === 'to' && getDaysFrom1970(firstDayOfTime) - getDaysFrom1970(firstDayOfMin) < 59) {\n e.currentTarget.disabled = true;\n return;\n }\n if (getDaysFrom1970(firstDayOfTime) - getDaysFrom1970(firstDayOfMin) < 28) {\n e.currentTarget.disabled = true;\n return;\n }\n }\n time.setMonth(time.getMonth() - 1);\n renderCalendar(time, type);\n }\n if (level === 'year') {\n if (firstDayOfMin) {\n if (type === 'to' && getDaysFrom1970(firstDayOfTime) - getDaysFrom1970(firstDayOfMin) < 396) {\n e.currentTarget.disabled = true;\n return;\n }\n if (getDaysFrom1970(firstDayOfTime) - getDaysFrom1970(firstDayOfMin) < 365) {\n e.currentTarget.disabled = true;\n return;\n }\n }\n time.setFullYear(time.getFullYear() - 1);\n renderCalendar(time, type);\n }\n if (type === 'to') {\n if (+moment(time).diff(valueFr.current, 'months') < 1) {\n valueFr.current.setFullYear(time.getFullYear());\n valueFr.current.setMonth(time.getMonth() - 1);\n renderCalendar(valueFr.current, 'from');\n }\n }\n };\n const setNextTime = (e, level, time, type) => {\n if (!valueTo.current || !time) return;\n const firstDayOfMax = max && new Date(new Date(max).setDate(1)).setHours(0, 0, 0, 0);\n const firstDayOfTime = new Date(new Date(time).setDate(1)).setHours(0, 0, 0, 0);\n if (level === 'month') {\n if (firstDayOfMax) {\n if (type === 'from' && getDaysFrom1970(firstDayOfTime) - getDaysFrom1970(firstDayOfMax) > -59) {\n e.currentTarget.disabled = true;\n return;\n }\n if (getDaysFrom1970(firstDayOfTime) - getDaysFrom1970(firstDayOfMax) > -28) {\n e.currentTarget.disabled = true;\n return;\n }\n }\n time.setMonth(time.getMonth() + 1);\n renderCalendar(time, type);\n }\n if (level === 'year') {\n if (firstDayOfMax) {\n if (type === 'from' && getDaysFrom1970(firstDayOfTime) - getDaysFrom1970(firstDayOfMax) > -396) {\n e.currentTarget.disabled = true;\n return;\n }\n if (getDaysFrom1970(firstDayOfTime) - getDaysFrom1970(firstDayOfMax) > -365) {\n e.currentTarget.disabled = true;\n return;\n }\n }\n time.setFullYear(time.getFullYear() + 1);\n renderCalendar(time, type);\n }\n if (type === 'from') {\n if (+moment(time).diff(valueTo.current, 'months') >= 0) {\n valueTo.current.setFullYear(time.getFullYear());\n valueTo.current.setMonth(time.getMonth() + 1);\n renderCalendar(valueTo.current, 'to');\n }\n }\n };\n const setButtonState = () => {\n const isVisible = isEqual(values.current, tempValues.current);\n const query = function (selector) {\n return footerRef.current.querySelector(selector);\n };\n const close = query(`.${unique.close}`);\n const cancel = query(`.${unique.cancel}`);\n const confirm = query(`.${unique.confirm}`);\n const hidden = {\n display: 'none',\n visibility: 'hidden'\n };\n const visible = {\n display: 'inline-flex',\n visibility: 'visible'\n };\n if (isVisible) {\n Object.assign(close.style, visible);\n Object.assign(cancel.style, hidden);\n Object.assign(confirm.style, hidden);\n } else {\n Object.assign(cancel.style, visible);\n Object.assign(confirm.style, visible);\n Object.assign(close.style, hidden);\n }\n };\n const onCancel = () => {\n updateValues(tempValues.current);\n setButtonState();\n closePicker();\n };\n const onConfirm = () => {\n setButtonState();\n if (values.current.length === 1) {\n onChangeValue([values.current[0], values.current[0]]);\n } else {\n onChangeValue(values.current);\n }\n closePicker();\n };\n const onSwap = open => {\n if (!isEnable) return;\n const t = iconRef.current.childNodes[+open];\n if (open) {\n Object.assign(t.style, {\n ...hiddenStyle\n });\n Object.assign(t.previousSibling.style, {\n ...activeStyle\n });\n setTimeout(() => {\n t.previousSibling.style.pointerEvents = null;\n }, 200);\n } else {\n Object.assign(t.style, {\n ...hiddenStyle\n });\n Object.assign(t.nextSibling.style, {\n ...activeStyle\n });\n setTimeout(() => {\n t.nextSibling.style.pointerEvents = null;\n }, 200);\n }\n };\n const onScroll = () => {\n const node = document.getElementById(unique.picker);\n if (!ipConRef.current || !node) {\n window.removeEventListener('scroll', onScroll);\n return;\n }\n updatePosition(ipConRef.current, node, closePicker);\n };\n const onResize = () => {\n if (!ref.current) return;\n const {\n width\n } = ref.current.getBoundingClientRect();\n const node = document.getElementById(unique.picker);\n if (node) {\n node.style.width = width + 'px';\n }\n onScroll();\n };\n const onDayHover = (e, arr) => {\n const currentTime = parseInt(e.target.dataset.time, 10);\n let tooltipContent = '';\n if (e.target.classList.contains(unique.day.limit)) return;\n for (let i in arr) {\n const time = parseInt(arr[i].dataset.time, 10);\n if (values.current[0] && !values.current[1]) {\n const firstValue = Number(values.current[0]);\n if (firstValue <= time && currentTime >= time && currentTime !== firstValue) {\n if (time === firstValue) {\n arr[i].classList.remove(unique.day.between, unique.day.to);\n arr[i].classList.add(unique.day.from);\n } else if (currentTime === time) {\n arr[i].classList.remove(unique.day.between, unique.day.from);\n arr[i].classList.add(unique.day.to);\n } else {\n arr[i].classList.remove(unique.day.to, unique.day.from);\n arr[i].classList.add(unique.day.between);\n }\n } else if (firstValue >= time && currentTime <= time && currentTime !== firstValue) {\n if (time === firstValue) {\n arr[i].classList.remove(unique.day.between, unique.day.from);\n arr[i].classList.add(unique.day.to);\n } else if (currentTime === time) {\n arr[i].classList.remove(unique.day.between, unique.day.to);\n arr[i].classList.add(unique.day.from);\n } else {\n arr[i].classList.remove(unique.day.to, unique.day.from);\n arr[i].classList.add(unique.day.between);\n }\n } else {\n arr[i].classList.remove(unique.day.to, unique.day.from, unique.day.between);\n }\n }\n }\n if (values.current[0] && !values.current[1]) {\n const dates = Math.abs(countDays(new Date(values.current), new Date(currentTime), startFromZero));\n const tooltip = tooltipRef.current;\n if (onShowTooltip && dates > 0) {\n tooltipContent = dates + ' ' + unitText;\n }\n if (tooltipContent) {\n const tooltipBounding = tooltip.getBoundingClientRect();\n const dayBounding = e.target.getBoundingClientRect();\n const pickerBounding = pickerRef.current.getBoundingClientRect();\n tooltip.style.visibility = 'visible';\n let left = dayBounding.left - pickerBounding.left + dayBounding.width / 2 - tooltipBounding.width / 2 + 'px';\n let top = dayBounding.top - pickerBounding.top - 4 - tooltipBounding.height + 'px';\n tooltip.childNodes[0].textContent = tooltipContent;\n setTimeout(() => {\n tooltip.style.left = left;\n tooltip.style.top = top;\n }, 10);\n } else {\n tooltipRef.current.style.visibility = 'hidden';\n }\n } else {\n tooltipRef.current.style.visibility = 'hidden';\n }\n };\n const onPickerHover = (e, arr) => {\n arr = Array.from(arr);\n if (e.target.tagName && e.target.tagName.toLowerCase() === 'td') {\n onDayHover(e, arr);\n } else {\n clearDayHovering(arr);\n }\n };\n const pressESCHandler = event => {\n if (event.key === 'Escape') {\n onClickOutside({\n target: null\n });\n }\n };\n const renderPicker = () => {\n renderCalendar(valueFr.current, 'from');\n renderCalendar(valueTo.current, 'to');\n };\n const openPicker = anchor => {\n const backGr = createBackground();\n const picker = createPicker(anchor);\n render(pickerComp, backGr.appendChild(picker));\n const arr = pickerRef.current.getElementsByTagName('td');\n updateTempValues(values.current.length === 1 ? [values.current[0], values.current[0]] : values.current);\n setTimeout(() => {\n Object.assign(picker.style, {\n ...pickerCSS.active\n });\n renderPicker();\n pickerRef.current.addEventListener('mouseover', e => onPickerHover(e, arr));\n window.addEventListener('resize', onResize);\n window.addEventListener('scroll', onScroll);\n document.addEventListener('mousedown', onClickOutside);\n if (pressESCToClose) {\n document.addEventListener('keydown', pressESCHandler);\n }\n controls && setButtonState();\n });\n };\n const closePicker = () => {\n const backGr = document.getElementById(unique.backGr);\n if (!backGr) return;\n const picker = backGr.querySelector(`#${unique.picker}`);\n if (!picker) return;\n Object.assign(picker.style, {\n ...pickerCSS.remove\n });\n if (pressESCToClose) {\n document.removeEventListener('keydown', pressESCHandler);\n }\n document.removeEventListener('mousedown', onClickOutside);\n window.removeEventListener('scroll', onScroll);\n window.removeEventListener('resize', onResize);\n setTimeout(() => {\n backGr.remove();\n }, 200);\n pickerRef.current && pickerRef.current.removeEventListener('mouseover', onPickerHover);\n if (ipConRef.current) {\n ipConRef.current.classList.remove(unique.focus);\n ipConRef.current.style.zIndex = null;\n }\n ipRef.current && ipRef.current.blur();\n updateTempValues([]);\n };\n const onClickOutside = e => {\n if (ipConRef.current && !ipConRef.current.contains(e.target) && ipRef.current && !ipRef.current.contains(e.target) && pickerRef.current && !pickerRef.current.contains(e.target)) {\n controls ? onCancel() : closePicker();\n }\n };\n const triggerFocus = () => {\n if (!ipConRef.current.classList.contains(unique.focus)) {\n ipRef.current.focus();\n } else {\n onClickOutside({\n target: null\n });\n }\n };\n const onInputFocus = () => {\n const el = ipConRef.current;\n if (!el.classList.contains(unique.focus)) {\n el.classList.add(unique.focus);\n openPicker();\n }\n };\n const setInputValue = (time, reset, unshift = false) => {\n if (!ipRef.current) return;\n const el = ipRef.current;\n let enUnitText = locale.get() === 'en' && selected.current > 1 ? unitText + 's' : unitText;\n let tempValue;\n if (!reset) {\n if (unshift) {\n tempValue = formatValue(time, displayFormat) + ' - ' + el.value + (showUnitCount ? ` (${selected.current} ${enUnitText})` : '');\n } else {\n tempValue = el.value + ' - ' + formatValue(time, displayFormat) + (showUnitCount ? ` (${selected.current} ${enUnitText})` : '');\n }\n } else {\n tempValue = formatValue(time, displayFormat);\n }\n el.value = capitalizeSentenceCase(tempValue);\n setValueState(capitalizeSentenceCase(tempValue));\n clearAble && onSwap(false);\n };\n const onClear = () => {\n if (!clearAble || !ipRef.current) return;\n ipRef.current.value = '';\n updateValues([]);\n const e = {\n value: null\n };\n !!onChange && onChange(e);\n onSwap(true);\n };\n useEffect(() => {\n update(defaultValue);\n return () => {\n closePicker();\n };\n }, []);\n useEffect(() => {\n if (value) {\n update(value);\n closePicker();\n }\n }, [value]);\n useEffect(() => {\n if (!readOnly) {\n ipRef.current.addEventListener('focus', onInputFocus);\n }\n return () => {\n if (!ipRef.current) return;\n if (!readOnly) {\n ipRef.current.removeEventListener('focus', onInputFocus);\n }\n };\n }, [onChange]);\n useEffect(() => {\n if (min) {\n let arr = [];\n const newMin = new Date(min).setHours(0, 0, 0, 0);\n if (isBefore(newMin, values.current[0])) {\n arr.push(newMin);\n if (isBefore(newMin, values.current[1])) {\n arr.push(newMin);\n } else {\n arr.push(values.current[1]);\n }\n update(arr);\n }\n }\n if (max) {\n let arr = [];\n const newMax = max && new Date(max).setHours(0, 0, 0, 0);\n if (isAfter(newMax, values.current[1])) {\n arr.push(newMax);\n if (isAfter(newMax, values.current[0])) {\n arr.push(newMax);\n } else {\n arr.unshift(values.current[0]);\n }\n update(arr);\n }\n }\n }, [max, min]);\n useEffect(() => {\n if (ipRef.current.value !== '') {\n update(values.current);\n }\n if (isEnable) {\n closePicker();\n }\n return () => {\n if (!iconRef.current || !ipRef.current) return;\n closePicker();\n };\n }, [actionIconAt, clearAble, controls, disabled, displayFormat, max, min, pressESCToClose, readOnly, startFromZero, unitCount, viewType]);\n useImperativeHandle(reference, () => {\n const currentRef = ref.current || {};\n currentRef.element = ref.current;\n currentRef.get = ref.current;\n const _instance = {\n show: el => openPicker(el),\n close: closePicker,\n ...action\n }; // methods\n _instance.__proto__ = {}; // hidden methods\n currentRef.instance = _instance;\n return currentRef;\n });\n const iconComp = isEnable ? jsx(\"div\", {\n css: IconAreaCSS,\n ref: iconRef\n }, jsx(ButtonIcon, {\n viewType: 'ghost',\n onClick: triggerFocus,\n className: `${unique.icon} ${unique.icon}-accept`,\n viewBox: true,\n name: 'Calendar'\n }), jsx(ButtonIcon, {\n viewType: 'ghost',\n onClick: onClear,\n className: `${unique.icon} ${unique.icon}-cancel`,\n viewBox: true,\n name: 'Close'\n })) : null;\n const endIcon = actionIconAt === 'end' && iconComp;\n const startIcon = actionIconAt === 'start' && iconComp;\n const footerMemo = jsx(\"div\", {\n css: ControlContainerCSS,\n className: unique.footer,\n ref: footerRef\n }, jsx(Button, {\n ...buttonProps,\n className: unique.close,\n onClick: () => onClickOutside({\n target: null\n })\n }, closeText), jsx(Button, {\n ...buttonProps,\n className: unique.cancel,\n onClick: onCancel\n }, cancelText), jsx(Button, {\n ...buttonProps,\n color: 'info',\n className: unique.confirm,\n onClick: onConfirm\n }, confirmText));\n const leftCalendarComp = jsx(\"div\", {\n css: generateCalendarCSS(unique, false, false)\n }, renderNavigator(unique, navigatorFromRefs, e => setPrevTime(e, 'year', valueFr.current, 'from'), e => setPrevTime(e, 'month', valueFr.current, 'from'), e => setNextTime(e, 'month', valueFr.current, 'from'), e => setNextTime(e, 'year', valueFr.current, 'from')), jsx(\"div\", {\n className: unique.table.container\n }, jsx(\"table\", {\n className: unique.table.table,\n ref: tableFrRef\n }, renderHeader(unique), jsx(\"tbody\", null))));\n const rightCalendarComp = jsx(\"div\", {\n css: generateCalendarCSS(unique, false, false)\n }, renderNavigator(unique, navigatorToRefs, e => setPrevTime(e, 'year', valueTo.current, 'to'), e => setPrevTime(e, 'month', valueTo.current, 'to'), e => setNextTime(e, 'month', valueTo.current, 'to'), e => setNextTime(e, 'year', valueTo.current, 'to')), jsx(\"div\", {\n className: unique.table.container\n }, jsx(\"table\", {\n className: unique.table.table,\n ref: tableToRef\n }, renderHeader(unique), jsx(\"tbody\", null))));\n const tooltipComp = jsx(\"div\", {\n className: unique.tooltip,\n ref: tooltipRef\n }, jsx(Typography, {\n color: 'system/white',\n type: 'p2'\n }));\n const pickerComp = jsx(\"div\", {\n css: pickerCSS.container,\n ref: pickerRef\n }, jsx(\"div\", {\n className: unique.wrapper\n }, leftCalendarComp, jsx(Divider, {\n direction: 'vertical',\n className: unique.divider,\n height: '100%',\n style: {\n height: '226px',\n margin: spacing([4.5, 0.5, 0])\n }\n }), rightCalendarComp), tooltipComp, controls ? footerMemo : null);\n return jsx(ControlComp, {\n ...props,\n disabled: disabled,\n error: error,\n ref: ref,\n style: style\n }, label ? jsx(Label, {\n ...labelProps,\n disabled: disabled,\n required: required\n }, label) : null, jsx(InputBase, {\n inputProps: {\n placeholder: !readOnly && !disabled ? placeholder : '',\n ...inputProps\n },\n readOnly: true,\n ref: ipConRef,\n inputRef: ipRef,\n disabled: disabled,\n viewType: viewType,\n inputStyle: {\n textAlign: textAlign,\n textOverflow: 'ellipsis',\n ...inputStyle\n },\n startIcon: startIcon,\n startIconProps: {\n className: 'non-effect allow-disabled'\n },\n endIcon: endIcon,\n value: valueState,\n onClick: onInputFocus\n }), error ? jsx(HelperText, {\n ...helperTextProps,\n disabled: disabled\n }, error) : null);\n}));\nconst unique = {\n backGr: 'DGN-UI-Portal',\n close: 'DGN-UI-DateRangePicker-close',\n cancel: 'DGN-UI-DateRangePicker-cancel',\n confirm: 'DGN-UI-DateRangePicker-confirm',\n divider: 'DGN-UI-DateRangePicker-Divider',\n disabled: 'DGN-UI-DateRangePicker-disabled',\n error: 'DGN-UI-DateRangePicker-error',\n focus: 'DGN-UI-DateRangePicker-focus',\n footer: 'DGN-UI-DateRangePicker-Footer',\n picker: 'DGN-UI-DateRangePicker-Picker-' + randomString(6, {\n allowSymbol: false\n }),\n wrapper: 'DGN-UI-DateRangePicker-Wrapper',\n container: 'DGN-UI-DateRangePicker',\n icon: 'DGN-UI-DateRangePicker-Icon',\n tooltip: 'DGN-UI-DateRangePicker-Tooltip',\n navigator: {\n navigator: 'DGN-UI-DateRangePicker-Navigator',\n around: 'DGN-UI-DateRangePicker-Navigator-Around',\n center: 'DGN-UI-DateRangePicker-Navigator-Center'\n },\n table: {\n container: 'DGN-UI-DateRangePicker-Table-Container',\n table: 'DGN-UI-DateRangePicker-Table-Table',\n header: 'DGN-UI-DateRangePicker-Table-Header',\n raw: 'DGN-UI-DateRangePicker-Table-Raw',\n data: 'DGN-UI-DateRangePicker-Table-Data'\n },\n day: {\n day: 'DGN-UI-DateRangePicker-Day',\n week: 'DGN-UI-DateRangePicker-Week',\n today: 'DGN-UI-DateRangePicker-Day-today',\n active: 'DGN-UI-DateRangePicker-Day-active',\n limit: 'DGN-UI-DateRangePicker-Day-limit',\n from: 'DGN-UI-DateRangePicker-Day-from',\n to: 'DGN-UI-DateRangePicker-Day-to',\n between: 'DGN-UI-DateRangePicker-Day-between'\n }\n};\nconst hiddenStyle = {\n opacity: 0,\n display: 'none'\n};\nconst activeStyle = {\n opacity: 1,\n pointerEvents: 'none',\n display: 'block'\n};\nconst buttonProps = {\n style: {\n display: 'none',\n margin: spacing([0, 0.5]),\n padding: spacing([1.75, 2]),\n visibility: 'hidden'\n }\n};\nconst IconAreaCSS = css`\n .${unique.icon} {\n ${displayNone};\n ${cursorPointer};\n opacity: 0;\n transition: display 50ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 50ms;\n will-change: display, opacity;\n }\n .${unique.icon}-accept {\n ${displayBlock};\n opacity: 1;\n }\n`;\nconst ControlContainerCSS = css`\n ${displayFlex};\n ${flexRow};\n ${justifyEnd};\n ${mg([0, 4, 4])};\n`;\nconst pickerCSS = {\n backGr: `\n background-color: transparent; \n inset: 0px; pointer-events: auto; \n position: fixed; \n z-index: ${zIndexCORE(1)};`,\n container: css`\n ${displayFlex};\n ${flexCol};\n ${borderRadius4px};\n ${bgColor('system/white')};\n box-shadow: ${boxShadowsLarge};\n .${unique.wrapper} {\n ${displayFlex};\n ${flexRow};\n ${parseMinWidth(633)};\n }\n .${unique.tooltip} {\n ${borderRadius4px};\n ${pointerEventsNone};\n ${positionFixed};\n ${textCenter};\n ${userSelectNone};\n ${whiteSpaceNoWrap};\n ${parseHeight(18)};\n ${parseMinWidth(65)};\n ${bgColor('rgba(21, 26, 48, 0.9)')};\n ${pd([0.75, 1.5])};\n ${invisible};\n ${z(3)};\n transition: left 0.05s ease-in, top 0.05s ease-in;\n vertical-align: middle;\n will-change: left top visibility;\n }\n @media only screen and (max-width: 800px) {\n ${parseMaxWidth(400)};\n .${unique.wrapper} {\n ${displayFlex};\n ${flexCol};\n ${parseMinWidth(260)};\n }\n .${unique.divider} {\n height: 1px !important;\n margin: ${spacing([0, 4])} !important;\n width: calc(100% - 32px) !important;\n }\n }\n `,\n picker: position => css`\n ${borderRadius4px};\n ${positionFixed};\n ${parseHeight('max-content')};\n ${parseMinWidth(window.innerWidth <= 633 ? 300 : 633)};\n ${parseMaxWidth(805)};\n ${top(position.top)};\n ${left(position.left)};\n ${z(2)};\n opacity: 0;\n transform: scale(0);\n transform-origin: ${position.transformOrigin};\n transition: opacity 120ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n `,\n active: {\n opacity: 1,\n transform: 'scale(1)'\n },\n remove: {\n opacity: 0,\n pointerEvents: 'none',\n transform: 'scale(0)'\n }\n};\nDateRangePicker.defaultProps = {\n actionIconAt: 'end',\n clearAble: false,\n controls: false,\n disabled: false,\n displayFormat: 'DD/MM/YY',\n onShowTooltip: true,\n pressESCToClose: true,\n readOnly: false,\n required: false,\n returnFormat: 'YYYY-MM-DD',\n showUnitCount: true,\n startFromZero: false,\n textAlign: 'start',\n unitCount: 'day',\n viewType: 'underlined'\n};\nDateRangePicker.propTypes = {\n /** Position of action icons. */\n actionIconAt: PropTypes.oneOf(['end', 'start']),\n /** If `true`, display the clear icon. */\n clearAble: PropTypes.bool,\n /** If `true`, the calendar will have a footer controls. */\n controls: PropTypes.bool,\n /** Default value of the component. */\n defaultValue: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.instanceOf(Date)), PropTypes.arrayOf(PropTypes.string)]),\n /** If `true`, the component is disabled. */\n disabled: PropTypes.bool,\n /** Format to display value. */\n displayFormat: PropTypes.oneOfType([PropTypes.oneOf(['DD/MM/YYYY', 'MM/DD/YYYY', 'YYYY/MM/DD', 'DD-MM-YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD']), PropTypes.string]),\n /** Error displayed below input. */\n error: PropTypes.string,\n /** [Props](https://core.diginet.com.vn/ui/?path=/story/form-control-text-helpertext) of helper text. */\n helperTextProps: PropTypes.object,\n /** [Props](https://core.diginet.com.vn/ui/?path=/story/form-control-input-inputbase) of input base */\n inputProps: PropTypes.object,\n /** Consult [InputBase's](https://core.diginet.com.vn/ui/?path=/story/form-control-input-inputbase) documents. */\n inputStyle: PropTypes.object,\n /** The label of the component. */\n label: PropTypes.string,\n /** [Props](https://core.diginet.com.vn/ui/?path=/docs/form-control-text-label--simple) of label. */\n labelProps: PropTypes.object,\n /** Max value of date picker. */\n max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string]),\n /** Min value of date picker. */\n min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string]),\n /** Callback fired when the value is changed. */\n onChange: PropTypes.func,\n /** The short hint displayed in the input before the user enters a value. */\n placeholder: PropTypes.string,\n /** If `true`, hitting escape will close component. */\n pressESCToClose: PropTypes.bool,\n /** If `true`, the component is readOnly. */\n readOnly: PropTypes.bool,\n /** If `true`, the input element is required. */\n required: PropTypes.bool,\n /** Format of the returned value. */\n returnFormat: PropTypes.oneOfType([PropTypes.oneOf(['DD/MM/YYYY', 'MM/DD/YYYY', 'YYYY/MM/DD', 'DD-MM-YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD']), PropTypes.string]),\n /** If `true`, show unit count. */\n showUnitCount: PropTypes.bool,\n /** Counter with start with 0 or 1. */\n startFromZero: PropTypes.bool,\n /** Style inline of component. */\n style: PropTypes.object,\n /** Text align of the input. */\n textAlign: PropTypes.oneOf(['center', 'end', 'start']),\n /** The count unit when select. */\n unitCount: PropTypes.oneOf(['day', 'night']),\n /** The value of the input element, required for a controlled component. String must be [Date string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date): YYYY/MM/DD, MM/DD/YYYY,...*/\n value: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string])),\n /** The variant to use. */\n viewType: PropTypes.oneOf(['outlined', 'underlined'])\n};\nexport default DateRangePicker;","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { css, jsx } from '@emotion/core';\nimport { Avatar, ButtonIcon, Checkbox, Chip, CircularProgress, HelperText, InputBase, Label, Popup, TreeView, Typography } from \"../..\";\nimport Popover from \"../../popover\";\nimport { getGlobal } from \"../../../global\";\nimport PropTypes from 'prop-types';\nimport { forwardRef, Fragment, memo, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { animation, bgColor, border, borderBottom, borderBottomColor, borderColor, borderNone, borderRadius, bottom, boxBorder, breakWord, cursorDefault, cursorNotAllowed, cursorPointer, displayBlock, displayFlex, fill, flexRow, flexWrap, gap, inset, insetX, invisible, italic, itemsCenter, justifyCenter, justifyStart, mgb, mgl, mgr, mgt, outlineNone, overflowAuto, overflowHidden, parseHeight, parseMaxHeight, parseMaxWidth, parseMinHeight, parseWidth, parseWidthHeight, pd, pdb, pdl, pdt, pdy, pointerEventsNone, positionAbsolute, positionRelative, textColor, top, userSelectNone, z } from \"../../../styles/general\";\nimport { useTheme } from \"../../../theme\";\nimport { classNames, isMobile, randomString } from \"../../../utils\";\nconst {\n typography: {\n paragraph1\n }\n} = useTheme();\nconst\n // timing = {},\n currentValue = {},\n currentObjectDefault = {},\n isSearch = {},\n allValue = {};\nconst separatorPattern = /\\{\\w+\\}/g;\nconst regexBetween = /[^{}]+(?=})/g;\nconst regexInclude = /{|}/g;\nconst checkHasValue = value => {\n return Array.isArray(value) ? value.length > 0 : value === 0 || !!value;\n};\nconst convertData = (dt, valueExpr) => {\n let data = dt || [];\n let valueTemp = Array.isArray(data) ? data : [data];\n valueTemp = valueTemp.map(i => i[valueExpr] || i);\n return valueTemp;\n};\nconst convertSearchDelayTime = searchDelayTime => {\n var _searchDelayTime$matc, _searchDelayTime$matc2;\n if (searchDelayTime === true) return getGlobal('delayOnInput');\n const units = {\n m: 60000,\n s: 1000,\n ms: 1\n };\n return typeof searchDelayTime === 'number' ? searchDelayTime : (((_searchDelayTime$matc = searchDelayTime.match(/[^a-z]+/i)) === null || _searchDelayTime$matc === void 0 ? void 0 : _searchDelayTime$matc[0]) || 1) * units[((_searchDelayTime$matc2 = searchDelayTime.match(/ms|s|m/i)) === null || _searchDelayTime$matc2 === void 0 ? void 0 : _searchDelayTime$matc2[0]) || 's'];\n};\nconst Dropdown = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({\n action = {},\n allowSearch,\n children,\n className,\n clearAble,\n closeAfterSelect,\n dataSource,\n defaultValue,\n disabled,\n displayExpr,\n dropdownItemStyle,\n error,\n helperTextProps,\n iconExpr,\n inputProps,\n inputStyle,\n itemMode,\n label,\n labelProps,\n limit,\n loading,\n maximumSelectionLength,\n multilineSelectedItem,\n multiple,\n noDataText,\n onChange,\n onClosed,\n onInput,\n onKeyDown,\n onLoadMore,\n placeholder,\n readOnly,\n renderItem,\n renderSelectedItem,\n required,\n searchDelayTime,\n searchExpr,\n searchMode,\n selectBox,\n skip,\n style,\n subText,\n total,\n treeViewID,\n treeViewParentID,\n value: valueProp,\n valueExpr,\n valueObjectDefault,\n viewType\n}, reference) => {\n if (!reference) reference = useRef(null);\n if (multiple && selectBox === undefined) selectBox = true;\n if (typeof searchExpr === 'string') searchExpr = [searchExpr];\n searchDelayTime = convertSearchDelayTime(searchDelayTime);\n const ref = useRef(null);\n const dropdownRef = useRef(null);\n const timer = useRef(null);\n const timerRef = useRef(null);\n const formRef = useRef(null);\n const inputRef = useRef(null);\n const iconRef = useRef(null);\n const dropdownListRef = useRef(null);\n const searchRef = useRef(null);\n // const lastSearchRef = useRef(null);\n // const timeout = useRef(null);\n const loadMoreTimer = useRef(null);\n const dataChosen = useRef([]);\n const popupRef = useRef(null);\n const filter = useRef({\n skip: skip || 0,\n limit: limit || 50\n });\n const [unique] = useState(randomString(6, {\n allowNumber: false,\n allowSymbol: false\n }));\n const [openState, setOpenState] = useState(false);\n const [showClear, setShowClear] = useState(false);\n const [valueSingle, setValueSingle] = useState('');\n const [txtSearch, setTxtSearch] = useState('');\n const [popoverWidth, setPopoverWidth] = useState(0);\n const [loadingState, setLoadingState] = useState(loading);\n const [totalState, setTotalState] = useState(total);\n const [dataSourceState, setDataSourceState] = useState(dataSource);\n const [popupDataState, setPopupDataState] = useState({\n title: '',\n substitle: '',\n description: ''\n });\n let valueTemp = valueProp || defaultValue || [];\n\n // only mode multi\n if (multiple) {\n valueTemp = convertData(valueTemp, valueExpr);\n }\n const [valueMulti, setValueMulti] = useState(valueTemp);\n const _isMobile = isMobile.any();\n const _InputCSS = InputCSS(multiple, typeof renderSelectedItem === 'function');\n const _DropdownInputCSS = DropdownInputCSS(viewType, multiple, placeholder, disabled, readOnly, multilineSelectedItem);\n const _IconCSS = IconCSS(viewType);\n const _DropdownFormCSS = DropdownFormCSS(viewType, multiple, disabled, placeholder, _DropdownInputCSS.name);\n const _DropdownListCSS = DropdownListCSS(loadingState);\n const _DropdownItemCSS = DropdownItemCSS(multiple, selectBox);\n const _DropdownRootCSS = DropdownRootCSS(_DropdownFormCSS.name, _DropdownInputCSS.name);\n\n /* Start handler */\n const setShowDropdown = () => {\n setOpenState(!openState);\n };\n const triggerBlur = (blur = true) => {\n if ((currentValue[unique] || currentValue[unique] === 0) && !multiple) {\n setValueIntoInput(currentValue[unique]);\n } else if (!multiple) {\n setValueIntoInput('');\n }\n !!blur && inputRef.current.blur();\n };\n const onClickInput = e => {\n if (disabled || readOnly || loadingState) return;\n if (!dropdownListRef.current) {\n if (!multiple || !Array.from(inputRef.current.querySelectorAll('.DGN-UI-Chip')).some(item => item.contains(e === null || e === void 0 ? void 0 : e.target))) {\n setOpenState(true);\n }\n }\n };\n\n // const onClickOutsideOfInput = event => {\n // if (\n // inputRef.current &&\n // !inputRef.current?.contains(event?.target) &&\n // iconRef.current &&\n // !iconRef.current?.contains(event?.target) &&\n // dropdownListRef.current &&\n // !dropdownListRef.current?.parentNode?.parentNode?.contains(event?.target)\n // ) {\n // closeDropdown();\n // triggerBlur(false);\n // }\n // };\n\n const showDropdown = () => {\n // if (displayExpr && Array.isArray(displayExpr)) {\n // displayExpr = displayExpr.join(' - ');\n // }\n // const keyArr = displayExpr?.match(separatorPattern);\n const dropdown = children ? jsx(\"div\", {\n css: _DropdownListCSS,\n ref: dropdownListRef,\n className: 'DGN-Dropdown-List',\n onKeyDown: moveOnItem,\n tabIndex: -1\n }, dataSourceState !== null && dataSourceState !== void 0 && dataSourceState.length ? children : EmptyDataText) : itemMode === 'normal' ? mapDropdown() : mapTreeView();\n // const { innerHeight } = window;\n // const { top, left, height, width } = formRef.current.getBoundingClientRect();\n\n // Calculate to set position of Dropdown box\n // const dropdownHeight =\n // Math.min(\n // Math.max(\n // 1,\n // (itemMode === 'normal'\n // ? dropdown.props.children\n // : mapParent(dataSource, treeViewID, treeViewParentID)\n // ).length || 1\n // ),\n // 7\n // ) *\n // 40 +\n // (multiple ? 43 : 0);\n // let positionTop = top + height + 4;\n // if (top + height + 4 + dropdownHeight + (allowSearch ? 40 : 0) > innerHeight) {\n // if (top - dropdownHeight > 0) {\n // positionTop = top - dropdownHeight;\n // } else {\n // positionTop = innerHeight - dropdownHeight;\n // }\n // }\n // const _DropdownCSS = DropdownCSS(positionTop, left, width, _isMobile, allowSearch);\n const el = jsx(Fragment, null, (multiple || allowSearch) && itemMode === 'normal' && !children ? jsx(\"div\", {\n className: 'DGN-Dropdown-Search'\n }, jsx(InputBase, {\n inputRef: searchRef,\n delayOnChange: searchDelayTime,\n viewType: 'outlined',\n defaultValue: txtSearch,\n onChange: onChangeInput,\n style: {\n marginBottom: 1\n },\n onKeyDown: pressESCHandler,\n readOnly: loadingState,\n autoFocus: true\n })) : null, multiple && maximumSelectionLength ? jsx(Typography, {\n css: pd([2, 4])\n }, getGlobal('selected'), \" \", (valueMulti === null || valueMulti === void 0 ? void 0 : valueMulti.length) || 0, \"/\", maximumSelectionLength) : null, jsx(\"div\", {\n className: 'DGN-Dropdown-Box'\n }, dropdown), loadingState ? jsx(\"div\", {\n css: LoadingProgressCSS,\n className: 'DGN-Dropdown-Loading-Progress'\n }, jsx(CircularProgress, {\n size: 24\n })) : null);\n // if (!((multiple || allowSearch) && itemMode === 'normal' && !children)) {\n // inputRef.current.addEventListener('keydown', pressESCHandler);\n // }\n // document.documentElement.style.overflow = 'hidden';\n setTimeout(() => {\n window.addEventListener('resize', customizeWidthDropdown);\n // document.addEventListener('wheel', onWheelHandler);\n // document.addEventListener('mousedown', onClickOutsideOfInput);\n if (onLoadMore && dataSourceState.length < totalState) {\n dropdownListRef.current && dropdownListRef.current.addEventListener('scroll', onLoadMoreHandler);\n }\n }, 10);\n return el;\n };\n const moveOnItem = e => {\n if (e.key === 'Escape' || e.key === 'Tab') {\n closeDropdown();\n triggerBlur();\n }\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n let activeEl = document.activeElement;\n activeEl = e.key === 'ArrowDown' ? activeEl.nextElementSibling : activeEl.previousElementSibling;\n if (activeEl) {\n activeEl.focus();\n activeEl.scrollIntoView({\n block: 'center',\n behavior: 'smooth'\n });\n }\n }\n };\n const pressESCHandler = e => {\n if (e.key === 'Escape' || e.key === 'Tab') {\n closeDropdown();\n triggerBlur();\n } else if (e.key === 'ArrowDown' && dropdownListRef.current) {\n e.preventDefault();\n dropdownListRef.current.firstChild.focus();\n }\n };\n\n // const onWheelHandler = e => {\n // if (!dropdownRef.current) {\n // document.removeEventListener('wheel', onWheelHandler);\n // return;\n // }\n // if (!dropdownRef.current?.contains(e.target)) {\n // closeDropdown();\n // triggerBlur();\n // }\n // };\n\n const closeDropdown = () => {\n if (dropdownRef.current) {\n setOpenState(false);\n // document.removeEventListener('mousedown', onClickOutsideOfInput);\n window.removeEventListener('resize', customizeWidthDropdown);\n // document.removeEventListener('wheel', onWheelHandler);\n if (onLoadMore && dropdownListRef.current) {\n dropdownListRef.current.removeEventListener('scroll', onLoadMoreHandler);\n dropdownListRef.current = null;\n }\n }\n // document.documentElement.style.overflow = 'auto';\n setTxtSearch('');\n onClosed === null || onClosed === void 0 ? void 0 : onClosed();\n };\n\n // const renderDropdown = pattern => {\n // const keyArr = displayExpr?.match(separatorPattern);\n // const dropdown = mapDropdown(pattern, keyArr);\n // const el = document.createElement('div');\n // el.className = `DGN-Dropdown-Box`;\n // if (dropdownRef.current) {\n // dropdownRef.current.querySelector('.DGN-Dropdown-Box')?.remove();\n // ReactDOM.render(dropdown, dropdownRef.current.appendChild(el));\n // setTimeout(() => {\n // if (onLoadMore && dataSource.length < total) {\n // dropdownListRef.current &&\n // dropdownListRef.current.addEventListener('scroll', onLoadMoreHandler);\n // }\n // updatePositionDropdown();\n // }, 0);\n // }\n // };\n\n /**\r\n * So sánh text đầu vào cáo map với txtSearch\r\n * @param text\r\n * @return {boolean}\r\n */\n const handleRenderBySearch = (text = '') => {\n if (typeof text !== 'string') text = text.toString();\n if (!txtSearch) return true;\n if (searchMode === 'startswith') {\n return text.toLowerCase().startsWith(txtSearch.toLowerCase());\n } else if (searchMode === 'equals') {\n return text.toLowerCase() === txtSearch.toLowerCase();\n } else return text.toLowerCase().includes(txtSearch.toLowerCase());\n };\n\n /**\r\n * Chuyển đổi data thành giá trị cần hiện thị dựa vào displayExpr [string, string object {field} - {field}], renderSelectedItem, displayExpr, valueExpr\r\n * @param data {object} rowData of dataSource\r\n * @return {string}\r\n */\n const displayValue = data => {\n let text = '';\n if (data || data === 0) {\n displayExpr = displayExpr || valueExpr;\n let mask = data === null || data === void 0 ? void 0 : data[displayExpr];\n // convert {id} - {name} to {} - {}\n if (!mask && regexBetween.test(displayExpr)) {\n var _displayExpr;\n mask = (_displayExpr = displayExpr) === null || _displayExpr === void 0 ? void 0 : _displayExpr.replace(regexBetween, _ => data[_]);\n } else if (!mask) {\n mask = typeof data !== 'object' ? data : '';\n }\n text = mask.toString().replace(regexInclude, '');\n }\n return text;\n };\n const mapDropdown = () => {\n var _currentObjectDefault;\n const items = [];\n let dataSourceUsable = [...dataSourceState];\n\n // search dataSource dựa trên txtSearch\n if (!onInput || action !== null && action !== void 0 && action.loadData) {\n var _dataSourceUsable;\n dataSourceUsable = (_dataSourceUsable = dataSourceUsable) === null || _dataSourceUsable === void 0 ? void 0 : _dataSourceUsable.filter(i => {\n if (searchExpr) {\n // nếu map đc vs 1 trong những (data[key]) của searchExpr\n return !!searchExpr.find(j => handleRenderBySearch(i[j]));\n } else {\n // nếu map đc vs displayValue\n return handleRenderBySearch(displayValue(i)) || handleRenderBySearch(i === null || i === void 0 ? void 0 : i[valueExpr]);\n }\n });\n }\n if (currentObjectDefault[unique] && (_currentObjectDefault = currentObjectDefault[unique]) !== null && _currentObjectDefault !== void 0 && _currentObjectDefault.length) {\n const length = currentObjectDefault[unique].length;\n let existItemQuantity = 0;\n for (let index = length - 1; index >= 0; index--) {\n if ((currentObjectDefault[unique][index][valueExpr] || currentObjectDefault[unique][index][valueExpr] === 0) && !dataSourceUsable.some(data => data[valueExpr] === currentObjectDefault[unique][index][valueExpr])) {\n dataSourceUsable.unshift(currentObjectDefault[unique][index]);\n } else {\n // Nếu số lượng phần tử của valueObjectDefault tồn tại trong dataSource nhiều hơn hoặc bằng limit thì không remove nữa\n if (++existItemQuantity > limit) {\n continue;\n }\n currentObjectDefault[unique].splice(index, 1);\n }\n }\n }\n const length = dataSourceUsable.length;\n for (let index = 0; index < length; index++) {\n const data = dataSourceUsable[index];\n if (!data) continue;\n const itemHidden = typeof data === 'object' ? data['hidden'] : false;\n if (itemHidden) continue;\n let displayText = displayValue(data);\n\n // if (searchExpr?.length > 0 && pattern) {\n // if (handleRenderBySearch(data, pattern)) continue;\n // } else if (pattern && !new RegExp(pattern).test(displayText.normalize())) continue;\n\n if (subText) {\n displayText = jsx(Fragment, null, jsx(Typography, {\n className: 'DGN-UI-Dropdown-PrimaryText',\n type: 'p1'\n }, displayText), jsx(Typography, {\n className: 'DGN-UI-Dropdown-SubText',\n type: 'p3',\n color: 'text/sub'\n }, typeof subText === 'function' ? subText({\n data,\n index\n }) : data[subText] || subText));\n }\n const value = typeof data === 'object' ? data[valueExpr] : data;\n let itemDisabled = typeof data === 'object' ? data['disabled'] : false;\n const icon = getIconFromData(data);\n const text = renderItem && typeof renderItem === 'function' ? renderItem({\n data,\n index\n }) : jsx(Typography, {\n type: 'p1'\n }, displayText);\n if (multiple && selectBox) {\n const checked = Array.isArray(valueMulti) ? valueMulti.includes(value) : valueMulti.includes(value);\n const isMaximumSelection = maximumSelectionLength === (valueMulti === null || valueMulti === void 0 ? void 0 : valueMulti.length);\n itemDisabled = itemDisabled || isMaximumSelection && !checked;\n items.push(jsx(\"div\", {\n key: index,\n css: !itemDisabled ? _DropdownItemCSS : [DisabledCSS, _DropdownItemCSS],\n className: 'DGN-UI-Dropdown-Item'\n // onClick={() => {\n // if (itemDisabled) return;\n // onChangeValueWithCheckbox(e) & onChangeValue(displayText, value, icon, data, index);\n // onChangeValue(displayText, value, icon, data, index);\n // }}\n ,\n onKeyDown: e => {\n if (itemDisabled) return;\n if (e.key === 'Enter') e.currentTarget.firstChild.click();\n // if (e.key === 'Enter') onChangeValue(displayText, value, icon, data, index);\n },\n\n tabIndex: -1\n }, jsx(Checkbox, {\n css: CheckBoxCSS,\n forTreeView: true,\n checked: checked,\n value: value,\n disabled: itemDisabled,\n onChange: () => onChangeValue(displayText, value, icon, data, index)\n }, icon, text)));\n } else {\n items.push(jsx(\"div\", {\n key: index,\n css: !itemDisabled ? _DropdownItemCSS : [DisabledCSS, _DropdownItemCSS],\n className: 'DGN-UI-Dropdown-Item',\n onClick: () => {\n if (itemDisabled) return;\n onChangeValue(displayText, value, icon, data, index);\n },\n onKeyDown: e => {\n if (itemDisabled) return;\n if (e.key === 'Enter') onChangeValue(displayText, value, icon, data, index);\n },\n tabIndex: -1,\n style: dropdownItemStyle\n }, icon, text));\n }\n }\n return jsx(\"div\", {\n css: _DropdownListCSS,\n ref: dropdownListRef,\n className: 'DGN-Dropdown-List',\n onKeyDown: moveOnItem,\n tabIndex: -1\n }, items !== null && items !== void 0 && items.length ? items : EmptyDataText);\n };\n const mapTreeView = () => {\n return jsx(\"div\", {\n css: _DropdownListCSS,\n ref: dropdownListRef,\n className: 'DGN-Dropdown-List',\n onKeyDown: moveOnItem,\n tabIndex: -1\n }, dataSourceState !== null && dataSourceState !== void 0 && dataSourceState.length ? jsx(TreeView, {\n dataSource: dataSourceState,\n displayExpr: displayExpr,\n valueExpr: valueExpr,\n multiple: multiple,\n selectBox: selectBox,\n allowSearch: allowSearch,\n searchProps: {\n autoFocus: true,\n inputRef: searchRef\n },\n searchDelayTime: searchDelayTime,\n id: treeViewID,\n parentID: treeViewParentID,\n value: typeof currentValue[unique] === 'string' ? [currentValue[unique]] : currentValue[unique],\n onChange: (e, value) => onChangeValue('', multiple ? value : e.value),\n renderItem: renderItem\n }) : EmptyDataText);\n };\n\n // remove item cũ và append child item mới khi load more\n const loadMoreItemsDropdown = (i = 0, pattern) => {\n var _currentObjectDefault2, _displayExpr2;\n const dataSourceUsable = [...dataSourceState];\n // Nếu có load more thì đẩy đội tượng mặc định lên đầu\n let notExistItem = 0;\n if (onLoadMore && (_currentObjectDefault2 = currentObjectDefault[unique]) !== null && _currentObjectDefault2 !== void 0 && _currentObjectDefault2.length) {\n const length = currentObjectDefault[unique].length;\n for (let index = length - 1; index >= 0; index--) {\n if (!dataSourceUsable.some(data => data[valueExpr] === currentObjectDefault[unique][index][valueExpr])) {\n notExistItem++;\n dataSourceUsable.unshift(currentObjectDefault[unique][index]);\n }\n }\n }\n const length = dataSourceUsable.length;\n let num = 0;\n if (displayExpr && Array.isArray(displayExpr)) {\n displayExpr = displayExpr.join(' - ');\n }\n const keyArr = (_displayExpr2 = displayExpr) === null || _displayExpr2 === void 0 ? void 0 : _displayExpr2.match(separatorPattern);\n for (i; i < length; i++) {\n const data = {\n ...dataSourceUsable[i]\n };\n // Nếu đối tượng đã được hiển thị ở trên rồi thì không hiển thị ra nữa\n if (onLoadMore && i > notExistItem && currentObjectDefault[unique].some(valueObject => valueObject[valueExpr] === data[valueExpr])) continue;\n let displayText = typeof data === 'object' ? keyArr ? renderData(data, keyArr) : data[displayExpr] || data[valueExpr] : data;\n if (pattern && !new RegExp(pattern).test(displayText.normalize())) continue;\n const value = typeof data === 'object' ? data[valueExpr] : data;\n const icon = getIconFromData(data);\n const text = jsx(Typography, {\n type: 'p1'\n }, displayText);\n if (renderItem && typeof renderItem === 'function') {\n displayText = renderItem({\n data,\n index: i\n });\n } else if (subText) {\n displayText = jsx(Fragment, null, jsx(Typography, {\n className: 'DGN-UI-Dropdown-PrimaryText',\n type: 'p1'\n }, displayText), jsx(Typography, {\n className: 'DGN-UI-Dropdown-SubText',\n type: 'p3',\n color: 'text/sub'\n }, typeof subText === 'function' ? subText({\n data,\n index: i\n }) : data[subText] || subText));\n }\n const dropdownItem = document.createElement('div');\n dropdownItem.className = `DGN-UI-Dropdown-Item css-${_DropdownItemCSS.name}`;\n dropdownItem.tabIndex = -1;\n dropdownItem.addEventListener('click', () => onChangeValue(displayText, value, icon, data, i));\n dropdownItem.addEventListener('keypress', e => {\n if (e.key === 'Enter') dropdownItem.firstChild.click();\n });\n let item = null;\n if (multiple && selectBox) {\n const checked = Array.isArray(currentValue[unique]) ? currentValue[unique].includes(value) : [currentValue[unique]].includes(value);\n item = jsx(Checkbox, {\n css: CheckBoxCSS,\n forTreeView: true,\n checked: checked\n }, icon, text);\n } else {\n item = jsx(Fragment, null, icon, text);\n }\n if (!dropdownListRef.current) {\n return;\n }\n ReactDOM.render(item, dropdownListRef.current.appendChild(dropdownItem));\n if (++num === 100) {\n timerRef.current = setTimeout(() => {\n loadMoreItemsDropdown(i + 1, pattern);\n }, 1000);\n break;\n }\n }\n };\n const renderData = (data, keyArr) => {\n const pattern = keyArr.join('|').replace(/([{}])/g, '\\\\$1');\n const separatorArr = displayExpr.split(new RegExp(pattern));\n let str = '';\n let i = 0;\n for (i; i < keyArr.length; i++) {\n str += separatorArr[i] + (data[keyArr[i].replace(/\\W/g, '')] !== undefined ? data[keyArr[i].replace(/\\W/g, '')] : keyArr[i]);\n }\n return str + separatorArr[i];\n };\n const getIconFromData = (data, insideChip = false) => {\n if (!iconExpr || iconExpr === 'none') return null;\n let _src;\n if (typeof iconExpr === 'string') _src = data[iconExpr];else {\n let prefix = iconExpr.prefix || '';\n const suffix = iconExpr.suffix || '';\n const url = data[iconExpr.key];\n if (prefix && /^http/i.test(prefix) && /^http/i.test(url)) {\n prefix = '';\n }\n _src = prefix + url + suffix;\n }\n return jsx(Avatar, {\n css: mgr([insideChip ? 0 : 2]),\n disabled: true,\n src: _src,\n width: insideChip ? 20 : 24,\n height: insideChip ? 20 : 24,\n style: {\n ...iconExpr.style\n }\n });\n };\n const customizeWidthDropdown = () => {\n // if (dropdownListRef.current && _isMobile)\n // dropdownListRef.current.style.maxHeight = `${\n // Math.min(280, window.innerHeight) - (allowSearch ? 40 : 0)\n // }px`;\n if (timer.current) {\n clearTimeout(timer.current);\n }\n timer.current = setTimeout(() => {\n if (!ref.current) {\n window.removeEventListener('resize', customizeWidthDropdown);\n return;\n } else {\n const {\n width\n } = ref.current.getBoundingClientRect();\n setPopoverWidth(width);\n }\n }, 300);\n\n // if (dropdownRef.current) {\n // dropdownRef.current.style.width = width + 'px';\n // }\n // updatePositionDropdown();\n };\n\n // const updatePositionDropdown = () => {\n // if (!formRef.current || !dropdownRef.current) {\n // // document.removeEventListener('wheel', onWheelHandler);\n // return;\n // }\n // _isMobile\n // ? updatePosition(formRef.current, dropdownRef.current, null)\n // : updatePosition(formRef.current, dropdownRef.current, closeDropdown);\n // };\n\n const handleActionLoadData = isReset => {\n const {\n skip,\n limit,\n strSearch: search\n } = filter.current;\n const params = onLoadMore ? {\n skip,\n limit,\n search\n } : {\n search\n };\n const callbackSave = (error, data) => {\n setLoadingState(false);\n if (error) {\n let _data = {};\n if (error.originalError) {\n const {\n message,\n originalError,\n customMessage,\n code: codeError\n } = error;\n const _customMessage = customMessage && typeof customMessage === 'object' ? customMessage[codeError] : customMessage;\n let messageError = '';\n Object.keys(originalError).forEach(key => {\n messageError += `${key}: ${JSON.stringify(originalError[key], null, 8)}\\n`;\n });\n _data = {\n title: getGlobal('error') + (codeError ? `: ${codeError}` : ''),\n subtitle: _customMessage || message || getGlobal('unknownError'),\n description: messageError\n };\n } else {\n var _data$data;\n const message = (data === null || data === void 0 ? void 0 : data.message) || (data === null || data === void 0 ? void 0 : (_data$data = data.data) === null || _data$data === void 0 ? void 0 : _data$data.Message) || data;\n _data = {\n description: message || getGlobal('unknownError')\n };\n }\n setPopupDataState(_data);\n popupRef.current.instance.show();\n return false;\n } else if (data) {\n let rows = [];\n if (Array.isArray(data)) {\n rows = data;\n } else {\n rows = data && data.rows ? data.rows : dataSourceState;\n const total = data && data.total ? data.total : data.length;\n setTotalState(total);\n }\n setDataSourceState(isReset ? rows : dataSourceState.concat(rows));\n }\n };\n setLoadingState(true);\n action.loadData(params, callbackSave);\n };\n const onLoadMoreHandler = e => {\n if (loadMoreTimer.current) {\n clearTimeout(loadMoreTimer.current);\n }\n loadMoreTimer.current = setTimeout(() => {\n const {\n scrollTop,\n scrollHeight,\n offsetHeight\n } = e.target;\n if (scrollHeight === Math.ceil(scrollTop) + offsetHeight && dropdownListRef.current) {\n var _dropdownListRef$curr, _currentObjectDefault3;\n const length = ((_dropdownListRef$curr = dropdownListRef.current.children) === null || _dropdownListRef$curr === void 0 ? void 0 : _dropdownListRef$curr.length) - (((_currentObjectDefault3 = currentObjectDefault[unique]) === null || _currentObjectDefault3 === void 0 ? void 0 : _currentObjectDefault3.length) || 0);\n dropdownListRef.current.removeEventListener('scroll', onLoadMoreHandler);\n if (!!onLoadMore && typeof onLoadMore === 'boolean' && action !== null && action !== void 0 && action.loadData) {\n filter.current.skip = length;\n filter.current.limit = limit;\n handleActionLoadData();\n } else !!onLoadMore && onLoadMore({\n skip: length,\n limit: limit\n });\n }\n }, 300);\n };\n const onPreventKeyDownHandler = e => {\n e.preventDefault();\n return false;\n };\n const onChangeInput = e => {\n var _e$target$value;\n if (!dropdownRef.current) return; // Kiểm tra nếu dropdown đóng trước searchDelayTime thì không chạy\n setTxtSearch((_e$target$value = e.target.value) !== null && _e$target$value !== void 0 ? _e$target$value : '');\n // if (searchRef.current) lastSearchRef.current = searchRef.current.value;\n // const dataFilter = getData();\n // dataChosen.current = [...dataFilter].filter(i => [...valueMulti].includes(i?.[valueExpr]));\n if (onInput) {\n // isSearch[unique] = true;\n // const valueInput = e.target.value;\n // const text = (valueInput || e.target.textContent).normalize();\n // if (timeout.current) {\n // if (timing[unique]) {\n // clearTimeout(timing[unique]);\n // }\n // timing[unique] = setTimeout(() => {\n // e.target.value = text;\n onInput(e);\n // e.target.value = valueInput;\n // }, timeout.current || searchDelayTime);\n // } else {\n // e.target.value = text;\n // onInput(e);\n // e.target.value = valueInput;\n // }\n // return;\n }\n\n if (action !== null && action !== void 0 && action.loadData && !!onLoadMore) {\n filter.current.strSearch = e.target.value;\n handleActionLoadData(true);\n }\n // const value = e.target.value || e.target.textContent;\n // if (\n // typeof renderSelectedItem === 'function' &&\n // e.target.childNodes &&\n // Array.from(e.target.childNodes).some(node => node.toString() !== '[object Text]')\n // ) {\n // const cursor = document.getSelection().anchorOffset;\n // e.target.innerHTML = value;\n // document.getSelection().collapse(e.target, cursor);\n // }\n // if (timing[unique]) clearTimeout(timing[unique]);\n // timing[unique] = setTimeout(() => {\n // renderDropdown(searchExpr?.length > 0 ? value.normalize() : new RegExp(value.normalize(), 'gim'));\n // }, timeout.current || searchDelayTime);\n };\n\n const onChangeValue = (displayText, value, icon, data) => {\n if (itemMode === 'treeview') {\n if (valueProp === undefined) {\n setValueMulti(value);\n setValueIntoInput(value);\n setShowClear(clearAble && checkHasValue(value) && !disabled && !readOnly && !loadingState);\n }\n !!onChange && onChange({\n value\n });\n // setTimeout(() => {\n // updatePositionDropdown();\n // }, 0);\n } else if (multiple) {\n if (!Array.isArray(currentValue[unique])) currentValue[unique] = [];\n // const newValueArr = [...currentValue[unique]];\n const newValueArrState = [...valueMulti];\n if (!newValueArrState.some(v => JSON.stringify(v) === JSON.stringify(value))) {\n // newValueArr.push(value);\n newValueArrState.push(value);\n // if (valueProp === undefined) {\n // let item = null;\n // if (typeof renderSelectedItem === 'function') {\n // item = renderSelextedItem({ data, index });\n // } else {\n // item = (\n // onRemove(e, value)}\n // style={{ margin: '3px 0', width: '100%' }}\n // />\n // );\n // }\n // const el = document.createElement('div');\n // el.className = 'dropdown-item';\n // el.style.display = 'flex';\n // ReactDOM.render(item, inputRef.current.appendChild(el));\n // }\n } else {\n const index = newValueArrState.indexOf(value);\n // newValueArr.splice(index, 1);\n newValueArrState.splice(index, 1);\n // if (valueProp === undefined) {\n // const nodes = inputRef.current.querySelectorAll('.dropdown-item');\n // nodes[index]?.remove();\n // }\n }\n\n setValueMulti(newValueArrState);\n !!onChange && onChange({\n value: newValueArrState,\n data\n });\n // setTimeout(() => {\n // updatePositionDropdown();\n // }, 0);\n } else {\n const isChanged = currentValue[unique] !== value;\n if (isChanged) {\n if (valueProp === undefined) {\n allValue[unique].push(value);\n setValueIntoInput(value);\n setShowClear(clearAble && checkHasValue(value) && !disabled && !readOnly && !loading);\n }\n !!onChange && onChange({\n value,\n data\n });\n } else {\n // Fix lost icon when select same value\n triggerBlur(false);\n }\n }\n if (closeAfterSelect === true || closeAfterSelect === undefined && !multiple) {\n closeDropdown();\n }\n // else {\n // setTimeout(() => {\n // updatePositionDropdown();\n // }, 0);\n // }\n };\n\n // const onChangeValueWithCheckbox = e => {\n // const firstChild = e.currentTarget.firstChild;\n // if (!firstChild.contains(e.target)) {\n // firstChild.click();\n // }\n // };\n\n const onRemove = (e, value) => {\n var _ref;\n if (readOnly || disabled) return;\n const index = currentValue[unique].findIndex(v => JSON.stringify(v) === JSON.stringify(value));\n if (index !== -1) {\n currentValue[unique].splice(index, 1);\n // setTimeout(() => {\n // if (dropdownListRef.current && multiple && selectBox && !children) {\n // const input = dropdownListRef.current.querySelector(`input[value=\"${value}\"]`);\n // if (input) {\n // input.checked = false;\n // }\n // }\n // e?.parentNode?.remove();\n // }, 0);\n // }, 0);\n // }, 0);\n // setValueMulti([...valueMulti]?.filter(i=>i!==value) || []);\n // !!onChange && onChange({ value: currentValue[unique], removed: value });\n }\n\n // logic mới\n const newValueArrState = ((_ref = [...valueMulti]) === null || _ref === void 0 ? void 0 : _ref.filter(i => i !== value)) || [];\n setValueMulti(newValueArrState);\n !!onChange && onChange({\n value: newValueArrState,\n removed: value\n });\n };\n const onClear = e => {\n if (disabled || readOnly || loadingState || !clearAble) return;\n currentValue[unique] = multiple ? [] : '';\n if (multiple) {\n setValueMulti([]);\n // inputRef.current.innerHTML = '';\n // if (dropdownListRef.current) {\n // dropdownListRef.current.querySelectorAll('input').forEach(input => (input.checked = false));\n // }\n } else {\n setValueSingle('');\n }\n // onChangeValue('', '');\n setValueMulti([]);\n setShowClear(false);\n e && e.target && e.target.blur();\n // updatePositionDropdown();\n onInput === null || onInput === void 0 ? void 0 : onInput({\n ...(inputRef === null || inputRef === void 0 ? void 0 : inputRef.current),\n target: {\n value: ''\n }\n });\n !!onChange && onChange({\n value: currentValue[unique]\n });\n };\n const setPreviousValue = () => {\n allValue[unique].pop();\n setValueIntoInput(allValue[unique][allValue[unique].length - 1]);\n };\n const setValueIntoInput = source => {\n if (!source && source !== 0) {\n if (multiple) {\n // inputRef.current.innerHTML = '';\n currentValue[unique] = [];\n } else {\n // if (\n // typeof renderSelectedItem === 'function' ||\n // (iconExpr && iconExpr !== 'none' && !isSearch[unique])\n // ) {\n // inputRef.current.innerHTML = '';\n // } else if (!isSearch[unique]) {\n // inputRef.current.value = '';\n // }\n currentValue[unique] = '';\n }\n return;\n }\n const length = dataSourceState.length;\n const displayKey = typeof renderSelectedItem === 'string' ? renderSelectedItem : displayExpr;\n if (displayKey && Array.isArray(displayKey)) {\n displayExpr = displayExpr.join(' - ');\n }\n const keyArr = displayKey === null || displayKey === void 0 ? void 0 : displayKey.match(separatorPattern);\n if (multiple) {\n let valueArr = source;\n if (!Array.isArray(valueArr)) {\n valueArr = [valueArr];\n }\n valueArr = [...new Set(valueArr)];\n currentValue[unique] = [];\n // inputRef.current.innerHTML = '';\n valueArr.forEach(v => {\n var _currentObjectDefault4;\n for (let i = 0; i < length; i++) {\n if (!dataSourceState[i]) continue;\n if (typeof dataSourceState[i] === 'object' && dataSourceState[i][valueExpr] === v || dataSourceState[i] === v) {\n setMultipleValueHandler(dataSourceState[i], v, keyArr, i);\n return;\n }\n }\n if ((_currentObjectDefault4 = currentObjectDefault[unique]) !== null && _currentObjectDefault4 !== void 0 && _currentObjectDefault4.length) {\n const itemOfValue = currentObjectDefault[unique].find(valueObject => valueObject[valueExpr] === v || valueObject === v);\n if (itemOfValue) {\n setMultipleValueHandler(itemOfValue, v, keyArr);\n }\n }\n });\n } else {\n var _currentObjectDefault5;\n currentValue[unique] = source;\n for (let i = 0; i < length; i++) {\n if (!dataSourceState[i]) continue;\n if (dataSourceState[i][valueExpr] === source || dataSourceState[i] === source) {\n setSingleValueHandler(dataSourceState[i], keyArr);\n return;\n }\n }\n if ((_currentObjectDefault5 = currentObjectDefault[unique]) !== null && _currentObjectDefault5 !== void 0 && _currentObjectDefault5.length) {\n const itemOfValue = currentObjectDefault[unique].find(valueObject => valueObject[valueExpr] === source || valueObject === source);\n if (itemOfValue) {\n setSingleValueHandler(itemOfValue, keyArr);\n return;\n }\n }\n if (!isSearch[unique]) {\n // inputRef.current.value = source;\n }\n }\n };\n const setMultipleValueHandler = (data, value) => {\n // let item = null;\n // if (typeof renderSelectedItem === 'function') {\n // item = renderSelectedItem({ data, index });\n // } else {\n // const icon = getIconFromData(data);\n // const text = keyArr ? renderData(data, keyArr) : data[renderSelectedItem || displayExpr];\n // item = (\n // onRemove(e, value)}\n // style={{ margin: '3px 0', width: '100%' }}\n // />\n // );\n // }\n // const el = document.createElement('div');\n // el.className = 'dropdown-item';\n // el.style.display = 'flex';\n // ReactDOM.render(item, inputRef.current.appendChild(el));\n currentValue[unique].push(value);\n };\n const setSingleValueHandler = (data, keyArr) => {\n const text = keyArr ? renderData(data, keyArr) : typeof renderSelectedItem === 'string' ? data[renderSelectedItem] : data[displayExpr] || data[valueExpr] || data;\n const renderContent = content => jsx(Typography, {\n type: 'p1',\n lineClamp: multilineSelectedItem ? undefined : 1,\n hoverTooltip: !_isMobile\n }, content);\n if (typeof renderSelectedItem === 'function') {\n // inputRef.current.innerHTML = '';\n const item = renderSelectedItem({\n data\n });\n // const el = document.createElement('div');\n // el.style.display = 'flex';\n // el.style.width = '100%';\n // el.style.minHeight = '24px';\n // if (!multilineSelectedItem) el.style.maxHeight = '24px';\n const el = jsx(\"div\", {\n css: [displayFlex, parseWidth('100%'), parseMinHeight(24), !multilineSelectedItem && parseMaxHeight(24)]\n }, item);\n setValueSingle(el);\n // ReactDOM.render(item, inputRef.current.appendChild(el));\n } else if (iconExpr && iconExpr !== 'none') {\n // inputRef.current.innerHTML = '';\n const icon = getIconFromData(data);\n const valueWithIcon = jsx(Fragment, null, icon && icon, renderContent(text));\n // const el = document.createElement('div');\n // el.style.cssText = 'display: flex; align-items: center; min-height:24px;';\n const el = jsx(\"div\", {\n css: [displayFlex, itemsCenter, parseMinHeight(24)]\n }, valueWithIcon);\n setValueSingle(el);\n // ReactDOM.render(valueWithIcon, inputRef.current.appendChild(el));\n } else {\n // inputRef.current.value = text;\n setValueSingle(text);\n }\n };\n useImperativeHandle(reference, () => {\n const currentRef = ref.current || {};\n const _instance = {\n ...action,\n closeDropdown: () => {\n closeDropdown();\n },\n showDropdown: () => {\n setOpenState(true);\n },\n onClear,\n setPreviousValue,\n setValue: value => {\n if (allValue[unique][allValue[unique].length - 1] !== value) {\n allValue[unique].push(value);\n }\n setValueIntoInput(value);\n }\n }; // methods\n _instance.__proto__ = {}; // hidden methods\n currentRef.instance = _instance;\n // keep old method\n currentRef.closeDropdown = () => closeDropdown();\n currentRef.showDropdown = () => setOpenState(true);\n currentRef.onClear = onClear;\n currentRef.setPreviousValue = setPreviousValue;\n currentRef.setValue = value => {\n if (allValue[unique][allValue[unique].length - 1] !== value) {\n allValue[unique].push(value);\n }\n setValueIntoInput(value);\n };\n currentRef.DOM = ref.current;\n return currentRef;\n });\n useEffect(() => {\n setLoadingState(loading);\n }, [loading]);\n useEffect(() => {\n setTotalState(total);\n }, [total]);\n useEffect(() => {\n setDataSourceState(dataSource);\n }, [dataSource]);\n useEffect(() => {\n setShowClear(clearAble && checkHasValue(valueProp !== null && valueProp !== void 0 ? valueProp : defaultValue) && !disabled && !readOnly && !loadingState);\n }, [clearAble, valueProp, defaultValue, disabled, readOnly, loadingState]);\n useEffect(() => {\n if (valueObjectDefault) {\n if (Array.isArray(valueObjectDefault)) {\n currentObjectDefault[unique] = [...valueObjectDefault];\n } else if (typeof valueObjectDefault === 'object') {\n currentObjectDefault[unique] = Object.keys(valueObjectDefault).length !== 0 ? [valueObjectDefault] : [];\n }\n } else {\n currentObjectDefault[unique] = [];\n }\n return () => {\n currentObjectDefault[unique] = null;\n };\n }, [valueObjectDefault]);\n useEffect(() => {\n allValue[unique] = [];\n if (defaultValue !== undefined && JSON.stringify(defaultValue) !== '[]') {\n setValueIntoInput(defaultValue);\n setShowClear(clearAble && checkHasValue(defaultValue) && !disabled && !readOnly && !loadingState);\n }\n if (action !== null && action !== void 0 && action.loadData) handleActionLoadData();\n return () => {\n allValue[unique] = null;\n closeDropdown();\n };\n }, []);\n\n // useEffect(() => {\n // if (searchDelayTime) {\n // if (searchDelayTime === true) searchDelayTime = getGlobal('delayOnInput');\n // const units = {\n // m: 60000,\n // s: 1000,\n // ms: 1,\n // };\n // timeout.current =\n // typeof searchDelayTime === 'number'\n // ? searchDelayTime\n // : (searchDelayTime.match(/[^a-z]+/i)?.[0] || 1) *\n // units[searchDelayTime.match(/ms|s|m/i)?.[0] || 's'];\n // return () => {\n // timeout.current = null;\n // };\n // }\n // }, [searchDelayTime]);\n\n useEffect(() => {\n if (allValue[unique][allValue[unique].length - 1] !== valueProp) {\n allValue[unique].push(valueProp);\n }\n if (multiple && valueProp) {\n setValueMulti(convertData(valueProp, valueExpr));\n }\n // Close dropdown treeview by children when select item\n if (children && (closeAfterSelect === true || closeAfterSelect === undefined && !multiple)) {\n closeDropdown();\n }\n }, [valueProp]);\n useEffect(() => {\n if (valueProp !== undefined && (!dropdownListRef.current || children || JSON.stringify(valueProp) !== JSON.stringify(currentValue[unique]))) {\n setValueIntoInput(valueProp);\n }\n }, [valueProp, dataSourceState]);\n useEffect(() => {\n inputRef.current.readOnly = readOnly || inputProps.readOnly;\n if (!readOnly && !disabled) {\n !!onLoadMore && dropdownListRef.current && dropdownListRef.current.addEventListener('scroll', onLoadMoreHandler);\n }\n if (disabled || readOnly || children) {\n inputRef.current.addEventListener('keydown', onPreventKeyDownHandler);\n } else {\n inputRef.current.addEventListener('keydown', onKeyDown);\n }\n return () => {\n if (!ref.current || !inputRef.current || !iconRef.current) return;\n if (disabled || readOnly || children) {\n inputRef.current.removeEventListener('keydown', onPreventKeyDownHandler);\n } else {\n inputRef.current.removeEventListener('keydown', onKeyDown);\n }\n closeDropdown();\n };\n }, [disabled, readOnly, displayExpr, multiple, allowSearch, viewType, closeAfterSelect, selectBox]);\n useEffect(() => {\n if (!disabled && !readOnly) {\n inputRef.current.addEventListener('click', onClickInput);\n inputRef.current.addEventListener('input', onChangeInput);\n }\n return () => {\n if (!disabled && !readOnly && inputRef.current) {\n inputRef.current.removeEventListener('click', onClickInput);\n inputRef.current.removeEventListener('input', onChangeInput);\n }\n };\n }, [onChange, children]);\n useEffect(() => {\n if (!disabled && !readOnly) {\n inputRef.current.addEventListener('click', onClickInput);\n }\n if (dropdownListRef.current) {\n var _dropdownListRef$curr2, _dropdownListRef$curr3, _currentObjectDefault6;\n if (!disabled && !readOnly) {\n inputRef.current.addEventListener('input', onChangeInput);\n }\n const length = (_dropdownListRef$curr2 = dropdownListRef.current) === null || _dropdownListRef$curr2 === void 0 ? void 0 : (_dropdownListRef$curr3 = _dropdownListRef$curr2.children) === null || _dropdownListRef$curr3 === void 0 ? void 0 : _dropdownListRef$curr3.length;\n if (length < dataSourceState.length + ((_currentObjectDefault6 = currentObjectDefault[unique]) === null || _currentObjectDefault6 === void 0 ? void 0 : _currentObjectDefault6.length) && !isSearch[unique]) {\n loadMoreItemsDropdown(length);\n !!onLoadMore && dataSourceState.length < totalState && dropdownListRef.current.addEventListener('scroll', onLoadMoreHandler);\n } else {\n isSearch[unique] = false;\n }\n } else {\n if (!multiple && !disabled && !readOnly) {\n inputRef.current.addEventListener('input', onChangeInput);\n }\n }\n return () => {\n if (inputRef.current) {\n inputRef.current.removeEventListener('input', onChangeInput);\n inputRef.current.removeEventListener('click', onClickInput);\n }\n !!dropdownListRef.current && dropdownListRef.current.removeEventListener('scroll', onLoadMoreHandler);\n };\n }, [dataSourceState]);\n useLayoutEffect(() => {\n if (ref.current) {\n const {\n width\n } = ref.current.getBoundingClientRect();\n setPopoverWidth(width);\n }\n });\n /* End handler */\n\n /* Start component */\n const EmptyDataText = jsx(\"div\", {\n css: _DropdownItemCSS,\n className: 'no-data'\n }, noDataText);\n const LabelView = useMemo(() => label ? jsx(Label, {\n required: required,\n disabled: disabled,\n ...labelProps\n }, label) : null, [label, required, disabled, labelProps]);\n const getData = () => {\n let dataFilter = JSON.parse(JSON.stringify(dataSourceState));\n if (Array.isArray(valueObjectDefault)) {\n dataFilter = [...dataFilter, ...dataChosen.current, ...valueObjectDefault];\n } else if (typeof valueObjectDefault === 'object') {\n dataFilter = [...dataFilter, ...dataChosen.current, {\n ...valueObjectDefault\n }];\n }\n return dataFilter;\n };\n const InputView = useMemo(() => {\n return jsx(\"div\", {\n css: _DropdownFormCSS,\n ref: formRef,\n className: classNames('DGN-UI-Dropdown-Form', openState && 'dropdown-showing')\n }, jsx(\"div\", {\n css: _InputCSS,\n className: 'DGN-UI-Dropdown-Form-Input'\n }, multiple && valueMulti !== null && valueMulti !== void 0 && valueMulti.length ? jsx(\"div\", {\n ...inputProps,\n style: inputStyle,\n ref: inputRef,\n css: [_DropdownInputCSS, gap([0.5])],\n className: classNames('dgn-dropdown-multiple', inputProps.className),\n onChange: e => {\n e.preventDefault();\n return false;\n }\n }, valueMulti.map((vl, index) => {\n let dataFilter = getData();\n const data = dataFilter.find(v => v[valueExpr] === vl || v === vl);\n let text = '';\n if (data || data === 0) {\n displayExpr = displayExpr || valueExpr;\n // displayExpr =\n // typeof renderSelectedItem === 'string'\n // ? renderSelectedItem\n // : displayExpr || valueExpr;\n let mask = data === null || data === void 0 ? void 0 : data[displayExpr];\n\n // convert {id} - {name} to {} - {}\n if (!mask && regexBetween.test(displayExpr)) {\n var _displayExpr3;\n mask = (_displayExpr3 = displayExpr) === null || _displayExpr3 === void 0 ? void 0 : _displayExpr3.replace(regexBetween, _ => data[_]);\n } else if (!mask) {\n mask = typeof data !== 'object' ? data : '';\n }\n text = mask.toString().replace(regexInclude, '');\n }\n let item;\n if (typeof renderSelectedItem === 'function') {\n item = renderSelectedItem({\n data,\n index\n });\n } else {\n item = jsx(Chip, {\n css: [parseWidth('100%'), parseMaxWidth('max-content')],\n key: index,\n startIcon: getIconFromData(data, true),\n label: text,\n size: 'medium',\n disabled: disabled,\n clearAble: !readOnly && !disabled,\n onRemove: e => onRemove(e, vl)\n });\n }\n return item;\n })) : typeof renderSelectedItem === 'function' || iconExpr && iconExpr !== 'none' ? jsx(\"div\", {\n ...inputProps,\n style: inputStyle,\n ref: inputRef,\n css: _DropdownInputCSS,\n className: classNames('dgn-dropdown-multiple', inputProps.className),\n onKeyDown: e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n return false;\n }\n }\n }, valueSingle) : jsx(\"div\", {\n css: _DropdownInputCSS,\n onClick: onClickInput\n }, jsx(Typography, {\n ref: inputRef,\n hoverTooltip: true,\n lineClamp: multilineSelectedItem ? undefined : 1,\n type: 'p1',\n style: {\n lineHeight: multiple ? '30px' : '24px'\n },\n tabIndex: -1\n }, valueSingle))), jsx(\"div\", {\n ref: iconRef,\n css: _IconCSS,\n className: 'DGN-UI-Dropdown-Icon'\n }, loadingState ? jsx(CircularProgress, {\n size: 24\n }) : null, showClear ? jsx(ButtonIcon, {\n css: mgr([1]),\n viewType: 'ghost',\n name: 'Close',\n onClick: onClear\n }) : null, !loadingState ? jsx(ButtonIcon, {\n key: openState,\n css: animation,\n viewType: 'ghost',\n name: openState ? 'ArrowUp' : 'ArrowDown',\n onClick: setShowDropdown,\n disabled: disabled || readOnly\n }) : null));\n }, [openState, showClear, valueSingle, valueMulti, loadingState, dataSourceState, clearAble, dataSource, disabled, displayExpr, inputProps, inputStyle, multilineSelectedItem, multiple, onChange, placeholder, readOnly, renderSelectedItem, valueExpr, valueObjectDefault, viewType]);\n const ErrorView = useMemo(() => {\n return error ? jsx(HelperText, {\n ...helperTextProps,\n disabled: disabled\n }, error) : null;\n }, [disabled, error, helperTextProps]);\n const DropdownView = useMemo(() => {\n return jsx(Popover, {\n css: [mgt([1]), overflowHidden],\n ref: dropdownRef,\n open: openState,\n anchor: ref.current,\n width: popoverWidth,\n onClose: closeDropdown\n }, showDropdown());\n // return openState ? createPortal(showDropdown(), document.body) : null;\n }, [openState, popoverWidth, valueMulti, loadingState, dataSourceState, dataSource, maximumSelectionLength, multilineSelectedItem, multiple, selectBox, txtSearch]);\n /* End component */\n\n return jsx(Fragment, null, jsx(\"div\", {\n ref: ref,\n css: _DropdownRootCSS,\n style: style,\n className: classNames('DGN-UI-Dropdown', className, error && 'error', loadingState && 'dgn-dropdown-loading', disabled ? 'disabled' : readOnly && 'readOnly')\n }, LabelView, InputView, ErrorView), DropdownView, jsx(Popup, {\n ref: popupRef,\n type: 'danger',\n ...popupDataState\n }));\n}));\n\n/* Start styled */\nconst InputCSS = (multiple, renderSelectedItem) => css`\n ${displayFlex};\n ${positionRelative};\n ${parseWidth(!multiple && renderSelectedItem ? 'calc(100% - 34px)' : '100%')};\n`;\nconst DropdownInputCSS = (viewType, multiple, placeholder, disabled, readOnly, multilineSelectedItem) => css`\n ${displayFlex};\n ${itemsCenter};\n ${outlineNone};\n ${bgColor('transparent')};\n ${borderNone};\n ${paragraph1};\n ${disabled ? cursorNotAllowed : readOnly ? cursorDefault : cursorPointer};\n ${parseWidth('100%')};\n ${textColor('text/main')};\n ${pdt(0)};\n ${pdb([viewType !== 'outlined' ? 0 : 'inherit'])};\n ${pdl([viewType !== 'outlined' ? 0 : 4])};\n ${parseMinHeight(multiple ? 30 : 24)};\n &.dgn-dropdown-multiple {\n ${displayFlex};\n ${flexWrap};\n ${overflowHidden};\n ${breakWord};\n ${!multiple && css`\n ${parseMinHeight(24)};\n ${parseMaxWidth('100%')};\n ${!multilineSelectedItem && parseMaxHeight(24)};\n `};\n &::after {\n ${displayFlex};\n ${flexRow};\n ${positionAbsolute};\n ${itemsCenter};\n ${justifyCenter};\n content: '${placeholder}';\n ${textColor('text/sub')};\n }\n &:not(:empty)::after {\n ${invisible};\n }\n }\n &:focus {\n ${bgColor('transparent')};\n }\n .dropdown-item {\n &:not(:last-child) {\n ${mgr([1.25])};\n }\n svg {\n ${boxBorder};\n ${pd([0.5])};\n }\n }\n .DGN-UI-Typography {\n ${disabled && textColor('system/disabled')};\n }\n`;\nconst IconCSS = viewType => css`\n ${displayFlex};\n ${itemsCenter};\n ${mgl([2])};\n ${mgr([viewType !== 'outlined' ? 0 : 4])};\n`;\nconst DropdownFormCSS = (viewType, multiple, disabled, placeholder, DropdownInputCSSName) => viewType !== 'outlined' ? css`\n ${displayFlex};\n ${flexRow};\n ${itemsCenter};\n ${positionRelative};\n ${boxBorder};\n ${parseWidth('100%')};\n ${pdy([multiple ? 0.25 : 1])};\n ${!disabled && css`\n &:not(:focus-within):hover {\n &::before {\n ${borderBottomColor('system/active')};\n }\n .css-${DropdownInputCSSName} {\n ${textColor('system/active')};\n }\n }\n `}\n &:focus-within {\n ${borderBottomColor('line/focus')};\n &::after {\n ${borderBottomColor('inherit')};\n transform: scaleX(1);\n }\n .css-${DropdownInputCSSName} {\n ${textColor('system/active')};\n }\n }\n span:empty:before {\n content: '${placeholder}';\n ${parseHeight('100%')};\n ${overflowHidden};\n ${textColor('text/sub')};\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n }\n &::placeholder {\n ${textColor('text/sub')};\n }\n &::before {\n ${positionAbsolute};\n content: '';\n ${insetX(0)};\n ${bottom(0)};\n ${viewType === 'underlined' && borderBottom(1, disabled ? 'system/disabled' : 'system/rest')}\n }\n &::after {\n ${positionAbsolute};\n content: '';\n ${insetX(0)};\n ${bottom(-1)};\n ${borderBottom(2, 'transparent')};\n transform: scaleX(0);\n transform-origin: center;\n transition: all 0.2s ease;\n }\n ` : css`\n ${displayFlex};\n ${flexRow};\n ${itemsCenter};\n ${positionRelative};\n ${borderRadius(4)};\n ${boxBorder};\n ${border(1, disabled ? 'system/disabled' : 'system/rest')};\n ${parseWidth('100%')};\n ${parseMinHeight(40)};\n ${mgt([0.5])};\n ${!disabled && css`\n &:not(:focus-within):hover {\n ${bgColor('fill/hover')};\n ${borderColor('system/active')};\n input {\n ${bgColor('fill/hover')};\n }\n }\n `}\n &:focus-within {\n ${borderColor('line/focus')};\n }\n span:empty:before {\n content: '${placeholder}';\n ${parseHeight('100%')};\n ${overflowHidden};\n ${textColor('text/sub')};\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n }\n &::placeholder {\n ${textColor('text/sub')};\n }\n &::after {\n ${positionAbsolute};\n ${pointerEventsNone};\n ${borderRadius(4)};\n ${border(2, 'transparent')};\n ${inset(-2)};\n content: '';\n }\n `;\nconst DropdownListCSS = loading => css`\n ${displayBlock};\n ${positionRelative};\n ${boxBorder};\n ${borderRadius(4)};\n ${parseWidth('100%')};\n ${parseMaxHeight(280)};\n ${loading ? overflowHidden : overflowAuto};\n ${bgColor('system/white')};\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n ${z(1)};\n &::-webkit-scrollbar {\n ${borderRadius(4)};\n ${parseWidth(24)};\n ${bgColor('system/white')};\n }\n &::-webkit-scrollbar-thumb {\n ${borderRadius(24)};\n ${border(8, 'transparent')};\n ${bgColor('fill/scrollbar-tabbar')};\n mix-blend-mode: normal;\n background-clip: content-box;\n }\n .DGN-UI-TreeView {\n ${pd([0.25])};\n }\n`;\nconst DropdownItemCSS = (multiple, selectBox) => css`\n ${displayFlex};\n ${flexRow};\n ${positionRelative};\n ${itemsCenter};\n ${justifyStart};\n ${boxBorder};\n ${cursorPointer};\n ${userSelectNone};\n ${parseMinHeight(40)};\n ${parseWidth('100%')};\n ${bgColor('system/white')};\n ${pd([2, multiple && selectBox ? 0 : 4])};\n ${textColor('text/main')};\n &.no-data {\n ${justifyCenter};\n ${cursorDefault};\n ${italic};\n }\n &:not(.no-data):hover,\n &:not(.no-data):focus {\n ${outlineNone};\n ${bgColor('fill/hover')};\n ${textColor('system/active')};\n }\n`;\nconst DropdownRootCSS = (DropdownFormCSSName, DropdownInputCSSName) => css`\n ${displayBlock};\n ${positionRelative};\n ${mgb([5])};\n ${parseHeight('max-content')};\n &.error {\n .css-${DropdownFormCSSName} {\n ${borderColor('semantic/danger')};\n path {\n ${fill('semantic/danger')};\n }\n &::before {\n ${borderColor('semantic/danger')};\n }\n }\n }\n &.dgn-dropdown-loading,\n &.disabled {\n .css-${DropdownFormCSSName} {\n ${borderColor('system/disabled')};\n &::before {\n ${borderColor('system/disabled')};\n }\n }\n }\n &.readOnly {\n .css-${DropdownInputCSSName} {\n .dropdown-item {\n ${pointerEventsNone};\n }\n }\n }\n`;\n\n// const DropdownCSS = (topVl, leftVl, width, isMobile, allowSearch) => css`\n// ${positionFixed};\n// ${parseWidth(width)};\n// ${top(topVl)};\n// ${left(leftVl)};\n// ${bgColor('system/white')};\n// ${z(1)};\n// ${isMobile &&\n// allowSearch &&\n// css`\n// ${parseHeight('max-content')};\n// ${displayFlex};\n// ${flexColReverse};\n// ${bottom(0)};\n// ${top('auto')};\n// `}\n// `;\n\nconst LoadingProgressCSS = css`\n ${displayFlex};\n ${flexRow};\n ${justifyCenter};\n ${itemsCenter};\n ${positionAbsolute};\n ${borderRadius(4)};\n ${parseWidthHeight('100%')}\n ${bgColor('rgba(255, 255, 255, 0.6)')};\n ${z(2)};\n ${top(0)};\n`;\nconst DisabledCSS = css`\n pointer-events: none !important;\n opacity: 0.4 !important;\n`;\nconst CheckBoxCSS = css`\n ${parseWidthHeight('100%')};\n ${pd([0, 4])};\n`;\n/* End styled */\n\nDropdown.defaultProps = {\n allowSearch: true,\n className: '',\n clearAble: false,\n dataSource: [],\n disabled: false,\n displayExpr: 'name',\n error: '',\n iconExpr: 'none',\n inputProps: {},\n itemMode: 'normal',\n label: '',\n limit: 50,\n loading: false,\n multilineSelectedItem: false,\n multiple: false,\n noDataText: getGlobal('noDataText'),\n onInput: null,\n placeholder: getGlobal('dropdownPlaceholder'),\n readOnly: false,\n required: false,\n searchDelayTime: getGlobal('delayOnInput'),\n searchMode: 'contains',\n total: Number.MAX_SAFE_INTEGER,\n valueExpr: 'id',\n viewType: 'underlined'\n};\nDropdown.propTypes = {\n action: PropTypes.shape({\n loadData: PropTypes.func\n }),\n /** If `true`, display input box search. */\n allowSearch: PropTypes.bool,\n /** The contents in Dropdown box (Exp: TreeView). */\n children: PropTypes.node,\n /** Class for component. */\n className: PropTypes.string,\n /** If `true`, display clear icon.*/\n clearAble: PropTypes.bool,\n /** If `true`, dropdown will close after select an item. */\n closeAfterSelect: PropTypes.bool,\n /** The array of elements that appear in the dropdown list. */\n dataSource: PropTypes.array,\n /** Default value displayed when first render. */\n defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.array]),\n /** If `true`, the component is disabled. */\n disabled: PropTypes.bool,\n /** Field name used for text display in dropdown list.
\r\n * Example: 'name', '{id} - {name}', '{age} age(s)'
\r\n * Note: don't use 'id - name', return undefined\r\n */\n displayExpr: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.array]),\n /** Style inline of dropdown items. */\n dropdownItemStyle: PropTypes.object,\n /** Error displayed below input. */\n error: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /** Props applied to the [HelperText](https://core.diginet.com.vn/ui/?path=/story/form-control-text-helpertext) element. */\n helperTextProps: PropTypes.object,\n /** Field name used for icon display.
\r\n * Example:
\r\n * string: 'icon'
\r\n * object: {
\r\n * key: 'icon',
\r\n * prefix: 'https://imglink.com',
\r\n * suffix: '.jpg'
\r\n * }\r\n */\n iconExpr: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n key: PropTypes.string,\n prefix: PropTypes.string,\n suffix: PropTypes.string,\n style: PropTypes.object\n })]),\n /** Attributes applied to the input element. */\n inputProps: PropTypes.object,\n /** Style inline of input element. */\n inputStyle: PropTypes.object,\n /** The mode of item when rendering. */\n itemMode: PropTypes.oneOf(['normal', 'table', 'treeview']),\n /** The label of the input. */\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n /** [Props](https://core.diginet.com.vn/ui/?path=/docs/form-control-text-label--simple) of label. */\n labelProps: PropTypes.object,\n /** Number of items that are rendered each time. */\n limit: PropTypes.number,\n /** If `true`, the loading indicator is shown. */\n loading: PropTypes.bool,\n /** Set restrictions regarding the maximum number of options that can be selected. (Use with prop `multiple`) */\n maximumSelectionLength: PropTypes.number,\n /** If `true`, show multi-line selected item(s). */\n multilineSelectedItem: PropTypes.bool,\n /** If `true`, value must be an array and the dropdown will support multiple selections. */\n multiple: PropTypes.bool,\n /** Specifies a text string shown when there is no data. */\n noDataText: PropTypes.string,\n /** Callback fired when the value changes. */\n onChange: PropTypes.func,\n /** Callback fired when dropdown closed. */\n onClosed: PropTypes.func,\n /** Callback fired when the input value changes.
\r\n * if undefined: the filter function will run (default)\r\n */\n onInput: PropTypes.func,\n /** Callback fired when key down input */\n onKeyDown: PropTypes.func,\n /** Callback fired when scroll near the end. */\n onLoadMore: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n /** The short hint displayed in the input before the user select a value. */\n placeholder: PropTypes.string,\n /** If `true`, the component is read-only. */\n readOnly: PropTypes.bool,\n /** Function displays items by custom.
\r\n * renderItem={(data, index) => data.name + ' - ' + data.role}
\r\n * --> such as: displayExpr={'name - role'}\r\n */\n renderItem: PropTypes.func,\n /** Function or field name used for display selected items, example:
\r\n * renderSelectedItem={(data, index) => index + ' - ' + data.name}
\r\n */\n renderSelectedItem: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n /** If `true`, the label will indicate that the input is required. */\n required: PropTypes.bool,\n /**\r\n * Duration wait enter search content on search.
\r\n * Example: 700 -> 700ms, '700ms' -> 700ms, '0.7s' -> 700ms, '1m' -> 60000ms\r\n * If `true`, used default delayOnInput.\r\n */\n searchDelayTime: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]),\n /** Specifies a data object's field name or an expression whose value is compared to the search string. */\n searchExpr: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),\n /** Specifies a comparison operation used to search items. */\n searchMode: PropTypes.oneOf(['contains', 'startswith', 'equals']),\n /** If `true`, show checkbox in each dropdown item. */\n selectBox: PropTypes.bool,\n /** Style inline of component. */\n style: PropTypes.object,\n /** Display sub content. */\n subText: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n /** The total number of items in the dropdown list. */\n total: PropTypes.number,\n /** Used to identify the parent key (only used for `itemMode` is 'treeview'). */\n treeViewID: PropTypes.string,\n /** Used for mapping into a nested list (only used for `itemMode` is 'treeview'). */\n treeViewParentID: PropTypes.string,\n /** The displayed value of component. */\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.array]),\n /** The field name used for the returned result. */\n valueExpr: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /** An object default for value (use for load more). */\n valueObjectDefault: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n /**The variant to use. */\n viewType: PropTypes.oneOf(['underlined', 'outlined', 'none'])\n /**\r\n * ref methods\r\n *\r\n * how to get component element? ref.current\r\n *\r\n * how to call method? ref.current.instance.{method}\r\n *\r\n * * showDropdown(): Show dropdown\r\n * * closeDropdown(): Close dropdown\r\n * * onClear(): Clear selected value\r\n * * setPreviousValue(): Set value to previous value\r\n * * setValue(value): Set value of dropdown\r\n * * @param {value} - string || number || array\r\n */\n};\n\nexport default Dropdown;","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { memo, useState, useEffect, useRef, useImperativeHandle, forwardRef, Fragment } from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { jsx, css } from '@emotion/core';\nimport { ButtonIcon, InputBase, Label } from \"../../\";\nimport { randomString } from \"../../../utils\";\nimport { typography } from \"../../../styles/typography\";\nimport { boxBorder, borderRadius4px, displayBlock, positionFixed, positionRelative } from \"../../../styles/general\";\nimport { useTheme, useColor as colors } from \"../../../theme\";\nconst {\n paragraph1\n} = typography;\nconst {\n system: {\n white\n },\n semantic: {\n info\n },\n fill: {\n disabled: fillDisabled,\n 'scrollbar-tabbar': scrollbar\n }\n} = colors;\nconst {\n zIndex: zIndexCORE\n} = useTheme();\nconst timing = {};\nconst DropdownBox = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({\n className,\n label,\n placeholder,\n startIcon,\n endIcon,\n viewType,\n value,\n openOnClickAt,\n bgColor,\n style,\n inputProps,\n inputStyle,\n labelProps,\n inputRef,\n children,\n zIndex,\n onOpened,\n onClosed,\n onChangeInput,\n delayOnInput\n}, reference) => {\n const ref = useRef(null);\n const dropdownBoxRef = useRef(null);\n const [unique] = useState(randomString(6, {\n allowNumber: false,\n allowSymbol: false\n }));\n const [open, setOpen] = useState(false);\n\n /* Start handler */\n const onTriggerDropdown = e => {\n if (!open) {\n openDropdownBox();\n } else {\n closeDropdownBox(true);\n e.currentTarget.blur();\n }\n };\n const onClickOutsideOfInput = event => {\n if (ref.current && !ref.current.contains(event.target) && dropdownBoxRef.current && !dropdownBoxRef.current.contains(event.target)) {\n closeDropdownBox();\n }\n };\n const pressESCHandler = event => {\n if (event.key === 'Escape') {\n closeDropdownBox();\n }\n };\n const openDropdownBox = () => {\n setOpen(true);\n setTimeout(() => {\n const {\n top,\n left,\n height,\n width\n } = ref.current.getBoundingClientRect();\n let positionTop = top + height + 2;\n dropdownBoxRef.current.style.cssText = `top: ${positionTop}px; left: ${left}px; width: ${width}px;`;\n dropdownBoxRef.current.style.opacity = 1;\n document.addEventListener('mousedown', onClickOutsideOfInput);\n document.addEventListener('keydown', pressESCHandler);\n !!onOpened && onOpened(ref.current);\n }, 10);\n };\n const closeDropdownBox = certain => {\n var _Array$from, _Array$from$classList;\n const portals = document.querySelectorAll('.DGN-UI-Portal');\n if (!certain && portals && portals.length > 1 && Array.from(portals)[portals.length - 1] && !Array.from(portals)[portals.length - 1].contains(ref.current) && !((_Array$from = Array.from(portals)[portals.length - 1]) !== null && _Array$from !== void 0 && (_Array$from$classList = _Array$from.classList) !== null && _Array$from$classList !== void 0 && _Array$from$classList.contains('DGN-UI-Modal'))) {\n return;\n }\n if (dropdownBoxRef.current) {\n dropdownBoxRef.current.style.pointerEvents = `none`;\n dropdownBoxRef.current.style.opacity = 0;\n document.removeEventListener('mousedown', onClickOutsideOfInput);\n timing[unique + 'Box'] = setTimeout(() => {\n clearTimeout(timing[unique + 'Box']);\n timing[unique + 'Box'] = null;\n setOpen(false);\n !!onClosed && onClosed(ref.current);\n }, 300);\n }\n };\n useEffect(() => {\n return () => {\n closeDropdownBox();\n };\n }, []);\n /* End handler */\n\n useImperativeHandle(reference, () => ({\n open: () => {\n openDropdownBox();\n },\n close: () => {\n closeDropdownBox(true);\n }\n }));\n const renderEndIcon = () => {\n return endIcon && jsx(ButtonIcon, {\n viewType: 'ghost',\n name: endIcon,\n onClick: openOnClickAt === 'icon' ? onTriggerDropdown : null\n });\n };\n return jsx(Fragment, null, jsx(\"div\", {\n ref: ref,\n css: DropdownBoxRootCSS(bgColor),\n className: ['DGN-UI-Dropdown-Box', open && 'dropdown-showing', className].join(' ').trim().replace(/\\s+/g, ' '),\n style: style\n }, label ? jsx(Label, {\n ...labelProps\n }, label) : null, jsx(InputBase, {\n ...inputProps,\n className: open ? 'dropdown-focus' : '',\n style: inputStyle,\n viewType: viewType,\n inputRef: inputRef,\n placeholder: placeholder,\n value: value,\n startIcon: startIcon,\n endIcon: renderEndIcon(),\n onChange: onChangeInput,\n delayOnChange: delayOnInput,\n onClick: openOnClickAt === 'full' ? onTriggerDropdown : null\n })), open && /*#__PURE__*/createPortal(jsx(\"div\", {\n ref: dropdownBoxRef,\n className: `DGN-UI-Portal DGN-DropdownBox-${unique}`,\n css: DropdownBoxCSS(zIndex)\n }, children), document.body));\n}));\n\n/* Start styled */\nconst DropdownBoxRootCSS = bgColor => css`\n &.DGN-UI-Dropdown-Box {\n ${displayBlock}\n ${positionRelative}\n min-width: 150px;\n height: max-content;\n .end-icon > .DGN-UI-Icon {\n transition: transform 250ms;\n }\n &.dropdown-showing {\n .end-icon > .DGN-UI-ButtonIcon {\n transform: rotateX(180deg);\n }\n }\n .DGN-UI-InputBase {\n background-color: ${bgColor ? bgColor === true ? fillDisabled : bgColor : 'inherit'};\n &.underlined {\n height: 32px;\n }\n &.dropdown-focus {\n background-color: inherit;\n &::after {\n border-bottom-color: ${info};\n transform: scaleX(1);\n }\n }\n }\n }\n`;\nconst DropdownBoxCSS = zIndex => css`\n ${displayBlock};\n ${paragraph1};\n ${positionFixed};\n ${boxBorder};\n ${borderRadius4px};\n background-color: ${white};\n z-index: ${zIndex};\n width: 100%;\n height: auto;\n max-height: 80%;\n overflow: auto;\n padding: 16px;\n opacity: 0;\n transition: opacity 0.3s;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n &::-webkit-scrollbar {\n ${borderRadius4px}\n width: 8px;\n background-color: ${white} !important;\n }\n &::-webkit-scrollbar-thumb {\n ${borderRadius4px}\n mix-blend-mode: normal;\n background-color: ${scrollbar} !important;\n background-clip: content-box;\n }\n .DGN-UI-TreeView {\n padding: 1px;\n }\n`;\n/* End styled */\n\nDropdownBox.defaultProps = {\n className: '',\n label: '',\n placeholder: '',\n startIcon: 'Search',\n endIcon: 'ArrowDown',\n openOnClickAt: 'icon',\n viewType: 'underlined',\n inputProps: {},\n delayOnInput: 700,\n zIndex: zIndexCORE(1)\n};\nDropdownBox.propTypes = {\n /** class for dropdown */\n className: PropTypes.string,\n /** label for input */\n label: PropTypes.string,\n /** hints for input */\n placeholder: PropTypes.string,\n /** the content to display in input */\n value: PropTypes.string,\n /** icon at start */\n startIcon: PropTypes.string,\n /** icon at end */\n endIcon: PropTypes.string,\n /** background color of DropdownBox input */\n bgColor: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n /** viewType of InputBase */\n viewType: PropTypes.oneOf(['underlined', 'outlined']),\n /** viewType of InputBase */\n openOnClickAt: PropTypes.oneOf(['full', 'icon']),\n /** style inline for dropdown */\n style: PropTypes.object,\n /** props of input in DropdownBox component */\n inputProps: PropTypes.object,\n /** style inline of input in DropdownBox component */\n inputStyle: PropTypes.object,\n /** the function will run when entering input */\n onChangeInput: PropTypes.func,\n /** delay time on input */\n delayOnInput: PropTypes.number,\n /** style inline of label in DropdownBox component */\n labelProps: PropTypes.object,\n /** z-index for DropdownBox component */\n zIndex: PropTypes.number,\n /** the contents in DropdownBox box (Exp: TreeView) */\n children: PropTypes.node.isRequired,\n /** the function will run after open */\n onOpened: PropTypes.func,\n /** the function will run after close */\n onClosed: PropTypes.func\n};\nexport default DropdownBox;","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { memo, useRef, useEffect, forwardRef, Children, useImperativeHandle } from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx, css } from '@emotion/core';\nimport theme from \"../../../theme/settings\";\nconst {\n spacing\n} = theme;\nconst FormGroup = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({\n fullWidth,\n oneHelperText,\n marginRight,\n className,\n children,\n ...props\n}, reference) => {\n const ref = useRef(null);\n const previousError = useRef(false);\n\n /* Start styled */\n const FormGroupRoot = css`\n position: relative;\n align-items: flex-end;\n box-sizing: border-box;\n width: auto;\n margin-bottom: ${spacing(4)}px;\n &.Form-Group-full-width {\n width: 100% !important;\n flex: 1 1 auto;\n .DGN-UI-TextInput {\n flex: 1 1 auto;\n }\n }\n &.Form-Group-Common {\n margin-bottom: 20px;\n width: max-content;\n .DGN-UI-HelperText {\n width: 100%;\n left: 0;\n }\n .DGN-UI-TextInput {\n position: initial;\n margin-bottom: 0 !important;\n }\n }\n &.DGN-UI-TextInput {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n height: 100%;\n margin-bottom: 20px !important;\n &:not(:last-of-type) {\n margin-right: ${isNaN(marginRight) ? marginRight : marginRight + 'px'};\n }\n }\n `;\n /* End styled */\n\n /* Start handler */\n const resetLabelPosition = () => {\n const allUnderlined = ref.current.querySelectorAll('.DGN-UI-InputBase.underlined');\n const outlined = ref.current.querySelector('.DGN-UI-InputBase.outlined');\n if (allUnderlined.length && outlined) {\n allUnderlined.forEach(input => {\n if (input.previousElementSibling) {\n input.previousElementSibling.style.marginBottom = '10px';\n }\n });\n }\n };\n useEffect(() => {\n if (ref.current) {\n resetLabelPosition();\n }\n }, []);\n useEffect(() => {\n if (oneHelperText) {\n let isError = false;\n Children.forEach(children, child => {\n if (!isError && !!child.props.error) {\n isError = true;\n }\n });\n if (previousError.current !== isError) {\n previousError.current = isError;\n ref.current.querySelectorAll('.DGN-UI-TextInput, .DGN-UI-Dropdown, .DGN-UI-InputBase').forEach(node => {\n node.classList[isError ? 'add' : 'remove']('danger');\n });\n }\n }\n }, [children]);\n /* End handler */\n\n useImperativeHandle(reference, () => ref.current);\n return jsx(\"div\", {\n ref: ref,\n css: FormGroupRoot,\n className: ['DGN-UI-FormGroup', fullWidth ? 'Form-Group-full-width' : '', oneHelperText ? 'Form-Group-Common' : '', className].join(' ').trim(),\n ...props\n }, children);\n}));\nFormGroup.defaultProps = {\n marginRight: 16,\n fullWidth: false,\n oneHelperText: false,\n className: ''\n};\nFormGroup.propTypes = {\n fullWidth: PropTypes.bool,\n oneHelperText: PropTypes.bool,\n marginRight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n className: PropTypes.string,\n children: PropTypes.node.isRequired\n};\nexport default FormGroup;","/** @jsxRuntime classic */\n/** @jsx jsx */\n\nimport { jsx } from '@emotion/core';\nimport PropTypes from 'prop-types';\nimport { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { date as moment } from \"../../../utils\";\nimport { isAfterLimit, isBeforeLimit, onUpdateCalendar, renderHeader, renderNavigator, isValidDate, generateCalendarCSS } from \"./function\";\nconst Calendar = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({\n actions,\n className,\n defaultValue,\n displayAnotherMonth,\n max,\n min,\n onClick,\n value,\n ...props\n}, reference) => {\n // const [id] = useState(randomString(6, { allowSymbol: false }));\n const unique = {\n container: 'DGN-UI-Calendar',\n icon: 'DGN-UI-Calendar-Icon',\n navigator: {\n navigator: 'DGN-UI-Calendar-Navigator',\n around: 'DGN-UI-Calendar-Navigator-Around',\n center: 'DGN-UI-Calendar-Navigator-Center'\n },\n table: {\n container: 'DGN-UI-Calendar-Table-Container',\n table: 'DGN-UI-Calendar-Table-Table',\n header: 'DGN-UI-Calendar-Table-Header',\n raw: 'DGN-UI-Calendar-Table-Raw',\n data: 'DGN-UI-Calendar-Table-Data'\n },\n day: {\n day: 'DGN-UI-Calendar-Day',\n week: 'DGN-UI-Calendar-Week',\n today: 'DGN-UI-Calendar-Day-today',\n active: 'DGN-UI-Calendar-Day-active',\n limit: 'DGN-UI-Calendar-Day-limit'\n }\n };\n\n /**\r\n * START REFERENCE\r\n */\n const ref = useRef(null);\n const tableRef = useRef(null);\n const activeValue = useRef(null);\n const navigatorValue = useRef(null);\n useImperativeHandle(reference, () => ref.current);\n const [, setActiveValue] = useState(Date.now());\n const [, setNavigatorValue] = useState(Date.now());\n const navigatorRefs = {\n doubleLeft: useRef(null),\n doubleRight: useRef(null),\n left: useRef(null),\n right: useRef(null),\n content: useRef(null)\n };\n const firstDayOfMax = new Date(new Date(max).setDate(1)).setHours(0, 0, 0, 0);\n const firstDayOfMin = new Date(new Date(min).setDate(1)).setHours(0, 0, 0, 0);\n /**\r\n * END REFERENCE\r\n */\n\n /**\r\n * START FUNCTION\r\n */\n const onUpdateNavigatorValue = useCallback(value => {\n navigatorValue.current = value;\n setNavigatorValue();\n }, [navigatorValue]);\n const onUpdateActiveValue = useCallback(value => {\n activeValue.current = value;\n setActiveValue();\n }, [activeValue]);\n const onUpdate = value => {\n const newValue = new Date(value).setHours(0, 0, 0, 0);\n onUpdateActiveValue(newValue);\n onUpdateCalendar(newValue, navigatorRefs, min, max, tableRef.current, activeValue.current, unique, displayAnotherMonth, onDayClick, onUpdateNavigatorValue);\n };\n const getCurrentTime = () => {\n const time = new Date(navigatorValue.current);\n return [time.getDate(), time.getMonth(), time.getFullYear()];\n };\n const onDayClick = e => {\n const node = e.currentTarget;\n tableRef.current.querySelectorAll(`td.${unique.day.active}`).forEach(element => {\n element.classList.remove(unique.day.active);\n });\n node.classList.add(unique.day.active);\n const timeStamp = Number(node.dataset.time);\n const objNewDate = new Date(timeStamp);\n const _navigatorValue = new Date(navigatorValue.current);\n const objNewDateMonth = objNewDate.getMonth() + 1;\n const objNewDateYear = objNewDate.getFullYear();\n const navigatorMonth = _navigatorValue.getMonth() + 1;\n const navigatorYear = _navigatorValue.getFullYear();\n onUpdateActiveValue(objNewDate);\n if (objNewDateMonth > navigatorMonth || objNewDateYear > navigatorYear) setNextMonth();else if (objNewDateMonth < navigatorMonth || objNewDateYear < navigatorYear) setPrevMonth();\n !!onClick && onClick({\n value: objNewDate\n });\n };\n const setPrevYear = e => {\n const time = new Date(getCurrentTime()[2] - 1, getCurrentTime()[1]);\n if (min && isValidDate(min) && moment(time).diff(firstDayOfMin) < 0) {\n e.preventDefault();\n } else {\n onUpdateCalendar(time, navigatorRefs, min, max, tableRef.current, activeValue.current, unique, displayAnotherMonth, onDayClick, onUpdateNavigatorValue);\n }\n };\n const setNextYear = e => {\n const time = new Date(getCurrentTime()[2] + 1, getCurrentTime()[1]);\n if (max && isValidDate(max) && moment(time).diff(firstDayOfMax) > 0) {\n e.preventDefault();\n } else {\n onUpdateCalendar(time, navigatorRefs, min, max, tableRef.current, activeValue.current, unique, displayAnotherMonth, onDayClick, onUpdateNavigatorValue);\n }\n };\n const setPrevMonth = e => {\n const time = new Date(getCurrentTime()[2], getCurrentTime()[1] - 1);\n if (min && isValidDate(min) && moment(time).diff(firstDayOfMin) < 0) {\n e.preventDefault();\n } else {\n onUpdateCalendar(time, navigatorRefs, min, max, tableRef.current, activeValue.current, unique, displayAnotherMonth, onDayClick, onUpdateNavigatorValue);\n }\n };\n const setNextMonth = e => {\n const time = new Date(getCurrentTime()[2], getCurrentTime()[1] + 1);\n if (max && isValidDate(max) && moment(time).diff(firstDayOfMax) > 0) {\n e.preventDefault();\n } else {\n onUpdateCalendar(time, navigatorRefs, min, max, tableRef.current, activeValue.current, unique, displayAnotherMonth, onDayClick, onUpdateNavigatorValue);\n }\n };\n\n /**\r\n * END FUNCTION\r\n */\n\n /**\r\n * START EFFECT\r\n */\n useEffect(() => {\n if (defaultValue && defaultValue !== '' && isValidDate(defaultValue)) {\n if (isBeforeLimit(min, defaultValue)) {\n onUpdate(min);\n } else if (isAfterLimit(max, defaultValue)) {\n onUpdate(max);\n } else {\n onUpdate(defaultValue);\n }\n }\n }, []);\n useEffect(() => {\n if (value && value !== '' && isValidDate(value)) {\n if (isBeforeLimit(min, value)) {\n onUpdate(min);\n } else if (isAfterLimit(max, value)) {\n onUpdate(max);\n } else {\n onUpdate(value);\n }\n }\n }, [value]);\n useEffect(() => {\n if (min && isBeforeLimit(min, activeValue.current)) {\n onUpdate(min);\n !!onClick && onClick({\n value: new Date(min)\n });\n } else if (max && isAfterLimit(max, activeValue.current)) {\n onUpdate(max);\n !!onClick && onClick({\n value: new Date(max)\n });\n } else {\n onUpdate(activeValue.current);\n }\n }, [onClick, min, max]);\n /**\r\n * END FUNCTION\r\n */\n\n /**\r\n * START COMPONENT\r\n */\n const tableMemo = jsx(\"div\", {\n className: unique.table.container\n }, jsx(\"table\", {\n className: unique.table.table,\n ref: tableRef\n }, renderHeader(unique), jsx(\"tbody\", null)));\n /**\r\n * END COMPONENT\r\n */\n return jsx(\"div\", {\n ...props,\n className: [unique.container, className].join(' ').trim().replace(/\\s+/g, ' '),\n css: generateCalendarCSS(unique),\n ref: ref\n }, renderNavigator(unique, navigatorRefs, setPrevYear, setPrevMonth, setNextMonth, setNextYear), tableMemo, actions);\n}));\nCalendar.defaultProps = {\n actions: null,\n defaultValue: new Date(),\n displayAnotherMonth: true\n};\nCalendar.propTypes = {\n /** the footer actions */\n actions: PropTypes.oneOfType([PropTypes.element, PropTypes.node]),\n /** class for calendar */\n className: PropTypes.string,\n /** the default value of the calendar */\n defaultValue: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string, PropTypes.array]),\n /** display days of previous or next month */\n displayAnotherMonth: PropTypes.bool,\n /** the last date that can be selected within the UI component. */\n max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string, PropTypes.array]),\n /** the minimum date that can be selected within the UI component. */\n min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string, PropTypes.array]),\n /** a callback function when click on a day of calendar */\n onClick: PropTypes.func,\n /** value of the calendar */\n value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string, PropTypes.array])\n};\nexport default Calendar;","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { css, jsx } from '@emotion/core';\nimport { Button, ButtonIcon, HelperText, InputBase, Label, Tooltip } from \"../..\";\nimport { getGlobal } from \"../../../global\";\nimport locale from \"../../../locale\";\nimport PropTypes from 'prop-types';\nimport { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { render } from 'react-dom';\nimport { bgColor, borderRadius4px, cursorPointer, displayBlock, displayFlex, displayNone, flexRow, itemsCenter, justifyEnd, left, mg, parseMaxWidth, parseMinWidth, parseWidthHeight, positionFixed, scale, top, z } from \"../../../styles/general\";\nimport { useTheme } from \"../../../theme\";\nimport { capitalizeSentenceCase, date as moment, randomString, updatePosition } from \"../../../utils\";\nimport CalendarComp from \"../calendar\";\nimport { isValidDate } from \"../calendar/function\";\nimport ControlComp from \"../control\";\nconst {\n zIndex: zIndexCORE\n} = useTheme();\nconst confirmText = getGlobal(['confirm']);\nconst cancelText = getGlobal(['cancel']);\nconst formatValue = (value, format, utc = false) => {\n return moment(value).format(format, utc);\n};\nconst DatePicker = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({\n action = {},\n actionIconAt,\n clearAble,\n controls,\n defaultValue,\n disabled,\n displayAnotherMonth,\n displayFormat,\n error,\n errorProps,\n inputProps,\n inputStyle,\n label,\n labelProps,\n max,\n min,\n onChange,\n placeholder,\n pressESCToClose,\n readOnly,\n required,\n returnFormat,\n style,\n textAlign,\n value: valueProp,\n viewType,\n ...props\n}, reference) => {\n var _ipRef$current, _ipRef$current2;\n const [id] = useState(randomString(6, {\n allowSymbol: false\n }));\n const unique = {\n disabled: 'DGN-UI-DatePicker-disabled',\n error: 'DGN-UI-DatePicker-error',\n focus: 'DGN-UI-DatePicker-focus',\n footer: 'DGN-UI-DatePicker-Footer',\n cancel: 'DGN-UI-DatePicker-cancel',\n confirm: 'DGN-UI-DatePicker-confirm',\n backGr: 'DGN-UI-DatePicker-Background',\n icon: 'DGN-UI-DatePicker-Icon',\n picker: `DGN-UI-DatePicker-Picker-${id}`,\n portal: 'DGN-UI-Portal'\n };\n const calRef = useRef(null);\n const footerRef = useRef(null);\n const iconRef = useRef(null);\n const ipConRef = useRef(null);\n const ipRef = useRef(null);\n const ref = useRef(null);\n const displayValue = useRef();\n const focusedValue = useRef(null);\n const [, setDisplayValue] = useState(Date.now());\n const [, setFocusedValue] = useState(Date.now());\n const [value, setValue] = useState(valueProp || defaultValue);\n const _IconAreaCSS = IconAreaCSS(unique);\n const handleDisplayValue = useCallback(value => {\n displayValue.current = new Date(value);\n setDisplayValue();\n }, [displayValue]);\n const handleFocusedValue = useCallback(value => {\n focusedValue.current = new Date(value);\n setFocusedValue();\n }, [focusedValue]);\n const setButtonState = () => {\n if (!footerRef.current || focusedValue.current === undefined || !isValidDate(focusedValue.current)) return;\n const isEqual = focusedValue.current === null || Date.parse(new Date(focusedValue.current)) === Date.parse(new Date(displayValue.current));\n footerRef.current.querySelector(`.${unique.cancel}`).disabled = isEqual;\n footerRef.current.querySelector(`.${unique.confirm}`).disabled = isEqual;\n };\n const onConfirm = () => {\n displayValue.current = focusedValue.current;\n setButtonState();\n onChangeValue({\n value: focusedValue.current\n });\n closePicker();\n };\n const onCancel = () => {\n focusedValue.current = null;\n setButtonState();\n closePicker();\n };\n const setInputValue = e => {\n ipRef.current.value = capitalizeSentenceCase(formatValue(e.value, displayFormat));\n if (clearAble) onSwap(false);\n };\n const onChangeValue = e => {\n if (valueProp) {\n closePicker();\n } else {\n setValue(e.value);\n }\n !!onChange && onChange({\n value: formatValue(e.value, returnFormat)\n });\n };\n const onCalendarClick = e => {\n handleFocusedValue(e.value);\n controls ? setButtonState() : onChangeValue(e);\n };\n const getPickerStyle = () => {\n const {\n innerHeight,\n innerWidth\n } = window;\n const {\n left,\n height,\n top,\n width\n } = ipConRef.current.getBoundingClientRect();\n const pickerHeight = controls ? 310 : 256;\n let style = {};\n style.top = top + height + 4;\n style.transformOrigin = '50% 20%';\n if (style.top + pickerHeight > innerHeight) {\n if (top - pickerHeight > 0) {\n style.top = top - pickerHeight - 4;\n style.transformOrigin = '50% 80%';\n }\n }\n return PickerCSS.picker(style, left + 400 > innerWidth ? innerWidth - 400 : left, width).styles;\n };\n const createBackground = () => {\n let background = document.getElementById(unique.backGr);\n if (!background) {\n background = document.createElement('div');\n background.id = unique.backGr;\n background.classList.add(unique.portal, unique.backGr);\n document.body.appendChild(background);\n }\n background.style.cssText = PickerCSS.backGr;\n return background;\n };\n const createPicker = () => {\n const picker = document.createElement('div');\n picker.id = unique.picker;\n picker.style.cssText = getPickerStyle();\n return picker;\n };\n const pressESCHandler = event => {\n if (event.key === 'Escape' || event.key === 'Tab') {\n onClickOutside({\n target: null\n });\n }\n };\n const onScroll = () => {\n const node = document.getElementById(unique.picker);\n if (!ipConRef.current || !node) {\n window.removeEventListener('scroll', onScroll);\n return;\n }\n updatePosition(ipConRef.current, node, closePicker);\n };\n const onResize = () => {\n if (!ref.current) return;\n const {\n width\n } = ref.current.getBoundingClientRect();\n const node = document.getElementById(unique.picker);\n if (node) {\n node.style.width = width + 'px';\n }\n onScroll();\n };\n const openPicker = () => {\n const backGr = createBackground();\n const picker = createPicker();\n render(jsx(CalendarComp, {\n ref: calRef,\n actions: controls && footerMemo,\n defaultValue: displayValue.current,\n value: focusedValue.current,\n max: max,\n min: min,\n displayAnotherMonth: displayAnotherMonth,\n onClick: onCalendarClick\n }), backGr.appendChild(picker));\n setTimeout(() => {\n Object.assign(picker.style, {\n ...PickerCSS.active\n });\n window.addEventListener('resize', onResize);\n window.addEventListener('scroll', onScroll);\n document.addEventListener('mousedown', onClickOutside);\n if (pressESCToClose) {\n document.addEventListener('keydown', pressESCHandler);\n }\n setButtonState();\n });\n };\n const closePicker = () => {\n const backGr = document.getElementById(unique.backGr);\n if (!backGr) return;\n const picker = backGr.querySelector(`#${unique.picker}`);\n if (!picker) return;\n Object.assign(picker.style, {\n ...PickerCSS.remove\n });\n if (pressESCToClose) {\n document.removeEventListener('keydown', pressESCHandler);\n }\n document.removeEventListener('mousedown', onClickOutside);\n window.removeEventListener('scroll', onScroll);\n window.removeEventListener('resize', onResize);\n setTimeout(() => {\n backGr.remove();\n }, 200);\n if (ipConRef.current) {\n ipConRef.current.classList.remove(unique.focus);\n ipConRef.current.style.zIndex = null;\n }\n // iconRef.current && onSwap(true);\n ipRef.current && ipRef.current.blur();\n };\n const onSwap = open => {\n const t = iconRef.current.childNodes[+open];\n if (open) {\n Object.assign(t.style, {\n ...hiddenStyle\n });\n Object.assign(t.previousSibling.style, {\n ...activeStyle\n });\n setTimeout(() => {\n t.previousSibling.style.pointerEvents = null;\n }, 200);\n } else {\n Object.assign(t.style, {\n ...hiddenStyle\n });\n Object.assign(t.nextSibling.style, {\n ...activeStyle\n });\n setTimeout(() => {\n t.nextSibling.style.pointerEvents = null;\n }, 200);\n }\n };\n const onInputFocus = () => {\n const el = ipConRef.current;\n if (!el.classList.contains(unique.focus)) {\n el.classList.add(unique.focus);\n el.style.zIndex = zIndexCORE(2);\n openPicker();\n }\n };\n const onClickOutside = e => {\n if (ipConRef.current && !ipConRef.current.contains(e.target) && ipRef.current && !ipRef.current.contains(e.target) && calRef.current && !calRef.current.contains(e.target)) {\n controls ? onCancel() : closePicker();\n }\n };\n const triggerFocus = () => {\n if (!ipConRef.current.classList.contains(unique.focus)) {\n ipRef.current.focus();\n } else {\n onClickOutside({\n target: null\n });\n }\n };\n const onClear = () => {\n if (!clearAble && !ipRef.current) return;\n ipRef.current.value = '';\n focusedValue.current = null;\n setButtonState();\n const e = {\n value: null\n };\n !!onChange && onChange(e);\n onSwap(true);\n };\n const iconComp = jsx(\"div\", {\n css: _IconAreaCSS,\n ref: iconRef\n }, jsx(ButtonIcon, {\n disabled: disabled || readOnly,\n viewType: 'ghost',\n onClick: triggerFocus,\n className: `${unique.icon} ${unique.icon}-accept`,\n viewBox: true,\n name: 'Calendar'\n }), jsx(ButtonIcon, {\n disabled: disabled || readOnly,\n viewType: 'ghost',\n onClick: onClear,\n className: `${unique.icon} ${unique.icon}-cancel`,\n viewBox: true,\n name: 'Close'\n }));\n const endIcon = actionIconAt === 'end' && iconComp;\n const startIcon = actionIconAt === 'start' && iconComp;\n const footerMemo = jsx(\"div\", {\n css: ControlContainerCSS,\n className: unique.footer,\n ref: footerRef\n }, jsx(Button, {\n className: unique.cancel,\n onClick: onCancel\n }, cancelText), jsx(Button, {\n color: 'info',\n className: unique.confirm,\n onClick: onConfirm\n }, confirmText));\n const isError = !!error && (!value || !isValidDate(value));\n useEffect(() => {\n if (defaultValue && isValidDate(defaultValue)) {\n handleDisplayValue(defaultValue);\n setInputValue({\n value: displayValue.current\n });\n }\n return () => {\n closePicker();\n };\n }, []);\n useEffect(() => {\n if (value && isValidDate(value)) {\n handleFocusedValue(value);\n handleDisplayValue(value);\n setInputValue({\n value: displayValue.current\n });\n setButtonState();\n closePicker();\n } else if (defaultValue && isValidDate(defaultValue)) {\n handleFocusedValue(defaultValue);\n handleDisplayValue(defaultValue);\n setInputValue({\n value: displayValue.current\n });\n setButtonState();\n closePicker();\n } else {\n if (ipRef.current) ipRef.current.value = '';\n if (clearAble) {\n onSwap(true);\n }\n setButtonState();\n closePicker();\n }\n }, [value]);\n useEffect(() => {\n setValue(valueProp);\n }, [valueProp]);\n useEffect(() => {\n if (!readOnly) {\n ipRef.current.addEventListener('focus', onInputFocus);\n }\n return () => {\n if (!ipRef.current) return;\n if (!readOnly) {\n ipRef.current.removeEventListener('focus', onInputFocus);\n }\n };\n }, [onChange]);\n useEffect(() => {\n if (ipRef.current.value !== '') {\n const e = {\n value: focusedValue.current || displayValue.current\n };\n setInputValue(e, displayFormat);\n }\n if (disabled) {\n iconRef.current.childNodes[0].style.pointerEvents = 'none';\n closePicker();\n } else if (!readOnly) {\n ipRef.current.addEventListener('focus', onInputFocus);\n } else {\n iconRef.current.childNodes[0].style.pointerEvents = 'none';\n closePicker();\n }\n return () => {\n if (!iconRef.current || !ipRef.current) return;\n if (disabled) {\n iconRef.current.childNodes[0].style.pointerEvents = null;\n } else if (!readOnly) {\n ipRef.current.removeEventListener('focus', onInputFocus);\n } else {\n iconRef.current.childNodes[0].style.pointerEvents = null;\n }\n closePicker();\n };\n }, [actionIconAt, clearAble, controls, disabled, displayFormat, displayAnotherMonth, max, min, readOnly, returnFormat, viewType]);\n useImperativeHandle(reference, () => {\n const currentRef = ref.current || {};\n const _instance = {\n ...action,\n get: () => {\n return ref.current;\n },\n getInputContainer: () => {\n return ipConRef.current;\n },\n getInput: () => {\n return ipRef.current;\n },\n getCalendar: () => {\n return calRef.current;\n },\n getIcon: () => {\n return iconRef.current;\n }\n }; // methods\n _instance.__proto__ = {}; // hidden methods\n currentRef.instance = _instance;\n currentRef.get = () => ref.current;\n currentRef.getInputContainer = () => ipConRef.current;\n currentRef.getInput = () => ipRef.current;\n currentRef.getCalendar = () => calRef.current;\n currentRef.getIcon = () => iconRef.current;\n return currentRef;\n });\n return jsx(ControlComp, {\n ...props,\n disabled: disabled,\n error: isError,\n ref: ref,\n style: style\n }, label ? jsx(Label, {\n disabled: disabled,\n required: required,\n ...labelProps\n }, label) : null, jsx(Tooltip, {\n title: (ipRef === null || ipRef === void 0 ? void 0 : (_ipRef$current = ipRef.current) === null || _ipRef$current === void 0 ? void 0 : _ipRef$current.clientWidth) < 200 ? ipRef === null || ipRef === void 0 ? void 0 : (_ipRef$current2 = ipRef.current) === null || _ipRef$current2 === void 0 ? void 0 : _ipRef$current2.value : ''\n }, jsx(InputBase, {\n inputProps: {\n placeholder: !readOnly && !disabled ? placeholder : '',\n ...inputProps\n },\n ref: ipConRef,\n inputRef: ipRef,\n disabled: disabled,\n viewType: viewType,\n inputStyle: {\n textAlign: textAlign,\n ...inputStyle\n },\n startIcon: startIcon,\n endIcon: endIcon,\n onKeyDown: e => e.preventDefault(),\n readOnly: true\n })), isError ? jsx(HelperText, {\n ...errorProps,\n style: {\n minHeight: 16,\n position: 'absolute',\n top: '100%'\n },\n disabled: disabled\n }, error) : null);\n}));\nconst hiddenStyle = {\n opacity: 0,\n display: 'none'\n};\nconst activeStyle = {\n opacity: 1,\n pointerEvents: 'none',\n display: 'block'\n};\nconst IconAreaCSS = unique => css`\n ${displayFlex};\n ${flexRow};\n ${itemsCenter};\n color: inherit;\n .${unique.icon} {\n ${displayNone};\n ${cursorPointer};\n opacity: 0;\n transition: display 50ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 50ms;\n will-change: display, opacity;\n }\n .${unique.icon}-accept {\n ${displayBlock};\n opacity: 1;\n }\n`;\nconst ControlContainerCSS = css`\n ${displayFlex};\n ${flexRow};\n ${justifyEnd};\n ${mg([0, 4, 4])};\n`;\nconst PickerCSS = {\n backGr: `background-color: transparent; inset: 0px; pointer-events: auto; position: fixed; z-index: ${zIndexCORE(1)};`,\n picker: (position, positionLeft, width) => css`\n ${positionFixed};\n ${borderRadius4px};\n ${bgColor('system.white')};\n ${parseWidthHeight(width, 'max-content')};\n ${parseMinWidth(window.innerWidth <= 599 ? 280 : 314)};\n ${parseMaxWidth(400)};\n ${scale(0)};\n ${left(positionLeft)};\n ${top(position.top)};\n transform-origin: ${position.transformOrigin};\n opacity: 0;\n transform: scale(0);\n transition: opacity 120ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n ${z(2)};\n `,\n active: {\n opacity: 1,\n transform: 'scale(1)'\n },\n remove: {\n opacity: 0,\n pointerEvents: 'none',\n transform: 'scale(0)'\n }\n};\nDatePicker.defaultProps = {\n actionIconAt: 'end',\n clearAble: false,\n controls: false,\n disabled: false,\n displayAnotherMonth: true,\n displayFormat: locale.get() === 'vi' ? 'DD/MM/YYYY' : 'MM/DD/YYYY',\n pressESCToClose: true,\n readOnly: false,\n required: false,\n returnFormat: 'YYYY-MM-DD',\n textAlign: 'start',\n viewType: 'underlined'\n};\nDatePicker.propTypes = {\n /** Action icons position. */\n actionIconAt: PropTypes.oneOf(['end', 'start']),\n /** Display the clear icon if true. */\n clearAble: PropTypes.bool,\n /** If `true`, the calendar will have a footer controls. */\n controls: PropTypes.bool,\n /** The default value of the component. */\n defaultValue: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string, PropTypes.object]),\n /** If `true`, the form control will be disabled. */\n disabled: PropTypes.bool,\n /** Format to display value. */\n displayFormat: PropTypes.oneOfType([PropTypes.oneOf(['DD/MM/YYYY', 'MM/DD/YYYY', 'YYYY/MM/DD', 'DD-MM-YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD']), PropTypes.string]),\n /** View days of previous or next month. */\n displayAnotherMonth: PropTypes.bool,\n /** Error of the form control. */\n error: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /** InputProps are properties of the input element. */\n inputProps: PropTypes.object,\n /** InputStyle is style of input element. */\n inputStyle: PropTypes.object,\n /** Content of the label element. */\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n /** LabelProps are properties if the label element. */\n labelProps: PropTypes.object,\n /** Min value of date picker. */\n min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string, PropTypes.object]),\n /** Max value of date picker. */\n max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string, PropTypes.object]),\n /** A callback function when value input change. */\n onChange: PropTypes.func,\n /** Hints for input. */\n placeholder: PropTypes.string,\n /** Allow close Popup when press ESC. */\n pressESCToClose: PropTypes.bool,\n /** Status read only of input. */\n readOnly: PropTypes.bool,\n /** Required state of the form control. */\n required: PropTypes.bool,\n /** Format of the returned value. */\n returnFormat: PropTypes.oneOfType([PropTypes.oneOf(['DD/MM/YYYY', 'MM/DD/YYYY', 'YYYY/MM/DD', 'DD-MM-YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD']), PropTypes.string]),\n /** Style inline of component. */\n style: PropTypes.object,\n /** Text align of the input. */\n textAlign: PropTypes.oneOf(['center', 'end', 'start']),\n /** Value of the component. */\n value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string, PropTypes.array, PropTypes.object]),\n /** View type of the form control. */\n viewType: PropTypes.oneOf(['outlined', 'underlined'])\n};\nexport default DatePicker;","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { memo, useRef, forwardRef, useMemo, useImperativeHandle } from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx, css } from '@emotion/core';\nimport { ButtonIcon, Typography } from \"../\";\nimport Icon from \"../../icons\";\nimport { itemsCenter, border, boxBorder, flexRow, displayInlineFlex, justifyCenter, positionRelative, userSelectNone, cursorNotAllowed, positionAbsolute, overflowHidden } from \"../../styles/general\";\nimport { hexToRGBA } from \"../../styles/color-helper\";\nimport { useTheme, useColor as colors } from \"../../theme\";\nconst {\n colors: {\n system: {\n active,\n rest,\n white,\n disabled: disabledCl,\n dark\n },\n semantic: {\n success: semanticSuccess,\n warning: semanticWarning,\n danger: semanticDanger,\n info: semanticInfo\n }\n },\n spacing\n} = useTheme();\nconst colorMap = new Map([['default', active], ['primary', active], ['success', semanticSuccess], ['warning', semanticWarning], ['danger', semanticDanger], ['info', semanticInfo]]);\nconst iconSizeMap = new Map([['small', `${spacing(4)}px`], ['medium', `${spacing(5)}px`], ['large', `${spacing(6)}px`]]);\nconst typographySizeMap = new Map([['small', 'p3'], ['medium', 'p2'], ['large', 'p1']]);\nconst paddingSizeMap = new Map([['small', `0px ${spacing(1.5)}px`], ['medium', `0px ${spacing(2)}px`], ['large', `0px ${spacing(2.5)}px`]]);\nconst minHeightSizeMap = new Map([['small', `${spacing(5)}px`], ['medium', `${spacing(6)}px`], ['large', `${spacing(7)}px`]]);\nconst Chip = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({\n viewType,\n color: colorProps,\n size,\n label,\n className,\n onRemove,\n onClick,\n onDbClick,\n onDoubleClick,\n startIcon,\n endIcon,\n clearAble,\n disabled,\n readOnly,\n children,\n style,\n labelProps\n}, reference) => {\n const ref = useRef(null);\n const IconRef = useRef(null);\n if (!onDbClick && onDoubleClick) onDbClick = onDoubleClick;\n let color = colorMap.get(colorProps) || colorProps;\n if (colors[color]) color = colors[color];\n const infoChip = {\n color: color,\n contentColor: viewType !== 'filled' ? color : white,\n backgroundColor: viewType !== 'filled' ? white : color,\n iconSize: iconSizeMap.get(size),\n paddingSize: paddingSizeMap.get(size),\n typographySize: typographySizeMap.get(size),\n minHeightSize: minHeightSizeMap.get(size),\n viewType\n };\n infoChip.border = viewType === 'ghost' ? 'transparent !important' : colorProps === 'default' ? rest : infoChip === null || infoChip === void 0 ? void 0 : infoChip.color;\n infoChip.contentColor = colorProps === 'default' && viewType === 'outlined' ? rest : infoChip === null || infoChip === void 0 ? void 0 : infoChip.contentColor;\n infoChip.backgroundColor = colorProps === 'default' && viewType === 'filled' ? rest : infoChip === null || infoChip === void 0 ? void 0 : infoChip.backgroundColor;\n useImperativeHandle(reference, () => {\n const currentRef = ref.current || {};\n const _instance = {}; // methods\n _instance.__proto__ = {}; // hidden methods\n currentRef.instance = _instance;\n return currentRef;\n });\n const onRemoveHandler = () => {\n if (onRemove || disabled) onRemove(ref.current);\n };\n const _onClick = event => {\n onClick && event.stopPropagation();\n if (disabled) return;\n onClick && onClick(event);\n };\n const _onDbClick = event => {\n onDbClick && event.stopPropagation();\n if (disabled) return;\n onDbClick && onDbClick(event);\n };\n\n // Start Icon\n const startIconView = useMemo(() => {\n if (typeof startIcon === 'string') {\n return jsx(Icon, {\n name: startIcon,\n width: infoChip.iconSize,\n height: infoChip.iconSize,\n color: 'currentColor'\n });\n } else return jsx(\"div\", {\n css: ChipIconCSS(infoChip)\n }, startIcon);\n }, [startIcon, size]);\n\n // Label\n const labelView = useMemo(() => {\n return jsx(Typography, {\n css: ChipLabelCSS,\n type: infoChip.typographySize,\n color: 'inherit',\n lineClamp: 1,\n ...labelProps\n }, label);\n }, [label, size, startIcon, endIcon, clearAble]);\n\n // End Icon\n const endIconView = useMemo(() => {\n let node = endIcon;\n if (typeof node === 'string') {\n return jsx(Icon, {\n name: node,\n width: infoChip.iconSize,\n height: infoChip.iconSize,\n color: infoChip.contentColor,\n viewBox: true\n });\n }\n return clearAble ? jsx(ButtonIcon, {\n ref: IconRef,\n className: 'end-icon',\n viewType: 'ghost',\n name: 'Close',\n width: infoChip.iconSize,\n height: infoChip.iconSize,\n color: infoChip.contentColor,\n disabled: disabled,\n viewBox: true,\n onClick: onRemoveHandler\n }) : node && jsx(\"div\", {\n css: ChipIconCSS(infoChip),\n className: 'end-icon ' + size,\n ref: IconRef\n }, node);\n }, [clearAble, viewType, color, endIcon, size, disabled, onRemove]);\n return jsx(\"div\", {\n css: ChipRootCSS(onClick, onDbClick, colorProps, infoChip),\n ref: ref,\n className: ['DGN-UI-Chip', className, disabled && 'chip--disabled', readOnly && 'chip--readOnly', viewType === 'filled' && 'chip--filled'].join(' '),\n style: style,\n onClick: _onClick,\n onDoubleClick: _onDbClick\n }, !!startIcon && startIconView, !!label && labelView, (!!endIcon || !!clearAble) && endIconView, children);\n}));\nconst ChipLabelCSS = css`\n ${flexRow};\n ${itemsCenter};\n ${positionRelative};\n ${userSelectNone};\n`;\nconst ChipRootCSS = (onClick, onDbClick, colorProps, info) => css`\n ${displayInlineFlex};\n ${itemsCenter};\n ${positionRelative};\n ${boxBorder};\n ${border('1px', info.border)};\n width: max-content;\n padding: ${info === null || info === void 0 ? void 0 : info.paddingSize};\n color: ${info === null || info === void 0 ? void 0 : info.contentColor};\n background: ${info === null || info === void 0 ? void 0 : info.backgroundColor};\n border-radius: ${spacing(4)}px;\n cursor: ${onClick || onDbClick ? 'pointer' : 'unset'};\n height: ${info === null || info === void 0 ? void 0 : info.minHeightSize};\n min-height: ${info === null || info === void 0 ? void 0 : info.minHeightSize};\n gap: ${spacing()}px;\n &.chip--filled {\n &:not(.chip--disabled):not(.chip--readOnly) {\n &::after {\n border-radius: ${spacing(4)}px;\n ${positionAbsolute};\n top: 0;\n left: 0;\n content: '';\n width: 100%;\n height: 100%;\n }\n &:hover::after,\n &:focus::after {\n background: ${hexToRGBA(dark, 0.15)};\n }\n &:active::after {\n background: ${hexToRGBA(dark, 0.3)};\n }\n }\n }\n &:not(.chip--filled) {\n &:not(.chip--disabled):not(.chip--readOnly):hover {\n ${border('1px', info === null || info === void 0 ? void 0 : info.color)};\n background: ${hexToRGBA(info === null || info === void 0 ? void 0 : info.color, 0.1)};\n color: ${info === null || info === void 0 ? void 0 : info.color};\n }\n &:not(.chip--disabled):not(.chip--readOnly):active {\n ${border('1px', info === null || info === void 0 ? void 0 : info.color)};\n background: ${hexToRGBA(info === null || info === void 0 ? void 0 : info.color, 0.3)};\n color: ${info === null || info === void 0 ? void 0 : info.color};\n }\n &:not(.chip--disabled):not(.chip--readOnly):focus {\n ${border('1px', info === null || info === void 0 ? void 0 : info.color)};\n background: ${hexToRGBA(info === null || info === void 0 ? void 0 : info.color, 0.2)};\n color: ${info === null || info === void 0 ? void 0 : info.color};\n }\n }\n &.chip--disabled {\n color: ${disabledCl} !important;\n background-color: ${white} !important;\n ${border('1px', disabledCl)};\n }\n &.chip--readOnly,\n &.chip--disabled {\n ${cursorNotAllowed}\n }\n`;\nconst ChipIconCSS = info => css`\n ${flexRow};\n ${justifyCenter};\n ${itemsCenter};\n ${positionRelative};\n ${boxBorder};\n ${overflowHidden};\n width: ${info === null || info === void 0 ? void 0 : info.iconSize};\n min-width: ${info === null || info === void 0 ? void 0 : info.iconSize};\n max-width: ${info === null || info === void 0 ? void 0 : info.iconSize};\n height: ${info === null || info === void 0 ? void 0 : info.iconSize};\n min-height: ${info === null || info === void 0 ? void 0 : info.iconSize};\n max-height: ${info === null || info === void 0 ? void 0 : info.iconSize};\n`;\nChip.defaultProps = {\n viewType: 'outlined',\n size: 'medium',\n color: 'default'\n};\nChip.propTypes = {\n /** content to display in Chip */\n label: PropTypes.string,\n /** class of Chip element */\n className: PropTypes.string,\n /** max length content to display was allowed */\n /** style inline of component */\n style: PropTypes.object,\n /** the icon display at head of Chip */\n startIcon: PropTypes.any,\n /** the icon display at last of Chip */\n endIcon: PropTypes.any,\n /** type of chip */\n viewType: PropTypes.oneOf(['ghost', 'outlined', 'filled']),\n /** color for text or background of Chip */\n color: PropTypes.oneOfType([PropTypes.oneOf(['default', 'primary', 'info', 'success', 'warning', 'danger']), PropTypes.string]),\n /** size of Chip */\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n /** show clear icon if true */\n clearAble: PropTypes.bool,\n /** prevent all event and change color if true */\n disabled: PropTypes.bool,\n /** prevent all event if true */\n readOnly: PropTypes.bool,\n /** the function to get ref of Chip */\n refs: PropTypes.func,\n /** the function will run after remove chip */\n onRemove: PropTypes.func,\n /** the function will run when click on chip */\n onClick: PropTypes.func,\n /** the function will run when double click on chip */\n onDbClick: PropTypes.func,\n /** like onDbClick (priority onDbClick) */\n onDoubleClick: PropTypes.func,\n /** content to display on Chip (the same to label) */\n children: PropTypes.node,\n /** props for Typography of label */\n labelProps: PropTypes.object\n};\nexport default Chip;","/** @jsxRuntime classic */\n/** @jsx jsx */\nimport { css, jsx } from '@emotion/core';\nimport PropTypes from 'prop-types';\nimport { forwardRef, memo, useImperativeHandle, useRef } from 'react';\nimport { Typography } from \"../../\";\nimport { getGlobal } from \"../../../global\";\nimport { useTheme } from \"../../../theme\";\nimport { classNames } from \"../../../utils\";\nconst {\n colors: {\n system: {\n disabled: systemDisabled\n },\n semantic: {\n success: semanticSuccess,\n warning: semanticWarning,\n danger: semanticDanger,\n info: semanticInfo\n }\n },\n spacing\n} = useTheme();\nconst colorMap = new Map([['default', semanticDanger], ['success', semanticSuccess], ['warning', semanticWarning], ['danger', semanticDanger], ['info', semanticInfo]]);\nconst HelperText = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(({\n action = {},\n disabled,\n status,\n className,\n style,\n children,\n id,\n ...props\n}, reference) => {\n const ref = useRef(null);\n const color = colorMap.get(status);\n useImperativeHandle(reference, () => {\n const currentRef = ref.current || {};\n currentRef.element = ref.current;\n const _instance = {\n ...action\n }; // methods\n _instance.__proto__ = {}; // hidden methods\n currentRef.instance = _instance;\n return currentRef;\n });\n return jsx(Typography, {\n ref: ref,\n css: HelperTextRootCSS,\n id: id,\n color: disabled ? systemDisabled : color,\n style: style,\n className: classNames('DGN-UI-HelperText', className),\n type: 'p3',\n fullWidth: false,\n lineClamp: 1,\n ...props\n }, typeof children === 'boolean' ? getGlobal('thisFieldIsRequired') : children);\n}));\nconst HelperTextRootCSS = css`\n margin-top: ${spacing([0.5])}px;\n`;\nHelperText.defaultProps = {\n disabled: false,\n status: 'default',\n className: '',\n style: {},\n children: ''\n};\nHelperText.propTypes = {\n /** If true, the component is disabled. */\n disabled: PropTypes.bool,\n /** status type to display color for input (only available for type is inform) */\n status: PropTypes.oneOf(['default', 'warning', 'success', 'danger', 'info']),\n /** Class for component. */\n className: PropTypes.string,\n /** Style inline of component. */\n style: PropTypes.object,\n /** Content to display in component. */\n children: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n /** [Props](https://core.diginet.com.vn/ui/?path=/docs/typography) of Typography */\n props: PropTypes.any\n};\nexport default HelperText;"],"sourceRoot":""}