@kizmann/nano-ui 0.9.1 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://Nano/webpack/universalModuleDefinition","webpack://Nano/webpack/bootstrap","webpack://Nano/external {\"root\":\"pi\",\"commonjs2\":\"@kizmann/pico-js\",\"commonjs\":\"@kizmann/pico-js\",\"amd\":\"@kizmann/pico-js\"}","webpack://Nano/external {\"root\":\"Vue\",\"commonjs2\":\"vue\",\"commonjs\":\"vue\",\"amd\":\"vue\"}","webpack://Nano/(webpack)/buildin/global.js","webpack://Nano/./src/draggable/src/draghandler/draghandler.js","webpack://Nano/./src/mixins/src/ctor.js","webpack://Nano/./src/virtualscroller/src/virtualscroller/virtualscroller.beta.js","webpack://Nano/./src/draggable/src/draglist/draglist.js","webpack://Nano/./src/draggable/src/draglist-item/draglist-item.js","webpack://Nano/./src/draggable/src/draggrid/draggrid.js","webpack://Nano/./src/draggable/src/draggrid-item/draggrid-item.js","webpack://Nano/./src/draggable/src/dropzone/dropzone.js","webpack://Nano/./src/preview/src/preview/preview.js","webpack://Nano/./src/preview/src/preview-video/preview-video.js","webpack://Nano/./src/mixins/src/cmer.js","webpack://Nano/./src/mixins/src/cslo.js","webpack://Nano/./src/index.js","webpack://Nano/./src/virtualscroller/index.js","webpack://Nano/./src/draggable/index.js","webpack://Nano/./src/table/src/table/table.js","webpack://Nano/./src/table/src/table-column/table-column.js","webpack://Nano/./src/table/src/table-cell/table-cell.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-string.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-boolean.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-datetime.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-option.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-image.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-matrix.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-select.js","webpack://Nano/./src/table/src/table-filter/table-filter.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-string.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-boolean.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-datetime.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-option.js","webpack://Nano/./src/table/index.js","webpack://Nano/./src/info/src/info/info.js","webpack://Nano/./src/info/src/info-column/info-column.js","webpack://Nano/./src/info/src/info-field/info-field.js","webpack://Nano/./src/info/src/info-field/types/info-field-string.js","webpack://Nano/./src/info/src/info-field/types/info-field-boolean.js","webpack://Nano/./src/info/src/info-field/types/info-field-datetime.js","webpack://Nano/./src/info/src/info-field/types/info-field-option.js","webpack://Nano/./src/info/src/info-field/types/info-field-image.js","webpack://Nano/./src/info/index.js","webpack://Nano/./src/popover/src/popover/popover.js","webpack://Nano/./src/popover/src/popover-group/popover-group.js","webpack://Nano/./src/popover/src/popover-option/popover-option.js","webpack://Nano/./src/popover/index.js","webpack://Nano/./src/form/src/form/form.js","webpack://Nano/./src/form/src/form-group/form-group.js","webpack://Nano/./src/form/src/form-item/form-item.js","webpack://Nano/./src/form/index.js","webpack://Nano/./src/config/src/config/config.js","webpack://Nano/./src/config/src/config/config-next.js","webpack://Nano/./src/config/index.js","webpack://Nano/./src/button/src/button/button.js","webpack://Nano/./src/button/src/button-group/button-group.js","webpack://Nano/./src/button/index.js","webpack://Nano/./src/select/src/select/select.js","webpack://Nano/./src/select/src/select-option/select-option.js","webpack://Nano/./src/select/index.js","webpack://Nano/./src/checkbox/src/checkbox/checkbox.js","webpack://Nano/./src/checkbox/src/checkbox-group/checkbox-group.js","webpack://Nano/./src/checkbox/index.js","webpack://Nano/./src/radio/src/radio/radio.js","webpack://Nano/./src/radio/src/radio-group/radio-group.js","webpack://Nano/./src/radio/index.js","webpack://Nano/./src/cascader/src/cascader-panel/cascader-panel.js","webpack://Nano/./src/cascader/src/cascader/cascader.js","webpack://Nano/./src/cascader/index.js","webpack://Nano/./src/datepicker/src/datepicker-panel/datepicker-panel.js","webpack://Nano/./src/datepicker/src/datepicker/datepicker.js","webpack://Nano/./src/datepicker/index.js","webpack://Nano/./src/timepicker/src/timepicker-panel/timepicker-panel.js","webpack://Nano/./src/timepicker/src/timepicker/timepicker.js","webpack://Nano/./src/timepicker/index.js","webpack://Nano/./src/tabs/src/tabs/tabs.js","webpack://Nano/./src/tabs/src/tabs-item/tabs-item.js","webpack://Nano/./src/tabs/index.js","webpack://Nano/./src/tags/src/tags/tags.js","webpack://Nano/./src/tags/src/tags-item/tags-item.js","webpack://Nano/./src/tags/index.js","webpack://Nano/./src/collapse/src/collapse/collapse.js","webpack://Nano/./src/collapse/src/collapse-item/collapse-item.js","webpack://Nano/./src/collapse/index.js","webpack://Nano/./src/preview/src/preview-plain/preview-plain.js","webpack://Nano/./src/preview/src/preview-image/preview-image.js","webpack://Nano/./src/preview/index.js","webpack://Nano/./src/map/src/map/map.js","webpack://Nano/./src/map/src/map-marker/map-marker.js","webpack://Nano/./src/map/index.js","webpack://Nano/./src/alert/src/alert/alert.js","webpack://Nano/./src/alert/index.js","webpack://Nano/./src/notification/src/notification/notification.js","webpack://Nano/./src/notification/index.js","webpack://Nano/./src/empty/src/empty-icon/empty-icon.js","webpack://Nano/./src/empty/index.js","webpack://Nano/./src/scrollbar/src/scrollbar/scrollbar.next.js","webpack://Nano/./src/scrollbar/index.js","webpack://Nano/./src/loader/src/loader/loader.js","webpack://Nano/./src/loader/index.js","webpack://Nano/./src/resizer/src/resizer/resizer.js","webpack://Nano/./src/resizer/index.js","webpack://Nano/./src/modal/src/modal/modal.js","webpack://Nano/./src/modal/index.js","webpack://Nano/./src/input/src/input/input.js","webpack://Nano/./src/input/index.js","webpack://Nano/./src/input-number/src/input-number/input-number.js","webpack://Nano/./src/input-number/index.js","webpack://Nano/./src/textarea/src/textarea/textarea.js","webpack://Nano/./src/textarea/index.js","webpack://Nano/./src/slider/src/slider/slider.js","webpack://Nano/./src/slider/index.js","webpack://Nano/./src/switch/src/switch/switch.js","webpack://Nano/./src/switch/index.js","webpack://Nano/./src/confirm/src/confirm/confirm.js","webpack://Nano/./src/confirm/index.js","webpack://Nano/./src/datetimepicker/src/datetimepicker/datetimepicker.js","webpack://Nano/./src/datetimepicker/index.js","webpack://Nano/./src/durationpicker/src/durationpicker/durationpicker.js","webpack://Nano/./src/durationpicker/index.js","webpack://Nano/./src/transfer/src/transfer/transfer.js","webpack://Nano/./src/transfer/index.js","webpack://Nano/./src/paginator/src/paginator/paginator.js","webpack://Nano/./src/paginator/index.js","webpack://Nano/./src/file/src/file/file.js","webpack://Nano/./src/file/index.js","webpack://Nano/./src/rating/src/rating/rating.js","webpack://Nano/./src/rating/index.js"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__1__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","g","this","Function","e","global","dragMods","NDragCounter","$el","Dom","make","classList","appendTo","document","body","event","count","update","html","Locale","choice","dataTransfer","setData","setDragImage","keyMods","Arr","has","push","attr","join","DragCounter","NDragIndicator","parent","safezone","el","strategy","rect","getBoundingClientRect","clientY","y","height","find","hasClass","show","hide","offsetTop","style","top","css","Obj","map","item","remove","NDraghandler","rootNode","frame","DragIndicator","DragCache","bindDragstart","on","onDragenterRoot","onDragoverRoot","onDragleaveRoot","onDragendRoot","onDragdropRoot","Event","uid","bindDragend","bindDragdrop","off","unbind","preventDefault","target","closest","cacheNodes","length","frames","Date","now","allowDrop","Any","isFunction","rainbow","each","node","addClass","removeClass","fire","moveNodes","group","cache","allowGroups","JSON","parse","stringify","dragcount","dropNodes","tempSelected","$emit","removeNode","clone","items","unlinkNodes","removeNodes","isSelected","id","virtuals","uniqueProp","route","clientHeight","resolve","targetNode","isInSelf","cascade","childNodes","unbindNode","$handle","handle","onDragstartNode","onDragenterNode","onDragoverNode","onDragleaveNode","onDragendNode","onDragdropNode","undefined","moveNodesMany","moveNodesOne","insertNode","moveNodesRoot","source","first","transformDrop","moveNodesInto","moveNodesBefore","moveNodesAfter","sources","eventName","set","prop","filter","childProp","disableMove","targetRoute","children","replace","index","splice","except","UUID","props","reduce","merge","reduceItem","Num","depth","cascades","unique","tempCascade","virtual","last","isEmpty","childRoute","ctor","fallback","$options","split","args","apply","DEBUG_NVSCROLL","inject","NDraggable","default","model","itemHeight","itemWidth","renderNode","deathzone","type","Number","overflowY","Boolean","overflowX","offsetY","offsetX","threshold","framerate","useKeys","data","state","start","end","grid","buffer","width","load","watch","updateRender","beforeMount","scrollTop","mounted","bindAdaptScroll","beforeUnmount","unbindAdaptScroll","methods","refreshScroll","setInterval","onScrollupdate","clearInterval","isIndexRendered","scrollIntoView","$refs","scrollbar","scrollToIndex","selector","delay","onScrollToIndex","total","Math","ceil","floor","targetTop","scrollTo","x","onScrollTo","clearState","content","async","refreshDriver","offset","offsetHeight","inner","scrollHeight","onSizechange","queue","timer","clearTimeout","to","setTimeout","bufferItems","round","startItem","endItem","isEqual","renderItem","passed","topOffset","renderFunction","$slots","renderRows","slice","renderGridRows","counter","chunk","renderGrid","chunks","renderItems","empty","render","totalHeight","DEBUG_NDLIST","draggable","size","String","current","selected","expanded","Array","lazyload","showEmptyIcon","itemOffset","scrollTopOnChange","renderCurrent","renderHandle","renderSelect","renderExpand","allowSelect","allowDrag","keyEvents","highlightTimeout","provide","modifier","visible","highlight","firstSelected","lastSelected","tempCurrent","tempExpanded","drag","watchModifierDown","_","watchModifierUp","virtualscroller","bindRoot","$watch","watchSelected","deep","refreshVirtuals","unbindRoot","filterVirtuals","add","which","updateNode","findVirtual","console","log","contains","getIndex","findIndex","getCurrentIndex","isDraggable","canDrag","isHighlight","highlightNode","refresh","recursive","val","$nextTick","scrollToHighlight","isCurrent","setCurrent","setRawCurrent","setNextCurrent","setPrevCurrent","reset","syncCurrent","isDisabled","canSelect","hasChildren","getChildren","isExpanded","expandItem","toggle","expandCurrent","isTotalSelected","isInterSelected","toggleSingleNode","toggleRangeNode","indexies","reversed","selectItem","selectAll","result","row","unselectAll","bindKeydown","onKeydown","unbindKeydown","stopPropagation","renderEmpty","trans","only","$props","onMouseenter","onMouseleave","NDraggableItem","required","computed","touch","navigator","msMaxTouchPoints","mousedown","mousemove","mouseup","init","bindNode","copy","copyNode","onClick","onDblclick","renderElement","renderSpacer","nano","Icons","Str","ucfirst","angleRight","checked","NDropzone","fileMap","image","video","font","text","application","file","thumb","fit","preview","typre","showSrc","tempFile","tempThumb","fileMime","getFileMime","thumbMime","getThumbMime","lightbox","extension","exts","resolveVimeo","resolveYoutube","showLightbox","renderPreview","renderFull","isObject","renderLightbox","slots","raw","url","isString","host","match","path","src","provider","tempSrc","resolveType","resolveData","youtube","vimeo","renderYoutube","renderVimeo","renderPlain","cmer","attrsList","isArray","isPlain","assign","$attrs","cslo","slot","Comment","circle","intermediate","clock","calendar","times","primary","success","warning","danger","info","angleUp","angleDown","angleLeft","angleDoubleLeft","angleDoubleRight","Settings","iconPosition","notifySize","notifyPosition","Install","App","pi","error","config","globalProperties","CtorMixin","CmerMixin","CsloMixin","Nano","component","Virtualscroller","Draglist","DraglistItem","Draggrid","DraggridItem","Dropzone","NTable","sortProp","sortDir","closeFilterOnEnter","elements","tempVisible","tempVisibleProps","tempSortProp","tempSortDir","tempFilter","tempFilterProps","makeVisibleProps","detectVisible","addColumn","column","removeColumn","getColumnIndex","getColumnVisiblity","getColumnSorted","getColumnFilter","filterProp","getColumnFiltered","detectVisibity","intersect","extract","onResize","sortByColumn","dir","replaceFilter","search","filters","resetFilter","refreshCurrent","modelValue","disabled","renderBody","columns","values","renderContext","label","renderHead","defaultRender","draggableHtml","tooltip","align","sort","breakpoint","previewProp","matrix","matrixProp","options","optionsValue","optionsLabel","fluid","fixedWidth","minWidth","maxWidth","emptyText","undefinedText","trueText","falseText","datetimeFormat","allowUncheck","matrixValues","NTableColumn","tempWidth","changedStates","sortDirection","flexBasis","onMousedown","renderHeadLabel","labelHtml","renderHeadSort","renderHeadFilter","angleHtml","resolveComponent","h","class","input","setFirstState","firstState","extends","TableCell","convertString","convertBoolean","convertDatetime","renderOption","$value","$index","option","toggleMatrix","toggleSelect","itemList","currentMatrix","combine","finder","isChecked","canReset","canApply","getFilterClone","mountFilter","getFilterProp","getDefaultFilter","applyFilter","clearFilter","popover","close","renderForm","renderApply","link","renderReset","renderFooter","trigger","footer","TableFilter","operator","li","nl","eq","ne","1","0","lt","gt","in","ni","Table","TableColumn","TableCellString","TableCellBoolean","TableCellDatetime","TableCellOption","TableCellImage","TableCellMatrix","TableCellSelect","TableFilterString","TableFilterBoolean","TableFilterDatetime","TableFilterOption","syncEvent","relative","tempValue","bindSyncEvent","unbindSyncEvent","updated","adaptHeight","setValue","NInfo","vals","infoHtml","renderLabel","InfoField","Info","InfoColumn","InfoFieldString","InfoFieldBoolean","InfoFieldDatetime","InfoFieldOption","InfoFieldImage","NPopover","listen","position","scrollClose","multiClose","clientX","prevent","refreshVisible","previous","append","onHover","onContext","onExit","onCloseEvent","active","open","pause","unpause","stopRefreshInterval","startRefreshInterval","passedOffset","updatePosition","isSameOffset","isSameSize","passedSize","getTargetHorizontal","targetRect","left","windowRect","posY","posX","center","inverse","broken","innerHeight","innerWidth","clientWidth","getTargetVertical","getTargetOffset","scroll","zIndex","isScrollClose","keyCode","header","viewBody","isNull","tempSize","focus","icon","imagePosition","clickClose","renderImage","renderIcon","renderContent","Popover","PopoverGroup","PopoverOption","inheritAttrs","dom","form","errors","ignore","forceChange","forceErrors","blocked","NForm","ready","emitChange","resetChange","onSubmit","is","addItem","removeItem","timeout","prevState","nextState","attrs","collapse","tooltipPosition","collapseGroup","renderCollapse","renderText","textHtml","renderAction","action","renderTooltip","NTabs","NTabsItem","NFormItem","tooltipWindow","conditional","conditionOn","conditionOff","enabled","toggleCondition","focusInput","$input","childs","click","gotoInput","keys","changeTab","renderCondition","renderError","renderInput","Form","FormGroup","FormItem","scope","solveAwait","$$scope","$$value","solveValue","solveEvent","$configRefs","solveContent","$render","prepareValue","veModel","deepSet","inputClosure","closure","obj","shift","renderLayer","setup","vIf","vShow","vAwait","$on","display","resolved","extraValue","sempValue","propAwait","getState","propExists","exists","solveInput","$scope","$model","$extra","$global","toPropKey","splits","lcfirst","toEventKey","cb","solveContext","getProp","getInput","setInput","renderSetup","alias","defaultsBind","binds","events","updateKey","NConfig","NConfigNext","square","nativeType","innerHtml","Button","ButtonGroup","clearValue","lazy","multiple","clearable","placeholder","collapseText","allowCreate","optionsDisabled","deepDisabled","custom","element","tempClear","searched","generateOptions","searchOptions","NSelect","scrollToClosest","clear","tempLabel","addOption","removeOption","resetInput","onFocusInput","onInputInput","onKeydownInput","createOrToggle","selectPrev","selectNext","searchRegex","RegExp","toggleOption","denyUpdate","getOptionLabel","newIndex","scrollToCurrent","createOption","virtualbar","select","renderLabelClear","renderLabelAngle","renderLabelItem","renderLabelCollapse","firstHtml","renderLabelItems","renderMultiple","isEmptyValue","isNumber","onFocus","onInput","inputHtml","renderSingle","modelLabel","renderDisplay","displayHtml","emptyHtml","renderLazyOption","isMultipleActive","isSingleActive","renderLazyItems","renderPopover","onClose","renderOptions","valueProp","labelProp","toggleItem","Select","SelectOption","NCheckboxGroup","tempComputed","globalChecked","tempChecked","tempIntermediate","globalIntermediate","tempDisabled","globalDisabled","addCheckbox","removeCheckbox","check","checkCheckbox","uncheck","uncheckCheckbox","eventShiftClick","shiftCheckbox","eventLocalClick","shiftKey","toggleCheckbox","eventGlobalClick","toggleAll","updateFromGroup","renderCheckbox","interHtml","checkHtml","checkbox","emit","checkboxes","uncheckAll","checkAll","Checkbox","CheckboxGroup","NRadioGroup","addRadio","removeRadio","checkRadio","renderRadio","radio","NRadio","hover","disabledProp","tempHover","clearCascader","hoverItem","onSelect","updateHover","clickTimer","lastclick","hoverTimer","fireSelectItem","onMousemove","renderCascade","renderList","onCascaderInput","onCascaderHover","onPopoverInput","itemLabel","CascaderPanel","Cascader","arrive","clearArrive","depart","clearDepart","minDate","maxDate","range","monthPanels","format","weekdays","months","yearsGrid","tempCache","getYears","monthsGrid","getMonths","Now","tempArrive","tempDepart","tempView","tempRanger","cacheArrive","cacheDepart","gotoDate","gotoMonth","gotoYear","patchDate","resetTime","applyTime","patchMonth","printRange","patchYear","patchRange","renderToolbarPrev","renderToolbarNext","renderToolbarMonth","monthsHtml","month","addMonths","renderToolbarYear","yearsHtml","year","renderToolbar","prev","next","renderDateItem","equalDate","valid","isNotBeforeMin","after","isNotAfterMax","before","renderRangeDateItem","viewMode","isTempValid","between","arriveFirst","renderDate","legendHtml","day","bodyHtml","getDatesGrid","panelHtml","prevMonth","nextMonth","renderMonthItem","equal","renderMonth","prevYear","nextYear","renderYearItem","renderYear","prevDecade","nextDecade","placeholderArrive","placeholderDepart","rangeSeparator","boundary","displayFormat","clearDatepicker","clearRangeDatepicker","clearSingleDatepicker","onValueInput","moment","isValid","date","onArriveInput","onDepartInput","onDatepickerInput","onDatepickerDepart","onDatepickerArrive","initialDate","renderRange","arriveProps","departProps","DatepickerPanel","Datepicker","hoursInterval","minutesInterval","secondsInterval","hoursGrid","getHours","minutesGrid","getMinutes","secondsGrid","getSeconds","eventSelect","scrollbars","ref","renderHourItem","hour","renderHourPanel","renderMinuteItem","minute","renderMinutePanel","renderSecondItem","second","renderSecondPanel","clearTimepicker","onTimepickerInput","renderPanel","TimepickerPanel","Timepicker","addTab","tab","$forceUpdate","removeTab","getTab","updateEvent","currentTab","sorted","repeatNext","renderHeaderIndicator","transform","renderHeader","tabs","preload","keep","_key","renderHeaderIcon","renderHeaderLabel","Tabs","TabsItem","NTags","tags","addTag","removeTag","color","Tags","TagsItem","NCollapse","showTab","hideTab","toggleTab","NCollapseItem","dragger","renderHeaderAngle","angle","showDelay","order","Collapse","CollapseItem","tempExt","ImageCache","resolveLoad","loaded","laod","reader","FileReader","onload","readAsDataURL","Preview","PreviewPlain","PreviewImage","PreviewVideo","lat","lng","zoom","NMap","callbacks","tempMap","focusMarkers","Map","callback","getMap","onMount","tempMarker","importMarkerPosition","marker","setPosition","updateMarkerPosition","getPosition","initializeMarker","innerHTML","createMarker","addListener","debounce","setMarkerByAddress","address","then","Notify","MapMarker","AlertFrame","iconPrimary","iconSecondary","iconSuccess","iconWarning","iconDanger","iconInfo","Alert","backdrop","onclick","getIcon","alert","Notification","duration","wrapper","getWrapper","notifications","Notifcation","EmptyIcon","NScrollbar","fixture","allowNative","wrapClass","native","adaptScrollBehavior","bindAdaptHeight","bindAdaptWidth","passive","onUpdate","onScroll","passedHeight","passedWidth","unbindAdaptHeight","unbindAdaptWidth","scrollLeft","onScrollIntoView","outerHeight","outerWidth","offsetLeft","$dom","offsetWidth","adaptScrollHeight","virtualHeight","barHeight","max","maxHeight","heightRatio","vbar","hasVtrack","adaptScrollPosition","adaptScrollWidth","scrollWidth","virtualWidth","barWidth","widthRatio","hbar","hasHtrack","vbarTop","hbarLeft","cacheChildEl","child","cacheWindwoEl","windowCache","spacer","refreshHeight","adaptWidth","resizeTimer","refreshWidth","$inner","actual","getTouchEvent","touches","changedTouches","onVbarMousedown","onVbarMousemove","onVbarMouseup","onHbarMousedown","onHbarMousemove","onHbarMouseup","WIN","vbarProps","hbarProps","Scrollbar","NLoader","minimum","applyTimer","timing","startTimer","restartTimer","Loader","resizerWidth","sizeFixed","updateWidth","bindSizechange","forceWidth","unmounted","unbindSizechange","flex","updateHandle","onLeftMousedown","onLeftMouseup","onLeftMousemove","scrollX","targetWidth","min","frameStyle","onRightMousedown","onRightMouseup","onRightMousemove","Resizer","title","closable","renderClose","startRefreshTimeout","NModal","eventClick","eventKeydown","openModal","force","closeModal","stopRefreshTimeout","queueRefreshTimeout","indexes","modal","renderFrame","renderBackdrop","Modal","iconDisabled","onIconClick","onBlur","Input","MAX_VALUE","stepSize","precision","decimals","getValue","getDisplayValue","nextStep","isNaN","toFixed","onNextDown","nextTimeout","nextInterval","onNextUp","prevStep","onPrevDown","prevTimeout","prevInterval","onPrevUp","regex","renderPrev","renderNext","renderClear","InputNumber","autoRows","maxRows","minRows","maxLength","eventInput","rows","currentRows","Textarea","steps","labels","fixmin","fixmax","minmax","getPseudoValue","setModelValue","getValPos","fixed","getValStyle","getBarPos","getBarWidth","getBarStyle","getClosestValue","diff","step","abs","onMouseup","relativeWidth","closestValue","stepMin","stepMax","handleProps","renderHandles","renderBar","barProps","Slider","onValue","offValue","onType","offType","renderSwitch","Switch","confirmText","abortText","buttonSize","abort","confirm","Confirm","clearDatetimepicker","renderPanels","renderDatePanel","renderTimePanel","Datetimepicker","minDuration","maxDuration","negativeText","days","hours","minutes","seconds","editValue","findPattern","pattern","replaceAll","humanizeValue","digitizeValue","dmatch","hmatch","mmatch","smatch","clearDurationpicker","onValueChange","onDurationpickerInput","onChange","optionProps","scrollProps","Durationpicker","sourceLabel","targetLabel","sourceChecked","selectedSource","tempSource","sourceIntermediate","targetChecked","selectedTarget","tempTarget","targetIntermediate","sourceSearch","searchPattern","targetSearch","moveItemsTarget","moveItemsSource","moveRowTarget","moveRowSource","moveToSource","moveToTarget","updateSelectedSource","updateSelectedTarget","renderSourceSelect","renderSourceTitle","counterHtml","renderSourceHeader","renderSourceSearch","renderSourceBody","onMove","renderTargetSelect","renderTargetTitle","renderTargetHeader","renderTargetSearch","renderTargetBody","renderMoveSource","renderMoveTarget","Transfer","page","limit","limitOptions","maxPages","layout","pages","tempLimit","pageOptions","tempPage","forcePage","updatePaginate","paginate","onPrevPage","onPageInput","onNextPage","onFirstPage","onLastPage","onLimitInput","renderLimit","renderCount","renderGoto","renderFirst","renderLast","renderPage","renderPages","renderSlot","view","className","Paginator","clearableIcon","buttonText","openContext","updateFile","files","clearFile","renderButton","renderHidden","File","virtualValue","renderStars","rate","renderValue","vars","Rating"],"mappings":"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","file":"nano-ui.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@kizmann/pico-js\"), require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@kizmann/pico-js\", \"vue\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Nano\"] = factory(require(\"@kizmann/pico-js\"), require(\"vue\"));\n\telse\n\t\troot[\"Nano\"] = factory(root[\"pi\"], root[\"Vue\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__, __WEBPACK_EXTERNAL_MODULE__1__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 15);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import { Arr, Obj, Num, Any, Dom, Event, Locale, UUID } from \"@kizmann/pico-js\";\n\nglobal.dragMods = [];\n\nclass NDragCounter\n{\n\n $el = null;\n\n constructor()\n {\n this.$el = Dom.make('div', {\n classList: ['n-draggable__counter']\n });\n\n this.$el.appendTo(document.body);\n }\n\n get(event, count)\n {\n // Update dragover color/type\n this.update();\n\n this.$el.html(\n `<span>${Locale.choice(':count Item|:count Items', count)}</span>`\n );\n\n // Fix data transfer\n event.dataTransfer.setData('text/plain', '');\n\n if ( typeof event.dataTransfer.setDragImage !== 'function' ) {\n return;\n }\n\n // Set finally the drop image\n event.dataTransfer.setDragImage(this.$el.get(0), 0, 0);\n }\n\n update()\n {\n global.dragMods = global.keyMods;\n\n let classList = [\n 'n-draggable__counter'\n ];\n\n if ( Arr.has(global.dragMods, 18) ) {\n classList.push('n-modify--alt');\n }\n\n if ( Arr.has(global.dragMods, 17) ) {\n classList.push('n-modify--ctrl');\n }\n\n if ( Arr.has(global.dragMods, 91) ) {\n classList.push('n-modify--meta');\n }\n\n this.$el.attr('class', classList.join(' '));\n }\n\n}\n\nglobal.DragCounter = new NDragCounter;\n\nclass NDragIndicator\n{\n\n $el = null;\n\n parent = null;\n\n constructor(parent)\n {\n this.$el = Dom.make('div', {\n classList: ['n-draggable__indicator']\n });\n\n this.$el.appendTo(this.parent = parent);\n }\n\n resolve(event, safezone, el, strategy = 'inner')\n {\n let rect = el.getBoundingClientRect();\n\n if ( event.clientY < rect.y + safezone ) {\n strategy = 'before';\n }\n\n if ( event.clientY > rect.y + rect.height - safezone ) {\n strategy = 'after';\n }\n\n if ( Dom.find(el).hasClass('n-expanded') ) {\n strategy = strategy === 'after' ? 'inner' : strategy;\n }\n\n Arr.has(['before', 'after'], strategy) ?\n this.show(el, strategy) : this.hide();\n\n\n return strategy;\n }\n\n show(el, strategy)\n {\n let offsetTop = Dom.find(el).offsetTop(this.parent);\n\n let style = {\n top: offsetTop || 1\n };\n\n if ( strategy === 'after' ) {\n style.top = offsetTop + Dom.find(el).height();\n }\n\n this.$el.css(Obj.map(style, (item) => item + 'px'));\n }\n\n hide()\n {\n this.$el.css(null);\n }\n\n destroy()\n {\n this.$el.get(0).remove();\n }\n\n}\n\nclass NDraghandler\n{\n\n uid = null;\n\n rootNode = null;\n childNodes = {};\n\n dropNodes = [];\n cacheNodes = [];\n\n strategy = 'nodrop';\n frames = 0;\n timeout = 0;\n dragcount = {};\n\n constructor(rootNode)\n {\n this.rootNode = rootNode;\n }\n\n bindRoot(frame = null)\n {\n this.DragIndicator = new NDragIndicator(frame || this.rootNode.$el);\n\n if ( global.DragCache ) {\n this.bindDragstart.call(this, ...global.DragCache);\n }\n\n Dom.find(this.rootNode.$el).on('dragenter', (event) => {\n this.onDragenterRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragover', (event) => {\n this.onDragoverRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragleave', (event) => {\n this.onDragleaveRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragend', (event) => {\n this.onDragendRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('drop', (event) => {\n this.onDragdropRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragdrop', (event) => {\n this.onDragdropRoot(event);\n });\n\n Event.bind('NDrag:start', this.bindDragstart.bind(this),\n this.rootNode.uid);\n\n Event.bind('NDrag:end', this.bindDragend.bind(this),\n this.rootNode.uid);\n\n Event.bind('NDrag:drop', this.bindDragdrop.bind(this),\n this.rootNode.uid);\n }\n\n unbindRoot()\n {\n let events = [\n 'dragstart',\n 'dragenter',\n 'dragover',\n 'dragleave',\n 'dragend',\n 'drop',\n 'dragdrop',\n ];\n\n Dom.find(this.rootNode.$el).off(events);\n\n Event.unbind('NDrag:start', this.rootNode.uid);\n Event.unbind('NDrag:end', this.rootNode.uid);\n Event.unbind('NDrag:drop', this.rootNode.uid);\n }\n\n onDragenterRoot(event)\n {\n event.preventDefault();\n }\n\n onDragoverRoot(event)\n {\n let isNode = Dom.find(event.target)\n .closest('.n-draglist-item');\n\n if ( isNode || !this.cacheNodes.length ) {\n return;\n }\n\n event.preventDefault();\n\n if ( this.frames && Date.now() - this.frames < 135 ) {\n return;\n }\n\n let allowDrop = this.rootNode.allowDrop;\n\n if ( !Any.isFunction(allowDrop) ) {\n allowDrop = () => this.rootNode.allowDrop;\n }\n\n let rainbow = Arr.each(this.cacheNodes, (node) => {\n return !!allowDrop(node, null, this.strategy);\n });\n\n this.strategy = 'root';\n\n if ( Arr.has(rainbow, false) ) {\n this.strategy = 'nodrop';\n }\n\n this.DragIndicator.hide();\n\n if ( this.strategy !== 'nodrop' ) {\n Dom.find(this.rootNode.$el).addClass('n-dragover');\n } else {\n Dom.find(this.rootNode.$el).removeClass('n-dragover');\n }\n\n if ( this.strategy === 'nodrop' ) {\n Dom.find(this.rootNode.$el).addClass('n-nodrop');\n } else {\n Dom.find(this.rootNode.$el).removeClass('n-nodrop');\n }\n\n this.frames = Date.now();\n }\n\n onDragleaveRoot(event)\n {\n Dom.find(this.rootNode.$el)\n .removeClass('n-dragover n-nodrop');\n }\n\n onDragendRoot(event)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n Dom.find(this.rootNode.$el)\n .removeClass('n-dragover n-nodrop');\n\n if ( this.strategy !== 'root' ) {\n return;\n }\n\n Event.fire('NDrag:end');\n }\n\n onDragdropRoot(event)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n Dom.find(this.rootNode.$el)\n .removeClass('n-dragover n-nodrop');\n\n if ( this.strategy !== 'root' ) {\n return;\n }\n\n event.preventDefault();\n\n this.moveNodes(null, this.strategy);\n\n Event.fire('NDrag:drop');\n }\n\n bindDragstart(group, cache)\n {\n if ( Arr.has(this.rootNode.allowGroups, group) ) {\n this.cacheNodes = JSON.parse(JSON.stringify(cache));\n }\n }\n\n bindDragend()\n {\n this.dragcount = {};\n\n this.cacheNodes = this.dropNodes = [];\n }\n\n bindDragdrop(...args)\n {\n if ( !this.dropNodes.length ) {\n return;\n }\n\n this.rootNode.tempSelected = [];\n\n this.rootNode.$emit('update:selected',\n this.rootNode.tempSelected);\n\n if ( !this.rootNode.removeNode ) {\n return;\n }\n\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n this.unlinkNodes(clone);\n this.removeNodes(clone);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n onDragstartNode(event, node)\n {\n if ( !this.rootNode.isSelected(node) ) {\n this.rootNode.$emit('update:selected',\n this.rootNode.tempSelected = [node.uid]);\n }\n\n let cache = Arr.each(this.rootNode.tempSelected, (id) => {\n return Arr.find(this.rootNode.virtuals, { [this.rootNode.uniqueProp]: id });\n });\n\n global.DragCounter.get(event, cache.length);\n\n Arr.map(cache, (value) => {\n return { value, item: Obj.get(this.rootNode, value.route) };\n });\n\n Event.fire('NDrag:start', this.rootNode.group,\n this.dropNodes = cache);\n\n global.DragCache = [\n this.rootNode.group, this.dropNodes\n ];\n\n this.dragcount[node.uid] = 0;\n }\n\n onDragenterNode(event, node)\n {\n event.preventDefault();\n\n if ( !this.dragcount[node.uid] ) {\n this.dragcount[node.uid] = 0;\n }\n\n this.dragcount[node.uid] ++;\n }\n\n onDragoverNode(event, node)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n event.preventDefault();\n\n if ( this.frames && Date.now() - this.frames < 45 ) {\n return;\n }\n\n let safezone = this.rootNode\n .safezone(node.$el.clientHeight);\n\n this.strategy = this.DragIndicator\n .resolve(event, safezone, node.$el);\n\n let targetNode = {\n value: node.value, item: node.item\n };\n\n let allowDrop = this.rootNode.allowDrop;\n\n if ( !Any.isFunction(allowDrop) ) {\n allowDrop = () => this.rootNode.allowDrop;\n }\n\n let rainbow = Arr.each(this.cacheNodes, (node) => {\n return !!allowDrop(node, targetNode, this.strategy);\n });\n\n let isInSelf = Arr.has(node.value.cascade,\n this.rootNode.tempSelected);\n\n rainbow.push(!isInSelf);\n\n if ( Arr.has(rainbow, false) ) {\n this.strategy = 'nodrop';\n }\n\n if ( this.strategy === 'nodrop' ) {\n this.DragIndicator.hide();\n }\n\n if ( this.strategy !== 'nodrop' ) {\n Dom.find(node.$el).addClass('n-dragover');\n Dom.find(node.$el).removeClass('n-nodrop');\n }\n\n if ( this.strategy === 'nodrop' ) {\n Dom.find(node.$el).removeClass('n-dragover');\n Dom.find(node.$el).addClass('n-nodrop');\n }\n\n this.frames = Date.now();\n }\n\n onDragleaveNode(event, node)\n {\n this.dragcount[node.uid] --;\n\n if ( this.dragcount[node.uid] !== 0 ) {\n return;\n }\n\n Dom.find(node.$el).removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n }\n\n onDragendNode(event, node)\n {\n Dom.find(node.$el).removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n\n Event.fire('NDrag:end');\n\n global.DragCache = null;\n }\n\n onDragdropNode(event, node)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n Dom.find(node.$el).removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n\n if ( this.strategy === 'nodrop' ) {\n return;\n }\n\n event.preventDefault();\n\n this.moveNodes(node, this.strategy);\n\n Event.fire('NDrag:drop');\n }\n\n bindNode(node)\n {\n if ( this.childNodes[node.uid] ) {\n this.unbindNode(node);\n }\n\n let $handle = Dom.find(node.$el);\n\n if ( this.rootNode.handle ) {\n $handle = $handle.find('[draggable]');\n }\n\n let $el = Dom.find(node.$el);\n\n $handle.on('dragstart', (event) => {\n this.onDragstartNode(event, node);\n });\n\n $el.on('dragenter', (event) => {\n this.onDragenterNode(event, node);\n });\n\n $el.on('dragover', (event) => {\n this.onDragoverNode(event, node);\n });\n\n $el.on('dragleave', (event) => {\n this.onDragleaveNode(event, node);\n });\n\n $el.on('dragend', (event) => {\n this.onDragendNode(event, node);\n });\n\n $el.on('drop', (event) => {\n this.onDragdropNode(event, node);\n });\n\n $el.on('dragdrop', (event) => {\n this.onDragdropNode(event, node);\n });\n\n this.childNodes[node.uid] = node;\n }\n\n unbindNode(node)\n {\n let $handle = Dom.find(node.$el);\n\n if ( this.rootNode.handle ) {\n $handle = $handle.find('[draggable]');\n }\n\n $handle.off('dragstart');\n\n let $el = Dom.find(node.$el);\n\n $el.off([\n 'dragenter',\n 'dragover',\n 'dragleave',\n 'dragend',\n 'drop',\n 'dragdrop',\n ]);\n\n $el.removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n\n delete this.childNodes[node.uid];\n }\n\n moveNodes(target, strategy) {\n\n if ( this.rootNode.items !== undefined ) {\n return this.moveNodesMany(target, strategy);\n }\n\n if ( this.rootNode.item !== undefined ) {\n return this.moveNodesOne(target, strategy);\n }\n\n return null;\n }\n\n moveNodesOne(target, strategy)\n {\n let clone = {\n items: [Obj.clone(this.rootNode.item)]\n };\n\n if ( this.rootNode.insertNode ) {\n clone = this.moveNodesRoot(clone, target);\n }\n\n if ( this.rootNode.removeNode ) {\n clone = this.removeNodes(clone);\n }\n\n let sources = Arr.each(this.cacheNodes, (node) => {\n return node.item[this.rootNode.uniqueProp];\n });\n\n let source = Arr.first(this.cacheNodes);\n\n this.rootNode.$emit('move', Obj.get(source, 'value.id'),\n Obj.get(target, 'uid'), strategy);\n\n this.rootNode.$emit('moveRaw',\n source, target, strategy);\n\n this.rootNode.$emit('update:item',\n Obj.get(source, 'item'));\n }\n\n moveNodesMany(target, strategy)\n {\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n if ( this.rootNode.removeNode ) {\n this.unlinkNodes(clone);\n }\n\n if ( !this.dropNodes.length ) {\n Arr.each(this.cacheNodes, (value, key) => {\n this.cacheNodes[key]['item'] = this.rootNode.transformDrop(value.item);\n });\n }\n\n if ( this.rootNode.insertNode && strategy === 'root' ) {\n clone = this.moveNodesRoot(clone, target);\n }\n\n if ( this.rootNode.insertNode && strategy === 'inner' ) {\n clone = this.moveNodesInto(clone, target);\n }\n\n if ( this.rootNode.insertNode && strategy === 'before' ) {\n clone = this.moveNodesBefore(clone, target);\n }\n\n if ( this.rootNode.insertNode && strategy === 'after' ) {\n clone = this.moveNodesAfter(clone, target);\n }\n\n if ( this.rootNode.removeNode ) {\n clone = this.removeNodes(clone);\n }\n\n let sources = Arr.each(this.cacheNodes, (node) => {\n return node.item[this.rootNode.uniqueProp];\n });\n\n this.dropNodes = this.rootNode.tempSelected = [];\n\n let eventName = 'move';\n\n if ( Arr.has(global.dragMods, 18) ) {\n eventName = 'moveAlt';\n }\n\n if ( Arr.has(global.dragMods, 17) ) {\n eventName = 'moveCtrl';\n }\n\n if ( Arr.has(global.dragMods, 91) ) {\n eventName = 'moveMeta';\n }\n\n this.rootNode.$emit(eventName, sources,\n Obj.get(target, 'uid'), strategy);\n\n this.rootNode.$emit(eventName + 'Raw',\n this.cacheNodes, target, strategy);\n\n this.rootNode.$emit('update:selected',\n this.rootNode.tempSelected);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n unlinkNodes(clone)\n {\n Arr.each(this.dropNodes, (node) => {\n Obj.set(clone, node.value.route, null);\n });\n }\n\n removeNodes(clone, prop = 'items')\n {\n clone[prop] = Arr.filter(clone[prop], (node) => {\n return !!node;\n });\n\n Arr.map(clone[prop], (node) => {\n\n if ( !node[this.rootNode.childProp] ) {\n return node;\n }\n\n return this.removeNodes(node,\n this.rootNode.childProp);\n });\n\n return clone;\n }\n\n moveNodesRoot(clone)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n Arr.each(this.cacheNodes, (node) => {\n clone.items.push(node.item);\n });\n\n return clone;\n }\n\n moveNodesInto(clone, target)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n let targetRoute = [\n target.value.route,\n this.rootNode.childProp\n ].join('.');\n\n let children = Obj.get(clone,\n targetRoute, []);\n\n Arr.each(this.cacheNodes, (node) => {\n children.push(node.item);\n });\n\n Obj.set(clone, targetRoute, children);\n\n return clone;\n }\n\n moveNodesBefore(clone, target)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n let targetRoute = target.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n Arr.each(this.cacheNodes, (node, index) => {\n items.splice(target.value.index + index, 0, node.item);\n });\n\n Obj.set(clone, targetRoute, items);\n\n return clone;\n }\n\n moveNodesAfter(clone, target)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n let targetRoute = target.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n Arr.each(this.cacheNodes, (node, index) => {\n items.splice(target.value.index + index + 1, 0, node.item);\n });\n\n Obj.set(clone, targetRoute, items);\n\n return clone;\n }\n\n copyNode(node)\n {\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n let targetRoute = node.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n let target = Obj.except(node.item, [], {\n [this.rootNode.uniqueProp]: UUID()\n });\n\n items.splice(node.value.index + 1,\n 0, target);\n\n Obj.set(clone, targetRoute, items);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n removeNode(node)\n {\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n let targetRoute = node.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n items.splice(node.value.index, 1);\n\n Obj.set(clone, targetRoute, items);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n reduce(items, ...props)\n {\n return Arr.reduce(items, (merge, item, index) =>\n this.reduceItem(merge, item, Num.int(index), ...props), []);\n }\n\n reduceItem(merge, item, index, depth = 0, route = 'items', cascades = [])\n {\n // Get a unique id\n let unique = Obj.get(item,\n this.rootNode.uniqueProp, UUID());\n\n // Add unique to cascader\n let tempCascade = Arr.merge(cascades,\n [unique]);\n\n let virtual = {\n index: index,\n depth: depth,\n route: [route, index].join('.'),\n parent: Arr.last(cascades),\n cascade: tempCascade,\n };\n\n virtual[this.rootNode.uniqueProp] = unique;\n\n let children = Obj.get(item,\n this.rootNode.childProp, []);\n\n if ( Any.isEmpty(children) ) {\n return Arr.merge(merge, [virtual]);\n }\n\n let childRoute = [\n route, index,\n this.rootNode.childProp\n ].join('.');\n\n let props = [\n depth + 1, childRoute, tempCascade\n ]\n\n return Arr.merge(merge, [virtual],\n this.reduce(children, ...props));\n }\n\n}\n\nexport default NDraghandler;","import { Arr, Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n ctor(key, fallback = null)\n {\n let ctor = Obj.get(this.$options, key.split('.'), -1);\n\n // if ( ctor === -1 ) {\n // ctor = Obj.get(this.$vnode.componentOptions.Ctor,\n // Arr.merge(['options'], key.split('.')), -1);\n // }\n\n if ( ctor === -1 ) {\n ctor = fallback;\n }\n\n if ( typeof ctor !== 'function' ) {\n return ctor;\n }\n\n return (...args) => ctor.apply(this, args);\n }\n\n}\n","import { Arr, Obj, Any, Dom } from \"@kizmann/pico-js\";\n\nglobal.DEBUG_NVSCROLL = false;\n\nexport default {\n\n name: 'NVirtualscroller',\n\n inject: {\n\n NDraggable: {\n default: undefined\n }\n\n },\n\n model: {\n prop: 'items'\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n }\n },\n\n itemHeight: {\n default()\n {\n return 34;\n }\n },\n\n itemWidth: {\n default()\n {\n return 0;\n }\n },\n\n renderNode: {\n default()\n {\n return null;\n }\n },\n\n deathzone: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n threshold: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n framerate: {\n default()\n {\n return 65;\n },\n type: [Number]\n },\n\n useKeys: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n },\n\n data()\n {\n let state = {\n start: 0, end: 0, grid: 1\n };\n\n return {\n state, buffer: [], width: 0, height: 0, load: true\n };\n },\n\n watch: {\n\n 'items': function () {\n this.updateRender();\n }\n\n },\n\n beforeMount()\n {\n this.scrollTop = 0;\n },\n\n mounted()\n {\n\n this.bindAdaptScroll()\n },\n\n\n beforeUnmount()\n {\n this.unbindAdaptScroll()\n },\n\n methods: {\n\n bindAdaptScroll()\n {\n this.refreshScroll = setInterval(this.onScrollupdate,\n 1000 / this.framerate);\n },\n\n unbindAdaptScroll()\n {\n clearInterval(this.refreshScroll);\n },\n\n isIndexRendered(index)\n {\n if ( ! this.itemHeight ) {\n return true;\n }\n\n return this.state.start < index &&\n this.state.end > index;\n },\n\n scrollIntoView(index)\n {\n if ( ! this.$refs.scrollbar ) {\n return;\n }\n\n if ( index === -1 || index >= this.items.length ) {\n index = this.items.length;\n }\n\n if ( ! this.isIndexRendered(index) ) {\n return this.scrollToIndex(index);\n }\n\n let selector = `[data-index=\"${index}\"]`;\n\n this.$refs.scrollbar.scrollIntoView(selector);\n },\n\n scrollToIndex(index, delay = 0)\n {\n Any.delay(() => this.onScrollToIndex(index), delay);\n },\n\n onScrollToIndex(index)\n {\n if ( ! this.$refs.scrollbar ) {\n return;\n }\n\n let total = Math.ceil(this.items.length /\n this.state.grid);\n\n index = Math.floor(index / this.state.grid);\n\n if ( index === -1 || index >= total ) {\n index = total;\n }\n\n let targetTop = index * this.itemHeight;\n\n if ( this.scrollTop > targetTop ) {\n return this.scrollTo(0, targetTop);\n }\n\n targetTop = targetTop - this.height +\n this.itemHeight;\n\n this.scrollTo(0, targetTop);\n },\n\n scrollTo(x = 0, y = 0, delay = 0)\n {\n Any.delay(() => this.onScrollTo(x, y), delay);\n },\n\n onScrollTo(x = 0, y = 0)\n {\n if ( ! this.$refs.scrollbar ) {\n return;\n }\n\n this.$refs.scrollbar.scrollTo(x, y);\n },\n\n clearState()\n {\n this.state = { start: 0, end: 0 };\n },\n\n updateRender()\n {\n if ( ! this.$refs.scrollbar ) {\n return Any.delay(this.updateRender);\n }\n\n this.scrollTop = this.$refs.scrollbar.\n $refs.content.scrollTop;\n\n Any.async(this.refreshDriver);\n },\n\n onScrollupdate()\n {\n if ( ! this.threshold ) {\n return;\n }\n\n let scrollTop = this.$refs.scrollbar.\n $refs.content.scrollTop;\n\n if ( scrollTop === this.scrollTop ) {\n return;\n }\n\n this.scrollTop = scrollTop;\n\n let offset = this.$refs.scrollbar.$el.offsetHeight -\n this.$refs.scrollbar.$el.clientHeight;\n\n let isOutOfRange = scrollTop < 0 || scrollTop + this.height\n > this.$refs.inner.scrollHeight + offset;\n\n if ( isOutOfRange ) {\n return;\n }\n\n Any.async(this.refreshDriver);\n },\n\n onSizechange(height, width, el)\n {\n this.width = width;\n this.height = height;\n\n Any.async(this.refreshDriver);\n },\n\n\n refreshDriver(queue = true)\n {\n if ( Any.isEmpty(this.timer) ) {\n this.timer = Date.now();\n }\n\n if ( Date.now() - this.timer > 20 ) {\n queue = false;\n }\n\n clearTimeout(this.to);\n\n this.to = setTimeout(() => {\n this.refreshDriver(false);\n }, 25);\n\n if ( queue ) {\n return;\n }\n\n clearTimeout(this.to);\n\n let grid = 1;\n\n if ( this.itemWidth ) {\n grid = Math.floor((this.width - this.deathzone) /\n this.itemWidth) || 1;\n }\n\n if ( ! this.threshold || this.threshold > this.items.length ) {\n return this.state = { start: 0, end: 0, grid };\n }\n\n let total = Math.ceil(this.items.length\n / grid);\n\n let bufferItems = Math.round((this.height /\n this.itemHeight) * 0.6);\n\n let startItem = Math.round(this.scrollTop /\n this.itemHeight);\n\n let endItem = Math.round((this.scrollTop +\n this.height) / this.itemHeight);\n\n let start = (startItem - bufferItems);\n\n if ( start < 0 ) {\n start = 0;\n }\n\n let end = endItem + bufferItems;\n\n if ( end > total ) {\n end = total;\n }\n\n let state = { start, end, grid };\n\n if ( Any.isEqual(this.state, state) ) {\n return;\n }\n\n this.state = state;\n },\n\n },\n\n renderItem(passed)\n {\n passed.index = (passed.index +\n this.state.start);\n\n let topOffset = Math.round(this.itemHeight *\n passed.index);\n\n let renderFunction = this.$slots.default;\n\n if ( this.renderNode ) {\n renderFunction = this.renderNode;\n }\n\n let props = {\n 'data-index': passed.index\n };\n\n if ( this.NDraggable && this.useKeys ) {\n props.key = passed.value[this.NDraggable.uniqueProp];\n }\n\n let style = {};\n\n let isLazy = this.threshold && this.threshold <=\n this.items.length;\n\n if ( isLazy && this.state.grid === 1 ) {\n style.top = topOffset + 'px';\n }\n\n if ( this.itemHeight ) {\n style.height = this.itemHeight + 'px';\n }\n\n if ( this.state.grid !== 1 ) {\n style.width = this.itemWidth + 'px';\n }\n\n return (\n <div class=\"n-virtualscroller__item\" style={style} {...props}>\n { renderFunction(passed) }\n </div>\n );\n },\n\n renderRows()\n {\n let items = Arr.slice(this.items, this.state.start,\n this.state.end);\n\n if ( ! this.threshold || this.threshold > this.items.length ) {\n items = this.items;\n }\n\n return Arr.each(items, (value, index) => {\n return this.ctor('renderItem')({ value, index });\n });\n },\n\n renderGridRows(passed)\n {\n let topOffset = Math.round(this.itemHeight *\n (passed.index + this.state.start));\n\n let style = {};\n\n if ( this.threshold && this.threshold <= this.items.length ) {\n style.top = topOffset + 'px';\n }\n\n let counter = passed.index * this.state.start;\n\n return (\n <div data-row={passed.index} class=\"n-virtualscroller__row\" style={style}>\n {\n Arr.each(passed.chunk, (value, index) => {\n return this.ctor('renderItem')({\n value, index: index + counter\n });\n })\n }\n </div>\n );\n },\n\n renderGrid()\n {\n let chunks = Arr.chunk(this.items,\n this.state.grid);\n\n let items = Arr.slice(chunks, this.state.start,\n this.state.end);\n\n if ( ! this.threshold || this.threshold > this.items.length ) {\n items = chunks;\n }\n\n return Arr.each(items, (chunk, index) => {\n return this.ctor('renderGridRows')({ chunk, index });\n });\n },\n\n renderItems()\n {\n if ( ! this.items.length ) {\n return this.$slots.empty && this.$slots.empty() || null;\n }\n\n if ( this.state.grid === 1 ) {\n return this.ctor('renderRows')();\n }\n\n return this.ctor('renderGrid')();\n },\n\n render()\n {\n let classList = [\n 'n-virtualscroller'\n ];\n\n if ( this.threshold && this.threshold <= this.items.length ) {\n classList.push('n-virtualscroller--absolute');\n }\n\n let props = {\n overflowY: this.overflowY,\n overflowX: this.overflowX,\n offsetY: this.offsetY,\n offsetX: this.offsetX,\n onSizechange: this.onSizechange,\n };\n\n let style = {\n 'overflow-y': 'hidden'\n };\n\n let totalHeight = Math.ceil(this.items.length / this.state.grid) *\n this.itemHeight;\n\n if ( this.threshold && this.items.length ) {\n style.height = Math.ceil(totalHeight + this.offsetY) + 'px';\n }\n\n return (\n <NScrollbar class={classList} ref=\"scrollbar\" {...props}>\n <div ref=\"inner\" class=\"n-virtualscroller__inner\" style={style}>\n { this.ctor('renderItems')() }\n </div>\n </NScrollbar>\n );\n }\n\n}\n","import { UUID, Num, Arr, Obj, Dom, Any, Event, Locale } from \"@kizmann/pico-js\";\nimport NDraghandler from \"../draghandler/draghandler\";\n\nglobal.DEBUG_NDLIST = false;\n\nexport default {\n\n name: 'NDraglist',\n\n model: {\n prop: 'items'\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n }\n },\n\n renderNode: {\n default()\n {\n return null;\n }\n },\n\n draggable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n current: {\n default()\n {\n return null;\n }\n },\n\n selected: {\n default()\n {\n return [];\n }\n },\n\n expanded: {\n default()\n {\n return [];\n }\n },\n\n handle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n group: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n allowGroups: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n safezone: {\n default()\n {\n return (height) => height * 0.265;\n }\n },\n\n lazyload: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n itemHeight: {\n default()\n {\n return 34;\n },\n type: [Number]\n },\n\n itemOffset: {\n default()\n {\n return 30;\n },\n type: [Number]\n },\n\n threshold: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n useKeys: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n scrollTopOnChange: {\n default()\n {\n return false;\n }\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n renderCurrent: {\n default()\n {\n return true;\n }\n },\n\n renderHandle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderSelect: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderExpand: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n transformDrop: {\n default()\n {\n return (node) => node;\n }\n },\n\n disableMove: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n insertNode: {\n default()\n {\n return true;\n }\n },\n\n removeNode: {\n default()\n {\n return true;\n }\n },\n\n allowSelect: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrag: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrop: {\n default()\n {\n return () => true;\n }\n },\n\n keyEvents: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n highlightTimeout: {\n default()\n {\n return 7000;\n },\n type: [Number]\n }\n\n },\n\n provide()\n {\n return {\n NDraggable: this\n };\n },\n\n data()\n {\n return {\n uid: UUID(),\n modifier: [],\n virtuals: [], \n visible: [], \n childNodes: {}, \n highlight: [],\n firstSelected: null,\n lastSelected: null,\n tempCurrent: this.current, \n tempExpanded: this.expanded, \n tempSelected: this.selected\n };\n },\n\n beforeMount()\n {\n this.drag = new NDraghandler(this);\n\n Dom.find(window).on('keydown',\n this.watchModifierDown, this._.uid);\n\n Dom.find(window).on('keyup',\n this.watchModifierUp, this._.uid);\n },\n\n mounted()\n {\n let frame = this.$refs.virtualscroller.\n $refs.inner;\n\n this.drag.bindRoot(frame);\n\n this.$watch('tempSelected', this.watchSelected, \n { deep: true });\n\n this.refreshVirtuals();\n },\n\n beforeUnmount()\n {\n this.drag.unbindRoot();\n\n Dom.find(document).off('keydown', null, this.uid);\n Dom.find(document).off('keyup', null, this.uid);\n },\n\n watch: {\n \n items()\n {\n if ( this.scrollTopOnChange ) {\n this.scrollTo();\n }\n\n this.refreshVirtuals();\n },\n\n virtuals()\n {\n this.filterVirtuals();\n },\n\n expanded(value)\n {\n this.tempExpanded = value;\n\n this.filterVirtuals();\n },\n\n selected(value)\n {\n this.tempSelected = value;\n },\n\n current(value)\n {\n this.tempCurrent = value;\n }\n\n },\n\n methods: {\n\n watchModifierDown(e)\n {\n Arr.add(this.modifier, e.which);\n },\n\n watchModifierUp(e)\n {\n Arr.remove(this.modifier, e.which);\n },\n\n watchSelected()\n {\n if ( ! this.tempSelected.length ) {\n return this.firstSelected = null;\n }\n\n this.firstSelected = Arr.find(this.virtuals, {\n [this.uniqueProp]: this.tempSelected[0]\n });\n },\n\n updateNode(node)\n {\n Obj.set(this, node.value.route, node.item);\n\n this.$emit('update:items', this.items);\n },\n\n findVirtual(unique)\n {\n let value = Arr.find(this.virtuals, (item) => {\n return item[this.uniqueProp] === unique;\n });\n\n if ( ! value ) {\n return null;\n }\n\n return {\n value, item: Obj.get(this, value.route, null)\n };\n },\n\n refreshVirtuals()\n {\n this.virtuals = this.drag.reduce(this.items);\n\n if ( global.DEBUG_NDLIST ) {\n console.log('Total virtual items mounted: ' + this.virtuals.length);\n }\n },\n\n filterVirtuals()\n {\n this.visible = Arr.filter(this.virtuals, (node) => {\n return Arr.contains(this.tempExpanded, node.cascade.slice(0, -1));\n });\n },\n\n getIndex(unique)\n {\n return Arr.findIndex(this.visible, {\n [this.uniqueProp]: unique\n });\n },\n\n getCurrentIndex()\n {\n if ( ! this.tempCurrent ) {\n return -1;\n }\n\n return Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n },\n\n scrollTo(x = 0, y = 0)\n {\n if ( ! this.$refs.virtualscroller ) {\n return Any.delay(() => this.scrollTo(x, y));\n }\n\n this.$refs.virtualscroller.scrollTo(x, y);\n },\n\n scrollToIndex(index)\n {\n if ( ! this.$refs.virtualscroller ) {\n return Any.delay(() => this.scrollToIndex(index));\n }\n\n this.$refs.virtualscroller.scrollIntoView(index);\n },\n\n isDraggable(node)\n {\n let canDrag = this.allowDrag;\n\n if ( ! Any.isFunction(canDrag) ) {\n canDrag = () => this.allowDrag;\n }\n\n return canDrag(node);\n },\n\n isHighlight(node)\n {\n return Arr.has(this.highlight, node.value[this.uniqueProp]);\n },\n\n highlightNode(value, key = null)\n {\n clearTimeout(this.refresh);\n\n // Clear highlight items\n this.highlight = [];\n\n Arr.recursive(this.items, this.childProp, (node, cascade) => {\n\n let val = node;\n\n if ( !Any.isEmpty(key) ) {\n val = Obj.get(val, key);\n }\n\n if ( ! Any.isFunction(value) ) {\n value = (val) => val === value;\n }\n\n if ( ! value(val) ) {\n return;\n }\n\n Arr.each(cascade, (item) => {\n Arr.add(this.tempExpanded, item[this.uniqueProp]);\n });\n\n Arr.add(this.highlight, node[this.uniqueProp]);\n });\n\n if ( ! this.highlight.length ) {\n return;\n }\n\n this.$nextTick(this.scrollToHighlight);\n \n this.refresh = setTimeout(() =>\n this.highlight = [], this.highlightTimeout);\n \n this.filterVirtuals();\n },\n\n scrollToHighlight()\n {\n if ( ! this.highlight.length ) {\n return;\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: Arr.first(this.highlight)\n });\n\n this.$refs.virtualscroller.scrollIntoView(index);\n },\n\n isCurrent(node)\n {\n return this.renderCurrent && this.tempCurrent && \n node.value[this.uniqueProp] === this.tempCurrent[this.uniqueProp] ;\n },\n\n setCurrent(node)\n {\n let isSameNode = this.tempCurrent && \n this.tempCurrent[this.uniqueProp] === node.value[this.uniqueProp];\n\n if ( isSameNode ) {\n return;\n }\n\n this.$emit('update:current', \n this.tempCurrent = node.item);\n \n Event.fire('NDraglist:syncCurrent', node.item, this.uid);\n },\n\n setRawCurrent(index)\n {\n let route = Obj.get(this.visible, \n [index, 'route']);\n\n if ( ! route ) {\n return this.setRawCurrent(0);\n }\n\n let item = Obj.get(this, route);\n\n this.$refs.virtualscroller\n .scrollIntoView(index);\n\n this.$emit('update:current', \n this.tempCurrent = item);\n \n Event.fire('NDraglist:syncCurrent', item, this.uid);\n },\n\n setNextCurrent()\n {\n if ( ! this.visible.length ) {\n return;\n }\n\n let reset = 0;\n\n if ( ! this.tempCurrent ) {\n return this.setRawCurrent(reset);\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n\n if ( index !== -1 ) {\n index++;\n }\n\n if ( index >= this.visible.length ) {\n index = reset;\n }\n\n this.setRawCurrent(index);\n },\n\n setPrevCurrent()\n {\n if ( ! this.visible.length ) {\n return;\n }\n\n let reset = this.visible.length - 1;\n\n if ( ! this.tempCurrent ) {\n return this.setRawCurrent(reset);\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n\n if ( index !== -1 ) {\n index--;\n }\n\n if ( index < 0 ) {\n index = reset;\n }\n \n this.setRawCurrent(index);\n },\n\n syncCurrent()\n {\n return ['NDraglist:syncCurrent', this.uid];\n },\n\n isDisabled(node)\n {\n let canSelect = this.allowSelect;\n\n if ( ! Any.isFunction(canSelect) ) {\n canSelect = () => this.allowSelect;\n }\n\n return ! canSelect(node) || (this.firstSelected &&\n node.value.depth !== this.firstSelected.depth);\n },\n\n hasChildren(node)\n {\n return !! this.getChildren(node).length;\n },\n\n getChildren(node)\n {\n return Obj.get(node.item, this.childProp, []);\n },\n\n isExpanded(node)\n {\n return Arr.has(this.tempExpanded, node.value[this.uniqueProp]);\n },\n\n expandItem(node)\n {\n if ( ! this.hasChildren(node) ) {\n return;\n }\n\n Arr.toggle(this.tempExpanded, node.value[this.uniqueProp]);\n\n this.filterVirtuals();\n },\n\n expandCurrent()\n {\n if ( ! this.tempCurrent ) {\n return;\n }\n\n let children = Obj.get(this.tempCurrent, \n this.childProp);\n\n if ( Any.isEmpty(children) ) {\n return;\n }\n\n Arr.toggle(this.tempExpanded, \n this.tempCurrent[this.uniqueProp]);\n\n this.filterVirtuals();\n },\n\n isSelected(node)\n {\n return Arr.has(this.tempSelected, node.value[this.uniqueProp]);\n },\n\n isTotalSelected()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n return visible.length === this.tempSelected;\n },\n\n isInterSelected()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n return visible.length !== this.tempSelected &&\n this.tempSelected;\n },\n\n toggleSingleNode(node)\n {\n Arr.toggle(this.tempSelected, this.lastSelected =\n node.value[this.uniqueProp]);\n },\n\n toggleRangeNode(node)\n {\n let indexies = [0, -1], reversed = false;\n\n if ( ! Any.isEmpty(this.lastSelected) ) {\n indexies[1] = this.getIndex(this.lastSelected);\n }\n\n indexies[0] = this.getIndex(node.value[this.uniqueProp]);\n\n if ( indexies[1] > indexies[0] ) {\n reversed = true;\n }\n\n if ( ! reversed ) {\n indexies = [indexies[1]+1, indexies[0]+1];\n }\n\n Arr.each(this.items.slice(indexies[0], indexies[1]), (item, index) => {\n Arr.toggle(this.tempSelected, item[this.uniqueProp]);\n });\n\n this.lastSelected = node.value[this.uniqueProp];\n },\n\n selectItem(node)\n {\n if ( this.isDisabled(node) ) {\n return;\n }\n\n ! Arr.has(this.modifier, 16) || this.renderExpand ?\n this.toggleSingleNode(node) : this.toggleRangeNode(node);\n\n this.$emit('update:selected', this.tempSelected);\n },\n\n selectAll()\n {\n let result = Arr.filter(this.visible, (item) => {\n\n let canSelect = this.allowSelect;\n\n if ( ! Any.isFunction(canSelect) ) {\n canSelect = () => this.allowSelect;\n }\n\n let row = {\n value: item, item: Obj.get(this, item.route)\n };\n\n return ! item.depth && canSelect(row);\n });\n\n let indexies = Arr.each(result, (item) => {\n return item[this.uniqueProp];\n });\n\n if ( indexies.length === this.tempSelected.length ) {\n return this.$emit('update:selected', this.tempSelected = []);\n }\n\n this.lastSelected = null;\n\n this.$emit('update:selected', this.tempSelected = indexies);\n },\n\n unselectAll()\n {\n if ( this.tempSelected.length ) {\n this.$emit('update:selected', this.tempSelected = []);\n }\n },\n\n bindKeydown()\n {\n if ( ! this.keyEvents ) {\n return;\n }\n\n Dom.find(document).on('keydown', \n this.onKeydown, this.uid)\n },\n\n unbindKeydown()\n {\n if ( ! this.keyEvents ) {\n return;\n }\n\n Dom.find(document).off('keydown', \n null, this.uid)\n },\n\n onKeydown(event, el)\n {\n if ( Dom.find(el).closest('input') ) {\n return;\n }\n\n if ( event.which === 32 ) {\n event.preventDefault();\n event.stopPropagation();\n this.expandCurrent();\n }\n\n if ( event.which === 38 ) {\n event.preventDefault();\n event.stopPropagation();\n this.setPrevCurrent();\n }\n\n if ( event.which === 40 ) {\n event.preventDefault();\n event.stopPropagation();\n this.setNextCurrent();\n }\n }\n\n },\n\n renderEmpty()\n {\n return (\n <NEmptyIcon disabled={! this.showEmptyIcon} class=\"n-draglist__empty\">\n { this.$slots.empty && this.$slots.empty() || this.trans('No entries') }\n </NEmptyIcon>\n );\n },\n\n renderItem(props)\n {\n return (\n <NDraglistItem {...Obj.except(props, ['index'])}>\n { { default: this.$slots.default } }\n </NDraglistItem>\n );\n },\n\n render()\n {\n let classList = [\n 'n-draglist',\n 'n-draglist--' + this.size,\n 'n-draglist--' + this.type\n ];\n\n if ( ! this.items.length ) {\n classList.push('n-empty');\n }\n\n let passed = [\n 'threshold', 'bufferItems', 'itemHeight', \n 'overflowX', 'overflowY', 'offsetX', 'offsetY', 'useKeys'\n ];\n\n let props = Obj.only(this.$props, passed, {\n items: this.visible,\n onMouseenter: this.bindKeydown,\n onMouseleave: this.unbindKeydown\n });\n\n return (\n <NVirtualscroller ref=\"virtualscroller\" class={classList} {...props}>\n { { default: this.ctor('renderItem'), empty: this.ctor('renderEmpty') } }\n </NVirtualscroller>\n );\n }\n\n}\n","import { Str, Obj, Arr, Dom } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDraglistItem',\n\n inject: {\n\n NDraggable: {\n default: undefined\n }\n \n },\n\n provide()\n {\n return {\n NDraggableItem: this\n };\n },\n\n props: {\n\n value: {\n required: true\n },\n\n },\n\n computed: {\n\n uid()\n {\n return Obj.get(this.value, this.NDraggable.uniqueProp);\n },\n\n item()\n {\n return Obj.get(this.NDraggable, this.value.route);\n },\n\n touch() {\n return !! ('ontouchstart' in window ||\n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n init: ! this.NDraggable.lazyload\n };\n },\n\n mounted()\n {\n this.timer = setTimeout(() => {\n\n if ( this.NDraggable.draggable ) {\n this.timer = setTimeout(() => {\n this.NDraggable.drag.bindNode(this);\n }, 10);\n }\n\n this.init = true;\n }, 5);\n },\n\n beforeUnmount()\n {\n clearTimeout(this.timer);\n\n this.NDraggable.drag.unbindNode(this);\n },\n\n methods: {\n\n copy()\n {\n return this.NDraggable.drag.copyNode(this);\n },\n\n remove()\n {\n return this.NDraggable.drag.removeNode(this);\n },\n\n hasChildren()\n {\n return this.NDraggable.hasChildren(this);\n },\n\n isDisabled()\n {\n return this.NDraggable.isDisabled(this);\n },\n\n isHighlight()\n {\n return this.NDraggable.isHighlight(this);\n },\n\n isCurrent()\n {\n return this.NDraggable.isCurrent(this);\n },\n\n isDraggable()\n {\n return this.NDraggable.isDraggable(this);\n },\n\n isExpanded()\n {\n return this.NDraggable.isExpanded(this);\n },\n\n expandItem()\n {\n this.NDraggable.expandItem(this);\n },\n\n isSelected()\n {\n return this.NDraggable.isSelected(this);\n },\n\n selectItem()\n {\n this.NDraggable.selectItem(this);\n },\n\n onClick(event)\n {\n let isExpand = Dom.find(event.target)\n .closest('.n-draglist-item__expand');\n\n if ( isExpand ) {\n return;\n }\n\n this.NDraggable.setCurrent(this);\n\n if ( Arr.has(global.keyMods, 91) ) {\n this.NDraggable.selectItem(this);\n }\n\n this.NDraggable.$emit('row-click', this);\n },\n\n onDblclick()\n {\n this.NDraggable.setCurrent(this);\n\n this.NDraggable.$emit('row-dblclick', this);\n }\n\n },\n\n renderElement()\n {\n let classList = [\n 'n-draglist-item__element'\n ];\n\n if ( ! this.init ) {\n return (<div class={classList} />);\n }\n\n let props = {\n value: this.value,\n item: this.item,\n copy: this.copy,\n remove: this.remove,\n };\n\n let renderFunction = this.$slots.default;\n\n if ( this.NDraggable.renderNode ) {\n renderFunction = this.NDraggable.renderNode;\n }\n\n return (\n <div class={classList}>\n { renderFunction(props) }\n </div>\n );\n },\n\n renderSpacer()\n {\n let width = this.value.depth * \n this.NDraggable.itemOffset;\n\n if ( ! width ) {\n return null;\n }\n\n let style = {\n width: width + 'px'\n };\n\n return (\n <div class=\"n-draglist-item__spacer\" style={style}>\n { /* SPACER */ }\n </div>\n );\n },\n\n renderHandle()\n {\n if ( ! this.NDraggable.renderHandle ) {\n return null;\n }\n\n let props = {};\n\n if ( this.NDraggable.draggable && this.isDraggable() ) {\n props.draggable = true;\n }\n\n return (\n <div class=\"n-draglist-item__handle\" {...props}>\n <div class=\"n-draglist-item__ellipsis\">\n <i class={ nano.Icons.handle }></i>\n </div>\n </div>\n );\n },\n\n renderExpand()\n {\n if ( ! this.NDraggable.renderExpand ) {\n return null;\n }\n\n let props = {\n ['on' + Str.ucfirst(this.mousedown)]: this.expandItem\n };\n\n return (\n <div class=\"n-draglist-item__expand\" {...props}>\n <div class=\"n-draglist-item__angle\">\n <i class={ nano.Icons.angleRight }></i>\n </div>\n </div>\n );\n },\n\n renderSelect()\n {\n if ( ! this.NDraggable.renderSelect ) {\n return null;\n }\n\n let props = {\n ['on' + Str.ucfirst(this.mousedown)]: this.selectItem\n };\n\n return (\n <div class=\"n-draglist-item__select\" {...props}>\n <div class=\"n-draglist-item__checkbox\">\n <i class={ nano.Icons.checked }></i>\n </div>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-draglist-item'\n ];\n\n if ( this.hasChildren() ) {\n classList.push('n-children');\n }\n\n if ( this.isDisabled() ) {\n classList.push('n-disabled');\n }\n\n if ( this.isSelected() ) {\n classList.push('n-selected');\n }\n\n if ( this.isExpanded() ) {\n classList.push('n-expanded');\n }\n\n if ( this.isCurrent() ) {\n classList.push('n-current');\n }\n\n if ( this.isHighlight() ) {\n classList.push('n-highlight');\n }\n\n let props = {\n onClick: this.onClick,\n onDblclick: this.onDblclick,\n };\n\n if ( this.NDraggable.draggable && ! this.NDraggable.handle && this.isDraggable() ) {\n props.draggable = true;\n }\n\n props['data-unique'] = this.value[this.NDraggable.uniqueProp];\n\n return (\n <div class={classList} {...props}>\n { this.ctor('renderHandle')() }\n { this.ctor('renderSpacer')() }\n { this.ctor('renderExpand')() }\n { this.ctor('renderSelect')() }\n { this.ctor('renderElement')() }\n </div>\n );\n }\n\n}\n","import { UUID, Num, Arr, Obj, Dom, Any, Event, Locale } from \"@kizmann/pico-js\";\nimport NDraghandler from \"../draghandler/draghandler\";\n\nglobal.DEBUG_NDLIST = false;\n\nexport default {\n\n name: 'NDraggrid',\n\n model: {\n prop: 'items'\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n }\n },\n\n renderNode: {\n default()\n {\n return null;\n }\n },\n\n draggable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n current: {\n default()\n {\n return null;\n }\n },\n\n selected: {\n default()\n {\n return [];\n }\n },\n\n handle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n group: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n allowGroups: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n safezone: {\n default()\n {\n return (height) => -1;\n }\n },\n\n lazyload: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n itemHeight: {\n default()\n {\n return 200;\n },\n type: [Number]\n },\n\n itemWidth: {\n default()\n {\n return 150;\n },\n type: [Number]\n },\n\n threshold: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n useKeys: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n deathzone: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n scrollTopOnChange: {\n default()\n {\n return false;\n }\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n renderCurrent: {\n default()\n {\n return true;\n }\n },\n\n renderHandle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderSelect: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n transformDrop: {\n default()\n {\n return (node) => node;\n }\n },\n\n disableMove: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n insertNode: {\n default()\n {\n return true;\n }\n },\n\n removeNode: {\n default()\n {\n return true;\n }\n },\n\n allowSelect: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrag: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrop: {\n default()\n {\n return () => true;\n }\n },\n\n keyEvents: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n highlightTimeout: {\n default()\n {\n return 7000;\n },\n type: [Number]\n }\n\n },\n\n provide()\n {\n return {\n NDraggable: this\n };\n },\n\n data()\n {\n return {\n uid: UUID(),\n virtuals: [],\n visible: [],\n childNodes: {},\n highlight: [],\n firstSelected: null,\n tempCurrent: this.current,\n tempExpanded: this.expanded,\n tempSelected: this.selected\n };\n },\n\n beforeMount()\n {\n this.drag = new NDraghandler(this);\n },\n\n mounted()\n {\n let frame = this.$refs.virtualscroller.\n $refs.inner;\n\n this.drag.bindRoot(frame);\n\n this.$watch('tempSelected', this.watchSelected,\n { deep: true });\n\n this.refreshVirtuals();\n },\n\n beforeUnmount()\n {\n this.drag.unbindRoot();\n\n Dom.find(document).off('keydown', null, this.uid);\n },\n\n watch: {\n\n items()\n {\n if ( this.scrollTopOnChange ) {\n this.scrollTo();\n }\n\n this.refreshVirtuals();\n },\n\n virtuals()\n {\n this.filterVirtuals();\n },\n\n selected(value)\n {\n this.tempSelected = value;\n },\n\n current(value)\n {\n this.tempCurrent = value;\n }\n\n },\n\n methods: {\n\n watchSelected()\n {\n if ( ! this.tempSelected.length ) {\n return this.firstSelected = null;\n }\n\n this.firstSelected = Arr.find(this.virtuals, {\n [this.uniqueProp]: this.tempSelected[0]\n });\n },\n\n refreshVirtuals()\n {\n this.virtuals = this.drag.reduce(this.items);\n\n if ( global.DEBUG_NDLIST ) {\n console.log('Total virtual items mounted: ' + this.virtuals.length);\n }\n },\n\n filterVirtuals()\n {\n this.visible = Arr.filter(this.virtuals, (node) => {\n return node.depth === 0;\n });\n },\n\n getIndex(unique)\n {\n return Arr.findIndex(this.visible, {\n [this.uniqueProp]: unique\n });\n },\n\n getCurrentIndex()\n {\n if ( ! this.tempCurrent ) {\n return -1;\n }\n\n return Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n },\n\n scrollTo(x = 0, y = 0)\n {\n this.$refs.virtualscroller.scrollTo(x, y);\n },\n\n scrollToIndex(index)\n {\n this.$refs.virtualscroller.scrollIntoView(index);\n },\n\n isDraggable(node)\n {\n let canDrag = this.allowDrag;\n\n if ( ! Any.isFunction(canDrag) ) {\n canDrag = () => this.allowDrag;\n }\n\n return canDrag(node);\n },\n\n isHighlight(node)\n {\n return Arr.has(this.highlight, node.value[this.uniqueProp]);\n },\n\n highlightNode(value, key = null)\n {\n clearTimeout(this.refresh);\n\n // Clear highlight items\n this.highlight = [];\n\n Arr.recursive(this.items, this.childProp, (node, cascade) => {\n\n if ( Obj.get(node, key || this.uniqueProp) !== value ) {\n return;\n }\n\n Arr.each(cascade, (item) => {\n Arr.add(this.tempExpanded, item[this.uniqueProp]);\n });\n\n Arr.add(this.highlight, node[this.uniqueProp]);\n });\n\n if ( ! this.highlight.length ) {\n return;\n }\n\n this.$nextTick(this.scrollToHighlight);\n\n this.refresh = setTimeout(() =>\n this.highlight = [], this.highlightTimeout);\n\n this.filterVirtuals();\n },\n\n scrollToHighlight()\n {\n if ( ! this.highlight.length ) {\n return;\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: Arr.first(this.highlight)\n });\n\n this.$refs.virtualscroller.scrollIntoView(index);\n },\n\n isCurrent(node)\n {\n return this.renderCurrent && this.tempCurrent &&\n node.value[this.uniqueProp] === this.tempCurrent[this.uniqueProp] ;\n },\n\n setCurrent(node)\n {\n let isSameNode = this.tempCurrent &&\n this.tempCurrent[this.uniqueProp] === node.value[this.uniqueProp];\n\n if ( isSameNode ) {\n return;\n }\n\n this.$emit('update:current',\n this.tempCurrent = node.item);\n\n Event.fire('NDraggrid:syncCurrent', node.item, this.uid);\n },\n\n setRawCurrent(index)\n {\n let route = Obj.get(this.visible,\n [index, 'route']);\n\n if ( ! route ) {\n return this.setRawCurrent(0);\n }\n\n let item = Obj.get(this, route);\n\n this.$refs.virtualscroller\n .scrollIntoView(index);\n\n this.$emit('update:current',\n this.tempCurrent = item);\n\n Event.fire('NDraggrid:syncCurrent', item, this.uid);\n },\n\n setNextCurrent()\n {\n if ( ! this.visible.length ) {\n return;\n }\n\n let reset = 0;\n\n if ( ! this.tempCurrent ) {\n return this.setRawCurrent(reset);\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n\n if ( index !== -1 ) {\n index++;\n }\n\n if ( index >= this.visible.length ) {\n index = reset;\n }\n\n this.setRawCurrent(index);\n },\n\n setPrevCurrent()\n {\n if ( ! this.visible.length ) {\n return;\n }\n\n let reset = this.visible.length - 1;\n\n if ( ! this.tempCurrent ) {\n return this.setRawCurrent(reset);\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n\n if ( index !== -1 ) {\n index--;\n }\n\n if ( index < 0 ) {\n index = reset;\n }\n\n this.setRawCurrent(index);\n },\n\n syncCurrent()\n {\n return ['NDraggrid:syncCurrent', this.uid];\n },\n\n isDisabled(node)\n {\n let canSelect = this.allowSelect;\n\n if ( ! Any.isFunction(canSelect) ) {\n canSelect = () => this.allowSelect;\n }\n\n return ! canSelect(node) || (this.firstSelected &&\n node.value.depth !== this.firstSelected.depth);\n },\n\n isSelected(node)\n {\n return Arr.has(this.tempSelected, node.value[this.uniqueProp]);\n },\n\n isTotalSelected()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n return visible.length === this.tempSelected;\n },\n\n isInterSelected()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n return visible.length !== this.tempSelected &&\n this.tempSelected;\n },\n\n selectItem(node)\n {\n if ( this.isDisabled(node) ) {\n return;\n }\n\n Arr.toggle(this.tempSelected, node.value[this.uniqueProp]);\n\n this.$emit('update:selected', this.tempSelected);\n },\n\n selectAll()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n let indexies = Arr.each(visible, (item) => {\n return item[this.uniqueProp];\n });\n\n if ( indexies.length === this.tempSelected.length ) {\n return this.$emit('update:selected', this.tempSelected = []);\n }\n\n this.$emit('update:selected', this.tempSelected = indexies);\n },\n\n unselectAll()\n {\n if ( this.tempSelected.length ) {\n this.$emit('update:selected', this.tempSelected = []);\n }\n },\n\n bindKeydown()\n {\n if ( ! this.keyEvents ) {\n return;\n }\n\n Dom.find(document).on('keydown',\n this.onKeydown, this.uid)\n },\n\n unbindKeydown()\n {\n if ( ! this.keyEvents ) {\n return;\n }\n\n Dom.find(document).off('keydown',\n null, this.uid)\n },\n\n onKeydown(event, el)\n {\n if ( Dom.find(el).closest('input') ) {\n return;\n }\n\n if ( event.which === 38 ) {\n event.preventDefault();\n event.stopPropagation();\n // this.setPrevCurrent();\n }\n\n if ( event.which === 40 ) {\n event.preventDefault();\n event.stopPropagation();\n // this.setNextCurrent();\n }\n }\n\n },\n\n renderEmpty()\n {\n return (\n <NEmptyIcon disabled={! this.showEmptyIcon} class=\"n-draggrid__empty\">\n { this.$slots.empty && this.$slots.empty() || this.trans('No entries') }\n </NEmptyIcon>\n );\n },\n\n renderItem(props)\n {\n return (\n <NDraggridItem {...Obj.except(props, ['index'])}>\n { { default: this.$slots.default } }\n </NDraggridItem>\n );\n },\n\n render()\n {\n let classList = [\n 'n-draggrid',\n 'n-draggrid--' + this.size,\n 'n-draggrid--' + this.type\n ];\n\n if ( ! this.items.length ) {\n classList.push('n-empty');\n }\n\n let passed = [\n 'threshold', 'deathzone', 'itemHeight', 'itemWidth',\n 'overflowX', 'overflowY', 'offsetX', 'offsetY', 'useKeys'\n ];\n\n let props = Obj.only(this.$props, passed, {\n items: this.visible,\n onMouseenter: this.bindKeydown,\n onMouseleave: this.unbindKeydown\n });\n\n return (\n <NVirtualscroller ref=\"virtualscroller\" class={classList} {...props}>\n { { default: this.ctor('renderItem'), empty: this.ctor('renderEmpty') } }\n </NVirtualscroller>\n );\n }\n\n}\n","import { Str, Arr, Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDraggridItem',\n\n inject: {\n\n NDraggable: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return {\n NDraggableItem: this\n };\n },\n\n props: {\n\n value: {\n required: true\n }\n\n },\n\n computed: {\n\n uid()\n {\n return Obj.get(this.value, this.NDraggable.uniqueProp);\n },\n\n item()\n {\n return Obj.get(this.NDraggable, this.value.route);\n },\n\n touch() {\n return !! ('ontouchstart' in window ||\n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n init: ! this.NDraggable.lazyload\n };\n },\n\n mounted()\n {\n this.timer = setTimeout(() => {\n\n if ( this.NDraggable.draggable ) {\n this.timer = setTimeout(() => {\n this.NDraggable.drag.bindNode(this);\n }, 50);\n }\n\n this.init = true;\n }, 40);\n },\n\n beforeUnmount()\n {\n if ( ! this.init ) {\n clearTimeout(this.timer);\n }\n\n this.NDraggable.drag.unbindNode(this);\n },\n\n methods: {\n\n copy()\n {\n return this.NDraggable.drag.copyNode(this);\n },\n\n remove()\n {\n return this.NDraggable.drag.removeNode(this);\n },\n\n isDisabled()\n {\n return this.NDraggable.isDisabled(this);\n },\n\n isHighlight()\n {\n return this.NDraggable.isHighlight(this);\n },\n\n isCurrent()\n {\n return this.NDraggable.isCurrent(this);\n },\n\n isDraggable()\n {\n return this.NDraggable.isDraggable(this);\n },\n\n isSelected()\n {\n return this.NDraggable.isSelected(this);\n },\n\n selectItem()\n {\n this.NDraggable.selectItem(this);\n },\n\n onClick()\n {\n this.NDraggable.setCurrent(this);\n\n if ( Arr.has(global.keyMods, 91) ) {\n this.NDraggable.selectItem(this);\n }\n\n this.NDraggable.$emit('row-click', this);\n },\n\n onDblclick()\n {\n this.NDraggable.setCurrent(this);\n\n this.NDraggable.$emit('row-dblclick', this);\n }\n\n },\n\n renderElement()\n {\n let classList = [\n 'n-draglist-item__element'\n ];\n\n if ( ! this.init ) {\n return (<div class={classList} />);\n }\n\n let props = {\n value: this.value,\n item: this.item,\n copy: this.copy,\n remove: this.remove,\n };\n\n let renderFunction = this.$slots.default;\n\n if ( this.NDraggable.renderNode ) {\n renderFunction = this.NDraggable.renderNode;\n }\n\n return (\n <div class={classList}>\n {renderFunction(props)}\n </div>\n );\n },\n\n renderHandle()\n {\n if ( ! this.NDraggable.renderHandle ) {\n return null;\n }\n\n let props = {};\n\n if ( this.NDraggable.draggable && this.isDraggable() ) {\n props.draggable = true;\n }\n\n return (\n <div class=\"n-draggrid-item__handle\" {...props}>\n <div class=\"n-draggrid-item__ellipsis\">\n <i class={ nano.Icons.handle }></i>\n </div>\n </div>\n );\n },\n\n renderSelect()\n {\n if ( ! this.NDraggable.renderSelect ) {\n return null;\n }\n\n let props = {\n ['on' + Str.ucfirst(this.mousedown)]: this.selectItem\n };\n\n return (\n <div class=\"n-draggrid-item__select\" {...props}>\n <div class=\"n-draggrid-item__checkbox\">\n <i class={ nano.Icons.checked }></i>\n </div>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-draggrid-item'\n ];\n\n if ( this.isDisabled() ) {\n classList.push('n-disabled');\n }\n\n if ( this.isSelected() ) {\n classList.push('n-selected');\n }\n\n if ( this.isCurrent() ) {\n classList.push('n-current');\n }\n\n if ( this.isHighlight() ) {\n classList.push('n-highlight');\n }\n\n let props = {\n onClick: this.onClick,\n onDblclick: this.onDblclick,\n };\n\n if ( this.NDraggable.draggable && ! this.NDraggable.handle && this.isDraggable() ) {\n props.draggable = true;\n }\n\n props['data-unique'] = this.value[this.NDraggable.uniqueProp];\n\n return (\n <div class={classList} {...props}>\n { this.ctor('renderHandle')() }\n { this.ctor('renderSelect')() }\n { this.ctor('renderElement')() }\n </div>\n );\n }\n\n}\n","import { UUID, Num, Arr, Obj, Dom, Any, Event, Locale } from \"@kizmann/pico-js\";\nimport NDraghandler from \"../draghandler/draghandler\";\n\nglobal.DEBUG_NDLIST = false;\n\nexport default {\n\n name: 'NDropzone',\n\n model: {\n prop: 'item'\n },\n\n props: {\n\n item: {\n default()\n {\n return null;\n }\n },\n\n renderNode: {\n default()\n {\n return null;\n }\n },\n\n draggable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n group: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n allowGroups: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n transformDrop: {\n default()\n {\n return (node) => node;\n }\n },\n\n disableMove: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n insertNode: {\n default()\n {\n return true;\n }\n },\n\n removeNode: {\n default()\n {\n return true;\n }\n },\n\n allowDrop: {\n default()\n {\n return () => true;\n }\n },\n\n },\n\n provide()\n {\n return {\n NDropzone: this\n };\n },\n\n data()\n {\n return {\n uid: UUID(),\n };\n },\n\n beforeMount()\n {\n this.drag = new NDraghandler(this);\n },\n\n mounted()\n {\n this.drag.bindRoot(this.$el);\n },\n\n beforeUnmount()\n {\n this.drag.unbindRoot();\n },\n\n renderItem()\n {\n if ( Any.isEmpty(this.item) ) {\n return null;\n }\n\n return this.$slots.default && this.$slots.default(this.item)\n },\n\n renderEmpty()\n {\n if ( ! Any.isEmpty(this.item) ) {\n return null;\n }\n\n return (\n <NEmptyIcon disabled={! this.showEmptyIcon} class=\"n-dropzone__empty\">\n { this.$slots.empty && this.$slots.empty() || this.trans('No entry') }\n </NEmptyIcon>\n );\n },\n\n render()\n {\n let classList = [\n 'n-dropzone',\n 'n-dropzone--' + this.size,\n 'n-dropzone--' + this.type\n ];\n\n if ( Any.isEmpty(this.item) ) {\n classList.push('n-empty');\n }\n\n return (\n <div class={classList}>\n {[this.ctor('renderItem')(), this.ctor('renderEmpty')()]}\n </div>\n );\n }\n\n}\n","import { Obj, Arr, Any, Dom } from \"@kizmann/pico-js\";\n\nconst fileMap = {\n image: [\n 'jpg', 'jpeg', 'gif', 'svg', 'png'\n ],\n video: [\n 'mp4', 'webm', 'mov'\n ],\n font: [\n 'woff', 'ttf', 'otf'\n ],\n text: [\n 'csv', 'txt', 'html'\n ],\n application: [\n 'pdf', 'doc', 'xls'\n ]\n}\n\nexport default {\n\n name: 'NPreview',\n\n props: {\n\n file: {\n default()\n {\n return null;\n }\n },\n\n thumb: {\n default()\n {\n return null;\n }\n },\n\n fit: {\n default()\n {\n return 'cover';\n },\n type: [String]\n },\n\n preview: {\n default()\n {\n return true;\n },\n typre: [Boolean]\n },\n\n showSrc: {\n default()\n {\n return true;\n },\n typre: [Boolean]\n },\n\n map: {\n default()\n {\n return fileMap;\n },\n type: [Object]\n }\n\n },\n\n computed: {\n\n tempFile()\n {\n return this.file || this.thumb;\n },\n\n tempThumb()\n {\n return this.thumb || this.file;\n },\n\n fileMime()\n {\n return this.getFileMime();\n },\n\n thumbMime()\n {\n return this.getThumbMime();\n },\n\n },\n\n data()\n {\n return {\n lightbox: false, load: false\n };\n },\n\n methods: {\n\n getFileMime(fallback = null)\n {\n let file = Obj.get(this.tempFile, 'name',\n this.tempFile);\n\n if ( Any.isEmpty(file) ) {\n return fallback;\n }\n\n let extension = file.replace(/^.*?\\.([^.?]+)(\\?.*?)?$/,\n '$1');\n\n Obj.each(this.map, (exts, key) => {\n if ( Arr.has(exts, extension) ) fallback = key;\n });\n\n if ( global.resolveVimeo(file) ) {\n fallback = 'video';\n }\n\n if ( global.resolveYoutube(file) ) {\n fallback = 'video';\n }\n\n return fallback;\n },\n\n getThumbMime(fallback = null)\n {\n let file = Obj.get(this.tempThumb, 'name',\n this.tempThumb);\n\n if ( Any.isEmpty(file) ) {\n return fallback;\n }\n\n let extension = file.replace(/^.*?\\.([^.?]+)(\\?.*?)?$/,\n '$1');\n\n Obj.each(this.map, (exts, key) => {\n if ( Arr.has(exts, extension) ) fallback = key;\n });\n\n return fallback;\n },\n\n showLightbox()\n {\n this.lightbox = true;\n },\n\n },\n\n renderPreview()\n {\n if ( ! this.preview ) {\n return this.ctor('renderFull')();\n }\n\n if ( this.thumbMime === 'image' ) {\n return (<NPreviewImage src={this.tempThumb} />);\n }\n\n let props = {\n type: this.thumbMime,\n showSrc: false,\n }\n\n return (<NPreviewPlain src={this.tempThumb} {...props} />);\n },\n\n renderFull()\n {\n let isObject = Any.isObject(this.tempFile);\n\n if ( this.fileMime === 'image' ) {\n return (<NPreviewImage src={this.tempFile} />);\n }\n\n if ( this.fileMime === 'video' && ! isObject ) {\n return (<NPreviewVideo src={this.tempFile} />);\n }\n\n let props = {\n type: this.thumbMime,\n showSrc: this.showSrc,\n }\n\n return (<NPreviewPlain src={this.tempFile} {...props} />);\n },\n\n renderLightbox()\n {\n if ( ! this.lightbox || ! this.preview ) {\n return null;\n }\n\n let slots = {\n raw: this.ctor('renderFull')\n }\n\n let props = {\n type: 'preview',\n width: '80%',\n height: '90%',\n }\n\n return (<NModal vModel={this.lightbox} {...props} v-slots={slots} />);\n },\n\n render()\n {\n let classList = [\n 'n-preview',\n 'n-preview--' + this.fit\n ];\n\n if ( this.preview ) {\n classList.push('n-clickable');\n }\n\n if ( this.fileMime ) {\n classList.push('n-mime-' + this.fileMime);\n }\n\n let props = {};\n\n if ( this.preview ) {\n props.onClick = this.showLightbox;\n }\n\n return (\n <div class={classList} {...props}>\n { [this.ctor('renderPreview')(), this.ctor('renderLightbox')()] }\n </div>\n );\n }\n\n}","import { Obj, Arr, Str, Any, Dom } from \"@kizmann/pico-js\";\n\nglobal.resolveYoutube = function(url, fallback = null) {\n\n if ( ! Any.isString(url) ) {\n return fallback;\n }\n\n let host = url.match(/^https?:\\/\\/(www\\.)?(youtube\\.com|youtu\\.be)/);\n\n if ( ! host ) {\n return fallback;\n }\n\n let id = url.match(/(\\?v=.*?)(?=&|$)/);\n\n if ( id && id.length === 2 ) {\n return id[0].replace(/^\\?v=/, '');\n }\n\n let path = url.match(/(\\.be\\/.*?)(?=\\?|$)/);\n\n if ( path && path.length === 2 ) {\n return path[0].replace(/^\\.be\\//, '');\n }\n\n let frame = url.match(/(\\/embed\\/)(.*?$)/);\n\n if ( frame && frame.length === 3 ) {\n return frame[0].replace(/^\\/embed\\//, '');\n }\n\n return fallback;\n}\n\nglobal.resolveVimeo = function(url, fallback = null) {\n\n if ( ! Any.isString(url) ) {\n return fallback;\n }\n\n let host = url.match(/^https?:\\/\\/(www\\.|player\\.)?vimeo\\.com/);\n\n if ( ! host ) {\n return fallback;\n }\n\n let path = url.match(/(\\/[0-9]+)(&|$)/);\n\n if ( path && path.length === 3 ) {\n return path[0].replace(/(^\\/|&$)/, '');\n }\n\n return fallback;\n}\n\nexport default {\n\n name: 'NPreviewVideo',\n\n props: {\n\n src: {\n default()\n {\n return null;\n }\n },\n\n },\n\n data()\n {\n return {\n provider: 'plain', unique: null, tempSrc: null\n };\n },\n\n mounted()\n {\n this.resolveType();\n },\n\n watch: {\n\n 'src': function () {\n this.resolveType();\n }\n\n },\n\n methods: {\n\n resolveType()\n {\n this.tempSrc = null;\n\n if ( this.resolveYoutube() ) {\n return;\n }\n\n if ( this.resolveVimeo() ) {\n return;\n }\n\n if ( Any.isObject(this.src) ) {\n this.resolveData();\n }\n\n this.provider = 'plain';\n },\n\n resolveData()\n {\n console.log('Coming at some point (blob stream)....');\n },\n\n resolveYoutube()\n {\n let youtube = global.resolveYoutube(this.src);\n\n if ( ! youtube ) {\n return false;\n }\n\n this.provider = 'youtube';\n\n this.$emit('resolve:youtube', this.unique = youtube);\n\n return true;\n },\n\n resolveVimeo()\n {\n let vimeo = global.resolveVimeo(this.src);\n\n if ( ! vimeo ) {\n return false;\n }\n\n this.provider = 'vimeo';\n\n this.$emit('resolve:vimeo', this.unique = vimeo);\n\n return true;\n }\n\n },\n\n renderYoutube()\n {\n let props = {\n src: `https://www.youtube.com/embed/${this.unique}`\n };\n\n return (\n <iframe {...props}></iframe>\n );\n },\n\n renderVimeo()\n {\n let props = {\n src: `https://player.vimeo.com/video/${this.unique}`\n };\n\n return (\n <iframe {...props}></iframe>\n );\n },\n\n renderPlain()\n {\n let src = Obj.get(this.src, 'name', this.src);\n\n let extension = src.replace(/^.*?\\.([^.?]+)(\\?.*?)?$/,\n '$1');\n\n return (\n <video width=\"320\" height=\"240\" controls>\n <source src={this.tempSrc || this.src} type={`video/${extension}`} />\n </video>\n );\n },\n\n render()\n {\n let classList = [\n 'n-preview-video'\n ];\n\n return (\n <div class={classList}>\n { this.ctor('render' + Str.ucfirst(this.provider))() }\n </div>\n );\n }\n\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n cmer(classList)\n {\n let attrsList = {};\n\n if ( Any.isString(classList) ) {\n attrsList[classList] = true;\n }\n\n if ( Any.isArray(classList) ) {\n Arr.each(classList, (value) => attrsList[value] = true);\n }\n\n if ( Any.isPlain(classList) ) {\n Obj.assign(attrsList, classList);\n }\n\n if ( Any.isString(this.$attrs.class) ) {\n attrsList[this.$attrs.class] = true;\n }\n\n if ( Any.isArray(this.$attrs.class) ) {\n Arr.each(this.$attrs.class, (value) => attrsList[value] = true);\n }\n\n if ( Any.isPlain(this.$attrs.class) ) {\n Obj.assign(attrsList, this.$attrs.class);\n }\n\n return attrsList;\n }\n\n}\n","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\nimport { Comment } from 'vue';\n\nexport default {\n\n cslo(slot = 'default', props = {})\n {\n if ( ! this.$slots[slot] ) {\n return false;\n }\n\n return this.$slots[slot](props).findIndex((o) => {\n return o.type !== Comment;\n }) !== -1;\n }\n\n}\n","import { Arr, Obj, Dom, Locale } from \"@kizmann/pico-js\";\n\nimport CtorMixin from \"./mixins/src/ctor\";\nimport CmerMixin from \"./mixins/src/cmer\";\nimport CsloMixin from \"./mixins/src/cslo\";\n\nexport const Icons = {\n handle: 'fa fa-ellipsis-v',\n checked: 'fa fa-check',\n circle: 'fa fa-circle',\n intermediate: 'fa fa-minus',\n clock: 'fa fa-clock',\n calendar: 'fa fa-calendar',\n times: 'fa fa-times',\n primary: 'fa fa-info-circle',\n success: 'fa fa-check-circle',\n warning: 'fa fa-exclamation-circle',\n danger: 'fa fa-times-circle',\n info: 'fa fa-info-circle',\n angleUp: 'fa fa-angle-up',\n angleRight: 'fa fa-angle-right',\n angleDown: 'fa fa-angle-down',\n angleLeft: 'fa fa-angle-left',\n angleDoubleLeft: 'fa fa-angle-double-left',\n angleDoubleRight: 'fa fa-angle-double-right'\n};\n\nexport const Settings = {\n iconPosition: 'before',\n notifySize: 'md',\n notifyPosition: 'bottom-start'\n};\n\nexport function Install(App, Icons = {}, Styles = {})\n{\n /**\n * @const global.pi\n */\n\n if ( typeof global.pi === 'undefined' ) {\n return console.error('pico-js is not available.');\n }\n\n Obj.each(global.pi, (value, key) => {\n App.config.globalProperties[key] = value;\n });\n\n App.config.globalProperties.ctor = CtorMixin.ctor;\n App.config.globalProperties.cmer = CmerMixin.cmer;\n App.config.globalProperties.cslo = CsloMixin.cslo;\n\n App.config.globalProperties.trans = Locale.trans;\n App.config.globalProperties.choice = Locale.choice;\n\n global.nano.Icons = Obj.assign(Icons, global.nano.Icons);\n global.nano.Settings = Obj.assign(Settings, global.nano.Settings);\n\n require('./alert/index').default(App);\n require('./notification/index').default(App);\n require('./empty/index').default(App);\n require('./config/index').default(App); //!complex 17.1\n require('./scrollbar/index').default(App);\n require('./virtualscroller/index').default(App);\n require('./draggable/index').default(App);\n require('./loader/index').default(App);\n require('./resizer/index').default(App);\n require('./popover/index').default(App);\n require('./modal/index').default(App);\n require('./button/index').default(App);\n require('./input/index').default(App);\n require('./input-number/index').default(App);\n require('./textarea/index').default(App);\n require('./select/index').default(App);\n require('./checkbox/index').default(App);\n require('./radio/index').default(App);\n require('./slider/index').default(App);\n require('./switch/index').default(App);\n require('./confirm/index').default(App);\n require('./cascader/index').default(App);\n require('./datepicker/index').default(App);\n require('./timepicker/index').default(App);\n require('./datetimepicker/index').default(App);\n require('./durationpicker/index').default(App);\n require('./transfer/index').default(App);\n require('./form/index').default(App); // check\n require('./tabs/index').default(App);\n require('./tags/index').default(App);\n require('./collapse/index').default(App);\n require('./table/index').default(App); // 18.1 options\n require('./paginator/index').default(App);\n require('./info/index').default(App); //!complex 16.1\n require('./preview/index').default(App);\n require('./map/index').default(App);\n require('./file/index').default(App);\n require('./rating/index').default(App);\n\n // require('./chart/index'); // Ignore\n // require('./wysiwyg/index'); // Ignore\n}\n\nexport const Nano = {\n Icons: Icons, Settings: Settings, Install: Install\n};\n\nglobal.keyMods = [];\n\nDom.find(document).on('keydown', (event) => {\n Arr.add(global.keyMods, event.which);\n});\n\nDom.find(document).on('keyup', (event) => {\n Arr.remove(global.keyMods, event.which);\n});\n\nDom.find(document).on('dragstart', (event) => {\n Arr.add(global.keyMods, event.which);\n});\n\nDom.find(document).on('dragend', (event) => {\n global.keyMods = [];\n});\n\nif ( typeof global.nano === 'undefined' ) {\n global.nano = Nano;\n}\n\nexport default Nano;\n","import Virtualscroller from './src/virtualscroller/virtualscroller.beta';\n\nexport default function (App) {\n App.component(Virtualscroller.name, Virtualscroller);\n}","import Draglist from './src/draglist/draglist';\nimport DraglistItem from './src/draglist-item/draglist-item';\nimport Draggrid from './src/draggrid/draggrid';\nimport DraggridItem from './src/draggrid-item/draggrid-item';\nimport Dropzone from './src/dropzone/dropzone';\n\nexport default function (App) {\n App.component(Draglist.name, Draglist);\n App.component(DraglistItem.name, DraglistItem);\n App.component(Draggrid.name, Draggrid);\n App.component(DraggridItem.name, DraggridItem);\n App.component(Dropzone.name, Dropzone);\n}","import { Any, Arr, Obj, Dom, Event, UUID } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NTable',\n\n provide()\n {\n return {\n NTable: this\n };\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n draggable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n visible: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n current: {\n default()\n {\n return null;\n }\n },\n\n selected: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n expanded: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n filter: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n sortProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n sortDir: {\n default()\n {\n return 'desc';\n },\n type: [String]\n },\n\n closeFilterOnEnter: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n group: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n allowGroups: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n handle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n safezone: {\n default()\n {\n return (height) => height * 0.51;\n }\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n itemHeight: {\n default()\n {\n return 38;\n },\n type: [Number]\n },\n\n itemOffset: {\n default()\n {\n return 30;\n },\n type: [Number]\n },\n\n scrollTopOnChange: {\n default()\n {\n return false;\n }\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n renderSelect: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n renderHandle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderExpand: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderCurrent: {\n default()\n {\n return true;\n }\n },\n\n transformDrop: {\n default()\n {\n return (node) => node;\n }\n },\n\n disableMove: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n insertNode: {\n default()\n {\n return () => true;\n }\n },\n\n removeNode: {\n default()\n {\n return () => true;\n }\n },\n\n allowSelect: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrag: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrop: {\n default()\n {\n return () => true;\n }\n },\n\n threshold: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n useKeys: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n keyEvents: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n highlightTimeout: {\n default()\n {\n return 7000;\n },\n type: [Number]\n },\n\n },\n\n computed: {\n\n checked()\n {\n return !!this.tempSelected.length &&\n this.tempSelected.length === this.items.length;\n },\n\n intermediate()\n {\n return !!this.tempSelected.length &&\n this.tempSelected.length !== this.items.length\n }\n\n },\n\n data()\n {\n return {\n uid: UUID(),\n elements: [],\n tempVisible: this.visible,\n tempVisibleProps: [],\n tempSelected: this.selected,\n tempSortProp: this.sortProp,\n tempSortDir: this.sortDir,\n tempFilter: this.filter,\n tempFilterProps: [],\n }\n },\n\n mounted()\n {\n this.$watch('tempVisible',\n this.makeVisibleProps, { deep: true });\n\n if ( !this.tempVisible.length ) {\n Arr.each(this.elements, this.detectVisible);\n }\n },\n\n watch: {\n\n selected(value)\n {\n this.tempSelected = value;\n },\n\n },\n\n methods: {\n\n addColumn(column)\n {\n Arr.add(this.elements, column,\n { uid: column.uid });\n },\n\n removeColumn(column)\n {\n Arr.remove(this.elements,\n { uid: column.uid });\n },\n\n getColumnIndex(column)\n {\n if ( !Any.isString(column) ) {\n column = column['prop'];\n }\n\n return Arr.findIndex(this.tempVisibleProps,\n column);\n },\n\n getColumnVisiblity(column)\n {\n if ( !Any.isString(column) ) {\n column = column.prop;\n }\n\n return Arr.has(this.tempVisible, column);\n },\n\n getColumnSorted(column)\n {\n let prop = column;\n\n if ( !Any.isString(prop) ) {\n prop = column.sortProp;\n }\n\n if ( Any.isEmpty(prop) ) {\n prop = column.prop;\n }\n\n if ( this.tempSortProp !== prop ) {\n return null;\n }\n\n return this.tempSortDir;\n },\n\n getColumnFilter(column)\n {\n let prop = column;\n\n if ( !Any.isString(prop) ) {\n prop = column.filterProp;\n }\n\n if ( Any.isEmpty(prop) ) {\n prop = column.prop;\n }\n\n return Arr.find(this.tempFilter, {\n property: prop\n });\n },\n\n getColumnFiltered(column)\n {\n let prop = column;\n\n if ( !Any.isString(prop) ) {\n prop = column.filterProp;\n }\n\n if ( Any.isEmpty(prop) ) {\n prop = column.prop;\n }\n\n return Arr.has(this.tempFilterProps, prop);\n },\n\n detectVisible(column)\n {\n if ( column.detectVisibity() ) {\n Arr.add(this.tempVisible, column.prop);\n }\n },\n\n makeVisibleProps()\n {\n this.tempVisibleProps = Arr.intersect(\n Arr.extract(this.elements, 'prop'), this.tempVisible);\n\n this.$nextTick(this.$refs.scrollbar.onResize);\n },\n\n sortByColumn(column)\n {\n let prop = column;\n\n if ( !Any.isString(prop) ) {\n prop = column.sortProp;\n }\n\n if ( Any.isEmpty(prop) ) {\n prop = column.prop;\n }\n\n\n let dir = this.tempSortDir;\n\n if ( prop === this.tempSortProp && this.tempSortDir === 'desc' ) {\n dir = 'asc';\n }\n\n if ( prop === this.tempSortProp && this.tempSortDir === 'asc' ) {\n dir = 'desc';\n }\n\n if ( this.tempSortDir !== dir ) {\n this.$emit('update:sortDir', this.tempSortDir = dir);\n }\n\n if ( this.tempSortProp !== prop ) {\n this.$emit('update:sortProp', this.tempSortProp = prop);\n }\n\n this.$emit('sort', this.tempSortProp, this.tempSortDir);\n },\n\n replaceFilter(filter, search)\n {\n Arr.replace(this.tempFilter, filter, search);\n\n let filters = Arr.filter(this.tempFilter, (filter) => {\n return Arr.has(this.tempFilterProps, filter.property);\n });\n\n this.$emit('update:filter', filters);\n\n this.$emit('filter', filters, this.tempFilterProps);\n },\n\n resetFilter()\n {\n this.tempFilter = this.tempFilterProps = [];\n\n Event.fire('NTable:reset', this.uid);\n\n this.$emit('update:filter', this.tempFilter);\n\n this.$emit('filter', this.tempFilter, this.tempFilterProps);\n },\n\n selectAll()\n {\n this.$refs.draggable.selectAll();\n },\n\n highlightNode(value, key = null)\n {\n this.$refs.draggable.highlightNode(value, key);\n },\n\n syncCurrent()\n {\n return this.$refs.draggable.syncCurrent();\n },\n\n refreshCurrent()\n {\n this.$refs.draggable.refreshCurrent();\n },\n\n },\n\n renderHandle()\n {\n if ( !this.renderHandle ) {\n return null;\n }\n\n return (\n <div class=\"n-draglist-item__handle\">\n { /* Only used in row */}\n </div>\n )\n },\n\n renderExpand()\n {\n if ( !this.renderExpand ) {\n return null;\n }\n\n return (\n <div class=\"n-draglist-item__expand\">\n { /* Only used in row */}\n </div>\n )\n },\n\n renderSelect()\n {\n if ( !this.renderSelect ) {\n return null;\n }\n\n let props = {\n modelValue: this.checked,\n intermediate: this.intermediate,\n disabled: !this.items.length,\n onClick: this.selectAll\n };\n\n return (\n <div class=\"n-draglist-item__select\">\n <NCheckbox {...props}></NCheckbox>\n </div>\n );\n },\n\n renderBody(props)\n {\n let columns = Obj.each(this.elements, (column) => {\n return column.ctor('renderBody')(props);\n });\n\n return Obj.values(columns);\n },\n\n renderContext()\n {\n let columns = Obj.each(this.elements, (column) => {\n return (\n <NCheckbox class=\"n-table__checkbox\" value={column.prop}>\n {column.label}\n </NCheckbox>\n );\n });\n\n return (\n <NPopover trigger=\"context\" width={220}>\n <NCheckboxGroup vModel={this.tempVisible} align=\"vertical\">\n {Obj.values(columns)}\n </NCheckboxGroup>\n </NPopover>\n );\n },\n\n renderHead()\n {\n let defaultRender = [\n this.ctor('renderHandle')(),\n this.ctor('renderExpand')(),\n this.ctor('renderSelect')(),\n this.ctor('renderContext')()\n ];\n\n let columns = Obj.each(this.elements, (column) => {\n return column.ctor('renderHead')();\n });\n\n return (\n <div class=\"n-table__header\">\n {defaultRender} {Obj.values(columns)}\n </div>\n );\n },\n\n render()\n {\n let except = [\n 'visible', 'filter', 'sortProp',\n 'sortDir', 'closeFilterOnEnter'\n ];\n\n let props = Obj.except(this.$props, except, {\n items: this.items,\n selected: this.tempSelected,\n overflowX: false,\n useKeys: this.useKeys,\n // renderNode: this.ctor('renderBody')\n });\n\n props['onRowClick'] = (...args) => {\n this.$emit('row-click', ...args);\n }\n\n props['onRowDblclick'] = (...args) => {\n this.$emit('row-dblclick', ...args);\n }\n\n props['onUpdate:items'] = (value) => {\n this.$emit('update:items', value);\n }\n\n props['onUpdate:current'] = (value) => {\n this.$emit('update:current', value);\n }\n\n props['onUpdate:expanded'] = (value) => {\n this.$emit('update:expanded', value);\n }\n\n props['onUpdate:selected'] = (value) => {\n this.$emit('update:selected', this.tempSelected = value);\n }\n\n let draggableHtml = (\n <div class=\"n-table__body\">\n <NDraglist ref=\"draggable\" {...props} offsetX={25}>\n {{ default: this.ctor('renderBody') }}\n </NDraglist>\n </div>\n );\n\n return (\n <div class=\"n-table\">\n <NScrollbar ref=\"scrollbar\" class=\"n-table__wrap\" fixture={true} overflowY={false}>\n <div class=\"n-table__inner\">\n {[this.ctor('renderHead')(), draggableHtml]}\n </div>\n </NScrollbar>\n {this.$slots.default && this.$slots.default()}\n </div>\n );\n },\n\n}","import { Any, Arr, Obj, Str, Dom, UUID, Num, Locale } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NTableColumn',\n\n inject: {\n\n NTable: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n prop: {\n default()\n {\n return UUID();\n },\n type: [String]\n },\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n tooltip: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'string';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'left';\n },\n type: [String]\n },\n\n sort: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n filter: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n visible: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean, Function]\n },\n\n breakpoint: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n previewProp: {\n default()\n {\n return 'preview';\n },\n type: [String]\n },\n\n matrix: {\n default()\n {\n return - 1;\n },\n type: [Number, String]\n },\n\n matrixProp: {\n default()\n {\n return 'matrix';\n },\n type: [String]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Object, Array, Function]\n },\n\n optionsValue: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n optionsLabel: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n sortProp: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n filterProp: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n fluid: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n fixedWidth: {\n default()\n {\n return 0;\n }\n },\n\n width: {\n default()\n {\n return 0;\n }\n },\n\n minWidth: {\n default()\n {\n return 120;\n }\n },\n\n maxWidth: {\n default()\n {\n return 0;\n }\n },\n\n emptyText: {\n default()\n {\n return '-';\n },\n type: [String]\n },\n\n undefinedText: {\n default()\n {\n return Locale.trans('-');\n },\n type: [String]\n },\n\n trueText: {\n default()\n {\n return Locale.trans('Yes');\n },\n type: [String]\n },\n\n falseText: {\n default()\n {\n return Locale.trans('No');\n },\n type: [String]\n },\n\n datetimeFormat: {\n default()\n {\n return Locale.trans('YYYY-MM-DD HH:mm');\n },\n type: [String]\n },\n\n allowUncheck: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n },\n\n computed: {\n\n matrixValues()\n {\n if ( this.type !== 'matrix' ) {\n return;\n }\n\n let values = {};\n\n if ( Any.isEmpty(this.modelValue) ) {\n return values;\n }\n\n Arr.each(this.modelValue, (item) => {\n Obj.set(values, item[this.NTable.uniqueProp],\n Num.matrix(item[this.matrixProp]));\n });\n\n return values;\n }\n\n },\n\n provide()\n {\n return {\n NTableColumn: this\n };\n },\n\n data()\n {\n return {\n uid: UUID(), tempWidth: 0\n };\n },\n\n methods: {\n\n detectVisibity()\n {\n let visible = this.visible;\n\n if ( this.breakpoint ) {\n visible &= Dom.find(this.NTable.$el).width() > this.breakpoint;\n }\n\n return visible;\n },\n\n sortByColumn(event)\n {\n if ( !Arr.has([0, 1], event.which) ) {\n return;\n }\n\n if ( !Dom.find(event.target).closest('.n-table-column__filter') ) {\n this.NTable.sortByColumn(this);\n }\n },\n\n },\n\n beforeMount()\n {\n this.changedStates = {};\n this.NTable.addColumn(this);\n },\n\n beforeUnmount()\n {\n this.NTable.removeColumn(this);\n },\n\n renderHead()\n {\n if ( !this.NTable.getColumnVisiblity(this) ) {\n return null;\n }\n\n let classList = [\n 'n-table-column',\n 'n-table-column--' + this.align,\n 'n-table-column--' + this.type,\n ];\n\n let sortDirection = this.NTable.getColumnSorted(this);\n\n if ( sortDirection ) {\n classList.push('n-sorted', 'n-' + sortDirection);\n }\n\n if ( this.fluid || !this.width ) {\n classList.push('n-fluid');\n }\n\n if ( this.fixedWidth ) {\n classList.push('n-fixed');\n }\n\n if ( this.NTable.getColumnFiltered(this) ) {\n classList.push('n-filtered');\n }\n\n let style = {};\n\n if ( this.fixedWidth ) {\n style.width = this.fixedWidth + 'px';\n }\n\n if ( this.width ) {\n style.flexBasis = this.width + 'px';\n }\n\n let props = {\n modelValue: this.tempWidth,\n width: this.width,\n minWidth: this.minWidth,\n maxWidth: this.maxWidth,\n disabled: !!this.fixedWidth,\n group: [this.NTable.uid],\n };\n\n props['onUpdate:modelValue'] = (value) => {\n this.tempWidth = value;\n }\n\n if ( this.sort ) {\n props.onMousedown = this.sortByColumn;\n }\n\n return (\n <NResizer ref=\"column\" class={classList} style={style} {...props}>\n {this.ctor('renderHeadSort')()}\n {this.ctor('renderHeadLabel')()}\n {this.ctor('renderHeadFilter')()}\n </NResizer>\n );\n },\n\n renderHeadLabel()\n {\n let classList = [\n 'n-table-column__label'\n ];\n\n let labelHtml = (\n <div class={classList}>\n <span>{this.label}</span>\n </div>\n );\n\n if ( Any.isEmpty(this.tooltip) ) {\n return labelHtml;\n }\n\n let tooltipHtml = (\n <NPopover type=\"tooltip\">{this.tooltip}</NPopover>\n );\n\n return [labelHtml, tooltipHtml];\n },\n\n renderHeadSort()\n {\n if ( !this.sort ) {\n return null;\n }\n\n return (\n <div class=\"n-table-column__sort\">\n <i>{ /* Sorting angles */}</i>\n </div>\n )\n },\n\n renderHeadFilter()\n {\n if ( !this.filter ) {\n return null;\n }\n\n let angleHtml = (\n <div class=\"n-table-column__filter\">\n <i class={nano.Icons.angleDown}></i>\n </div>\n );\n\n let component = resolveComponent('NTableFilter' +\n Str.ucfirst(this.type));\n\n return [\n angleHtml, h(component, { column: this })\n ];\n },\n\n renderBody(props)\n {\n if ( !this.NTable.getColumnVisiblity(this) ) {\n return null;\n }\n\n let uid = props.value[this.NTable.uniqueProp]\n + this.uid;\n\n let classList = [\n 'n-table-cell',\n 'n-table-cell--' + this.align,\n 'n-table-cell--' + this.type,\n ];\n\n if ( this.fluid ) {\n classList.push('n-fluid');\n }\n\n if ( this.tempWidth ) {\n classList.push('n-fixed');\n }\n\n let index = this.NTable.getColumnIndex(this);\n\n let offset = 0;\n\n if ( index === 0 ) {\n offset = props.value.depth * this.NTable.itemOffset;\n }\n\n let style = {\n width: (this.tempWidth - offset) + 'px'\n };\n\n if ( this.minWidth ) {\n style.minWidth = (this.minWidth - offset) + 'px';\n }\n\n if ( this.maxWidth ) {\n style.maxWidth = (this.maxWidth - offset) + 'px';\n }\n\n let passed = Obj.except(this.$attrs, [], {\n ...props, uid: uid, class: classList, style: style, column: this\n });\n\n let component = resolveComponent('NTableCell' +\n Str.ucfirst(this.type));\n\n return h(component, passed);\n },\n\n render()\n {\n return null;\n }\n\n}","import { Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n inject: {\n\n NTable: {\n default: undefined\n },\n\n NDraggableItem: {\n default: undefined\n }\n\n },\n\n props: {\n\n uid: {\n required: true\n },\n\n column: {\n required: true\n },\n\n item: {\n required: true\n },\n\n value: {\n required: true\n },\n\n copy: {\n required: true\n },\n\n remove: {\n required: true\n },\n\n\n },\n\n computed: {\n\n input()\n {\n return Obj.get(this.item, this.column.prop);\n }\n\n },\n\n data()\n {\n return { init: false };\n },\n\n mounted()\n {\n this.timer = setTimeout(() => this.init = true, 20);\n },\n\n beforeUnmount()\n {\n clearTimeout(this.timer);\n },\n\n methods: {\n\n setFirstState(state)\n {\n Obj.set(this.column.changedStates,\n this.uid, this.firstState = state);\n }\n\n },\n\n render()\n {\n if ( this.column.$slots.default ) {\n return this.column.$slots.default(this);\n }\n \n return (\n <div>{ this.input }</div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellString',\n\n extends: TableCell,\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n return (\n <div>\n <span>{ Any.convertString(this.input, this.column.emptyText) }</span>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellBoolean',\n\n extends: TableCell,\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div> \n );\n }\n\n return (\n <div>\n <span>{ Any.convertBoolean(this.input, this.column.trueText, this.column.falseText) }</span>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellDatetime',\n\n extends: TableCell,\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div> \n );\n }\n\n return (\n <div>\n <span>{ Any.convertDatetime(this.input, this.column.datetimeFormat, this.column.emptyText) }</span>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellOption',\n\n extends: TableCell,\n\n renderOption(value)\n {\n let options = this.column.options;\n\n if ( Any.isFunction(options) ) {\n options = this.column.options(this);\n }\n\n options = Arr.each(options, (value, index) => {\n return { $value: value, $index: index };\n });\n\n let prop = this.column.optionsValue;\n\n let option = Arr.find(options, (item) => {\n return Obj.get(item, prop) == value;\n });\n\n if ( ! option ) {\n return [this.column.emptyText];\n }\n\n return Obj.get(option, this.column.optionsLabel,\n this.column.undefinedText);\n },\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div> \n );\n }\n\n let input = ! Any.isObject(this.input) ?\n [this.input] : this.input;\n\n return (\n <div>\n <span>{ Arr.each(input, this.ctor('renderOption')) }</span>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellImage',\n\n extends: TableCell,\n\n computed: {\n\n preview()\n {\n return Obj.get(this.item, this.column.previewProp);\n }\n\n },\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div> \n );\n }\n\n let classList = [\n 'n-table-cell',\n 'n-table-cell--' + this.column.type\n ];\n\n let props = {\n fit: 'contain',\n }\n\n return (\n <div class={classList}>\n <NPreview file={this.preview || this.input} thumb={this.input} {...props} />\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Num, Any, Obj, Arr, UUID } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellMatrix',\n\n extends: TableCell,\n\n beforeMount()\n {\n this.firstState = Obj.get(this.column.changedStates,\n this.uid);\n },\n\n methods: {\n\n toggleMatrix()\n {\n if ( this.column.matrix === -1 ) {\n return this.toggleSelect();\n }\n\n let itemList = this.column.modelValue;\n\n if ( itemList === null ) {\n itemList = [];\n }\n\n let item = Arr.find(itemList, {\n [this.NTable.uniqueProp]: this.value[this.NTable.uniqueProp]\n });\n\n if ( ! item ) {\n item = Obj.assign({}, this.item, { [this.column.matrixProp]: 0 });\n }\n\n let currentMatrix = Num.int(item[this.column.matrixProp]);\n\n let matrix = Arr.toggle(Num.matrix(currentMatrix),\n Num.int(this.column.matrix));\n\n item[this.column.matrixProp] = Num.combine(matrix);\n\n Arr.replace(itemList, item, {\n [this.NTable.uniqueProp]: item[this.NTable.uniqueProp]\n });\n\n this.column.$emit('update:modelValue', itemList);\n },\n\n toggleSelect()\n {\n let itemList = this.column.modelValue;\n\n if ( itemList === null ) {\n itemList = [];\n }\n\n let fallback = Obj.assign({}, this.item, {\n [this.column.matrixProp]: this.column.matrix\n });\n\n let finder = {\n [this.NTable.uniqueProp]: this.value[this.NTable.uniqueProp],\n };\n\n let item = Arr.find(itemList, finder);\n\n if ( ! item ) {\n Arr.add(itemList, fallback);\n } else {\n Arr.remove(itemList, finder);\n }\n\n this.column.$emit('update:modelValue', itemList);\n },\n\n isChecked()\n {\n let matrix = Obj.get(this.column.matrixValues,\n this.item[this.NTable.uniqueProp]);\n\n if ( ! matrix ) {\n return false;\n }\n\n let value = Num.int(this.column.matrix);\n\n if ( value === -1 ) {\n return true;\n }\n\n return Arr.has(matrix, value);\n },\n\n isDisabled()\n {\n if ( ! Any.isFunction(this.column.disabled) ) {\n return this.column.disabled;\n }\n\n return this.column.disabled(this);\n }\n\n },\n\n render()\n {\n let checked = this.isChecked();\n\n if ( this.firstState === null ) {\n this.setFirstState(checked);\n }\n\n if ( ! this.init ) {\n return null;\n }\n\n let classList = [\n 'n-table-cell--checkbox'\n ];\n\n if ( this.firstState !== checked ) {\n classList.push('n-changed');\n }\n\n if ( checked ) {\n classList.push('n-checked');\n }\n\n let isDisabled = this.isDisabled();\n\n if ( this.column.allowUncheck ) {\n isDisabled = isDisabled && ! checked;\n }\n\n if ( isDisabled ) {\n classList.push('n-disabled');\n }\n\n let props = {};\n\n if ( ! isDisabled ) {\n props.onClick = this.toggleMatrix;\n }\n\n return (\n <div class={classList} {...props}>\n <i class={nano.Icons.checked}></i>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Num, Any, Obj, Arr } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellSelect',\n\n extends: TableCell,\n\n beforeMount()\n {\n this.firstState = Obj.get(this.column.changedStates,\n this.uid);\n },\n\n methods: {\n\n toggleSelect()\n {\n let item = null;\n\n if ( ! this.isChecked() ) {\n item = Obj.assign({}, this.item);\n }\n\n this.column.$emit('update:modelValue', item);\n },\n\n isChecked()\n {\n if ( Any.isEmpty(this.column.modelValue) ) {\n return false;\n }\n\n return Obj.get(this.column.modelValue, this.NTable.uniqueProp) ===\n this.value[this.NTable.uniqueProp];\n },\n\n isDisabled()\n {\n if ( ! Any.isEmpty(this.column.modelValue) ) {\n return true;\n }\n\n if ( ! Any.isFunction(this.column.disabled) ) {\n return this.column.disabled;\n }\n\n return this.column.disabled(this);\n },\n\n },\n\n render()\n {\n let checked = this.isChecked();\n\n if ( this.firstState === null ) {\n this.setFirstState(checked);\n }\n\n if ( ! this.init ) {\n return null;\n }\n\n let classList = [\n 'n-table-cell--checkbox'\n ];\n\n if ( this.firstState !== checked ) {\n classList.push('n-changed');\n }\n\n if ( checked ) {\n classList.push('n-checked');\n }\n\n let isDisabled = this.isDisabled();\n\n if ( this.column.allowUncheck ) {\n isDisabled = isDisabled && ! checked;\n }\n\n if ( isDisabled ) {\n classList.push('n-disabled');\n }\n\n let props = {};\n\n if ( ! isDisabled ) {\n props.onClick = this.toggleSelect;\n }\n\n return (\n <div class={classList} {...props}>\n <i class={nano.Icons.checked}></i>\n </div>\n );\n }\n\n}\n","import {Arr, Obj, Any, Dom, Event, UUID} from \"@kizmann/pico-js\";\n\nexport default {\n\n inject: {\n\n NTable: {\n default: undefined\n }\n\n },\n\n props: {\n\n column: {\n required: true\n }\n\n },\n\n computed: {\n\n tempFilter()\n {\n return this.NTable.getColumnFilter(this.column);\n },\n\n canReset()\n {\n return ! this.NTable.getColumnFiltered(this.column);\n },\n\n canApply()\n {\n return ! Any.isEmpty(this.filter.value);\n }\n\n },\n\n data()\n {\n return {\n filter: this.getFilterClone(), visible: false\n };\n },\n\n beforeMount()\n {\n this.mountFilter();\n },\n\n mounted()\n {\n Event.bind('NTable:reset', \n this.resetFilter, this._.uid);\n\n Dom.find(document).on('keydown', \n this.onKeydown, this._.uid);\n },\n\n beforeUnmount()\n {\n Event.unbind('NTable:reset', \n this._.uid);\n\n Dom.find(document).off('keydown', \n null, this._.uid);\n },\n\n methods: {\n\n getFilterClone()\n {\n let tempFilter = this.NTable.getColumnFilter(this.column);\n\n if ( Any.isEmpty(tempFilter) ) {\n return null;\n }\n\n return Obj.clone(tempFilter);\n },\n\n getFilterProp()\n {\n return this.column.filterProp || \n this.column.prop;\n },\n\n getDefaultFilter()\n {\n return {\n type: this.column.type, \n value: null,\n property: this.getFilterProp(), \n };\n },\n\n mountFilter()\n {\n if ( this.filter ) {\n return this.applyFilter();\n }\n\n this.filter = this.getDefaultFilter();\n\n if ( ! this.canApply ) {\n return;\n }\n\n Arr.add(this.NTable.tempFilter, this.filter, {\n property: this.getFilterProp()\n });\n },\n\n resetFilter(uid)\n {\n if ( this.NTable.uid !== uid ) {\n return;\n }\n\n this.filter = this.getDefaultFilter();\n\n Arr.add(this.NTable.tempFilter, this.filter, {\n property: this.getFilterProp()\n });\n },\n\n onKeydown(event)\n {\n if ( ! this.visible ) {\n return;\n }\n\n if ( event.which === 13 && this.canApply ) {\n this.applyFilter();\n }\n\n if ( event.which === 13 && ! this.canApply ) {\n this.clearFilter();\n }\n\n let closeAnyway = event.which === 13 &&\n this.NTable.closeFilterOnEnter;\n\n if ( closeAnyway || event.which === 27 ) {\n this.$refs.popover.close();\n }\n },\n\n applyFilter()\n {\n let filter = Obj.clone(this.filter);\n\n Arr.add(this.NTable.tempFilterProps, \n this.getFilterProp());\n\n this.NTable.replaceFilter(filter, {\n property: this.getFilterProp()\n });\n },\n\n clearFilter()\n {\n let filter = this.getDefaultFilter();\n\n Arr.remove(this.NTable.tempFilterProps, \n this.getFilterProp());\n\n this.NTable.replaceFilter(filter, {\n property: this.getFilterProp()\n });\n\n this.filter = filter;\n }\n\n },\n\n renderForm()\n {\n return null;\n },\n\n renderApply()\n {\n let props = {\n type: 'primary',\n link: true,\n size: 'xs',\n disabled: ! this.canApply\n };\n\n return (\n <NButton {...props} onClick={this.applyFilter}>\n { this.trans('Apply') }\n </NButton>\n );\n },\n\n renderReset()\n {\n let props = {\n type: 'danger',\n link: true,\n size: 'xs',\n disabled: this.canReset,\n };\n\n return (\n <NButton {...props} onClick={this.clearFilter}>\n { this.trans('Reset') }\n </NButton>\n );\n },\n\n renderFooter()\n {\n return (\n <div class=\"n-table-filter__footer\">\n { this.ctor('renderReset')() }\n { this.ctor('renderApply')() }\n </div>\n )\n },\n\n render()\n {\n let props = {\n class: 'n-table-filter__popover',\n trigger: 'click',\n size: 'sm',\n width: 220,\n }\n\n return (\n <NPopover ref=\"popover\" vModel={this.visible} {...props}>\n {\n { default: this.ctor('renderForm'), footer: this.ctor('renderFooter') }\n }\n </NPopover>\n );\n }\n}\n","import TableFilter from \"../table-filter\";\nimport { Dom, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableFilterString',\n\n extends: TableFilter,\n\n methods: {\n\n getDefaultFilter()\n {\n return {\n type: this.column.type, \n value: null, \n operator: 'li',\n property: this.getFilterProp(), \n };\n }\n\n },\n\n renderForm()\n {\n let options = {\n li: this.trans('Includes value'),\n nl: this.trans('Excludes value'),\n eq: this.trans('Equal value'),\n ne: this.trans('Except value'),\n };\n\n return (\n <NForm>\n <NFormItem>\n <NInput size=\"sm\" vModel={this.filter.value} />\n </NFormItem>\n <NFormItem>\n <NSelect size=\"sm\" vModel={this.filter.operator} options={options} />\n </NFormItem>\n </NForm>\n );\n }\n\n}\n","import TableFilter from \"../table-filter\";\nimport { Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableFilterBoolean',\n\n extends: TableFilter,\n\n methods: {\n\n getDefaultFilter()\n {\n return {\n type: this.column.type, \n value: null, \n operator: 'in',\n property: this.getFilterProp(), \n };\n }\n\n },\n\n renderForm()\n {\n let options = {\n 1: this.trans(this.column.trueText),\n 0: this.trans(this.column.falseText),\n };\n\n return (\n <NForm>\n <NFormItem>\n <NSelect size=\"sm\" vModel={this.filter.value} options={options} />\n </NFormItem>\n </NForm>\n );\n }\n\n}\n","import TableFilter from \"../table-filter\";\n\nexport default {\n\n name: 'NTableFilterDatetime',\n\n extends: TableFilter,\n\n methods: {\n\n getDefaultFilter()\n {\n return {\n type: this.column.type, \n value: null, \n operator: 'eq',\n property: this.getFilterProp(), \n };\n }\n\n },\n\n renderForm()\n {\n let options = {\n eq: this.trans('Exact date'),\n lt: this.trans('Before date'),\n gt: this.trans('After date'),\n };\n\n return (\n <NForm>\n <NFormItem>\n <NDatepicker size=\"sm\" vModel={this.filter.value} format={this.column.datetimeFormat} />\n </NFormItem>\n <NFormItem>\n <NSelect size=\"sm\" vModel={this.filter.operator} options={options} />\n </NFormItem>\n </NForm>\n );\n }\n\n}\n","import TableFilter from \"../table-filter\";\nimport { Arr, Obj, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableFilterOption',\n\n extends: TableFilter,\n\n methods: {\n\n getDefaultFilter()\n {\n return {\n type: this.column.type,\n value: [],\n operator: 'in',\n property: this.getFilterProp(),\n };\n }\n\n },\n\n renderOption(value)\n {\n let props = {\n value: Obj.get(value, this.column.optionsValue)\n };\n\n return (\n <NCheckbox {...props}>{ Obj.get(value, this.column.optionsLabel) }</NCheckbox>\n );\n },\n\n renderForm()\n {\n let items = this.column.options;\n\n if ( Any.isFunction(items) ) {\n items = this.column.options(this);\n }\n\n items = Arr.each(items, (value, index) => {\n return { $value: value, $index: index };\n });\n\n let options = {\n in: this.trans('Includes value'),\n ni: this.trans('Excludes value'),\n };\n\n return (\n <NForm>\n <NFormItem>\n <NCheckboxGroup size=\"sm\" align=\"vertical\" vModel={this.filter.value}>\n { Arr.each(items, this.ctor('renderOption')) }\n </NCheckboxGroup>\n </NFormItem>\n <NFormItem>\n <NSelect size=\"sm\" vModel={this.filter.operator} options={options} />\n </NFormItem>\n </NForm>\n );\n }\n\n}\n","import Table from './src/table/table';\nimport TableColumn from './src/table-column/table-column';\nimport TableCellString from './src/table-cell/types/table-cell-string';\nimport TableCellBoolean from './src/table-cell/types/table-cell-boolean';\nimport TableCellDatetime from './src/table-cell/types/table-cell-datetime';\nimport TableCellOption from './src/table-cell/types/table-cell-option';\nimport TableCellImage from './src/table-cell/types/table-cell-image';\nimport TableCellMatrix from './src/table-cell/types/table-cell-matrix';\nimport TableCellSelect from './src/table-cell/types/table-cell-select';\nimport TableFilterString from './src/table-filter/types/table-filter-string';\nimport TableFilterBoolean from './src/table-filter/types/table-filter-boolean';\nimport TableFilterDatetime from './src/table-filter/types/table-filter-datetime';\nimport TableFilterOption from './src/table-filter/types/table-filter-option';\n\n\nexport default function (App) {\n App.component(Table.name, Table);\n App.component(TableColumn.name, TableColumn);\n App.component(TableCellString.name, TableCellString);\n App.component(TableCellBoolean.name, TableCellBoolean);\n App.component(TableCellDatetime.name, TableCellDatetime);\n App.component(TableCellOption.name, TableCellOption);\n App.component(TableCellImage.name, TableCellImage);\n App.component(TableCellMatrix.name, TableCellMatrix);\n App.component(TableCellSelect.name, TableCellSelect);\n App.component(TableFilterString.name, TableFilterString);\n App.component(TableFilterBoolean.name, TableFilterBoolean);\n App.component(TableFilterDatetime.name, TableFilterDatetime);\n App.component(TableFilterOption.name, TableFilterOption);\n}","import { Arr, Any, Obj, Event, UUID } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NInfo',\n\n model: {\n prop: 'item'\n },\n\n props: {\n\n item: {\n default()\n {\n return null;\n }\n },\n\n syncEvent: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n relative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n },\n\n data()\n {\n return {\n uid: UUID(),\n elements: [],\n options: [],\n tempValue: this.item,\n };\n },\n\n watch: {\n\n item(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n mounted()\n {\n this.bindSyncEvent();\n },\n\n beforeUnmount()\n {\n this.unbindSyncEvent();\n },\n\n updated()\n {\n Any.delay(() => {\n if ( this.$refs.scrollbar ) {\n this.$refs.scrollbar.adaptHeight();\n }\n }, 500);\n },\n\n methods: {\n\n bindSyncEvent()\n {\n if ( !this.syncEvent ) {\n return;\n }\n\n this.options = this.syncEvent;\n\n if ( Any.isFunction(this.options) ) {\n this.options = this.options(this);\n }\n\n let syncFunction = (value, uid = null) => {\n if ( uid === this.options[1] ) {\n this.setValue(value);\n }\n };\n\n Event.bind(this.options[0], syncFunction,\n this.uid);\n },\n\n unbindSyncEvent()\n {\n Event.unbind(this.options[0], this.uid);\n },\n\n setValue(value)\n {\n this.$emit('update:modelValue',\n this.tempValue = value);\n },\n\n addColumn(column)\n {\n Arr.add(this.elements,\n column, { uid: column.uid });\n },\n\n removeColumn(column)\n {\n Arr.remove(this.elements,\n { uid: column.uid });\n },\n\n },\n\n provide()\n {\n return {\n NInfo: this\n };\n },\n\n renderEmpty()\n {\n return (\n <NEmptyIcon disabled={!this.showEmptyIcon} class=\"n-info__empty\">\n {this.$slots.empty && this.$slots.empty() || this.trans('No entry')}\n </NEmptyIcon>\n );\n },\n\n renderBody()\n {\n if ( Any.isEmpty(this.tempValue) ) {\n return this.ctor('renderEmpty')();\n }\n\n let elements = Obj.each(this.elements, (column) => {\n return (\n <div class=\"n-info__column\">\n {column.ctor('renderLabel')({ item: this.tempValue })}\n {column.ctor('renderBody')({ item: this.tempValue })}\n </div>\n );\n });\n\n return (\n <div class=\"n-info__body\">\n {Any.vals(elements)}\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-info',\n 'n-info--' + this.type,\n 'n-info--' + this.size,\n ];\n\n let infoHtml = (\n <NScrollbar ref=\"scrollbar\" relative={this.relative}>\n {this.ctor('renderBody')()}\n </NScrollbar>\n );\n\n return (\n <div class={classList}>\n {[infoHtml, this.$slots.default()]}\n </div>\n );\n }\n}\n","import { UUID, Obj, Locale, Str } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NInfoColumn',\n\n inject: {\n\n NInfo: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n prop: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'string';\n },\n type: [String]\n },\n\n previewProp: {\n default()\n {\n return 'preview';\n },\n type: [String]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Object, Array, Function]\n },\n\n optionsValue: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n optionsLabel: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n emptyText: {\n default()\n {\n return Locale.trans('-');\n },\n type: [String]\n },\n\n trueText: {\n default()\n {\n return Locale.trans('Yes');\n },\n type: [String]\n },\n\n falseText: {\n default()\n {\n return Locale.trans('No');\n },\n type: [String]\n },\n\n datetimeFormat: {\n default()\n {\n return Locale.trans('YYYY-MM-DD HH:mm');\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n uid: UUID()\n };\n },\n\n beforeMount()\n {\n this.NInfo.addColumn(this);\n },\n\n beforeUnmount()\n {\n this.NInfo.removeColumn(this);\n },\n\n renderLabel()\n {\n if ( this.$slots.label ) {\n return this.$slots.label();\n }\n \n return (\n <div class=\"n-info-column\">\n <span>{this.label}</span>\n </div>\n );\n },\n\n renderBody(props)\n {\n let passed = Obj.except(props, [], {\n column: this\n });\n\n let component = resolveComponent('NInfoField' + \n Str.ucfirst(this.type));\n\n if ( ! component ) {\n return null;\n }\n\n passed.class = [\n 'n-info-field',\n 'n-info-field--' + this.type\n ];\n\n return h(component, passed);\n },\n\n render()\n {\n return null;\n }\n\n}\n","import { Obj } from \"@kizmann/pico-js\";\nimport CtorMixin from \"../../../mixins/src/ctor\";\n\nexport default {\n\n inject: {\n\n NInfo: {\n default: undefined\n }\n\n },\n\n props: {\n\n column: {\n required: true\n },\n\n item: {\n required: true\n },\n\n },\n\n computed: {\n\n input()\n {\n return Obj.get(this.item, this.column.prop);\n }\n\n },\n\n render()\n {\n return (\n <div>\n <span>{ this.input }</span>\n </div>\n );\n }\n\n}\n","import { Any } from \"@kizmann/pico-js\";\nimport InfoField from \"../info-field\";\n\nexport default {\n\n name: 'NInfoFieldString',\n\n extends: InfoField,\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n return (\n <div>\n <span>{ Any.convertString(this.input, this.column.emptyText) }</span>\n </div>\n );\n }\n\n}\n","import { Any } from \"@kizmann/pico-js\";\nimport InfoField from \"../info-field\";\n\nexport default {\n\n name: 'NInfoFieldBoolean',\n\n extends: InfoField,\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n return (\n <div>\n <span>{ Any.convertBoolean(this.input, this.column.trueText, this.column.falseText) }</span>\n </div>\n );\n }\n\n}\n","import { Any } from \"@kizmann/pico-js\";\nimport InfoField from \"../info-field\";\n\nexport default {\n\n name: 'NInfoFieldDatetime',\n\n extends: InfoField,\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n return (\n <div>\n <span>{ Any.convertDatetime(this.input, this.column.datetimeFormat, this.column.emptyText) }</span>\n </div>\n );\n }\n\n}\n","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\nimport InfoField from \"../info-field\";\n\nexport default {\n\n name: 'NInfoFieldOption',\n\n extends: InfoField,\n\n renderOption(value)\n {\n let options = this.column.options;\n\n if ( Any.isFunction(options) ) {\n options = this.column.options(this);\n }\n\n let prop = this.column.optionsValue;\n\n options = Arr.each(options, (value, index) => {\n return { $value: value, $index: index };\n });\n\n let option = Arr.find(options, (item) => {\n return Obj.get(item, prop) == value;\n });\n\n if ( ! option ) {\n return [this.column.emptyText];\n }\n\n return Obj.get(option, this.column.optionsLabel,\n this.column.undefinedText);\n },\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n let input = ! Any.isObject(this.input) ?\n [this.input] : this.input;\n\n return (\n <div>\n <span>{ Arr.each(input, this.ctor('renderOption')) }</span>\n </div>\n );\n }\n\n}\n","import InfoField from \"../info-field\";\nimport { Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NInfoFieldImage',\n\n extends: InfoField,\n\n computed: {\n\n preview()\n {\n return Obj.get(this.item, this.column.previewProp);\n }\n\n },\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n let props = {\n fit: 'contain',\n };\n\n return (\n <div>\n <NPreview file={this.preview || this.input} thumb={this.input} {...props} />\n </div>\n );\n }\n\n}\n","import Info from './src/info/info';\nimport InfoColumn from './src/info-column/info-column';\nimport InfoFieldString from './src/info-field/types/info-field-string';\nimport InfoFieldBoolean from './src/info-field/types/info-field-boolean';\nimport InfoFieldDatetime from './src/info-field/types/info-field-datetime';\nimport InfoFieldOption from './src/info-field/types/info-field-option';\nimport InfoFieldImage from './src/info-field/types/info-field-image';\n\nexport default function (App) {\n App.component(Info.name, Info);\n App.component(InfoColumn.name, InfoColumn);\n App.component(InfoFieldString.name, InfoFieldString);\n App.component(InfoFieldBoolean.name, InfoFieldBoolean);\n App.component(InfoFieldDatetime.name, InfoFieldDatetime);\n App.component(InfoFieldOption.name, InfoFieldOption);\n App.component(InfoFieldImage.name, InfoFieldImage);\n}","import { Arr, Any, Dom, Event, UUID } from \"@kizmann/pico-js\";\n\n\nexport default {\n\n name: 'NPopover',\n\n provide()\n {\n return {\n NPopover: this\n };\n },\n\n inject: {\n\n NPopover: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n width: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n listen: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n window: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n trigger: {\n default()\n {\n return 'hover';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'bottom-center';\n },\n type: [String]\n },\n\n scrollClose: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n multiClose: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n framerate: {\n default()\n {\n return 15;\n },\n type: [Number]\n }\n\n },\n\n computed: {\n\n touch() {\n return !! ('ontouchstart' in window || \n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n tempValue: false,\n clientX: 0,\n clientY: 0,\n target: null,\n prevent: false,\n };\n },\n\n watch: {\n\n modelValue()\n {\n this.tempValue = this.modelValue;\n },\n\n tempValue()\n {\n Any.delay(this.refreshVisible, 50);\n }\n\n },\n\n beforeMount()\n {\n this.tempValue = this.modelValue;\n },\n\n mounted()\n {\n this.target = Dom.find(this.$el).previous().get(0);\n\n if ( this.trigger === 'context' ) {\n this.target = Dom.find(this.$el).parent().get(0);\n }\n\n if ( this.window ) {\n Dom.find(document.body).append(this.$el);\n }\n\n if ( this.listen && this.trigger === 'hover' ) {\n Dom.find(document.body).on('mousemove', \n Any.framerate(this.onHover, 30), this._.uid);\n }\n\n if ( this.listen && this.trigger === 'click' ) {\n Dom.find(document.body).on(this.mousedown, \n Any.framerate(this.onClick, 30), this._.uid);\n }\n\n if ( this.listen && this.trigger === 'context' ) {\n Dom.find(document.body).on('contextmenu', \n Any.framerate(this.onContext, 30), this._.uid);\n }\n\n Dom.find(document.body).on(this.mousedown, \n Any.framerate(this.onExit, 30), this._.uid);\n\n Event.bind('NPopover:close', this.onCloseEvent, this._.uid);\n },\n\n beforeUnmount()\n {\n this.$el.remove();\n\n Dom.find(document).off('mousemove', null, this._.uid);\n Dom.find(document).off('mousedown', null, this._.uid);\n Dom.find(document).off('contextmenu', null, this._.uid);\n\n Event.unbind('NPopover:close', this._.uid);\n \n },\n\n methods: {\n\n active()\n {\n return this.tempValue;\n },\n\n open()\n {\n this.$emit('update:modelValue', \n this.tempValue = true);\n },\n\n close(type = null)\n {\n if ( this.prevent ) {\n return;\n }\n\n delete this.timer;\n\n if ( ! type ) {\n this.$emit('close');\n }\n\n if ( type === 'scroll' ) {\n this.$emit('scrollClose');\n }\n\n if ( type === 'multi' ) {\n this.$emit('multiClose');\n }\n\n this.$emit('update:modelValue', \n this.tempValue = false);\n },\n\n pause()\n {\n this.prevent = true;\n },\n\n unpause()\n {\n this.prevent = false;\n },\n\n onCloseEvent(uid)\n {\n if ( this.multiClose && this.tempValue && this._.uid !== uid ) {\n this.close('multi');\n }\n },\n\n refreshVisible()\n {\n Dom.find(this.$el).css(null);\n\n if ( ! this.tempValue ) {\n return this.stopRefreshInterval();\n }\n\n this.startRefreshInterval();\n\n delete this.passedOffset;\n },\n\n startRefreshInterval()\n {\n this.refresh = setInterval(this.updatePosition, \n 1000 / this.framerate);\n\n let onReady = () => {\n\n if ( this.listen ) {\n Dom.find(this.target).addClass('n-open');\n }\n\n Dom.find(this.$el).addClass('n-ready');\n\n if ( this.NPopover ) {\n this.NPopover.pause();\n }\n\n Event.fire('NPopover:close', this._.uid);\n }\n\n Any.delay(onReady, 100);\n },\n\n stopRefreshInterval()\n {\n clearInterval(this.refresh);\n\n if ( this.NPopover ) {\n this.NPopover.unpause();\n }\n\n if ( this.listen ) {\n Dom.find(this.target).removeClass('n-open');\n }\n\n Dom.find(this.$el).removeClass('n-ready');\n },\n\n isSameOffset(offset)\n {\n if ( ! this.passedOffset ) {\n return false;\n }\n\n let rainbow = Arr.each(['x', 'y'], (key) => {\n return offset[key] === this.passedOffset[key];\n });\n\n return ! Arr.has(rainbow, false);\n },\n\n isSameSize(size)\n {\n if ( ! this.passedSize ) {\n return false;\n }\n\n let rainbow = Arr.each(['width', 'height'], (key) => {\n return size[key] === this.passedSize[key];\n });\n\n return ! Arr.has(rainbow, false);\n },\n\n getTargetHorizontal(position, fallback = null)\n {\n let targetRect = this.target.getBoundingClientRect();\n\n if ( this.trigger === 'context' ) {\n targetRect = {\n top: this.clientY, left: this.clientX, width: 2, height: 2\n };\n }\n\n let windowRect = this.$el.getBoundingClientRect();\n\n if ( this.width === -1 ) {\n windowRect.width = targetRect.width;\n }\n\n let posY = {\n\n // Set above the tagret element\n start: targetRect.top - windowRect.height,\n \n // Set at bottom of target element\n end: targetRect.top + targetRect.height,\n\n };\n\n let posX = {\n\n // Set on the left of target element\n start: targetRect.left,\n\n // Set into the center of the target element\n center: targetRect.left + (targetRect.width * 0.5) - \n (windowRect.width * 0.5),\n\n // Set on the right of the target element\n end: targetRect.left + targetRect.width - \n windowRect.width,\n\n };\n\n let offset = { x: 0, y: 0 };\n\n if ( position === 'top-start' ) {\n offset = { x: posX.start, y: posY.start };\n }\n\n if ( position === 'top-center' ) {\n offset = { x: posX.center, y: posY.start };\n }\n\n if ( position === 'top-end' ) {\n offset = { x: posX.end, y: posY.start };\n }\n\n if ( position === 'bottom-start' ) {\n offset = { x: posX.start, y: posY.end };\n }\n\n if ( position === 'bottom-center' ) {\n offset = { x: posX.center, y: posY.end };\n }\n\n if ( position === 'bottom-end' ) {\n offset = { x: posX.end, y: posY.end };\n }\n\n let inverse = this.position;\n\n if ( position.match(/^(top)\\-/) ) {\n inverse = inverse.replace(/^(top)\\-/, 'bottom-');\n }\n\n if ( position.match(/^(bottom)\\-/) ) {\n inverse = inverse.replace(/^(bottom)\\-/, 'top-');\n }\n\n let broken = offset.y + windowRect.height > \n window.innerHeight || offset.y < 0;\n\n if ( this.scrollClose && broken && ! fallback ) {\n return this.getTargetHorizontal(inverse, offset);\n }\n\n if ( fallback && broken ) {\n offset = fallback;\n }\n\n if ( offset.y < 0 ) {\n offset.y = 0;\n }\n \n if ( offset.y + windowRect.height > window.innerHeight ) {\n offset.y = window.innerHeight - windowRect.height;\n }\n\n if ( offset.x < 0 ) {\n offset.x = 0;\n }\n \n if ( offset.x + windowRect.width > window.innerWidth ) {\n offset.x = window.innerWidth - windowRect.width -\n (window.innerWidth - document.body.clientWidth);\n }\n\n return offset;\n },\n\n getTargetVertical(position, fallback = null)\n {\n let targetRect = this.target.getBoundingClientRect();\n\n if ( this.trigger === 'context' ) {\n targetRect = {\n top: this.clientY, left: this.clientX, width: 2, height: 2\n };\n }\n\n let windowRect = this.$el.getBoundingClientRect();\n\n if ( this.width === -1 ) {\n windowRect.width = targetRect.width;\n }\n \n let posY = {\n\n // Set at top edge of the target element\n start: targetRect.top,\n\n // Set at the middle of the target element\n center: targetRect.top + (targetRect.height * 0.5) - \n (windowRect.height * 0.5),\n\n // Ste at the bottom of the target elemnent\n end: targetRect.top + targetRect.height - \n windowRect.height,\n\n };\n\n let posX = {\n\n // Set to the left of the target element\n start: targetRect.left - windowRect.width,\n\n // Set to the right of the target element\n end: targetRect.left + targetRect.width,\n\n };\n\n let offset = { x: 0, y: 0 };\n\n if ( position === 'left-start' ) {\n offset = { x: posX.start, y: posY.start };\n }\n\n if ( position === 'left-center' ) {\n offset = { x: posX.start, y: posY.center };\n }\n\n if ( position === 'left-end' ) {\n offset = { x: posX.start, y: posY.end };\n }\n\n if ( position === 'right-start' ) {\n offset = { x: posX.end, y: posY.start };\n }\n\n if ( position === 'right-center' ) {\n offset = { x: posX.end, y: posY.center };\n }\n\n if ( position === 'right-end' ) {\n offset = { x: posX.end, y: posY.end };\n }\n\n let inverse = this.position;\n\n if ( position.match(/^(left)\\-/) ) {\n inverse = inverse.replace(/^(left)\\-/, 'right-');\n }\n\n if ( position.match(/^(right)\\-/) ) {\n inverse = inverse.replace(/^(right)\\-/, 'left-');\n }\n\n let broken = offset.x + windowRect.width > \n window.innerWidth || offset.x < 0;\n\n if ( this.scrollClose && broken && ! fallback ) {\n return this.getTargetVertical(inverse, offset);\n }\n\n if ( fallback && broken ) {\n offset = fallback;\n }\n\n if ( offset.y < 0 ) {\n offset.y = 0;\n }\n \n if ( offset.y + windowRect.height > window.innerHeight ) {\n offset.y = window.innerHeight - windowRect.height;\n }\n\n if ( offset.x < 0 ) {\n offset.x = 0;\n }\n \n if ( offset.x + windowRect.width > window.innerWidth ) {\n offset.x = window.innerWidth - windowRect.width -\n (window.innerWidth - document.body.clientWidth);\n }\n\n return offset;\n },\n\n getTargetOffset()\n {\n let position = this.position;\n\n if ( position.match(/^(top|bottom)\\-/) ) {\n return this.getTargetHorizontal(position);\n }\n\n if ( position.match(/^(left|right)\\-/) ) {\n return this.getTargetVertical(position);\n }\n\n return targetRect;\n },\n\n updatePosition()\n {\n let size = this.$el.getBoundingClientRect(),\n rect = this.target.getBoundingClientRect();\n\n let isSameSize = this.isSameSize(size);\n\n if ( isSameSize && this.isSameOffset(rect) ) {\n return;\n }\n\n if ( ! this.timer ) {\n this.timer = Date.now();\n }\n\n this.passedSize = size;\n\n if ( this.width ) {\n Dom.find(this.$el).css({ width: this.width + 'px' });\n }\n\n let offset = this.getTargetOffset();\n\n let scroll = Dom.find(document.body)\n .scroll();\n\n let style = {\n 'z-index': window.zIndex++,\n 'top': Math.round(offset.y + scroll.top) + 'px', \n 'left': Math.round(offset.x + scroll.left) + 'px', \n };\n\n if ( this.width === -1 ) {\n style.width = rect.width + 'px';\n }\n\n Dom.find(this.$el).css(style);\n\n let isScrollClose = this.passedOffset && isSameSize &&\n (Date.now() - this.timer) > 500;\n\n if ( this.scrollClose && isScrollClose ) {\n this.close('scroll');\n }\n\n this.passedOffset = rect;\n },\n\n onHover(event, el)\n {\n if ( this.disabled ) {\n return;\n }\n\n let target = Dom.find(el).closest(this.target),\n source = Dom.find(el).closest(this.$el);\n\n let result = (!! target || !! source);\n\n if ( this.tempValue === result ) {\n return;\n }\n\n if ( ! result ) {\n return this.$nextTick(this.close);\n }\n\n this.$emit('update:modelValue', this.tempValue = result);\n },\n\n onClick(event, el)\n {\n let keyCode = event.which === 1 ||\n event.which === 0;\n\n if ( this.disabled || this.tempValue || ! keyCode ) {\n return;\n }\n\n let target = Dom.find(el).closest(this.target),\n source = Dom.find(el).closest(this.$el);\n\n let result = (!! target || !! source);\n\n if ( this.tempValue === result ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue = result);\n },\n\n onContext(event, el)\n {\n let keyCode = event.which === 3;\n\n if ( this.disabled || this.tempValue || ! keyCode ) {\n return;\n }\n\n let target = Dom.find(el).closest(this.target),\n source = Dom.find(el).closest(this.$el);\n\n this.clientX = event.clientX;\n this.clientY = event.clientY;\n\n let result = (!! target || !! source);\n\n if ( result ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if ( this.tempValue === result ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue = result);\n },\n\n onExit(event, el)\n {\n if ( this.disabled || ! this.tempValue ) {\n return;\n }\n\n if ( !! Dom.find(el).closest(this.$el) ) {\n return;\n }\n\n let target = Dom.find(el).closest(this.target);\n\n if ( this.trigger !== 'context' && !! target ) {\n return;\n }\n\n this.close();\n }\n\n },\n\n renderBody()\n {\n if ( this.$slots.raw ) {\n return this.$slots.raw();\n }\n\n return (\n <div class=\"n-popover__frame\">\n { this.$slots.header &&\n <div class=\"n-popover__header\">\n { this.$slots.header() }\n </div>\n }\n <div class=\"n-popover__body\">\n { this.$slots.default() }\n </div>\n { this.$slots.footer &&\n <div class=\"n-popover__footer\">\n { this.$slots.footer() }\n </div>\n }\n </div>\n );\n },\n\n render()\n {\n if ( ! window.zIndex ) {\n window.zIndex = 9000;\n }\n\n let classList = [\n 'n-popover',\n 'n-popover--' + this.type,\n 'n-popover--' + this.size,\n 'n-popover--' + this.position,\n ];\n\n if ( ! this.tempValue ) {\n classList.push('n-hidden');\n }\n\n let viewBody = this.modelValue;\n\n if ( Any.isNull(this.modelValue) ) {\n viewBody = this.tempValue;\n }\n\n return (\n <div class={classList}>\n { viewBody && this.ctor('renderBody')() }\n </div>\n );\n }\n\n}\n","export default {\n\n name: 'NPopoverGroup',\n\n inject: {\n NPopover: {\n default: undefined\n }\n },\n\n props: {\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n\n },\n\n computed: {\n\n tempSize()\n {\n if ( this.NPopover ) {\n return this.NPopover.size;\n }\n\n return this.size;\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-popover-group',\n 'n-popover-group--' + this.tempSize,\n ];\n\n return (\n <label class={classList}>\n <span>{ this.$slots.default() }</span>\n </label>\n );\n }\n\n}\n","import { Obj, Arr, Any, Dom } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NPopoverOption',\n\n inject: {\n NPopover: {\n default: undefined\n }\n },\n\n props: {\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n focus: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n active: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n iconPosition: {\n default()\n {\n return 'after';\n },\n type: [String]\n },\n\n image: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n imagePosition: {\n default()\n {\n return 'before';\n },\n type: [String]\n },\n\n clickClose: {\n default()\n {\n return true;\n },\n type: [Boolean]\n }\n\n\n },\n\n computed: {\n\n tempSize()\n {\n if ( this.NPopover ) {\n return this.NPopover.size;\n }\n\n return this.size;\n }\n\n },\n\n methods: {\n\n onClick(event)\n {\n if ( this.NPopover && this.clickClose ) {\n this.NPopover.close();\n }\n\n this.$emit('fakeclick', event);\n }\n\n },\n\n renderImage()\n {\n if ( ! this.image ) {\n return null;\n }\n\n let classList = [\n 'n-image',\n 'n-image--' + this.imagePosition,\n ];\n\n return (<img class={classList} src={this.image} />);\n },\n\n renderIcon()\n {\n if ( ! this.icon ) {\n return null;\n }\n\n let classList = [\n 'n-icon', \n 'n-icon--' + this.iconPosition,\n ];\n\n classList.push(this.icon);\n\n return (<i class={classList}></i>);\n },\n\n renderContent()\n {\n if ( this.$slots.raw ) {\n return this.$slots.raw();\n }\n\n return (\n <span>{ this.$slots.default() }</span>\n );\n },\n\n render()\n {\n let classList = [\n 'n-popover-option',\n 'n-popover-option--' + this.type,\n 'n-popover-option--' + this.tempSize,\n ];\n\n if ( this.active ) {\n classList.push('n-active');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = Obj.clone(this.$attrs);\n\n if ( ! this.disabled ) {\n props.onClick = this.onClick;\n }\n\n if ( this.disabled ) {\n props.disabled = true;\n }\n\n return (\n <a class={classList} href=\"javascript:void(0)\" {...props}>\n { this.ctor('renderImage')() }\n { this.ctor('renderContent')() }\n { this.ctor('renderIcon')() }\n </a>\n );\n }\n\n}\n","import Popover from './src/popover/popover';\nimport PopoverGroup from './src/popover-group/popover-group';\nimport PopoverOption from './src/popover-option/popover-option';\n\nexport default function (App) {\n App.component(Popover.name, Popover);\n App.component(PopoverGroup.name, PopoverGroup);\n App.component(PopoverOption.name, PopoverOption);\n}","import { UUID, Num, Arr, Obj, Any, Dom, Locale } from \"@kizmann/pico-js\";\nimport { h } from \"vue\";\n\nexport default {\n\n name: 'NForm',\n\n inheritAttrs: false,\n\n model: {\n prop: 'form'\n },\n\n props: {\n\n dom: {\n default()\n {\n return 'div';\n },\n type: [String]\n },\n\n form: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n errors: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'vertical';\n },\n type: [String]\n },\n\n prevent: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n ignore: {\n default()\n {\n return ['modified', 'dragid'];\n },\n type: [Array]\n },\n\n forceChange: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n forceErrors: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n },\n\n computed: {\n\n classList()\n {\n if ( ! this.$attrs.class ) {\n return [];\n }\n\n return Any.isArray(this.$attrs) ? this.$attrs.class :\n [this.$attrs.class];\n }\n\n },\n\n data()\n {\n return {\n uid: UUID(), elements: [], blocked: true,\n };\n },\n\n provide()\n {\n return {\n NForm: this\n };\n },\n\n mounted()\n {\n Any.delay(this.ctor('ready'), 500);\n },\n\n ready()\n {\n this.$watch('form', this.emitChange,\n { deep: true });\n\n this.resetChange();\n },\n\n methods: {\n\n onSubmit(event)\n {\n if ( this.prevent ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if ( Dom.find(event.target).is('input') ) {\n this.$emit('submit', event);\n }\n\n return this.prevent;\n },\n\n addItem(item)\n {\n Arr.add(this.elements, item, {\n uid: item.uid\n });\n },\n\n removeItem(item)\n {\n Arr.remove(this.elements,{\n uid: item.uid\n });\n },\n\n resetChange(timeout = 500)\n {\n clearTimeout(this.timeout);\n\n this.timeout = setTimeout(() => {\n this.blocked = false;\n }, timeout);\n\n this.blocked = true;\n\n let value = Obj.except(this.form,\n this.ignore);\n\n this.prevState = JSON.stringify(value);\n },\n\n emitChange()\n {\n if ( this.blocked ) {\n return;\n }\n\n let value = Obj.except(this.form,\n this.ignore);\n\n let nextState = JSON.stringify(value);\n\n if ( this.prevState == nextState ) {\n return;\n }\n\n this.prevState = nextState;\n\n this.$emit('change');\n },\n\n },\n\n render()\n {\n let classList = [\n 'n-form',\n 'n-form--' + this.align,\n ];\n\n let attrs = Obj.except(this.$attrs, ['class', 'onChange', 'onSubmit'], {\n class: this.cmer(classList)\n });\n\n attrs['onSubmit'] = (e) => {\n return false;\n }\n\n return h(this.dom, { ...attrs }, [\n this.$slots.default && this.$slots.default()\n ]);\n }\n\n}\n","export default {\n\n name: 'NFormGroup',\n\n inject: {\n\n NForm: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n }\n },\n\n size: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'vertical';\n },\n type: [String]\n },\n\n collapse: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n tooltip: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n tooltipPosition: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n methods: {\n\n collapseGroup()\n {\n this.$emit('update:modelValue', this.tempValue = ! this.tempValue);\n }\n\n },\n\n renderCollapse()\n {\n if ( ! this.collapse ) {\n return null;\n }\n\n return (\n <div class=\"n-form-group__collapse\">\n <i class={nano.Icons.angleDown}></i>\n </div>\n );\n },\n\n renderIcon()\n {\n if ( ! this.icon ) {\n return null;\n }\n\n return (\n <div class=\"n-form-group__icon\">\n <i class={['n-icon', this.icon]}></i>\n </div>\n );\n },\n\n renderText()\n {\n let textHtml = (\n <div class=\"n-form-group__text\">\n <span>{ this.label }</span>\n </div>\n );\n\n return (\n <div class=\"n-form-group__label\">\n { [this.ctor('renderIcon')(), textHtml] } \n </div>\n );\n },\n\n renderAction()\n {\n if ( ! this.$slots.action ) {\n return null;\n }\n\n return (\n <div class=\"n-form-group__action\">\n { this.$slots.action() }\n </div>\n );\n },\n\n renderLabel()\n {\n return (\n <div class=\"n-form-group__legend\" onClick={this.collapseGroup}>\n { this.ctor('renderCollapse')() }\n { this.ctor('renderText')() }\n { this.ctor('renderAction')() }\n </div>\n );\n },\n\n renderTooltip()\n {\n if ( ! this.tooltip ) {\n return null;\n }\n\n return (\n <NPopover type=\"tooltip\" size=\"sm\" position={this.tooltipPosition}>\n {this.tooltip}\n </NPopover>\n );\n },\n\n renderBody()\n {\n return (\n <div class=\"n-form-group__body\">\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n },\n\n render()\n {\n let size = this.size || this.NForm.size;\n\n let classList = [\n 'n-form-group', \n 'n-form-group--' + size,\n 'n-form-group--' + this.type,\n 'n-form-group--' + this.align, \n ];\n\n if ( this.collapse ) {\n classList.push('n-form-group--collapse');\n }\n\n if ( ! this.tempValue ) {\n classList.push('n-hidden');\n }\n\n if ( this.$slots.action ) {\n classList.push('n-action');\n }\n\n return (\n <fieldset class={classList}>\n { this.ctor('renderLabel')() }\n { this.ctor('renderTooltip')() }\n { this.ctor('renderBody')() }\n </fieldset>\n );\n }\n}\n","import { Arr, Obj, Any, Dom, UUID, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NFormItem',\n\n inject: {\n\n NForm: {\n default: undefined\n },\n\n NTabs: {\n default: undefined\n },\n\n NTabsItem: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return { NFormItem: this };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n prop: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n tooltip: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n tooltipPosition: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n tooltipWindow: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n conditional: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n conditionOn: {\n default()\n {\n return Locale.trans('Enable field');\n },\n type: [String]\n },\n\n conditionOff: {\n default()\n {\n return Locale.trans('Disable field');\n },\n type: [String]\n }\n\n },\n\n methods: {\n\n enabled(component = false)\n {\n return (! this.conditional || this.modelValue) && ! component;\n },\n\n disabled(component)\n {\n return (this.conditional && ! this.modelValue) || component;\n },\n\n toggleCondition()\n {\n this.$emit('update:modelValue', !this.modelValue);\n },\n\n focusInput()\n {\n let $input = Dom.find(this.$el).find('input');\n\n if ( !$input.empty() ) {\n return $input.get(0).focus();\n }\n\n $input = Dom.find(this.$refs.input).childs();\n\n if ( !$input.empty() ) {\n return $input.get(0).click();\n }\n\n console.log('I dont belong here :o');\n },\n\n gotoInput()\n {\n let errors = this.NForm.errors;\n\n if ( Any.isEmpty(errors) ) {\n return;\n }\n\n if ( !this.NTabs || !this.NTabsItem ) {\n return;\n }\n\n let keys = Any.keys(errors);\n\n if ( Arr.first(keys) !== this.prop ) {\n return;\n }\n\n this.NTabs.changeTab(this.NTabsItem.name);\n }\n\n },\n\n data()\n {\n return {\n uid: UUID()\n };\n },\n\n beforeMount()\n {\n if ( this.NForm ) {\n this.NForm.addItem(this);\n }\n },\n\n mounted()\n {\n if ( this.NForm ) {\n this.NForm.$watch('errors', this.gotoInput, { deep: true });\n }\n },\n\n beforeUnmount()\n {\n if ( this.NForm ) {\n this.NForm.removeItem(this);\n }\n },\n\n renderTooltip()\n {\n if ( !this.tooltip && !this.$slots.tooltip ) {\n return null;\n }\n\n let props = {\n size: 'sm',\n position: this.tooltipPosition,\n };\n\n return (\n <NPopover type=\"tooltip\" {...props}>\n {this.$slots.tooltip && this.$slots.tooltip() || this.tooltip}\n </NPopover>\n );\n },\n\n renderCondition()\n {\n if ( ! this.conditional ) {\n return null;\n }\n\n return (\n <div class=\"n-form-item__condition\" onClick={this.toggleCondition}>\n <span>{ this.modelValue ? this.conditionOff : this.conditionOn }</span>\n </div>\n );\n },\n\n renderLabel()\n {\n if ( !this.label && !this.$slots.label ) {\n return null;\n }\n\n let labelHtml = (\n <div class=\"n-form-item__label\">\n <label onClick={this.focusInput}>\n {this.$slots.label && this.$slots.label() || this.label}\n </label>\n </div>\n );\n\n return [\n labelHtml, this.ctor('renderTooltip')()\n ]\n },\n\n renderError()\n {\n if ( !this.NForm || !Obj.has(this.NForm.errors, this.prop) ) {\n return null;\n }\n\n return (\n <div class=\"n-form-item__error\">\n {Obj.get(this.NForm.errors, this.prop)}\n </div>\n );\n },\n\n renderInput()\n {\n return (\n <div ref=\"input\" class=\"n-form-item__input\">\n {this.$slots.default && this.$slots.default()}\n </div>\n );\n },\n\n render()\n {\n let size = this.size || Obj.get(this.NForm, 'size', 'md');\n\n\n let classList = [\n 'n-form-item',\n 'n-form-item--' + size,\n ];\n\n if ( this.disabled() ) {\n classList.push('is-disabled');\n }\n\n return <div class={classList}>\n {this.ctor('renderCondition')()}\n {this.ctor('renderLabel')()}\n {this.ctor('renderInput')()}\n {this.ctor('renderError')()}\n </div>;\n }\n}\n","import Form from './src/form/form';\nimport FormGroup from './src/form-group/form-group';\nimport FormItem from './src/form-item/form-item';\n\nexport default function (App) {\n App.component(Form.name, Form);\n App.component(FormGroup.name, FormGroup);\n App.component(FormItem.name, FormItem);\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NConfig',\n\n props: {\n\n modelValue: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n config: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n scope: {\n default()\n {\n return this;\n },\n type: [Object]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue\n };\n },\n\n methods: {\n\n solveAwait(value)\n {\n if ( Any.isEmpty(value) ) {\n return true;\n }\n\n if ( Any.isString(value) && value.match(/\\$\\$scope/) ) {\n return Obj.has({ $$scope: this.scope }, value);\n }\n\n if ( Any.isString(value) && value.match(/\\$\\$value/) ) {\n return Obj.has({ $$value: this.tempValue }, value);\n }\n\n return false;\n },\n\n solveValue(value, ...args)\n {\n if ( Any.isFunction(value) ) {\n return value.apply(this.scope, [this.tempValue, ...args]);\n }\n\n if ( Any.isString(value) && value.match(/^\\$\\$scope/) ) {\n return Obj.get({ $$scope: this.scope }, value);\n }\n\n if ( Any.isString(value) && value.match(/^\\$\\$value/) ) {\n return Obj.get({ $$value: this.tempValue }, value);\n }\n\n return value;\n },\n\n solveEvent(value)\n {\n let scope = Obj.assign(this.scope, {\n $configRefs: this.$refs\n });\n\n if ( Any.isFunction(value) ) {\n return (...args) => value.apply(scope, args);\n }\n\n return value;\n },\n\n solveContent(value, ...args)\n {\n if ( Any.isFunction(value) ) {\n return value.apply(this.scope, [this.$render, this.tempValue, ...args]);\n }\n\n return value;\n },\n\n prepareValue(veModel)\n {\n if ( ! veModel.path ) {\n return veModel.fallback;\n }\n\n if ( ! Obj.has(this.tempValue, veModel.path) ) {\n this.deepSet(this.tempValue, veModel.path, veModel.fallback);\n }\n\n return Obj.get(this.tempValue, veModel.path);\n },\n\n inputClosure(veModel, closure = null)\n {\n if ( ! veModel.path ) {\n return () => null;\n }\n\n return (value) => {\n\n if ( closure ) {\n closure(value, this.tempValue);\n }\n\n this.deepSet(this.tempValue, veModel.path, value);\n };\n },\n\n deepSet(obj, keys, val)\n {\n keys = (typeof keys === 'string') ?\n keys.split('.') : keys;\n\n let key = keys.shift();\n\n if ( obj[key] === undefined || obj[key] === null ) {\n Obj.set(obj, key, {});\n }\n\n if ( keys.length === 0 ) {\n return Obj.set(obj, key, val);\n }\n\n return this.deepSet(obj[key], keys, val);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n renderLayer(source)\n {\n if ( ! Any.isPlain(source) ) {\n return source;\n }\n\n return Arr.each(source, (setup, component) => {\n\n component = component.replace(/:.*?$/, '');\n\n // Set setup defaults\n setup = Obj.assign({\n vIf: true, vShow: true, vAwait: null, class: null, $on: {}, $props: {}, $attrs: {}\n }, setup);\n\n if ( ! this.solveAwait(setup.vAwait) ) {\n return null;\n }\n\n if ( ! this.solveValue(setup.vIf) ) {\n return null;\n }\n\n if ( ! this.solveValue(setup.vShow) ) {\n setup.style = { display: 'none' };\n }\n\n // Build default model\n let veModel = Obj.assign({\n prop: 'modelValue', fallback: null\n }, setup.model);\n\n // Delete model from setup\n delete setup.model;\n\n // Normalize props\n setup.$props = this.solveValue(setup.$props);\n\n // Normalize class\n setup.class = this.solveValue(setup.class);\n\n // Solve props\n Obj.map(setup.$props, (value) => this.solveValue(value));\n\n // Normalize attrs\n setup.$attrs = this.solveValue(setup.$attrs);\n\n // Solve attrs\n Obj.map(setup.$attrs, (value) => this.solveValue(value));\n\n // Solve events\n Obj.map(setup.$on, (value) => this.solveEvent(value));\n\n if ( veModel.path ) {\n\n // Override input event\n setup['onUpdate:modelValue'] = this.inputClosure(veModel, setup.$on.input);\n\n // Set prop in value or get fallback\n setup.$props[veModel.prop] = this.prepareValue(veModel);\n }\n\n Obj.assign(setup, setup.$props);\n delete setup.$props;\n\n Obj.assign(setup, setup.$attrs);\n delete setup.$attrs;\n\n Obj.assign(setup, setup.$on);\n delete setup.$on;\n\n let content = setup.content;\n delete setup.content;\n\n delete setup.vIf;\n delete setup.vShow;\n delete setup.vAwait;\n\n // Solve content if is functional\n let slots = this.solveContent(content, setup);\n\n let domtypes = [\n 'div', 'span', 'a'\n ];\n\n let resolved = component;\n\n if ( ! Arr.has(domtypes, resolved) ) {\n resolved = resolveComponent(component);\n }\n\n return h(resolved, setup, this.ctor('renderLayer')(slots));\n });\n },\n\n render()\n {\n return this.ctor('renderLayer')(this.config)[0];\n }\n\n}","import { Arr, Obj, Str, Any } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NConfigNext',\n\n props: {\n\n modelValue: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n extraValue: {\n default()\n {\n return null;\n },\n type: [Object]\n },\n\n config: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n scope: {\n default()\n {\n return {};\n },\n type: [Object]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue, sempValue: this.extraValue || this.modelValue\n };\n },\n\n watch: {\n\n modelValue: function (value) {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n extraValue: function (value) {\n if ( value !== this.sempValue ) {\n this.sempValue = value;\n }\n }\n\n },\n\n methods: {\n\n propAwait(value)\n {\n if ( Any.isEmpty(value) ) {\n return true;\n }\n\n if ( ! Any.isArray(value) ) {\n value = [value];\n }\n\n let result = Arr.each(value, (state) => {\n return this.getState(state, true);\n });\n\n return ! Arr.has(result, false);\n },\n\n propExists(value)\n {\n if ( Any.isEmpty(value) ) {\n return true;\n }\n\n if ( ! Any.isArray(value) ) {\n value = [value];\n }\n\n let result = Arr.each(value, (state) => {\n return this.getState(state, false);\n });\n\n return ! Arr.has(result, false);\n },\n\n getState(value, exists = true)\n {\n if ( Any.isFunction(value) ) {\n return !! this.solveInput(value);\n }\n\n if ( ! Any.isString(value) ) {\n return !! value;\n }\n\n if ( ! value.match(/(\\$scope|\\$model|\\$global)/) ) {\n return !! value;\n }\n\n let sources = {\n $scope: this.scope, $model: this.tempValue, $extra: this.sempValue, $global: window\n };\n\n if ( exists ) {\n return Obj.get(sources, value, undefined) === undefined;\n }\n\n return !! Obj.get(sources, value);\n },\n\n toPropKey(value)\n {\n let splits = value.replace(/^!/, '').split('-');\n\n value = Arr.each(splits, (split) => {\n return Str.ucfirst(split);\n });\n\n return Str.lcfirst(value.join(''));\n },\n\n toEventKey(value)\n {\n if ( ! value.match(/^on/) ) {\n value = 'on-' + value;\n }\n\n let splits = value.split('-');\n\n value = Arr.each(splits, (split) => {\n return Str.ucfirst(split);\n });\n\n return Str.lcfirst(value.join(''));\n },\n\n solveInput(cb, fallback)\n {\n return cb.call(this.scope, this.tempValue, fallback);\n },\n\n solveContext(cb)\n {\n if ( ! Any.isFunction(cb) ) {\n return () => console.error('Raw suffix (!) only allowed on functions');\n }\n\n return (...args) => cb.call(this.scope, ...args);\n },\n\n getProp(key, value)\n {\n if ( key.match(/^!/) ) {\n return this.solveContext(value);\n }\n\n if ( Any.isFunction(value) ) {\n return this.solveInput(value);\n }\n\n if ( ! Any.isString(value) ) {\n return value;\n }\n\n if ( ! value.match(/(\\$scope|\\$model|\\$global)/) ) {\n return value;\n }\n\n let sources = {\n $scope: this.scope, $model: this.tempValue, $extra: this.sempValue, $global: window\n };\n\n let result = Obj.get(sources, value.replace(/^!+/, ''));\n\n if ( value.match(/^!!\\$/) ) {\n result = Any.isEmpty(result);\n }\n\n if ( value.match(/^!\\$/) ) {\n result = Any.isEmpty(result);\n }\n\n return result;\n },\n\n getInput(prop, fallback)\n {\n if ( Any.isFunction(prop) ) {\n return this.solveInput(prop, fallback);\n }\n\n let sources = {\n $scope: this.scope, $model: this.tempValue, $extra: this.sempValue, $global: window\n };\n\n if ( ! Any.isNull(fallback) && Obj.get(sources, prop, -1337) === -1337 ) {\n Obj.set(sources, prop, fallback);\n }\n\n return Obj.get(sources, prop);\n },\n\n setInput(prop, value)\n {\n if ( Any.isFunction(prop) ) {\n return console.error('NConfigNew: Bind with function is not allowed!');\n }\n\n let sources = {\n $scope: this.scope, $model: this.tempValue, $extra: this.sempValue, $global: window\n };\n\n Obj.set(sources, prop, value);\n }\n\n },\n\n renderSetup(setup, alias)\n {\n if ( ! Any.isPlain(setup) ) {\n return setup;\n }\n\n if ( ! this.propExists(setup['vIf']) ) {\n return null;\n }\n\n if ( ! this.propAwait(setup['vAwait']) ) {\n return null;\n }\n\n let defaults = {\n binds: {}, props: {}, events: {}, content: {}\n };\n\n let defaultsBind = {\n value: '', fallback: null\n };\n\n setup = Obj.assign(defaults, setup);\n\n let binds = {};\n\n Obj.each(setup['binds'], (value, key) => {\n\n if ( Any.isString(value) ) {\n value = { value: value };\n }\n\n binds[key] = Obj.assign(defaultsBind, value);\n });\n\n let events = {};\n\n Obj.each(setup['events'], (value, key) => {\n events[this.toEventKey(key)] = this.solveContext(value);\n });\n\n let props = {};\n\n Obj.each(setup['props'], (value, key) => {\n props[this.toPropKey(key)] = this.getProp(key, value);\n });\n\n props = Obj.assign(props, events);\n\n Obj.each(binds, (value, key) => {\n\n let updateKey = 'onUpdate:' + key;\n\n props[this.toEventKey(updateKey)] = (input) => {\n this.setInput(value.value, input);\n };\n\n props[this.toPropKey(key)] = this.getInput(value.value,\n value.fallback);\n });\n\n let component = alias.replace(/:.*?$/, '');\n\n if ( !Arr.has(['div', 'p'], component) ) {\n component = resolveComponent(component);\n }\n\n if ( Any.isEmpty(component) ) {\n return null;\n }\n\n if ( !this.propExists(setup['vShow']) ) {\n props.style = \"display: none;\";\n }\n\n let render = () => Arr.each(setup.content, (value, key) => {\n return this.ctor('renderSetup')(value, key);\n });\n\n if ( Any.isFunction(setup.content) ) {\n render = () => setup.content.apply(this.scope);\n }\n\n if ( Any.isString(setup.content) ) {\n render = () => setup.content;\n }\n\n return h(component, props, { default: render });\n },\n\n render()\n {\n return Arr.each(this.config, (value, key) => this.ctor('renderSetup')(value, key));\n }\n\n}","import NConfig from \"./src/config/config\";\nimport NConfigNext from \"./src/config/config-next\";\n\nexport default function(App) {\n App.component(NConfig.name, NConfig);\n App.component(NConfigNext.name, NConfigNext);\n}\n","import { Obj } from \"@kizmann/pico-js\";\nimport { h } from \"vue\";\n\nexport default {\n\n name: 'NButton',\n\n props: {\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n link: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n square: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n icon: {\n default()\n {\n return null;\n }\n },\n\n iconPosition: {\n default()\n {\n return 'before';\n },\n type: [String]\n },\n\n nativeType: {\n default()\n {\n return 'button';\n },\n type: [String]\n }\n\n },\n\n renderIcon()\n {\n if ( ! this.icon ) {\n return null;\n }\n\n let classList = [\n 'n-icon', \n 'n-icon--' + this.iconPosition,\n ];\n\n classList.push(this.icon);\n\n return (<i class={classList}></i>);\n },\n\n render()\n {\n let classList = [\n 'n-button',\n 'n-button--' + this.size,\n 'n-button--' + this.type,\n ];\n\n if ( this.icon ) {\n classList.push('n-button--icon');\n }\n\n if ( this.link ) {\n classList.push('n-button--link');\n }\n\n if ( this.square ) {\n classList.push('n-button--square');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = {\n class: classList\n };\n\n if ( this.disabled ) {\n props.disabled = true;\n }\n\n let innerHtml = [];\n\n if ( this.iconPosition === 'before' ) {\n innerHtml.push(this.ctor('renderIcon')());\n }\n\n if ( this.$slots.default && ! this.square ) {\n innerHtml.push(<span>{ this.$slots.default && this.$slots.default() }</span>);\n }\n\n if ( this.iconPosition === 'after' ) {\n innerHtml.push(this.ctor('renderIcon')());\n }\n\n return h(this.nativeType, props, innerHtml);\n }\n\n}\n","export default {\n\n name: 'NButtonGroup',\n\n props: {\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-button-group',\n 'n-button-group--' + this.size\n ]\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n\n}\n","import Button from './src/button/button';\nimport ButtonGroup from './src/button-group/button-group';\n\nexport default function (App) {\n App.component(Button.name, Button);\n App.component(ButtonGroup.name, ButtonGroup);\n}\n","import { Str, Arr, Obj, Any, Locale, Dom, Num } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSelect',\n\n inject: {\n\n NFormItem: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n },\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n lazy: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'bottom-center';\n },\n type: [String]\n },\n\n multiple: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n collapse: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n placeholder: {\n default()\n {\n return Locale.trans('Please select');\n },\n type: [String]\n },\n\n emptyText: {\n default()\n {\n return 'No items';\n },\n type: [String]\n },\n\n undefinedText: {\n default()\n {\n return 'Undefined item';\n },\n type: [String]\n },\n\n collapseText: {\n default()\n {\n return '+:count item|+:count items';\n },\n type: [String]\n },\n\n allowCreate: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Array, Object]\n },\n\n optionsValue: {\n default()\n {\n return '$index';\n },\n type: [String]\n },\n\n optionsLabel: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n optionsDisabled: {\n default()\n {\n return 'null';\n },\n type: [String]\n }\n\n },\n\n computed: {\n\n deepDisabled()\n {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n },\n\n empty()\n {\n return Any.isEmpty(this.tempValue);\n },\n\n custom()\n {\n let result = Arr.filter(this.elements, (element) => {\n\n if ( Any.isArray(this.tempValue) ) {\n return Arr.has(this.tempValue, element.value);\n }\n\n return element.value === this.tempValue;\n });\n\n return result.length === 0;\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n tempClear: this.clearValue,\n focus: false,\n search: '',\n index: - 1,\n elements: [],\n searched: []\n };\n },\n\n\n beforeMount()\n {\n if ( this.lazy ) {\n this.generateOptions();\n }\n\n if ( this.multiple && !Any.isArray(this.tempValue) ) {\n this.tempValue = [];\n }\n\n if ( this.multiple && !Any.isArray(this.clearValue) ) {\n this.tempClear = [];\n }\n\n this.searchOptions();\n },\n\n provide()\n {\n return {\n NSelect: this\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( !this.multiple && Any.isArray(value) ) {\n value = null;\n }\n\n if ( this.multiple && !Any.isArray(value) ) {\n value = [];\n }\n\n this.tempValue = value;\n },\n\n search()\n {\n this.searchOptions();\n },\n\n focus()\n {\n this.$nextTick(this.scrollToClosest);\n },\n\n },\n\n methods: {\n\n clear(event = null)\n {\n if ( event ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.focusInput();\n\n this.$emit('update:modelValue',\n this.tempValue = Arr.clone(this.tempClear));\n },\n\n generateOptions()\n {\n this.elements = Arr.each(this.options, (value, index) => {\n\n let data = {\n $value: value, $index: index\n };\n\n let option = {\n label: Obj.get(data, this.optionsLabel),\n value: Obj.get(data, this.optionsValue)\n };\n\n return Obj.assign(option, {\n tempLabel: option.label, tempValue: option.value\n });\n });\n },\n\n addOption(option)\n {\n Arr.add(this.elements, option,\n { tempValue: option.tempValue });\n },\n\n removeOption(option)\n {\n Arr.remove(this.elements,\n { tempValue: option.tempValue });\n },\n\n resetInput()\n {\n this.index = - 1;\n this.search = '';\n },\n\n focusInput(event = null)\n {\n if ( event ) {\n event.preventDefault();\n }\n\n this.$refs.input.focus();\n },\n\n onFocusInput()\n {\n if ( !this.focus ) {\n this.$refs.popover.open();\n }\n\n clearInterval(this.refresh);\n },\n\n onInputInput(event)\n {\n this.search = event.target.value;\n },\n\n onKeydownInput(event)\n {\n if ( !this.focus ) {\n return this.onFocusInput();\n }\n\n if ( event.which === 13 ) {\n this.createOrToggle();\n }\n\n if ( event.which === 38 ) {\n this.selectPrev();\n }\n\n if ( event.which === 40 ) {\n this.selectNext();\n }\n },\n\n searchOptions()\n {\n this.index = - 1;\n\n if ( Any.isEmpty(this.search) ) {\n return this.searched = this.elements;\n }\n\n let searchRegex = new RegExp(this.search, 'i');\n\n let searched = Arr.filter(this.elements, (option) => {\n return option.label.match(searchRegex);\n });\n\n this.searched = searched;\n },\n\n toggleOption(value, event = null)\n {\n if ( Any.isEmpty(value) ) {\n return;\n }\n\n if ( event && event.which !== 1 ) {\n return;\n }\n\n if ( event ) {\n event.preventDefault();\n }\n\n let tempValue = this.tempValue;\n\n if ( this.multiple ) {\n this.focusInput();\n }\n\n if ( !this.multiple ) {\n tempValue = value;\n }\n\n if ( this.multiple ) {\n Arr.toggle(tempValue, value);\n }\n\n this.$refs.popover.close();\n\n let denyUpdate = this.tempValue === tempValue;\n\n if ( this.multiple && !Any.isArray(this.modelValue) ) {\n denyUpdate = false;\n }\n\n if ( !this.multiple && Any.isArray(this.modelValue) ) {\n denyUpdate = false;\n }\n\n if ( denyUpdate ) {\n return;\n }\n\n this.$emit('update:modelValue',\n this.tempValue = tempValue);\n },\n\n getOptionLabel(value)\n {\n let option = Arr.find(this.elements,\n { tempValue: value });\n\n if ( !option && this.allowCreate ) {\n return value;\n }\n\n if ( !option && !this.allowCreate ) {\n return this.trans(this.undefinedText);\n }\n\n return option.tempLabel;\n },\n\n selectPrev()\n {\n let newIndex = this.index - 1;\n\n if ( newIndex < 0 ) {\n newIndex = this.searched.length - 1;\n }\n\n this.index = newIndex;\n\n this.scrollToCurrent();\n },\n\n selectNext()\n {\n let newIndex = this.index + 1;\n\n if ( newIndex > this.searched.length - 1 ) {\n newIndex = 0;\n }\n\n this.index = newIndex;\n\n this.scrollToCurrent();\n },\n\n createOrToggle()\n {\n if ( this.allowCreate && this.search ) {\n return this.createOption();\n }\n\n let selected = Arr.get(this.searched,\n this.index);\n\n if ( this.searched.length === 1 ) {\n selected = Arr.first(this.searched);\n }\n\n if ( !selected || selected.disabled ) {\n return;\n }\n\n this.toggleOption(selected.tempValue);\n },\n\n createOption()\n {\n this.toggleOption(this.search);\n\n this.search = '';\n },\n\n scrollToCurrent()\n {\n if ( !this.focus ) {\n return;\n }\n\n let selected = Arr.get(this.searched,\n this.index);\n\n if ( !selected ) {\n return;\n }\n\n if ( this.$refs.scrollbar ) {\n this.$refs.scrollbar.scrollIntoView(`[data-option=\"${selected._.uid}\"]`);\n }\n\n if ( this.$refs.virtualbar ) {\n this.$refs.virtualbar.scrollToIndex(this.index);\n }\n },\n\n scrollToClosest()\n {\n if ( !this.focus ) {\n return;\n }\n\n let value = this.tempValue;\n\n if ( Any.isArray(this.tempValue) ) {\n value = Arr.first(this.tempValue);\n }\n\n if ( !value ) {\n return;\n }\n\n let index = Arr.findIndex(this.elements, {\n tempValue: value\n });\n\n if ( !index ) {\n return;\n }\n\n if ( this.$refs.virtualbar ) {\n this.$refs.virtualbar.scrollToIndex(index, 250);\n }\n\n let select = `[data-option=\"${Obj.get(this.elements[index], '_.uid', 0)}\"]`;\n\n if ( this.$refs.scrollbar ) {\n this.$refs.scrollbar.scrollIntoView(select, 250);\n }\n }\n\n },\n\n renderLabelClear()\n {\n if ( !this.clearable || Any.isEmpty(this.tempValue) ) {\n return null;\n }\n\n let props = {};\n\n if ( !this.deepDisabled ) {\n props.onMousedown = this.clear;\n }\n\n return (\n <div class=\"n-select__clear\" {...props}>\n <i class={nano.Icons.times}></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-select__angle\">\n <i class={nano.Icons.angleDown}></i>\n </div>\n );\n },\n\n renderLabelItem(value)\n {\n let classList = [\n 'n-select__item'\n ];\n\n let props = {\n class: nano.Icons.times,\n };\n\n if ( !this.deepDisabled ) {\n props.onMousedown = (event) => this.toggleOption(value, event);\n }\n\n let labelHtml = (\n <span>{this.getOptionLabel(value)}</span>\n );\n\n return (\n <div class={classList}>\n {[labelHtml, <i {...props}></i>]}\n </div>\n );\n },\n\n renderLabelCollapse()\n {\n let first = Arr.first(this.tempValue);\n\n if ( !first ) {\n return null;\n }\n\n let firstHtml = this.ctor('renderLabelItem')(first);\n\n if ( this.tempValue.length === 1 ) {\n return firstHtml;\n }\n\n let count = this.tempValue.length - 1;\n\n let collapseHtml = (\n <div class=\"n-select__item\">\n <span>{this.choice(this.collapseText, count)}</span>\n </div>\n );\n\n return [\n firstHtml, collapseHtml\n ];\n },\n\n renderLabelItems()\n {\n if ( !Any.isArray(this.tempValue) ) {\n return null;\n }\n\n if ( this.collapse ) {\n return this.ctor('renderLabelCollapse')();\n }\n\n return Arr.each(this.tempValue, (value) => {\n return this.ctor('renderLabelItem')(value);\n });\n },\n\n renderMultiple()\n {\n let isEmptyValue = Any.isEmpty(this.tempValue) &&\n !Any.isNumber(this.tempValue);\n\n let props = {\n value: this.search,\n placeholder: this.placeholder,\n disabled: this.deepDisabled,\n onFocus: this.onFocusInput,\n onInput: this.onInputInput,\n onKeydown: this.onKeydownInput\n };\n\n if ( !this.focus ) {\n props.value = null;\n }\n\n if ( !isEmptyValue ) {\n props.placeholder = null;\n }\n\n let inputHtml = (\n <div class=\"n-select__input\">\n <input ref=\"input\" {...props} />\n </div>\n );\n\n return [\n this.ctor('renderLabelClear')(),\n (\n <div class=\"n-select__items\">\n {[this.ctor('renderLabelItems')(), inputHtml]}\n </div>\n ),\n this.ctor('renderLabelAngle')()\n ];\n },\n\n renderSingle()\n {\n let isEmptyValue = Any.isEmpty(this.tempValue) &&\n !Any.isNumber(this.tempValue);\n\n let modelLabel = this.getOptionLabel(\n this.tempValue);\n\n if ( isEmptyValue ) {\n modelLabel = null;\n }\n\n let props = {\n value: this.search,\n placeholder: this.placeholder,\n disabled: this.deepDisabled,\n onFocus: this.onFocusInput,\n onInput: this.onInputInput,\n onKeydown: this.onKeydownInput\n };\n\n if ( !this.search && this.custom ) {\n props.value = this.tempValue;\n }\n\n if ( !this.focus ) {\n props.value = modelLabel;\n }\n\n if ( !isEmptyValue ) {\n props.placeholder = modelLabel;\n }\n\n return [\n this.ctor('renderLabelClear')(),\n (\n <div class=\"n-select__input\">\n <input ref=\"input\" {...props} />\n </div>\n ),\n this.ctor('renderLabelAngle')()\n ];\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-select__display'\n ];\n\n if ( this.multiple ) {\n classList.push('n-multiple');\n }\n\n let displayHtml = this.ctor('renderSingle');\n\n if ( this.multiple ) {\n displayHtml = this.ctor('renderMultiple');\n }\n\n return (\n <div class={classList}>{displayHtml()}</div>\n );\n },\n\n renderItems()\n {\n let emptyHtml = (\n <div class=\"n-select__empty\">\n <NEmptyIcon>{this.trans(this.emptyText)}</NEmptyIcon>\n </div>\n );\n\n if ( !this.searched.length ) {\n return emptyHtml;\n }\n\n if ( this.lazy ) {\n return this.ctor('renderLazyItems')();\n }\n\n let options = Obj.each(this.searched, (option, index) => {\n return option.ctor('renderOption')(index);\n });\n\n let props = {\n relative: true, size: this.size\n }\n\n return (\n <NScrollbar ref=\"scrollbar\" class=\"n-select__body\" {...props}>\n {Obj.values(options)}\n </NScrollbar>\n );\n },\n\n renderLazyOption(value, index)\n {\n let classList = [];\n\n let isMultipleActive = this.multiple &&\n Arr.has(this.tempValue, value.value);\n\n if ( isMultipleActive ) {\n classList.push('n-active');\n }\n\n let isSingleActive = ! this.multiple &&\n this.tempValue === value.value;\n\n if ( isSingleActive ) {\n classList.push('n-active');\n }\n\n if ( this.index === Num.int(index) ) {\n classList.push('n-focus');\n }\n\n let props = {\n 'type': this.type,\n 'clickClose': ! this.multiple,\n };\n\n props['onMousedown'] = (e) => {\n this.toggleOption(value.value, e);\n };\n\n if ( isSingleActive || isMultipleActive ) {\n props.icon = nano.Icons.checked;\n }\n\n return (\n <NPopoverOption class={classList} {...props}>\n {value.label}\n </NPopoverOption>\n );\n },\n\n renderLazyItems()\n {\n let props = {\n items: this.searched\n };\n\n props.renderNode = ({ value, index }) => {\n return this.ctor('renderLazyOption')(value, index);\n };\n\n return (\n <NVirtualscroller ref=\"virtualbar\" class=\"n-select__body n-virtual\" {...props} />\n );\n },\n\n renderPopover()\n {\n let props = {\n class: 'n-popover--select',\n trigger: 'click',\n width: - 1,\n listen: true,\n size: this.size,\n scrollClose: true,\n disabled: this.deepDisabled,\n onClose: this.resetInput\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n {{ raw: this.ctor('renderItems') }}\n </NPopover>\n );\n },\n\n renderOptions()\n {\n if ( this.lazy ) {\n return null;\n }\n\n if ( Any.isEmpty(this.options) ) {\n return this.$slots.default && this.$slots.default();\n }\n\n let optionRender = ($value, $index) => {\n\n let props = {\n label: Obj.get({ $value, $index }, this.optionsLabel, null),\n value: Obj.get({ $value, $index }, this.optionsValue, null),\n };\n\n return (<NSelectOption {...props}></NSelectOption>);\n };\n\n return Obj.values(Obj.each(this.options, optionRender));\n },\n\n render()\n {\n let classList = [\n 'n-select',\n 'n-select--' + this.type,\n 'n-select--' + this.size,\n ];\n\n let isEmptyValue = Any.isEmpty(this.tempValue) &&\n !Any.isNumber(this.tempValue);\n\n if ( isEmptyValue ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList} onClick={this.focusInput}>\n {this.ctor('renderDisplay')()}\n {this.ctor('renderPopover')()}\n {this.ctor('renderOptions')()}\n </div>\n );\n }\n\n}\n","import { Num, Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSelectOption',\n\n inheritAttrs: false,\n\n inject: {\n\n NSelect: {\n default: undefined\n }\n\n },\n\n props: {\n\n value: {\n default()\n {\n return '';\n }\n },\n\n label: {\n default()\n {\n return null;\n }\n },\n\n valueProp: {\n default()\n {\n return null;\n }\n },\n\n labelProp: {\n default()\n {\n return null;\n }\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n computed: {\n\n tempValue()\n {\n if ( Any.isEmpty(this.valueProp) ) {\n return this.value;\n }\n\n return Obj.get(this.value, this.valueProp);\n },\n\n tempLabel()\n {\n if ( Any.isEmpty(this.labelProp) ) {\n return this.label;\n }\n\n return Obj.get(this.value, this.labelProp);\n }\n\n },\n\n mounted()\n {\n if ( ! this.NSelect.lazy ) {\n this.NSelect.addOption(this);\n }\n },\n\n beforeUnmount()\n {\n if ( ! this.NSelect.lazy ) {\n this.NSelect.removeOption(this);\n }\n },\n\n methods: {\n\n toggleItem(event) \n {\n event.preventDefault();\n\n if ( event.which !== 1 ) {\n return;\n }\n\n if ( this.disabled ) {\n return;\n }\n\n this.NSelect.toggleOption(this.tempValue, \n event);\n },\n\n },\n\n renderOption(index)\n {\n\n let classList = [];\n\n let isMultipleActive = this.NSelect.multiple && \n Arr.has(this.NSelect.tempValue, this.tempValue);\n\n if ( isMultipleActive ) {\n classList.push('n-active');\n }\n\n let isSingleActive = ! this.NSelect.multiple && \n this.NSelect.tempValue === this.tempValue;\n\n if ( isSingleActive ) {\n classList.push('n-active');\n }\n\n if ( this.NSelect.index === Num.int(index) ) {\n classList.push('n-focus');\n }\n\n let props = {\n 'disabled': this.disabled,\n 'onMousedown': this.toggleItem,\n 'type': this.NSelect.type,\n 'clickClose': ! this.NSelect.multiple,\n };\n\n if ( isSingleActive || isMultipleActive ) {\n props.icon = nano.Icons.checked;\n }\n\n // Required for scrolldown\n props['data-option'] = this._.uid;\n\n return (\n <NPopoverOption class={classList} {...props}>\n { this.$slots.default && this.$slots.default() || this.tempLabel }\n </NPopoverOption>\n );\n },\n\n render()\n {\n return null;\n }\n\n}\n","import Vue from \"vue\";\n\nimport Select from './src/select/select';\nimport SelectOption from './src/select-option/select-option';\n\nexport default function (App) {\n App.component(Select.name, Select);\n App.component(SelectOption.name, SelectOption);\n}\n","import { Arr, Obj, Any, UUID } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCheckbox',\n\n inject: {\n\n NCheckboxGroup: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n value: {\n default()\n {\n return null;\n }\n },\n\n allowUncheck: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n intermediate: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n global: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n },\n\n computed: {\n\n tempComputed()\n {\n return ! this.global ? this.tempChecked :\n this.NCheckboxGroup.globalChecked;\n },\n\n tempIntermediate()\n {\n return ! this.global ? this.intermediate :\n this.NCheckboxGroup.globalIntermediate;\n },\n\n tempDisabled()\n {\n return ! this.global ? this.disabled :\n this.NCheckboxGroup.globalDisabled;\n }\n\n },\n\n data()\n {\n return {\n uid: UUID(), tempChecked: this.modelValue\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempChecked ) {\n this.tempChecked = value;\n }\n }\n\n },\n\n beforeMount()\n {\n if ( this.NCheckboxGroup ) {\n this.tempChecked = this.NCheckboxGroup.isChecked(this.value);\n }\n },\n\n mounted()\n {\n if ( ! this.NCheckboxGroup || this.global ) {\n return;\n }\n\n this.$watch('NCheckboxGroup.tempValue', () => {\n this.tempChecked = this.NCheckboxGroup.isChecked(this.value);\n });\n\n this.NCheckboxGroup.addCheckbox(this);\n },\n\n beforeUnmount()\n {\n if ( this.NCheckboxGroup && ! this.global ) {\n this.NCheckboxGroup.removeCheckbox(this);\n }\n },\n\n methods: {\n\n toggle()\n {\n this.$emit('update:modelValue', this.tempChecked = ! this.tempChecked);\n },\n\n check()\n {\n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.checkCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = true);\n },\n\n uncheck()\n {\n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.uncheckCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = false);\n },\n\n eventShiftClick()\n {\n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.shiftCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = true);\n },\n\n eventLocalClick(event)\n {\n let canClick = ! this.tempDisabled || (this.allowUncheck &&\n this.tempChecked);\n\n if ( ! canClick ) {\n return;\n }\n\n event.preventDefault();\n\n if ( event.shiftKey ) {\n return this.eventShiftClick();\n }\n \n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.toggleCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = ! this.tempChecked);\n },\n\n eventGlobalClick()\n {\n let canClick = ! this.tempDisabled || (this.allowUncheck &&\n this.tempChecked);\n\n if ( ! canClick ) {\n return;\n }\n\n this.NCheckboxGroup.toggleAll();\n },\n\n updateFromGroup()\n {\n let checked = this.NCheckboxGroup.isChecked(this.value);\n\n if ( this.tempChecked === checked ) {\n return;\n }\n \n this.$emit('update:modelValue', this.tempChecked = checked);\n }\n\n },\n\n renderCheckbox()\n {\n let interHtml = this.$slots.intermediate &&\n this.$slots.intermediate();\n\n if ( ! interHtml ) {\n interHtml = (<i class={nano.Icons.intermediate}></i>);\n }\n\n let checkHtml = this.$slots.checked &&\n this.$slots.checked();\n\n if ( ! checkHtml ) {\n checkHtml = (<i class={nano.Icons.checked}></i>);\n }\n\n return (\n <div class=\"n-checkbox__checkbox\">\n { this.tempIntermediate ? interHtml : checkHtml }\n </div>\n );\n },\n\n renderLabel()\n {\n if ( ! this.cslo('default') && ! this.cslo('label') ) {\n return null;\n }\n\n return (\n <div class=\"n-checkbox__label\">\n { this.$slots.default() || this.$slots.label() }\n </div>\n );\n },\n\n render()\n {\n let size = this.size;\n\n if ( this.NCheckboxGroup ) {\n size = this.NCheckboxGroup.size;\n }\n\n let classList = [\n 'n-checkbox',\n 'n-checkbox--' + size,\n 'n-checkbox--' + this.type,\n ];\n\n if ( this.allowUncheck ) {\n classList.push('n-uncheck');\n }\n\n if ( this.tempComputed ) {\n classList.push('n-checked');\n }\n\n if ( this.tempIntermediate ) {\n classList.push('n-intermediate');\n }\n\n if ( this.tempDisabled ) {\n classList.push('n-disabled');\n }\n\n if ( this.tempComputed && this.allowUncheck ) {\n Arr.remove(classList, 'n-disabled');\n }\n\n let props = Obj.clone(this.$attrs);\n\n if ( this.global ) {\n props.onMousedown = this.eventGlobalClick;\n }\n\n if ( ! this.global ) {\n props.onMousedown = this.eventLocalClick;\n }\n\n return (\n <div class={classList} {...props}>\n { [this.ctor('renderCheckbox')(), this.ctor('renderLabel')()] }\n </div>\n );\n }\n\n}\n","import { Arr, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCheckboxGroup',\n\n provide()\n {\n return {\n NCheckboxGroup: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'horizontal';\n },\n type: [String]\n }\n\n },\n\n computed: {\n\n globalChecked()\n {\n let checked = Arr.filter(this.elements, (checkbox) => {\n return checkbox.tempChecked;\n });\n\n return checked.length === this.elements.length &&\n this.elements.length !== 0;\n },\n\n globalIntermediate()\n {\n let checked = this.elements.filter((checkbox) => {\n return checkbox.tempChecked;\n });\n\n return checked.length !== this.elements.length &&\n checked.length !== 0 ;\n },\n\n globalDisabled()\n {\n return this.elements.length === 0;\n },\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n index: -1,\n elements: []\n }\n },\n\n watch: {\n\n modelValue()\n {\n if ( this.tempValue = this.modelValue ) {\n this.tempValue = this.modelValue;\n }\n \n },\n\n },\n\n methods: {\n\n addCheckbox(checkbox)\n {\n this.index = -1;\n\n Arr.add(this.elements, checkbox, {\n uid: checkbox.uid\n });\n\n this.elements = Arr.sort(this.elements, 'sort');\n },\n\n removeCheckbox(checkbox)\n {\n this.index = -1;\n \n Arr.remove(this.elements, {\n uid: checkbox.uid\n });\n },\n\n toggleCheckbox(checkbox, emit = true)\n {\n let index = Arr.findIndex(this.elements, {\n uid: checkbox.uid\n });\n\n if ( ! checkbox.tempChecked ) {\n this.index = index;\n }\n\n Arr.toggle(this.tempValue, checkbox.value);\n\n if ( ! emit ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n checkCheckbox(checkbox, emit = true)\n {\n Arr.add(this.tempValue, checkbox.value);\n\n if ( ! emit ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n uncheckCheckbox(checkbox, emit = true)\n {\n Arr.remove(this.tempValue, checkbox.value);\n\n if ( ! emit ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n shiftCheckbox(checkbox)\n {\n if ( this.index === -1 ) {\n return this.toggleCheckbox(checkbox, false);\n }\n\n let index = Arr.findIndex(this.elements, {\n uid: checkbox.uid\n });\n\n let checkboxes = this.elements.slice(this.index, index + 1);\n\n if ( index < this.index ) {\n checkboxes = this.elements.slice(index, this.index + 1);\n }\n\n this.index = -1;\n\n Arr.each(checkboxes, (checkbox) => {\n this.checkCheckbox(checkbox, false);\n });\n\n Arr.each(checkboxes, (checkbox) => {\n checkbox.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n toggleAll()\n {\n this.globalChecked ? this.uncheckAll() : this.checkAll();\n },\n\n checkAll()\n {\n Arr.each(this.elements, (checkbox) => {\n this.checkCheckbox(checkbox, false);\n });\n\n Arr.each(this.elements, (checkbox) => {\n checkbox.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n uncheckAll()\n {\n Arr.each(this.elements, (checkbox) => {\n this.uncheckCheckbox(checkbox, false);\n });\n\n Arr.each(this.elements, (checkbox) => {\n checkbox.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n isChecked(value)\n {\n return Arr.has(this.tempValue, value);\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-checkbox-group',\n 'n-checkbox-group--' + this.size,\n 'n-checkbox-group--' + this.align,\n ];\n\n return (\n <div class={classList}>\n {this.$slots.default()}\n </div>\n );\n }\n\n}\n","import Vue from \"vue\";\n\nimport Checkbox from './src/checkbox/checkbox';\nimport CheckboxGroup from './src/checkbox-group/checkbox-group';\n\nexport default function (App) {\n App.component(Checkbox.name, Checkbox);\n App.component(CheckboxGroup.name, CheckboxGroup);\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NRadio',\n\n model: {\n prop: 'checked'\n },\n\n inject: {\n\n NRadioGroup: {\n default: undefined\n }\n\n },\n\n props: {\n\n value: {\n default()\n {\n return null;\n }\n },\n\n checked: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n },\n\n computed: {\n\n uid()\n {\n return this._.uid;\n }\n\n },\n\n data()\n {\n return {\n tempChecked: this.checked\n };\n },\n\n watch: {\n\n checked()\n {\n if ( this.checked !== this.tempChecked ) {\n this.tempChecked = this.checked;\n }\n }\n\n },\n\n beforeMount()\n {\n if ( this.NRadioGroup ) {\n this.tempChecked = this.NRadioGroup.isChecked(this.value);\n }\n },\n\n mounted()\n {\n if ( this.NRadioGroup ) {\n this.NRadioGroup.addRadio(this);\n }\n },\n\n beforeUnmount()\n {\n if ( this.NRadioGroup ) {\n this.NRadioGroup.removeRadio(this);\n }\n },\n\n methods: {\n\n check()\n {\n if ( this.NRadioGroup ) {\n this.NRadioGroup.checkRadio(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = true);\n },\n\n updateFromGroup()\n {\n let checked = this.NRadioGroup.isChecked(this.value);\n\n if ( this.tempChecked === checked ) {\n return;\n }\n \n this.$emit('update:modelValue', this.tempChecked = checked);\n }\n\n },\n\n renderRadio()\n {\n return (\n <div class=\"n-radio__radio\">\n <span></span>\n </div>\n );\n },\n\n renderLabel()\n {\n if ( ! this.$slots.default && ! this.$slots.label ) {\n return null;\n }\n\n return (\n <div class=\"n-radio__label\">\n { this.$slots.default() || this.$slots.label() }\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-radio',\n 'n-radio--' + this.size,\n 'n-radio--' + this.type,\n ];\n\n if ( this.tempChecked ) {\n classList.push('n-checked');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = Obj.clone(this.$attrs);\n\n if ( ! this.disabled ) {\n props.onMousedown = this.check;\n }\n\n return (\n <div class={classList} {...props}>\n { this.ctor('renderRadio')() }\n { this.ctor('renderLabel')() }\n </div>\n );\n }\n\n}\n","import { Arr, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NRadioGroup',\n\n provide()\n {\n return {\n NRadioGroup: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'horizontal';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n elements: []\n }\n },\n\n watch: {\n\n modelValue()\n {\n if ( this.modelValue !== this.tempValue ) {\n this.tempValue = this.modelValue;\n }\n },\n\n },\n\n methods: {\n\n addRadio(radio)\n {\n Arr.add(this.elements, radio, {\n uid: radio.uid\n });\n },\n\n removeRadio(radio)\n {\n Arr.remove(this.elements, {\n uid: radio.uid\n });\n },\n\n checkRadio(radio)\n {\n this.tempValue = radio.value;\n \n Arr.each(this.elements, (radio) => {\n radio.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n isChecked(value)\n {\n return this.tempValue === value;\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-radio-group',\n 'n-radio-group--' + this.size,\n 'n-radio-group--' + this.align,\n ];\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n\n}\n","import NRadio from './src/radio/radio';\nimport NRadioGroup from './src/radio-group/radio-group';\n\nexport default function (App) {\n App.component(NRadio.name, NRadio);\n App.component(NRadioGroup.name, NRadioGroup);\n}\n","import { Arr, Obj, Any, Str } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCascaderPanel',\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n clearValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n hover: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n trigger: {\n default()\n {\n return 'hover';\n },\n type: [String]\n },\n\n labelProp: {\n default()\n {\n return 'label';\n },\n type: [String]\n },\n\n valueProp: {\n default()\n {\n return 'value';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n disabledProp: {\n default()\n {\n return 'disabled';\n },\n type: [String]\n },\n\n },\n\n computed: {\n\n touch() {\n return !! ('ontouchstart' in window || \n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n tempHover: this.hover,\n };\n },\n\n watch: {\n\n modelValue(value) {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n hover(value) {\n if ( value !== this.tempHover ) {\n this.tempHover = value;\n }\n }\n\n },\n\n methods: {\n\n clearCascader()\n {\n this.$emit('update:modelValue', this.tempHover = \n this.tempValue = this.clearValue);\n },\n\n onHover(cascade)\n {\n return (event) => this.hoverItem(cascade, event)\n },\n\n onSelect(cascade)\n {\n return (event) => this.selectItem(cascade, event)\n },\n\n hoverItem(cascade, event = null)\n {\n // Hover intend emulation\n clearTimeout(this.delay);\n\n let updateHover = () => {\n this.$emit('update:hover', \n this.tempHover = cascade);\n };\n\n this.delay = setTimeout(updateHover, 130);\n },\n\n selectItem(cascade, event = null)\n {\n clearTimeout(this.clickTimer);\n\n if ( ! this.lastclick ) {\n this.lastclick = 0;\n }\n\n this.lastclick++;\n\n let trigger = this.touch ? 'click' : \n this.trigger ;\n \n this.clickTimer = setTimeout(() => \n this.lastclick = 0, 240);\n\n this.hoverTimer = setTimeout(() => \n this.hoverItem(cascade), 240);\n\n if ( this.lastclick === 1 && trigger === 'click' ) {\n return this.hoverItem(cascade, event);\n }\n\n if ( event ) {\n event.preventDefault();\n }\n\n this.clickTimer = setTimeout(() => \n this.fireSelectItem(cascade), 50);\n },\n\n fireSelectItem(cascade)\n {\n clearTimeout(this.hoverTimer);\n\n this.lastclick = 0;\n\n this.$emit('update:modelValue', \n this.tempValue = cascade);\n }\n\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-cascader-panel',\n 'n-cascader-panel--' + this.size\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderLabel')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n )\n },\n\n renderOption(item, cascade = [])\n {\n let value = Obj.get(item, this.valueProp);\n\n let classList = [\n 'n-popover-option'\n ];\n\n if ( Arr.has(this.tempValue, item[this.valueProp]) ) {\n classList.push('n-active');\n }\n\n let disabled = Obj.get(item, this.disabledProp, false);\n\n if ( disabled ) {\n classList.push('n-disabled');\n }\n\n let props = {\n size: this.size,\n type: this.type,\n clickClose: false\n };\n\n if ( Arr.last(this.tempValue) === value ) {\n props.icon = nano.Icons.checked;\n }\n\n let tempCascade = Arr.merge(Arr.clone(cascade), [value]);\n\n if ( this.trigger === 'hover' ) {\n props.onMousemove = Any.framerate(this.onHover(tempCascade), 30);\n }\n\n if ( ! disabled ) {\n props['on' + Str.ucfirst(this.mousedown)] = this.onSelect(tempCascade);\n }\n\n let children = Obj.get(item, this.childProp);\n\n if ( ! props.icon && ! Any.isEmpty(children) ) {\n props.icon = nano.Icons.angleRight;\n }\n\n return (\n <NPopoverOption class={classList} {...props}>\n { Obj.get(item, this.labelProp) }\n </NPopoverOption>\n );\n },\n\n renderOptions(items, cascade = [])\n {\n if ( Any.isEmpty(items) ) {\n return null;\n }\n\n return (\n <div class=\"n-cascader-panel__items\">\n <NScrollbar relative={true}>\n {\n Arr.each(items, (item) => {\n return this.ctor('renderOption')(item, cascade);\n })\n }\n </NScrollbar>\n </div>\n )\n },\n\n renderCascade()\n {\n let renderList = [\n this.ctor('renderOptions')(this.options)\n ];\n\n let items = this.options, cascade = [];\n\n Arr.each(this.tempHover, (value) => {\n\n if ( ! items ) {\n return;\n }\n\n cascade.push(value);\n\n let item = Arr.find(items, {\n [this.valueProp]: value\n });\n\n items = Obj.get(item, this.childProp);\n\n let options = this.ctor('renderOptions')\n (items, cascade);\n\n renderList.push(options);\n });\n\n return renderList;\n },\n\n render()\n {\n let classList = [\n 'n-cascader-panel',\n 'n-cascader-panel--' + this.size\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>{ this.ctor('renderCascade')() }</div>\n );\n }\n\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCascader',\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n clearValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n current: {\n default()\n {\n return null;\n }\n },\n\n placeholder: {\n default()\n {\n return 'Please select';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n trigger: {\n default()\n {\n return 'hover';\n },\n type: [String]\n },\n\n labelProp: {\n default()\n {\n return 'label';\n },\n type: [String]\n },\n\n valueProp: {\n default()\n {\n return 'value';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n disabledProp: {\n default()\n {\n return 'disabled';\n },\n type: [String]\n },\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n tempHover: this.modelValue,\n focus: false,\n };\n },\n\n methods: {\n\n clearCascader()\n {\n this.focus = true;\n\n this.$emit('update:modelValue', \n this.tempValue = this.tempHover = this.clearValue);\n },\n\n onCascaderInput(value)\n {\n this.focus = false;\n\n this.$emit('update:modelValue', \n this.tempValue = value);\n },\n\n onCascaderHover(value)\n {\n this.$emit('update:hover', \n this.tempHover = value);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n },\n\n watch: {\n\n modelValue(value) {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n renderLabelClear()\n {\n if ( ! this.clearable || Any.isEmpty(this.tempValue) ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearCascader;\n }\n\n return (\n <div class=\"n-cascader__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-cascader__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderLabelItems()\n {\n let items = this.options, renderList = [];\n\n if ( Any.isEmpty(this.tempValue) ) {\n return (\n <div class=\"n-cascader__placeholder\">\n { this.trans(this.placeholder) }\n </div>\n );\n }\n\n Arr.each(this.tempValue, (value) => {\n\n if ( ! items ) {\n return;\n }\n\n let item = Arr.find(items, {\n [this.valueProp]: value\n });\n\n items = Obj.get(item, this.childProp);\n\n let itemLabel = (\n <div class=\"n-cascader__item\">\n <span>{ Obj.get(item, this.labelProp) }</span>\n </div>\n );\n\n renderList.push(itemLabel);\n });\n\n return (\n <div class=\"n-cascader__items\">\n { renderList }\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-cascader__display'\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderLabelItems')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderItems()\n {\n let props = Obj.except(this.$props, ['modelValue'], {\n hover: this.tempHover,\n modelValue: this.tempValue,\n });\n\n props['onUpdate:hover'] = this.onCascaderHover;\n props['onUpdate:modelValue'] = this.onCascaderInput;\n\n return (\n <NCascaderPanel class=\"n-cascader__body\" {...props}></NCascaderPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled,\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n { { raw: this.ctor('renderItems') } }\n </NPopover>\n );\n },\n\n render()\n {\n let classList = [\n 'n-cascader',\n 'n-cascader--' + this.type,\n 'n-cascader--' + this.size,\n ];\n\n if ( Any.isEmpty(this.tempValue) ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import CascaderPanel from './src/cascader-panel/cascader-panel';\nimport Cascader from './src/cascader/cascader';\n\nexport default function (App) {\n App.component(CascaderPanel.name, CascaderPanel);\n App.component(Cascader.name, Cascader);\n}","import { Arr, Str, Now, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDatepickerPanel',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n arrive: {\n default()\n {\n return null;\n }\n },\n\n clearArrive: {\n default()\n {\n return null;\n }\n },\n\n depart: {\n default()\n {\n return null;\n }\n },\n\n clearDepart: {\n default()\n {\n return null;\n }\n },\n\n minDate: {\n default()\n {\n return null;\n }\n },\n\n maxDate: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n range: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n monthPanels: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n weekdays: {\n default()\n {\n return [\n 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su',\n ];\n },\n type: [Array]\n },\n\n months: {\n default()\n {\n return [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', \n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',\n ]\n },\n type: [Array]\n }\n\n },\n\n computed: {\n\n yearsGrid()\n {\n return this.tempCache.getYears();\n },\n\n monthsGrid()\n {\n return this.tempCache.getMonths();\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n },\n\n arrive(value)\n {\n if ( value !== this.tempArrive.format(this.format) ) {\n this.tempArrive = Now.make(value);\n }\n },\n\n depart(value)\n {\n if ( value !== this.tempDepart.format(this.format) ) {\n this.tempDepart = Now.make(value);\n }\n },\n\n },\n\n data()\n {\n return {\n tempView: 'date',\n tempRanger: null,\n cacheArrive: null,\n cacheDepart: null,\n tempValue: Now.make(this.modelValue, this.format),\n tempCache: Now.make(this.modelValue, this.format),\n tempArrive: Now.make(this.arrive),\n tempDepart: Now.make(this.depart),\n }\n },\n\n methods: {\n\n gotoDate()\n {\n this.tempView = 'date';\n },\n\n gotoMonth()\n {\n this.tempView = 'month';\n },\n\n gotoYear()\n {\n this.tempView = 'year';\n },\n\n patchDate(now)\n {\n if ( Any.isString(now) ) {\n now = Now.make(now);\n }\n\n if ( Any.isEmpty(this.modelValue) ) {\n now.resetTime();\n } else {\n now.applyTime(this.tempValue);\n }\n\n // Copy now to cache\n this.tempCache = now.clone();\n\n // Copy now to value\n this.tempValue = now.clone();\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n patchMonth(now)\n {\n if ( Any.isString(now) ) {\n now = Now.make(now);\n }\n\n this.tempCache = now.clone();\n\n this.gotoDate();\n },\n\n printRange(now)\n {\n this.tempRanger = now.clone();\n },\n\n patchYear(now)\n {\n if ( Any.isString(now) ) {\n now = Now.make(now);\n }\n\n this.tempCache = now.clone();\n\n this.gotoMonth();\n },\n\n patchRange(now)\n {\n if ( this.cacheArrive && ! this.cacheDepart ) {\n this.cacheDepart = now.clone();\n }\n\n if ( ! this.cacheArrive && ! this.cacheDepart ) {\n this.cacheArrive = now.clone();\n }\n\n if ( ! this.cacheArrive || ! this.cacheDepart ) {\n return;\n }\n\n this.tempArrive = this.cacheArrive.clone();\n this.tempDepart = this.cacheDepart.clone();\n\n this.$emit('update:arrive', \n this.tempArrive.format(this.format));\n\n this.$emit('update:depart', \n this.tempDepart.format(this.format));\n\n this.cacheArrive = null;\n this.cacheDepart = null;\n\n this.$emit('rangeSelected', [\n this.tempArrive.format(this.format),\n this.tempDepart.format(this.format)\n ]);\n },\n\n },\n\n renderToolbarPrev(closure)\n {\n let props = {\n type: this.type,\n link: true,\n icon: nano.Icons.angleLeft,\n onClick: closure\n };\n\n return (<NButton {...props}></NButton>);\n },\n\n renderToolbarNext(closure)\n {\n let props = {\n type: this.type,\n link: true,\n icon: nano.Icons.angleRight,\n onClick: closure\n };\n\n return (<NButton {...props}></NButton>);\n },\n\n renderToolbarMonth()\n {\n let props = {\n onClick: this.gotoMonth\n };\n\n let monthsHtml = [\n this.months[this.tempCache.month()]\n ];\n\n let month = this.tempCache.clone()\n .addMonths(this.monthPanels - 1);\n\n if ( month.month() !== this.tempCache.month() ) {\n monthsHtml.push(this.months[month.month()]);\n }\n\n return (\n <span class=\"n-datepicker-panel__month\" {...props}>\n { monthsHtml.join(' - ') }\n </span>\n );\n },\n\n renderToolbarYear()\n {\n let props = {\n onClick: this.gotoYear\n };\n\n let yearsHtml = [\n this.tempCache.year()\n ];\n\n let month = this.tempCache.clone()\n .addMonths(this.monthPanels - 1);\n\n if ( month.year() !== this.tempCache.year() ) {\n yearsHtml.push(month.year());\n }\n\n return (\n <span class=\"n-datepicker-panel__year\" {...props}>\n { yearsHtml.join(' - ') }\n </span>\n );\n },\n\n renderToolbar({ prev, next })\n {\n return (\n <div class=\"n-datepicker-panel__toolbar\">\n <div class=\"n-datepicker-panel__display\">\n { this.ctor('renderToolbarMonth')() }\n { this.ctor('renderToolbarYear')() }\n </div>\n <div class=\"n-datepicker-panel__prev\">\n { this.ctor('renderToolbarPrev')(prev) }\n </div>\n <div class=\"n-datepicker-panel__next\">\n { this.ctor('renderToolbarNext')(next) }\n </div>\n </div>\n );\n },\n\n renderDateItem(now, month)\n {\n let classList = [\n 'n-datepicker-panel__day'\n ];\n\n if ( now.equalDate() ) {\n classList.push('n-today');\n }\n\n let isSelected = this.tempValue.valid() && \n now.equalDate(this.tempValue);\n\n if ( isSelected ) {\n classList.push('n-selected');\n }\n\n if ( now.month() === month.month() ) {\n classList.push('n-current');\n }\n\n let isNotBeforeMin = ! this.minDate || \n now.after(this.minDate) || now.equalDate(this.minDate);\n\n let isNotAfterMax = ! this.maxDate || \n now.before(this.maxDate) || now.equalDate(this.maxDate);\n\n if ( ! isNotBeforeMin || ! isNotAfterMax ) {\n classList.push('n-disabled');\n }\n\n let props = {};\n\n if ( isNotBeforeMin && isNotAfterMax ) {\n props.onClick = () => this.patchDate(now);\n }\n\n return (\n <div class={classList} {...props}>\n <span>{ now.format('DD') }</span>\n </div>\n );\n },\n\n renderRangeDateItem(now, month)\n {\n let classList = [\n 'n-datepicker-panel__day'\n ];\n\n if ( now.equalDate('now') ) {\n classList.push('n-today');\n }\n\n if ( now.month() === month.month() ) {\n classList.push('n-current');\n }\n\n let viewMode = 0;\n\n if ( !! this.cacheArrive ) {\n viewMode++;\n }\n\n if ( !! this.cacheDepart ) {\n viewMode++;\n }\n\n let isTempValid = this.tempArrive.valid() && \n this.tempDepart.valid();\n\n if ( viewMode === 0 && isTempValid ) {\n\n if ( now.between(this.tempArrive, this.tempDepart) ) {\n classList.push('n-between');\n classList.push('n-selected');\n }\n\n let arriveFirst = this.tempArrive.before(this.tempDepart);\n\n if ( now.equalDate(this.tempArrive) ) {\n classList.push(arriveFirst ? 'n-arrive' : 'n-depart');\n classList.push('n-selected');\n }\n\n if ( now.equalDate(this.tempDepart) ) {\n classList.push(arriveFirst ? 'n-depart' : 'n-arrive');\n classList.push('n-selected');\n }\n\n }\n\n if ( viewMode === 1 && this.cacheArrive ) {\n\n if ( now.between(this.cacheArrive, this.tempRanger) ) {\n classList.push('n-between');\n }\n\n let arriveFirst = this.cacheArrive.before(this.tempRanger);\n\n if ( now.equalDate(this.cacheArrive) ) {\n classList.push(arriveFirst ? 'n-arrive' : 'n-depart');\n }\n\n if ( now.equalDate(this.tempRanger) ) {\n classList.push(arriveFirst ? 'n-depart' : 'n-arrive');\n }\n\n }\n\n let isNotBeforeMin = ! this.minDate || \n now.after(this.minDate) || now.equalDate(this.minDate);\n\n let isNotAfterMax = ! this.maxDate || \n now.before(this.maxDate) || now.equalDate(this.maxDate);\n\n if ( ! isNotBeforeMin || ! isNotAfterMax ) {\n classList.push('n-disabled');\n }\n\n let props = {\n onMouseenter: () => this.printRange(now)\n };\n\n if ( isNotBeforeMin && isNotAfterMax ) {\n props.onClick = () => this.patchRange(now);\n }\n\n return (\n <div class={classList} {...props}>\n <span>{ now.format('DD') }</span>\n </div>\n );\n },\n\n renderDate()\n {\n let prev = () => {\n this.tempCache = this.tempCache.prevMonth();\n };\n let next = () => {\n this.tempCache = this.tempCache.nextMonth();\n };\n\n let legendHtml = (\n Arr.each(this.weekdays, (day) => {\n return (\n <div class=\"n-datepicker-panel__day\">\n <span>{ this.trans(day) }</span>\n </div>\n );\n })\n );\n\n let renderItem = this.ctor('renderDateItem');\n\n if ( this.range ) {\n renderItem = this.ctor('renderRangeDateItem');\n }\n\n let bodyHtml = (month) => (\n Arr.each(Arr.chunk(month.getDatesGrid(), 7), (chunks) => {\n return (\n <div class=\"n-datepicker-panel__week\">\n { Arr.each(chunks, (chunk) => renderItem(chunk, month)) }\n </div>\n );\n })\n );\n\n let panelHtml = (\n Arr.each(Arr.make(this.monthPanels), (offset) => {\n\n let month = this.tempCache.clone()\n .addMonths(offset - 1);\n\n return (\n <div class=\"n-datepicker-panel__panel\">\n <div class=\"n-datepicker-panel__legend\">\n { legendHtml }\n </div>\n <div class=\"n-datepicker-panel__body\">\n { bodyHtml(month) }\n </div>\n </div>\n );\n })\n );\n\n return (\n <div class=\"n-datepicker-panel__dateview\">\n <div class=\"n-datepicker-panel__header\">\n { this.ctor('renderToolbar')({ prev, next }) }\n </div>\n <div class=\"n-datepicker-panel__panels\">\n { panelHtml }\n </div>\n </div>\n );\n },\n\n renderMonthItem(now)\n {\n let classList = [\n 'n-datepicker-panel__month'\n ];\n\n if ( now.equal(this.tempCache, 'YYYYMM') ) {\n classList.push('n-selected');\n }\n\n if ( now.month() === Now.make('now').month() ) {\n classList.push('n-current');\n }\n\n let props = {\n onClick: () => this.patchMonth(now)\n };\n\n return (\n <div class={classList} {...props}>\n <span>{ this.trans(this.months[now.month()]) }</span>\n </div>\n )\n },\n\n renderMonth()\n {\n let prev = () => {\n this.tempCache = this.tempCache.prevYear();\n };\n\n let next = () => {\n this.tempCache = this.tempCache.nextYear();\n };\n\n return (\n <div class=\"n-datepicker-panel__monthview\">\n <div class=\"n-datepicker-panel__header\">\n { this.ctor('renderToolbar')({ prev, next }) }\n </div>\n <div class=\"n-datepicker-panel__body\">\n <div class=\"n-datepicker-panel__year\">\n { Arr.each(this.monthsGrid, this.ctor('renderMonthItem')) }\n </div>\n </div>\n <div class=\"n-datepicker-panel__footer\">\n <NButton size={this.type} size={this.size} link={true} onClick={this.gotoDate}>\n { this.trans('Go back') }\n </NButton>\n </div>\n </div>\n );\n },\n\n renderYearItem(now)\n {\n let classList = [\n 'n-datepicker-panel__year'\n ];\n\n if ( now.equal(this.tempCache, 'YYYY') ) {\n classList.push('n-selected');\n }\n\n if ( now.year() === Now.make('now').year() ) {\n classList.push('n-current');\n }\n\n let props = {\n onClick: () => this.patchYear(now)\n };\n\n return (\n <div class={classList} {...props}>\n <span>{ now.year() }</span>\n </div>\n )\n },\n\n renderYear()\n {\n let prev = () => {\n this.tempCache = this.tempCache.prevDecade();\n };\n\n let next = () => {\n this.tempCache = this.tempCache.nextDecade();\n };\n\n return (\n <div class=\"n-datepicker-panel__yearview\">\n <div class=\"n-datepicker-panel__header\">\n { this.ctor('renderToolbar')({ prev, next }) }\n </div>\n <div class=\"n-datepicker-panel__body\">\n <div class=\"n-datepicker-panel__decade\">\n { Arr.each(this.yearsGrid, this.ctor('renderYearItem')) }\n </div>\n </div>\n <div class=\"n-datepicker-panel__footer\">\n <NButton size={this.type} size={this.size} link={true} onClick={this.gotoDate}>\n { this.trans('Go back') }\n </NButton>\n </div>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-datepicker-panel',\n 'n-datepicker-panel--' + this.size,\n 'n-datepicker-panel--' + this.type\n ]\n\n return (\n <div class={classList}>\n { this.ctor('render' + Str.ucfirst(this.tempView))() }\n </div>\n );\n }\n\n}","import { Obj, Now, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDatepicker',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n arrive: {\n default()\n {\n return null;\n }\n },\n\n clearArrive: {\n default()\n {\n return null;\n }\n },\n\n depart: {\n default()\n {\n return null;\n }\n },\n\n clearDepart: {\n default()\n {\n return null;\n }\n },\n\n minDate: {\n default()\n {\n return null;\n }\n },\n\n maxDate: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n placeholder: {\n default()\n {\n return Locale.trans('Select date');\n },\n type: [String]\n },\n\n placeholderArrive: {\n default()\n {\n return Locale.trans('Start date');\n },\n type: [String]\n },\n\n placeholderDepart: {\n default()\n {\n return Locale.trans('End date');\n },\n type: [String]\n },\n\n range: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n rangeSeparator: {\n default()\n {\n return '-';\n },\n type: [String]\n },\n\n monthPanels: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n boundary: {\n default()\n {\n return null;\n }\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return Locale.trans('YYYY-MM-DD');\n },\n type: [String]\n },\n\n weekdays: {\n default()\n {\n return [\n Locale.trans('Mo'),\n Locale.trans('Tu'),\n Locale.trans('We'),\n Locale.trans('Th'),\n Locale.trans('Fr'),\n Locale.trans('Sa'),\n Locale.trans('Su'),\n ];\n },\n type: [Array]\n },\n\n months: {\n default()\n {\n return [\n Locale.trans('Jan'),\n Locale.trans('Feb'),\n Locale.trans('Mar'),\n Locale.trans('Apr'),\n Locale.trans('May'),\n Locale.trans('Jun'),\n Locale.trans('Jul'),\n Locale.trans('Aug'),\n Locale.trans('Sep'),\n Locale.trans('Oct'),\n Locale.trans('Nov'),\n Locale.trans('Dec'),\n ];\n },\n type: [Array]\n }\n\n },\n\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n },\n\n arrive(value)\n {\n if ( value !== this.tempArrive.format(this.format) ) {\n this.tempArrive = Now.make(value);\n }\n },\n\n depart(value)\n {\n if ( value !== this.tempDepart.format(this.format) ) {\n this.tempDepart = Now.make(value);\n }\n },\n\n },\n\n data()\n {\n return {\n focus: false,\n tempValue: Now.make(this.modelValue, this.format),\n tempArrive: Now.make(this.arrive, this.format),\n tempDepart: Now.make(this.depart, this.format),\n };\n },\n\n methods: {\n\n clearDatepicker()\n {\n this.range ? this.clearRangeDatepicker() :\n this.clearSingleDatepicker();\n },\n\n clearSingleDatepicker()\n {\n this.tempValue = Now.make(this.clearValue, \n this.format);\n\n this.$emit('update:modelValue', this.clearValue);\n },\n\n\n clearRangeDatepicker()\n {\n this.tempArrive = Now.make(this.clearArrive, \n this.format);\n\n this.$emit('update:arrive', this.clearValue);\n\n this.tempDepart = Now.make(this.clearDepart, \n this.format);\n\n this.$emit('update:depart', this.clearDepart);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n onValueInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n });\n\n this.tempValue = Now.make(moment);\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n onArriveInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n });\n\n this.tempArrive = Now.make(moment);\n\n this.$emit('update:arrive', \n this.tempArrive.format(this.format));\n },\n\n onDepartInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n });\n\n this.tempDepart = Now.make(moment);\n\n this.$emit('update:depart', \n this.tempDepart.format(this.format));\n },\n\n onDatepickerInput(value)\n {\n this.focus = false;\n\n this.tempValue = Now.make(value, \n this.format);\n\n this.$emit('update:modelValue', value);\n },\n\n onDatepickerDepart(value)\n {\n this.focus = false;\n\n this.tempDepart = Now.make(value, \n this.format);\n\n this.$emit('update:depart', value);\n },\n\n onDatepickerArrive(value)\n {\n this.focus = false;\n\n this.tempArrive = Now.make(value, \n this.format);\n\n this.$emit('update:arrive', value);\n },\n\n },\n\n\n renderLabelClear()\n {\n let isEmpty = ! this.tempArrive.initialDate &&\n ! this.tempDepart.initialDate;\n\n if ( ! this.range ) {\n isEmpty = ! this.tempValue.initialDate;\n }\n\n if ( ! this.clearable || isEmpty ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearDatepicker;\n }\n\n return (\n <div class=\"n-datepicker__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-datepicker__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderRange()\n {\n let arriveProps = {\n value: '',\n disabled: this.disabled,\n placeholder: this.placeholderArrive,\n onInput: this.onArriveInput,\n };\n\n if ( this.tempArrive.valid() ) {\n arriveProps.value = this.tempArrive.format(\n this.displayFormat, true);\n }\n\n let departProps = {\n value: '',\n disabled: this.disabled,\n placeholder: this.placeholderDepart,\n onInput: this.onDepartInput,\n };\n\n if ( this.tempDepart.valid() ) {\n departProps.value = this.tempDepart.format(\n this.displayFormat, true);\n }\n\n return [\n (\n <div class=\"n-datepicker__input\">\n <input {...arriveProps}/>\n </div>\n ),\n (\n <div class=\"n-datepicker__seperator\">\n <span>{ this.rangeSeparator }</span>\n </div>\n ),\n (\n <div class=\"n-datepicker__input\">\n <input {...departProps}/>\n </div>\n )\n ];\n },\n\n renderSingle()\n {\n let props = {\n value: '',\n disabled: this.disabled,\n placeholder: this.placeholder,\n onInput: this.onValueInput,\n };\n\n if ( this.tempValue.valid() ) {\n props.value = this.tempValue.format(\n this.displayFormat, true);\n }\n\n return (\n <div class=\"n-datepicker__input\">\n <input {...props}/>\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-datepicker__display'\n ];\n\n if ( this.range ) {\n classList.push('n-range');\n }\n\n let displayHtml = this.ctor('renderSingle');\n\n if ( this.range ) {\n displayHtml = this.ctor('renderRange');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { displayHtml() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderItems()\n {\n \n let props = Obj.except(this.$props, ['modelValue'], {\n arrive: this.tempArrive.format(this.format) || null,\n depart: this.tempDepart.format(this.format) || null,\n modelValue: this.tempValue.format(this.format) || null,\n });\n\n props['onUpdate:arrive'] = this.onDatepickerArrive;\n props['onUpdate:depart'] = this.onDatepickerDepart;\n props['onUpdate:modelValue'] = this.onDatepickerInput;\n\n return (\n <NDatepickerPanel class=\"n-datepicker__body\" {...props}></NDatepickerPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n { { raw: this.ctor('renderItems') } }\n </NPopover>\n );\n },\n\n render()\n {\n let classList = [\n 'n-datepicker',\n 'n-datepicker--' + this.type,\n 'n-datepicker--' + this.size,\n ];\n\n let isEmpty = ! this.tempArrive.initialDate &&\n ! this.tempDepart.initialDate;\n\n if ( ! this.range ) {\n isEmpty = ! this.tempValue.initialDate;\n }\n\n if ( isEmpty ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import DatepickerPanel from \"./src/datepicker-panel/datepicker-panel\";\nimport Datepicker from \"./src/datepicker/datepicker\";\n\nexport default function (App) {\n App.component(DatepickerPanel.name, DatepickerPanel);\n App.component(Datepicker.name, Datepicker);\n}","import { Arr, Obj, Now, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTimepickerPanel',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n placeholder: {\n default()\n {\n return 'Select time';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n }\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return 'HH:mm:ss';\n },\n type: [String]\n },\n\n hoursInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n minutesInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n secondsInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n }\n\n },\n\n computed: {\n\n hoursGrid()\n {\n return this.tempValue.getHours(this.hoursInterval);\n },\n\n minutesGrid()\n {\n return this.tempValue.getMinutes(this.minutesInterval);\n },\n\n secondsGrid()\n {\n return this.tempValue.getSeconds(this.secondsInterval);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n }\n\n },\n\n data()\n {\n let modelValue = Now.make(this.modelValue);\n\n if ( Any.isEmpty(this.modelValue) ) {\n modelValue = modelValue.resetTime();\n }\n\n return {\n tempValue: modelValue,\n }\n },\n\n mounted()\n {\n this.scrollTo();\n },\n\n methods: {\n\n eventSelect(now)\n {\n this.$emit('update:modelValue',\n (this.tempValue = now.clone()).format(this.format));\n },\n\n scrollTo()\n {\n let scrollbars = Obj.only(this.$refs, [\n 'hour', 'minute', 'second'\n ]);\n\n Arr.each(scrollbars, (ref, key) => {\n ref.scrollIntoView(`[data-index=\"${this.tempValue[key]()}\"]`);\n });\n }\n\n },\n\n renderToolbar()\n {\n return (\n <div class=\"n-timepicker-panel__toolbar\">\n <div class=\"n-timepicker-panel__display\">\n <span class=\"n-timepicker-panel__time\">\n {this.tempValue.format(this.displayFormat) || this.placeholder}\n </span>\n </div>\n </div>\n )\n },\n\n renderHourItem(now)\n {\n let classList = [\n 'n-timepicker-panel__item'\n ];\n\n if ( this.tempValue.valid() && now.hour() === this.tempValue.hour() ) {\n classList.push('n-selected');\n }\n\n let props = {\n onMousedown: () => this.eventSelect(now)\n };\n\n return (\n <div class={classList} {...props} data-index={now.hour()}>\n <span>{now.format('HH')}</span>\n </div>\n );\n },\n\n renderHourPanel()\n {\n if ( !this.displayFormat.match('HH') ) {\n return null;\n }\n\n return (\n <NScrollbar ref=\"hour\" class=\"n-timepicker-panel__panel\" wrapClass=\"n-timepicker-panel__wrap\">\n {Arr.each(this.hoursGrid, this.ctor('renderHourItem'))}\n </NScrollbar>\n );\n },\n\n renderMinuteItem(now)\n {\n let classList = [\n 'n-timepicker-panel__item'\n ];\n\n if ( this.tempValue.valid() && now.minute() === this.tempValue.minute() ) {\n classList.push('n-selected');\n }\n\n let props = {\n onMousedown: () => this.eventSelect(now)\n };\n\n return (\n <div class={classList} {...props} data-index={now.minute()}>\n <span>{now.format('mm')}</span>\n </div>\n );\n },\n\n renderMinutePanel()\n {\n if ( !this.displayFormat.match('mm') ) {\n return null;\n }\n\n return (\n <NScrollbar ref=\"minute\" class=\"n-timepicker-panel__panel\" wrapClass=\"n-timepicker-panel__wrap\">\n {Arr.each(this.minutesGrid, this.ctor('renderMinuteItem'))}\n </NScrollbar>\n );\n },\n\n renderSecondItem(now)\n {\n let classList = [\n 'n-timepicker-panel__item'\n ];\n\n if ( this.tempValue.valid() && now.second() === this.tempValue.second() ) {\n classList.push('n-selected');\n }\n\n let props = {\n onMousedown: () => this.eventSelect(now)\n };\n\n return (\n <div class={classList} {...props} data-index={now.second()}>\n <span>{now.format('ss')}</span>\n </div>\n );\n },\n\n renderSecondPanel()\n {\n if ( !this.displayFormat.match('ss') ) {\n return null;\n }\n\n return (\n <NScrollbar ref=\"second\" class=\"n-timepicker-panel__panel\" wrapClass=\"n-timepicker-panel__wrap\">\n {Arr.each(this.secondsGrid, this.ctor('renderSecondItem'))}\n </NScrollbar>\n );\n },\n\n render()\n {\n let classList = [\n 'n-timepicker-panel',\n 'n-timepicker-panel--' + this.size,\n 'n-timepicker-panel--' + this.type,\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n <div class=\"n-timepicker-panel__header\">\n {this.ctor('renderToolbar')()}\n </div>\n <div class=\"n-timepicker-panel__body\">\n {this.ctor('renderHourPanel')()}\n {this.ctor('renderMinutePanel')()}\n {this.ctor('renderSecondPanel')()}\n </div>\n </div>\n );\n }\n\n}","import { Arr, Obj, Now, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTimepicker',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n placeholder: {\n default()\n {\n return 'Select time';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return Locale.trans('HH:mm:ss');\n },\n type: [String]\n },\n\n hoursInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n minutesInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n secondsInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n }\n\n },\n\n computed: {\n\n hoursGrid()\n {\n return this.tempValue.getHours(this.hoursInterval);\n },\n\n minutesGrid()\n {\n return this.tempValue.getMinutes(this.minutesInterval);\n },\n\n secondsGrid()\n {\n return this.tempValue.getSeconds(this.secondsInterval);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n }\n\n },\n\n data()\n {\n return {\n focus: false,\n tempValue: Now.make(this.modelValue),\n }\n },\n\n methods: {\n\n clearTimepicker()\n {\n this.tempValue = Now.make(this.clearValue, \n this.format);\n\n this.$emit('update:modelValue', this.clearValue);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n onValueInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n hour: value.moment.hour(), \n minute: value.moment.minute(), \n second: value.moment.second(),\n });\n\n this.tempValue = Now.make(moment);\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n onTimepickerInput(value)\n {\n this.tempValue = Now.make(value, \n this.format);\n\n this.$emit('update:modelValue', value);\n },\n\n },\n\n renderLabelClear()\n {\n if ( ! this.clearable || ! this.tempValue.valid() ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearTimepicker;\n }\n\n return (\n <div class=\"n-timepicker__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-timepicker__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderSingle()\n {\n let props = {\n value: '',\n disabled: this.disabled,\n placeholder: this.trans(this.placeholder),\n onInput: this.onValueInput,\n };\n\n if ( this.tempValue.valid() ) {\n props.value = this.tempValue.format(\n this.displayFormat, true);\n }\n\n return (\n <div class=\"n-timepicker__input\">\n <input {...props}/>\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-timepicker__display'\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderSingle')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderPanel()\n {\n \n let props = Obj.except(this.$props, ['modelValue'], {\n modelValue: this.tempValue.format(this.format) || null,\n });\n\n props['onUpdate:modelValue'] = this.onTimepickerInput;\n\n return (\n <NTimepickerPanel class=\"n-timepicker__body\" {...props}></NTimepickerPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n { { raw: this.ctor('renderPanel') } }\n </NPopover>\n );\n },\n\n render()\n {\n let classList = [\n 'n-timepicker',\n 'n-timepicker--' + this.type,\n 'n-timepicker--' + this.size,\n ];\n\n if ( ! this.tempValue.valid() ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import TimepickerPanel from \"./src/timepicker-panel/timepicker-panel\";\nimport Timepicker from \"./src/timepicker/timepicker\";\n\nexport default function (App) {\n App.component(TimepickerPanel.name, TimepickerPanel);\n App.component(Timepicker.name, Timepicker);\n}","import { Arr, Dom, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTabs',\n\n provide()\n {\n return {\n NTabs: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n relative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n init: false,\n elements: [], \n width: 0, \n offset: 0, \n tempValue: this.modelValue\n };\n },\n\n methods: {\n\n addTab(tab)\n {\n Arr.add(this.elements, tab, \n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n removeTab(tab)\n {\n Arr.remove(this.elements, \n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n getTab(updateEvent = true)\n {\n let currentTab = Arr.find(this.elements, {\n name: this.modelValue\n });\n\n let sorted = Arr.sort(this.elements, 'sort');\n\n if ( ! currentTab ) {\n currentTab = Arr.first(sorted);\n }\n\n let repeatNext = () => this.getTab(updateEvent);\n\n if ( ! currentTab ) {\n return Any.delay(repeatNext, 250);\n }\n\n if ( currentTab.name === this.tempValue || ! updateEvent ) {\n return;\n }\n\n this.$emit('update:modelValue', \n this.tempValue = currentTab.name);\n },\n\n changeTab(value)\n {\n if ( this.tempValue === value ) {\n return;\n }\n\n this.$emit('update:modelValue', \n this.tempValue = value);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n mounted()\n {\n this.init = true;\n this.getTab(false);\n },\n\n updated()\n {\n let width = Dom.find(this.$el).find('.n-active')\n .width();\n\n this.width = width < 0 ? 0 : width;\n\n let offset = Dom.find(this.$el).find('.n-active')\n .offset('left', this.$el);\n\n this.offset = offset < 0 ? 0 : offset;\n },\n\n renderHeaderIndicator()\n {\n let transform = `scaleX(${this.width / 100}) ` + \n `translateX(${this.offset / (this.width / 100)}px)`;\n\n return (\n <div class=\"n-tabs__indicator\" style={{ transform }}>\n { /* Indicator bar */ }\n </div>\n );\n },\n\n renderHeader()\n {\n if ( this.elements.length <= 1 ) {\n return null;\n }\n\n // FIXME: As soon vue doesnt bug\n let sorted = Arr.sort(this.elements, 'sort');\n \n let tabs = Arr.each(Arr.make(sorted.length), (tab, index) => {\n return sorted[index].ctor('renderHeader')();\n });\n\n return (\n <div class=\"n-tabs__header\">\n {[tabs, this.ctor('renderHeaderIndicator')()]}\n </div>\n );\n },\n\n renderBody()\n {\n return (\n <div class=\"n-tabs__body\">\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-tabs', \n 'n-tabs--' + this.size, \n 'n-tabs--' + this.type\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderHeader')() }\n { this.ctor('renderBody')() }\n </div>\n );\n }\n}\n","import { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NTabsItem',\n\n inject: {\n\n NTabs: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return {\n NTabsItem: this\n };\n },\n\n props: {\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n name: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n sort: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n relative: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n preload: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n keep: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n\n },\n\n methods: {\n\n changeTab()\n {\n this.NTabs.changeTab(this.name);\n }\n\n },\n\n data()\n {\n return {\n _key: null, init: false\n }\n },\n\n beforeMount()\n {\n this.NTabs.addTab(this);\n },\n\n beforeUnmount()\n {\n this.NTabs.removeTab(this);\n },\n\n renderHeaderIcon()\n {\n if ( ! this.$slots.icon && ! this.icon ) {\n return null;\n }\n\n return (\n <div class=\"n-tabs__tab-icon\">\n { this.$slots.icon && this.$slots.icon() || <i class={this.icon}></i> }\n </div>\n );\n },\n\n renderHeaderLabel()\n {\n return (\n <div class=\"n-tabs__tab-label\">\n { this.$slots.label && this.$slots.label () || <span>{this.label}</span> }\n </div>\n );\n },\n\n renderHeader()\n {\n let classList = [\n 'n-tabs__tab'\n ];\n\n if ( this.NTabs.tempValue === this.name ) {\n classList.push('n-active');\n }\n\n let props = {\n onClick: () => this.changeTab(this.name)\n };\n\n return (\n <div class={classList} {...props}>\n { this.ctor('renderHeaderIcon')() }\n { this.ctor('renderHeaderLabel')() }\n </div>\n );\n },\n\n render()\n {\n let renderBody = this.NTabs.tempValue === this.name;\n\n if ( this.NTabs.tempValue !== this.name && this.keep ) {\n renderBody = this.init;\n }\n\n if ( this.NTabs.tempValue !== this.name && this.preload ) {\n renderBody = true;\n }\n\n if ( ! renderBody ) {\n return null;\n }\n\n this.init = true;\n\n let classList = [\n 'n-tabs-item'\n ];\n\n let style = {};\n\n if ( this.NTabs.tempValue !== this.name ) {\n style.display = 'none';\n }\n\n if ( this.$slots.raw ) {\n return this.$slots.raw({ style });\n }\n\n let element = 'div';\n\n if ( ! this.relative && ! this.NTabs.relative ) {\n element = resolveComponent('NScrollbar');\n }\n\n return h(element, { class: classList, style }, this.$slots);\n }\n}\n","import Tabs from './src/tabs/tabs';\nimport TabsItem from './src/tabs-item/tabs-item';\n\nexport default function (App) {\n App.component(Tabs.name, Tabs);\n App.component(TabsItem.name, TabsItem);\n}","import { Arr, Dom, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTags',\n\n provide()\n {\n return {\n NTags: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n tags: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n init: false, elements: [], tempValue: this.modelValue\n };\n },\n\n methods: {\n\n addTag(tab)\n {\n Arr.add(this.elements, tab,\n { label: tab.label });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n removeTag(tab)\n {\n Arr.remove(this.elements,\n { label: tab.label });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n mounted()\n {\n this.init = true;\n },\n\n render()\n {\n let classList = [\n 'n-tags',\n ];\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n}\n","import { Arr, Any, Dom } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTagsItem',\n\n inject: {\n\n NTags: {\n default: undefined\n }\n\n },\n\n props: {\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return -1;\n },\n type: [String, Number]\n },\n\n color: {\n default()\n {\n return 0;\n },\n type: [String, Number]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n },\n\n beforeMount()\n {\n if ( this.NTags ) {\n this.NTags.addTag(this);\n }\n },\n\n beforeUnmount()\n {\n if ( this.NTags ) {\n this.NTags.removeTag(this);\n }\n },\n\n renderIcon()\n {\n if ( Any.isEmpty(this.icon) ) {\n return null;\n }\n\n return (\n <i class={this.icon}></i>\n );\n },\n\n renderLabel()\n {\n return (\n <span>{this.$slots.default ? this.$slots.default() : this.label}</span>\n );\n },\n\n render()\n {\n let size = this.size;\n\n if ( this.NTags ) {\n size = this.NTags.size;\n }\n\n let classList = [\n 'n-tags-item',\n 'n-tags-item--' + size,\n ,\n ];\n\n if ( this.type === -1 ) {\n classList.push('n-tags-item--color-' + this.color);\n }\n\n if ( this.type !== -1 ) {\n classList.push('n-tags-item--color-' + this.type);\n }\n\n return (\n <div class={classList}>\n {[this.ctor('renderIcon')(), this.ctor('renderLabel')()]}\n </div>\n );\n }\n\n}\n","import Tags from './src/tags/tags';\nimport TagsItem from './src/tags-item/tags-item';\n\nexport default function (App) {\n App.component(Tags.name, Tags);\n App.component(TagsItem.name, TagsItem);\n}","import { Arr, Dom, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCollapse',\n\n provide()\n {\n return {\n NCollapse: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n relative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n init: false, elements: [], tempValue: this.modelValue\n };\n },\n\n methods: {\n\n addTab(tab)\n {\n Arr.add(this.elements, tab,\n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n removeTab(tab)\n {\n Arr.remove(this.elements,\n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n showTab(value)\n {\n if ( Arr.has(this.tempValue, value) ) {\n return;\n }\n\n Arr.add(this.tempValue, value);\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n hideTab(value)\n {\n if ( ! Arr.has(this.tempValue, value) ) {\n return;\n }\n\n Arr.remove(this.tempValue, value);\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n toggleTab(value)\n {\n Arr.toggle(this.tempValue, value);\n\n this.$emit('update:modelValue', this.tempValue);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n mounted()\n {\n this.init = true;\n },\n\n render()\n {\n let classList = [\n 'n-collapse',\n 'n-collapse--' + this.size,\n 'n-collapse--' + this.type\n ];\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n}\n","import { Arr, Any, Dom } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NCollapseItem',\n\n inject: {\n\n NCollapse: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return {\n NCollapseItem: this\n };\n },\n\n props: {\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n name: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n sort: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n relative: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n preload: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n keep: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n methods: {\n\n showTab()\n {\n this.NCollapse.showTab(this.name);\n },\n\n hideTab()\n {\n this.NCollapse.hideTab(this.name);\n },\n\n toggleTab()\n {\n this.NCollapse.toggleTab(this.name);\n }\n\n },\n\n data()\n {\n return {\n _key: null, init: false, dragger: 0\n }\n },\n\n beforeMount()\n {\n this.NCollapse.addTab(this);\n },\n\n beforeUnmount()\n {\n this.NCollapse.removeTab(this);\n },\n\n renderHeaderIcon()\n {\n if ( !this.$slots.icon && !this.icon ) {\n return null;\n }\n\n return (\n <div class=\"n-collapse__header-icon\">\n {this.$slots.icon && this.$slots.icon() || <i class={this.icon}></i>}\n </div>\n );\n },\n\n renderHeaderLabel()\n {\n return (\n <div class=\"n-collapse__header-label\">\n {this.$slots.label && this.$slots.label() || <span>{this.label}</span>}\n </div>\n );\n },\n\n renderHeaderAngle()\n {\n return (\n <div class=\"n-collapse__header-angle\">\n {this.$slots.angle && this.$slots.angle() || <i class={nano.Icons.angleRight}></i>}\n </div>\n );\n },\n\n renderHeader()\n {\n if ( !this.label && !this.$slots.label ) {\n return null;\n }\n\n let classList = [\n 'n-collapse__header'\n ];\n\n if ( Arr.has(this.NCollapse.tempValue, this.name) ) {\n classList.push('n-active');\n }\n\n let props = {\n onClick: () => this.toggleTab(this.name)\n };\n\n props['onDragenter'] = (event) => {\n\n this.dragger ++;\n\n if ( this.dragger !== 1 ) {\n return;\n }\n\n this.showDelay = setTimeout(() => {\n this.showTab(this.name);\n }, 350);\n };\n\n props['onDragleave'] = (event) => {\n\n this.dragger --;\n\n if ( this.dragger !== 0 ) {\n return;\n }\n\n clearTimeout(this.showDelay);\n };\n\n props.style = {\n order: this.sort + 1,\n };\n\n return (\n <div ref=\"header\" class={classList} {...props}>\n {this.ctor('renderHeaderIcon')()}\n {this.ctor('renderHeaderLabel')()}\n {this.ctor('renderHeaderAngle')()}\n </div>\n );\n },\n\n renderBody()\n {\n let classList = [\n 'n-collapse__body'\n ];\n\n let tempValue = Arr.clone(this.NCollapse.tempValue);\n\n if ( !this.label && !this.$slots.label ) {\n tempValue.push(this.name);\n }\n\n let renderBody = Arr.has(tempValue, this.name);\n\n if ( !Arr.has(tempValue, this.name) && this.keep ) {\n renderBody = this.init;\n }\n\n if ( !Arr.has(tempValue, this.name) && this.preload ) {\n renderBody = true;\n }\n\n if ( !renderBody && this.label ) {\n return null;\n }\n\n this.init = true;\n\n let style = {\n order: this.sort + 2\n };\n\n if ( !Arr.has(tempValue, this.name) ) {\n style.display = 'none';\n }\n\n let element = 'div';\n\n if ( !this.relative && !this.NCollapse.relative ) {\n element = resolveComponent('NScrollbar');\n }\n\n return h(element, { class: classList, style, }, this.$slots);\n },\n\n render()\n {\n return [\n this.ctor('renderHeader')(), this.ctor('renderBody')()\n ];\n }\n}\n","import Collapse from './src/collapse/collapse';\nimport CollapseItem from './src/collapse-item/collapse-item';\n\nexport default function (App) {\n App.component(Collapse.name, Collapse);\n App.component(CollapseItem.name, CollapseItem);\n}","import { Any, Obj, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NPreviewPlain',\n\n props: {\n\n src: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return null;\n }\n },\n\n showSrc: {\n default()\n {\n return true;\n }\n }\n\n },\n\n computed: {\n\n tempSrc()\n {\n return Obj.get(this.src, 'name', this.src);\n },\n\n tempExt()\n {\n let regex = /^.*?\\.([^.?]+)(\\?.*?)?$/;\n\n if ( Any.isEmpty(this.tempSrc) ) {\n return null;\n }\n\n return this.tempSrc.replace(regex, '$1');\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-preview-plain'\n ];\n\n let slots = [];\n\n slots[0] = (\n <li>{ this.type || Locale.trans('plain') }/{ this.tempExt || Locale.trans('none') }</li>\n );\n\n if ( this.showSrc ) {\n slots[1] = (<li>{ this.tempSrc }</li>);\n }\n\n return (\n <div class={classList}>\n <ul>{ slots }</ul>\n </div>\n );\n }\n\n}","import { Obj, Arr, Str, Any, Dom } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NPreviewImage',\n\n props: {\n\n src: {\n default()\n {\n return null;\n }\n },\n\n },\n\n data()\n {\n return {\n load: false, tempSrc: null\n };\n },\n\n beforeMount()\n {\n if ( ! window.ImageCache ) {\n window.ImageCache = [];\n }\n\n\n if ( ! Arr.has(window.ImageCache, this.src) ) {\n this.tempSrc = this.src;\n }\n },\n\n mounted()\n {\n this.resolveLoad();\n },\n\n watch: {\n\n 'src': function () {\n this.resolveLoad();\n }\n\n },\n\n methods: {\n\n resolveLoad()\n {\n if ( ! Arr.has(window.ImageCache, this.src) ) {\n return;\n }\n\n this.tempSrc = null;\n\n if ( Any.isObject(this.src) ) {\n return this.resolveData();\n }\n\n Dom.find(this.$refs.image).loaded(() => {\n\n /**\n * Add image to cache\n */\n Arr.add(window.ImageCache, this.src);\n\n /**\n * Mark image as loaded\n */\n Any.delay(() => this.load = false, 200);\n });\n\n this.laod = true;\n },\n\n resolveData()\n {\n let reader = new FileReader();\n\n reader.onload = () => {\n this.tempSrc = reader.result;\n };\n\n reader.readAsDataURL(this.src);\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-preview-image'\n ];\n\n if ( Arr.has(window.ImageCache, this.src) ) {\n classList.push('n-cached');\n }\n\n if ( ! this.load ) {\n classList.push('n-ready');\n }\n\n return (\n <div class={classList}>\n <img ref=\"image\" src={this.tempSrc || this.src} />\n </div>\n );\n }\n\n}","import Preview from './src/preview/preview';\nimport PreviewPlain from './src/preview-plain/preview-plain';\nimport PreviewImage from './src/preview-image/preview-image';\nimport PreviewVideo from './src/preview-video/preview-video';\n\nexport default function (App) {\n App.component(Preview.name, Preview);\n App.component(PreviewPlain.name, PreviewPlain);\n App.component(PreviewImage.name, PreviewImage);\n App.component(PreviewVideo.name, PreviewVideo);\n}\n\n","import { Arr, Map, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NMap',\n\n props: {\n\n lat: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n lng: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n zoom: {\n default()\n {\n return 15;\n },\n type: [Number]\n }\n\n },\n\n provide()\n {\n return {\n NMap: this\n };\n },\n\n data()\n {\n return { init: false, callbacks: [], tempMap: null };\n },\n\n watch: {\n\n lat()\n {\n Any.delay(() => this.tempMap.focusMarkers(), 100);\n },\n\n lng()\n {\n Any.delay(() => this.tempMap.focusMarkers(), 100);\n }\n\n },\n\n mounted()\n {\n this.tempMap = new Map(this.$el, {\n lat: this.lat, lng: this.lng, zoom: this.zoom\n });\n\n this.init = true;\n\n Arr.each(this.callbacks, (callback) => callback())\n },\n\n methods: {\n\n getMap()\n {\n return this.tempMap;\n },\n\n onMount(callback)\n {\n this.init ? callback() : this.callbacks.push(callback);\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-map'\n ];\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n}\n","import { UUID, Obj, Num, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NMapMarker',\n\n inject: {\n\n NMap: {\n default: undefined\n }\n\n },\n\n props: {\n\n lat: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n lng: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n drag: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n options: {\n default()\n {\n return { style: 'default' };\n },\n type: [Object]\n },\n\n },\n\n data()\n {\n return {\n id: UUID(), tempMarker: null\n };\n },\n\n methods: {\n\n importMarkerPosition()\n {\n this.tempMarker.marker.setPosition({\n lat: this.lat, lng: this.lng\n });\n },\n\n updateMarkerPosition()\n {\n this.$emit('update:lat', this.tempMarker.marker.getPosition().lat());\n this.$emit('update:lng', this.tempMarker.marker.getPosition().lng());\n },\n\n initializeMarker()\n {\n let options = Obj.assign({\n lat: Num.float(this.lat), lng: Num.float(this.lng), draggable: this.drag\n }, this.options);\n\n if ( ! Any.isEmpty(this.$slots.default) ) {\n options.html = this.$el.innerHTML;\n }\n\n this.tempMarker = this.NMap.getMap().createMarker(this.id, options);\n\n this.tempMarker.marker.addListener('position_changed',\n Any.debounce(this.updateMarkerPosition));\n\n this.tempMarker.marker.addListener('dragstart',\n () => this.$emit('dragstart', this.tempMarker));\n\n this.tempMarker.marker.addListener('dragend',\n () => this.$emit('dragend', this.tempMarker));\n\n this.tempMarker.marker.addListener('mouseover',\n () => this.$emit('mouseenter', this.tempMarker));\n\n this.tempMarker.marker.addListener('mouseout',\n () => this.$emit('mouseleave', this.tempMarker));\n },\n\n setMarkerByAddress(address)\n {\n let successClosure = () => {\n this.NMap.getMap().focusMarkers(null, this.NMap.zoom);\n };\n\n let errorClosure = () => {\n this.Notify(this.trans('Address not found.'), 'danger');\n };\n\n this.NMap.getMap().setMarkerByAddress(this.id, address)\n .then(successClosure, errorClosure);\n }\n\n },\n\n watch: {\n\n lat()\n {\n this.importMarkerPosition();\n },\n\n lng()\n {\n this.importMarkerPosition();\n }\n\n },\n\n beforeMount()\n {\n this.NMap.onMount(this.initializeMarker);\n },\n\n render()\n {\n return (\n <div style=\"display: none;\">\n { this.$slots.default }\n </div>\n );\n }\n\n}\n","import Map from './src/map/map';\nimport MapMarker from './src/map-marker/map-marker';\n\nexport default function (App) {\n App.component(Map.name, Map);\n App.component(MapMarker.name, MapMarker);\n}\n\n","import { Any, Str, Obj, Dom } from \"@kizmann/pico-js\";\n\nclass AlertFrame {\n\n el = null;\n\n text = '';\n\n icon = '';\n\n type = '';\n\n options = {\n iconPrimary: nano.Icons.info,\n iconSecondary: nano.Icons.info,\n iconSuccess: nano.Icons.success,\n iconWarning: nano.Icons.warning,\n iconDanger: nano.Icons.danger,\n iconInfo: nano.Icons.info\n };\n\n constructor(text, type = 'primary', options = {})\n {\n this.text = text;\n this.type = type;\n\n this.options = Obj.assign(this.options, options);\n\n this.render();\n }\n\n getIcon()\n {\n return Obj.get(this.options,\n 'icon' + Str.ucfirst(this.type));\n }\n\n append(el = document.body)\n {\n this.el.appendTo(el);\n\n Dom.find(document.body).on('keydown', (event) => {\n if ( event.which === 27 ) {\n this.remove();\n }\n }, 'n-alert');\n\n setTimeout(() => this.el.addClass('n-active'), 100);\n }\n\n remove()\n {\n Dom.find(document.body).off('keydown', null, 'n-alert');\n\n this.el.get(0).remove();\n }\n\n render()\n {\n let classList = [\n 'n-alert-frame',\n 'n-alert-frame--' + this.type,\n 'n-alert-frame--' + Alert.size\n ];\n\n this.el = Dom.make('div', {\n classList: classList.join(' ')\n });\n\n let backdrop = Dom.make('div', {\n classList: 'n-alert-backdrop', onclick: () => this.remove()\n });\n\n backdrop.onClick = () => {\n this.remove();\n };\n\n backdrop.appendTo(this.el);\n\n let frame = Dom.make('div', {\n classList: 'n-alert'\n });\n\n frame.appendTo(this.el);\n\n let icon = Dom.make('div', {\n classList: 'n-alert__icon'\n });\n\n icon.appendTo(frame);\n\n let iconSpan = Dom.make('span', {\n classList: this.getIcon()\n });\n\n iconSpan.appendTo(icon);\n\n let text = Dom.make('div', {\n classList: 'n-alert__text'\n });\n\n text.html(this.text).appendTo(frame);\n }\n\n}\n\nexport default class Alert {\n\n static alias = 'Alert';\n\n static size = nano.Settings.notifySize;\n\n static alert = null;\n\n static handle(...args)\n {\n if ( ! Any.isEmpty(Alert.alert) ) {\n Alert.alert.remove();\n }\n\n Alert.alert = new AlertFrame(...args);\n\n Alert.alert.append();\n\n return Alert;\n }\n\n}\n","import Alert from './src/alert/alert';\n\nexport default function (App) {\n App.config.globalProperties[Alert.alias] = window[Alert.alias] = Alert.handle;\n}\n","import { UUID, Str, Obj, Dom } from \"@kizmann/pico-js\";\n\nclass Notification {\n\n el = null;\n\n text = '';\n\n icon = '';\n\n type = '';\n\n options = {\n duration: 4500,\n iconPrimary: nano.Icons.info,\n iconSecondary: nano.Icons.info,\n iconSuccess: nano.Icons.success,\n iconWarning: nano.Icons.warning,\n iconDanger: nano.Icons.danger,\n iconInfo: nano.Icons.info\n };\n\n constructor(text, type = 'primary', options = {})\n {\n this.text = text;\n this.type = type;\n\n this.options = Obj.assign(this.options, options);\n\n this.render();\n }\n\n getIcon()\n {\n return Obj.get(this.options,\n 'icon' + Str.ucfirst(this.type));\n }\n\n append(el = document.body)\n {\n this.el.appendTo(el);\n\n setTimeout(() => this.el.addClass('n-active'), 100);\n\n return this;\n }\n\n remove()\n {\n this.el.get(0).remove();\n\n return this;\n }\n\n render()\n {\n let classList = [\n 'n-notification',\n 'n-notification--' + this.type\n ];\n\n this.el = Dom.make('div', {\n classList: classList.join(' '), onclick: () => this.remove()\n });\n \n\n let icon = Dom.make('div', {\n classList: 'n-notification__icon'\n });\n\n icon.appendTo(this.el);\n\n let iconSpan = Dom.make('span', {\n classList: this.getIcon()\n });\n\n iconSpan.appendTo(icon);\n\n let text = Dom.make('div', {\n classList: 'n-notification__text'\n });\n\n text.html(this.text).appendTo(this.el);\n }\n\n}\n\nexport default class Notify {\n\n static alias = 'Notify';\n\n static size = nano.Settings.notifySize;\n\n static position = nano.Settings.notifyPosition;\n\n static notifications = {};\n\n static handle(...args)\n {\n let uid = Notify.create(undefined, ...args);\n\n let wrapper = Notify.getWrapper();\n\n // Append element to dom\n Notify.notifications[uid].append(wrapper);\n\n // Queue remove\n setTimeout(() => Notify.remove(uid),\n Notify.notifications[uid].options.duration);\n\n return uid;\n }\n\n static create(uid = UUID(), ...args)\n {\n Notify.notifications[uid] = new Notification(...args);\n\n return uid;\n }\n\n static remove(uid)\n {\n if ( Notify.notifications[uid] === undefined ) {\n return;\n }\n\n // Remove dom element\n Notify.notifications[uid].remove();\n\n // Remove from list\n delete Notify.notifications[uid];\n }\n\n static getWrapper()\n {\n if ( ! window.zIndex ) {\n window.zIndex = 9000;\n }\n\n let style = {\n 'z-index': window.zIndex + 100\n };\n\n let classList = [\n 'n-notification-frame',\n 'n-notification-frame--' + this.size,\n 'n-notification-frame--' + this.position\n ];\n\n if ( Dom.find('.n-notification-frame').empty() === true ) {\n Dom.make('div', { classList: classList.join(' ') }).appendTo(document.body);\n }\n\n Dom.find('.n-notification-frame').css(style);\n\n return Dom.find('.n-notification-frame');\n }\n\n}\n","import Notifcation from './src/notification/notification';\n\nexport default function (App) {\n App.config.globalProperties[Notifcation.alias] = window[Notifcation.alias] = Notifcation.handle;\n}\n","export default {\n\n name: 'NEmptyIcon',\n\n props: {\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-empty-icon',\n 'n-empty-icon--' + this.size,\n 'n-empty-icon--' + this.type\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n <div class=\"n-empty-icon__frame\">\n { /* Icon */ }\n </div>\n <div class=\"n-empty-icon__text\">\n { this.$slots.default && this.$slots.default() }\n </div>\n </div>\n );\n }\n\n}\n","import EmptyIcon from './src/empty-icon/empty-icon';\n\nexport default function (App) {\n App.component(EmptyIcon.name, EmptyIcon);\n}\n","import { Arr, Obj, Dom, Any, Str, Event } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NScrollbar',\n\n provide()\n {\n return {\n NScrollbar: this\n };\n },\n\n props: {\n\n options: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n relative: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n fixture: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n allowNative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n framerate: {\n default()\n {\n return 24;\n },\n type: [Number]\n },\n\n wrapClass: {\n default()\n {\n return 'n-scrollbar__wrap';\n }\n }\n\n },\n\n computed: {\n\n touch() {\n return !! ('ontouchstart' in window ||\n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n native: false\n };\n },\n\n beforeMount()\n {\n this.adaptScrollBehavior();\n },\n\n mounted()\n {\n this.bindAdaptHeight();\n this.bindAdaptWidth();\n\n let passive = {\n passive: true, uid: this._.uid\n };\n\n Event.bind('NScrollbar:resize',\n this.onResize, this._.uid);\n\n Event.bind('NResizer:moved',\n this.onUpdate, this._.uid);\n\n Dom.find(window).on('resize',\n this.onResize, passive);\n\n Dom.find(this.$refs.content).on('scroll',\n this.onScroll, passive);\n },\n\n updated()\n {\n if ( this.passedHeight || this.passedWidth ) {\n Dom.find(this.$el).addClass('n-ready');\n }\n },\n\n beforeUnmount()\n {\n this.unbindAdaptHeight();\n this.unbindAdaptWidth();\n\n let passive = {\n passive: true, uid: this._.uid\n };\n\n Event.unbind('NScrollbar:resize',\n this._.uid);\n\n Event.unbind('NResizer:moved',\n this._.uid);\n\n Dom.find(window).off('resize',\n null, passive);\n\n Dom.find(this.$el).off('scroll',\n null, passive);\n },\n\n methods: {\n\n scrollTo(x = 0, y = 0, delay = 0)\n {\n Any.delay(() => this.onScrollTo(x, y), delay);\n },\n\n onScrollTo(x = 0, y = 0)\n {\n if ( this.$refs.content ) {\n this.$refs.content.scrollTop = y;\n this.$refs.content.scrollLeft = x;\n }\n },\n\n scrollIntoView(selector, delay = 0)\n {\n Any.delay(() => this.onScrollIntoView(selector), delay);\n },\n\n onScrollIntoView(selector)\n {\n let $el = Dom.find(this.$el).find(selector);\n\n let scrollTop = this.$refs.content\n .scrollTop;\n\n let outerHeight = this.$refs.content.\n clientHeight;\n\n let offsetTop = $el.offsetTop(this.$el);\n\n if ( offsetTop < scrollTop ) {\n this.$refs.content.scrollTop = offsetTop;\n }\n\n if ( offsetTop + $el.height() >= scrollTop + outerHeight ) {\n this.$refs.content.scrollTop = offsetTop - outerHeight + $el.height();\n }\n\n let scrollLeft = this.$refs.content\n .scrollLeft;\n\n let outerWidth = this.$refs.content.\n clientWidth;\n\n let offsetLeft = $el.offsetLeft(this.$el);\n\n if ( offsetLeft < scrollLeft ) {\n this.$refs.content.scrollLeft = offsetLeft;\n }\n\n if ( offsetLeft + $el.width() >= scrollLeft + outerWidth ) {\n this.$refs.content.scrollLeft = offsetLeft - outerWidth + $el.width();\n }\n },\n\n adaptScrollBehavior()\n {\n let $dom = Dom.make('div', { classList: ['n-scrollbar-test'] })\n .appendTo(document.body).get(0);\n\n Dom.make('div').appendTo($dom);\n\n this.native = $dom.clientWidth === $dom.offsetWidth ||\n $dom.clientHeight === $dom.offsetHeight;\n\n $dom.remove();\n },\n\n adaptScrollHeight()\n {\n if ( this.native && this.allowNative ) {\n return;\n }\n\n // let offsetHeight = this.$refs.content.clientHeight -\n // this.$refs.content.offsetHeight;\n //\n // let offsetWidth = this.$refs.content.clientWidth -\n // this.$refs.content.offsetWidth;\n\n let outerHeight = this.$refs.content.\n clientHeight || 0;\n\n if ( this.native && ! this.allowNative ) {\n outerHeight -= 16;\n }\n\n // if ( offsetHeight === 0 && this.overflowX ) {\n // outerHeight -= 15;\n // }\n\n let innerHeight = this.$refs.content\n .scrollHeight || 0;\n\n let virtualHeight = 0;\n\n Dom.find(this.$refs.content).childs().each((el) => {\n virtualHeight += Dom.find(el).height() || 0;\n });\n\n if ( this.native && ! this.allowNative ) {\n innerHeight -= 16;\n }\n\n if ( virtualHeight > innerHeight ) {\n innerHeight = virtualHeight;\n }\n\n // if ( offsetHeight === 0 && this.overflowX ) {\n // innerHeight -= 15;\n // }\n\n let isSameOld = outerHeight === this.outerHeight &&\n innerHeight === this.innerHeight;\n\n if ( isSameOld ) {\n return;\n }\n\n this.outerHeight = outerHeight;\n this.innerHeight = innerHeight;\n\n let height = (outerHeight / innerHeight)\n * outerHeight;\n\n let barHeight = Math.max(height, 50);\n\n let maxHeight = Math.ceil((outerHeight / innerHeight) *\n (innerHeight - outerHeight));\n\n this.heightRatio = (maxHeight - (barHeight - height)\n - this.offsetY) / maxHeight;\n\n Dom.find(this.$refs.vbar).css({\n height: (this.barHeight = Math.ceil(barHeight)) + 'px'\n });\n\n // let hasNativeBar = offsetWidth !== 0 && this.overflowY;\n //\n // if ( hasNativeBar ) {\n // Dom.find(this.$el).addClass('has-native-vbar');\n // }\n //\n // if ( hasNativeBar && this.overflowX ) {\n // Dom.find(this.$el).addClass('has-native-hbar');\n // }\n\n let hasVtrack = outerHeight && outerHeight < innerHeight;\n\n if ( hasVtrack ) {\n Dom.find(this.$el).addClass('has-vtrack');\n }\n\n if ( ! hasVtrack ) {\n Dom.find(this.$el).removeClass('has-vtrack');\n }\n\n // if ( hasVtrack && ! hasNativeBar ) {\n // Event.fire('NScrollbar:native');\n // }\n\n this.adaptScrollPosition();\n },\n\n adaptScrollWidth()\n {\n if ( this.native && this.allowNative ) {\n return;\n }\n\n // let offsetWidth = this.$refs.content.clientWidth -\n // this.$refs.content.offsetWidth;\n //\n // let offsetHeight = this.$refs.content.clientHeight -\n // this.$refs.content.offsetHeight;\n\n let outerWidth = this.$refs.content.\n clientWidth || 0;\n\n if ( this.native && ! this.allowNative ) {\n outerWidth -= 16;\n }\n\n // if ( offsetWidth === 0 && this.overflowY ) {\n // outerWidth -= 15;\n // }\n\n let innerWidth = this.$refs.content\n .scrollWidth || 0;\n\n let virtualWidth = 0;\n\n Dom.find(this.$refs.content).childs().each((el) => {\n virtualWidth += Dom.find(el).width() || 0;\n });\n\n if ( this.native && ! this.allowNative ) {\n innerWidth -= 16;\n }\n\n if ( virtualWidth > innerWidth ) {\n innerWidth = virtualWidth;\n }\n\n // if ( offsetWidth === 0 && this.overflowY ) {\n // innerWidth -= 15;\n // }\n\n let isSameOld = outerWidth === this.outerWidth &&\n innerWidth === this.innerWidth;\n\n if ( isSameOld ) {\n return;\n }\n\n this.outerWidth = outerWidth;\n this.innerWidth = innerWidth;\n\n let width = (outerWidth / innerWidth)\n * outerWidth;\n\n let barWidth = Math.max(width, 50);\n\n let maxWidth = Math.ceil((outerWidth / innerWidth) *\n (innerWidth - outerWidth));\n\n this.widthRatio = (maxWidth - (barWidth - width)\n - this.offsetX) / maxWidth;\n\n Dom.find(this.$refs.hbar).css({\n width: (this.barWidth = Math.ceil(barWidth)) + 'px'\n });\n\n // let hasNativeBar = offsetHeight && this.overflowX;\n\n // if ( hasNativeBar ) {\n // Dom.find(this.$el).addClass('has-native-hbar');\n // }\n //\n // if ( hasNativeBar && this.overflowY ) {\n // Dom.find(this.$el).addClass('has-native-vbar');\n // }\n\n let hasHtrack = outerWidth && outerWidth < innerWidth;\n\n if ( hasHtrack ) {\n Dom.find(this.$el).addClass('has-htrack');\n }\n\n if ( ! hasHtrack ) {\n Dom.find(this.$el).removeClass('has-htrack');\n }\n\n // if ( hasHtrack && ! hasNativeBar ) {\n // Event.fire('NScrollbar:native');\n // }\n\n this.adaptScrollPosition();\n },\n\n adaptScrollPosition(scroll = {})\n {\n if ( this.native && this.allowNative ) {\n return;\n }\n\n if ( ! scroll.top ) {\n scroll.top = this.$refs.content.scrollTop;\n }\n\n if ( ! scroll.left ) {\n scroll.left = this.$refs.content.scrollLeft;\n }\n\n let vbarTop = Math.ceil((this.outerHeight / this.innerHeight) *\n scroll.top * this.heightRatio) || 0;\n\n if ( ! this.vbarTop || vbarTop !== this.vbarTop ) {\n\n Dom.find(this.$refs.vbar).css({\n transform: `translateY(${vbarTop}px) translateZ(0)`\n });\n\n this.vbarTop = vbarTop;\n }\n\n let hbarLeft = Math.ceil((this.outerWidth / this.innerWidth) *\n scroll.left * this.widthRatio) || 0;\n\n if ( ! this.hbarLeft || hbarLeft !== this.hbarLeft ) {\n\n Dom.find(this.$refs.hbar).css({\n transform: `translateX(${hbarLeft}px) translateZ(0)`\n });\n\n this.hbarLeft = hbarLeft;\n }\n },\n\n adaptHeight()\n {\n if ( ! this.cacheChildEl ) {\n this.cacheChildEl = Dom.find(this.$refs.content).child();\n }\n\n let height = this.cacheChildEl\n .height();\n\n if ( ! this.cacheWindwoEl ) {\n this.cacheWindwoEl = Dom.find(this.$el);\n }\n\n let window = this.cacheWindwoEl\n .innerHeight();\n\n if ( height === this.passedHeight && window === this.windowCache ) {\n return;\n }\n\n this.windowCache = window;\n\n if ( this.overflowY ) {\n this.adaptScrollHeight();\n }\n\n if ( window ) {\n this.passedHeight = height;\n }\n\n let style = {\n height: (height + 1) + 'px'\n };\n\n if ( ! this.relative ) {\n return Any.delay(this.onSizechange, 100);\n }\n\n Dom.find(this.$refs.spacer).child().css(style);\n },\n\n bindAdaptHeight()\n {\n this.refreshHeight = setInterval(this.adaptHeight,\n 1000 / this.framerate);\n },\n\n unbindAdaptHeight()\n {\n clearInterval(this.refreshHeight);\n },\n\n adaptWidth()\n {\n if ( this.resizeTimer ) {\n return;\n }\n\n let width = Dom.find(this.$refs.content)\n .child().width();\n\n let window = Dom.find(this.$el)\n .innerWidth();\n\n if ( width === this.passedWidth ) {\n return;\n }\n\n if ( this.overflowX ) {\n this.adaptScrollWidth();\n }\n\n if ( window ) {\n this.passedWidth = width;\n }\n\n let style = {\n width: width + 'px'\n };\n\n if ( this.fixture ) {\n this.onUpdate();\n }\n\n if ( ! this.relative ) {\n return Any.delay(this.onSizechange, 100);\n }\n\n Dom.find(this.$refs.spacer).child().css(style);\n },\n\n bindAdaptWidth()\n {\n this.refreshWidth = setInterval(this.adaptWidth,\n 1000 / this.framerate);\n },\n\n unbindAdaptWidth()\n {\n clearInterval(this.refreshWidth);\n },\n\n onScroll(event)\n {\n let scroll = {\n top: this.$refs.content.scrollTop,\n left: this.$refs.content.scrollLeft\n };\n\n let scrollUpdate = () => {\n this.$emit('scrollupdate', scroll.top, scroll.left);\n }\n\n this.$nextTick(scrollUpdate);\n this.adaptScrollPosition(scroll);\n },\n\n onSizechange(event)\n {\n let height = Dom.find(this.$el).height();\n let width = Dom.find(this.$el).width();\n\n if ( ! height || ! width ) {\n return;\n }\n\n if ( this.passedHeight || this.passedWidth ) {\n Dom.find(this.$el).addClass('is-ready');\n }\n\n this.$emit('sizechange', height, width, this.$el);\n },\n\n onResize()\n {\n if ( ! this.fixture ) {\n return;\n }\n\n Dom.find(this.$refs.content)\n .child().css(null);\n\n clearTimeout(this.resizeTimer);\n\n this.resizeTimer = setTimeout(\n this.onUpdate, 500);\n\n Dom.find(this.$el).fire('resized');\n },\n\n onUpdate()\n {\n if ( ! this.fixture || ! this.$refs.content ) {\n return;\n }\n\n let $inner = Dom.find(this.$refs.content)\n .child();\n\n let height = $inner.actual(() => {\n return $inner.scrollHeight();\n });\n\n if ( height !== this.passedHeight ) {\n $inner.css({ height: height + 'px' });\n }\n\n let width = $inner.actual(() => {\n return $inner.scrollWidth();\n });\n\n if ( width !== this.passedWidth ) {\n $inner.css({ width: width + 'px' });\n }\n\n delete this.resizeTimer;\n },\n\n getTouchEvent(event)\n {\n if ( ! this.touch ) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n onVbarMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.stopPropagation();\n\n Dom.find(document).on(this.mousemove,\n this.onVbarMousemove, this._.uid);\n\n Dom.find(document).on(this.mouseup,\n this.onVbarMouseup, this._.uid);\n\n this.scrollTop = this.$refs.content\n .scrollTop;\n\n this.clientY = this.getTouchEvent(event)\n .clientY;\n },\n\n onVbarMousemove(event)\n {\n let clientY = this.getTouchEvent(event)\n .clientY;\n\n let top = (this.outerHeight / this.innerHeight) *\n this.scrollTop * this.heightRatio;\n\n let offset = (clientY - this.clientY) + top;\n\n let height = (this.outerHeight -\n this.barHeight - this.offsetY);\n\n this.$refs.content.scrollTop = offset / height *\n (this.innerHeight - this.outerHeight);\n },\n\n onVbarMouseup(event)\n {\n Dom.find(document).off(this.mousemove,\n null, this._.uid);\n\n Dom.find(document).off(this.mouseup,\n null, this._.uid);\n },\n\n onHbarMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.stopPropagation();\n\n Dom.find(document).on(this.mousemove,\n this.onHbarMousemove, this._.uid);\n\n Dom.find(document).on(this.mouseup,\n this.onHbarMouseup, this._.uid);\n\n this.scrollLeft = this.$refs.content\n .scrollLeft;\n\n this.clientX = event.clientX;\n },\n\n onHbarMousemove(event)\n {\n let top = (this.outerWidth / this.innerWidth) *\n this.scrollLeft * this.widthRatio;\n\n let offset = (event.clientX - this.clientX) + top;\n\n let width = (this.outerWidth -\n this.barWidth - this.offsetX);\n\n this.$refs.content.scrollLeft = offset / width *\n (this.innerWidth - this.outerWidth);\n },\n\n onHbarMouseup(event)\n {\n Dom.find(document).off(this.mousemove,\n null, this._.uid);\n\n Dom.find(document).off(this.mouseup,\n null, this._.uid);\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-scrollbar'\n ];\n\n if ( this.native ) {\n classList.push('n-scrollbar--native');\n }\n\n if ( ! this.allowNative ) {\n classList.push('n-scrollbar--forced');\n }\n\n if ( this.touch ) {\n classList.push('n-scrollbar--touch');\n }\n\n if ( window.WIN ) {\n classList.push('n-windows');\n }\n\n if ( this.overflowY ) {\n classList.push('n-overflow-y');\n }\n\n if ( this.overflowX ) {\n classList.push('n-overflow-x');\n }\n\n let vbarProps = {\n ['on' + Str.ucfirst(this.mousedown)]: this.onVbarMousedown\n };\n\n let hbarProps = {\n ['on' + Str.ucfirst(this.mousedown)]: this.onHbarMousedown\n };\n\n return (\n <div class={classList} {...Obj.except(this.$attrs, ['class'])}>\n <div class=\"n-scrollbar-content\" ref=\"content\">\n <div class={this.wrapClass}>\n { this.$slots.default && this.$slots.default() }\n </div>\n </div>\n <div class=\"n-scrollbar-spacer\" ref=\"spacer\">\n <div class={this.wrapClass}>\n { /* Adapt inner height */ }\n </div>\n </div>\n <div ref=\"hbar\" class=\"n-scrollbar-h\" {...hbarProps}></div>\n <div ref=\"vbar\" class=\"n-scrollbar-v\" {...vbarProps}></div>\n </div>\n );\n }\n\n}\n","import Scrollbar from './src/scrollbar/scrollbar.next';\n\nexport default function (App) {\n App.component(Scrollbar.name, Scrollbar);\n}","import { UUID, Num, Obj, Any, Dom, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NLoader',\n\n inject: {\n\n NLoader: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return {\n NLoader: this\n };\n },\n\n props: {\n\n visible: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n minimum: {\n default()\n {\n return 120;\n },\n type: [Number]\n },\n\n debounce: {\n default()\n {\n return 120;\n },\n type: [Number]\n }\n\n },\n\n data()\n {\n return {\n tempVisible: this.visible\n };\n },\n\n methods: {\n\n applyTimer()\n {\n this.timing = Date.now();\n\n if ( this.visible) {\n return this.tempVisible = this.visible;\n }\n\n this.startTimer();\n },\n\n startTimer()\n {\n let timing = Date.now() - this.timing;\n\n if ( timing < this.minimum ) {\n return this.restartTimer(timing);\n }\n\n this.timeout = setTimeout(() => this.tempVisible = false, \n this.debounce);\n },\n\n restartTimer(timing = 0) {\n Any.delay(this.startTimer, this.minimum - timing + 10);\n }\n\n },\n\n watch: {\n\n visible()\n {\n this.applyTimer();\n }\n\n },\n\n mounted()\n {\n this.applyTimer();\n },\n\n render()\n {\n let classList = [\n 'n-loader', \n 'n-loader--' + this.size, \n 'n-loader--' + this.type\n ];\n\n if ( this.tempVisible ) {\n classList.push('n-load');\n }\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n}\n","import Loader from './src/loader/loader';\n\nexport default function (App) {\n App.component(Loader.name, Loader);\n}\n","import { UUID, Arr, Obj, Dom, Any, Str, Locale, Event, Num } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NResizer',\n\n inject: {\n\n NScrollbar: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n width: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n minWidth: {\n default()\n {\n return 60;\n },\n type: [Number]\n },\n\n maxWidth: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n group: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n position: {\n default()\n {\n return 'right';\n },\n type: [String]\n },\n\n resizerWidth: {\n default()\n {\n return 6;\n },\n type: [Number]\n }\n\n },\n\n computed: {\n\n touch() {\n return !! ('ontouchstart' in window || \n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n sizeFixed: false,\n tempValue: this.modelValue,\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n },\n\n mounted()\n {\n if ( ! this.modelValue ) {\n this.updateWidth();\n }\n\n if ( this.NScrollbar ) {\n this.bindSizechange();\n }\n\n Event.bind('NResizer:move', \n this.forceWidth, this._.uid);\n\n Dom.find(window).on('resize', \n Any.debounce(this.onResize, 500), this._.uid);\n },\n\n updated()\n {\n this.updateWidth();\n },\n\n unmounted()\n {\n if ( this.NScrollbar ) {\n this.unbindSizechange();\n }\n\n Event.unbind('NResizer:move', \n this._.uid);\n \n Dom.find(window).off('resize', \n null, this._.uid);\n },\n\n methods: {\n\n forceWidth(group)\n {\n if ( ! Arr.has(group, this.group) ) {\n return;\n }\n \n if ( ! this.tempValue || ! this.group.length ) {\n return;\n }\n\n this.sizeFixed = true;\n\n let style = {\n width: this.tempValue + 'px', flex: '0 0 auto'\n };\n\n Dom.find(this.$el).css(style);\n },\n\n updateWidth()\n {\n let width = Dom.find(this.$el)\n .width();\n\n if ( width === this.tempValue ) {\n return;\n }\n\n this.$emit('update:modelValue', \n this.tempValue = width);\n \n this.updateHandle();\n },\n\n updateHandle()\n {\n let style = {};\n\n if ( this.position === 'left' ) {\n style.transform =`translateX(-${this.tempValue - this.resizerWidth}px)`\n }\n \n if ( this.position === 'right' ) {\n style.transform = `translateX(${this.tempValue - this.resizerWidth}px)`\n }\n\n Dom.find(this.$refs.handle).css(style);\n },\n\n bindSizechange()\n {\n Dom.find(this.NScrollbar.$el).on('resized', \n Any.debounce(this.updateWidth, 50), this._.uid);\n },\n\n unbindSizechange()\n {\n Dom.find(this.NScrollbar.$el)\n .off('resized', null, this._.uid);\n },\n\n\n onResize()\n {\n if ( this.NScrollbar ) {\n return;\n }\n\n this.updateWidth();\n },\n\n getTouchEvent(event)\n {\n if ( ! this.touch ) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n onLeftMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if ( this.group.length ) {\n Event.fire('NResizer:move', this.group);\n }\n\n Dom.find(this.$el).addClass('n-move');\n Dom.find(document.body).addClass('n-move');\n\n Dom.find(document).on(this.mouseup,\n Any.framerate(this.onLeftMouseup, 60), this._.uid);\n\n Dom.find(document).on(this.mousemove,\n Any.framerate(this.onLeftMousemove, 60), this._.uid);\n },\n\n onLeftMousemove(event)\n {\n this.clientX = (window.innerWidth - \n this.getTouchEvent(event).clientX);\n\n let offsetX = Dom.find(this.$el)\n .offset('right');\n\n let scrollX = Dom.find(this.$el)\n .scroll('right');\n\n let targetWidth = (this.clientX + scrollX - offsetX) -\n (this.resizerWidth / 2);\n\n if ( this.minWidth ) {\n targetWidth = Math.max(targetWidth,\n this.minWidth - this.resizerWidth);\n }\n\n if ( this.maxWidth ) {\n targetWidth = Math.min(targetWidth,\n this.maxWidth - this.resizerWidth);\n }\n\n let style = {\n transform: `translateX(-${targetWidth}px)`\n };\n\n Dom.find(this.$refs.handle).css(style);\n },\n\n onLeftMouseup(event)\n {\n event.preventDefault();\n event.stopPropagation();\n\n Dom.find(document).off(this.mouseup, null, this._.uid);\n Dom.find(document).off(this.mousemove, null, this._.uid);\n\n if ( ! this.clientX ) {\n return;\n }\n\n let offsetX = Dom.find(this.$el)\n .offset('right');\n\n let scrollX = Dom.find(this.$el)\n .scroll('right');\n\n let targetWidth = this.clientX + scrollX - offsetX;\n\n if ( this.minWidth ) {\n targetWidth = Math.max(targetWidth, this.minWidth);\n }\n\n if ( this.maxWidth ) {\n targetWidth = Math.min(targetWidth, this.maxWidth);\n }\n\n this.tempValue = Math.round(targetWidth);\n\n Dom.find(this.$el).removeClass('n-move');\n\n let style = {\n transform: `translateX(-${targetWidth - this.resizerWidth}px)`\n };\n\n Dom.find(this.$refs.handle).css(style);\n\n let frameStyle = {\n width: this.tempValue + 'px', flex: '0 0 auto'\n };\n\n Dom.find(this.$el).css(frameStyle);\n\n delete this.clientX;\n\n if ( this.group.length ) {\n Event.fire('NResizer:moved', this.group);\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n onRightMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if ( this.group.length ) {\n Event.fire('NResizer:move', this.group);\n }\n\n Dom.find(this.$el).addClass('n-move');\n Dom.find(document.body).addClass('n-move');\n\n Dom.find(document).on(this.mouseup,\n Any.framerate(this.onRightMouseup, 60), this._.uid);\n\n Dom.find(document).on(this.mousemove,\n Any.framerate(this.onRightMousemove, 60), this._.uid);\n },\n\n onRightMousemove(event)\n {\n this.clientX = this.getTouchEvent(event).clientX;\n\n let offsetX = Dom.find(this.$el)\n .offset('left');\n\n let scrollX = Dom.find(this.$el)\n .scroll('left');\n\n let targetWidth = (this.clientX + scrollX - offsetX) -\n (this.resizerWidth / 2);\n\n if ( this.minWidth ) {\n targetWidth = Math.max(targetWidth,\n this.minWidth - this.resizerWidth);\n }\n\n if ( this.maxWidth ) {\n targetWidth = Math.min(targetWidth,\n this.maxWidth - this.resizerWidth);\n }\n\n let style = {\n transform: `translateX(${targetWidth}px)`\n };\n\n Dom.find(this.$refs.handle).css(style);\n },\n\n onRightMouseup(event)\n {\n event.preventDefault();\n event.stopPropagation();\n\n Dom.find(document).off(this.mousemove, null, this._.uid);\n Dom.find(document).off(this.mouseup, null, this._.uid);\n\n if ( ! this.clientX ) {\n return;\n }\n\n let offsetX = Dom.find(this.$el)\n .offset('left');\n\n let scrollX = Dom.find(this.$el)\n .scroll('left');\n\n let targetWidth = this.clientX + scrollX - offsetX;\n\n if ( this.minWidth ) {\n targetWidth = Math.max(targetWidth, this.minWidth);\n }\n\n if ( this.maxWidth ) {\n targetWidth = Math.min(targetWidth, this.maxWidth);\n }\n\n this.tempValue = Math.round(targetWidth);\n\n Dom.find(this.$el).removeClass('n-move');\n\n let style = {\n transform: `translateX(${targetWidth - this.resizerWidth}px)`\n };\n\n Dom.find(this.$refs.handle).css(style);\n\n let frameStyle = {\n width: this.tempValue + 'px', flex: '0 0 auto'\n };\n\n Dom.find(this.$el).css(frameStyle);\n\n delete this.clientX;\n\n if ( this.group.length ) {\n Event.fire('NResizer:moved', this.group);\n }\n\n this.$emit('update:modelValue', this.tempValue);\n }\n\n },\n\n renderHandle()\n {\n if ( this.disabled ) {\n return null;\n }\n \n let classList = [\n 'n-resizer__handle',\n ];\n\n let props = {};\n\n if ( this.position === 'right' ) {\n props['on' + Str.ucfirst(this.mousedown)] = this.onRightMousedown;\n }\n\n if ( this.position === 'left' ) {\n props['on' + Str.ucfirst(this.mousedown)] = this.onLeftMousedown;\n }\n\n if ( this.resizerWidth ) {\n props.width = this.resizerWidth + 'px';\n }\n\n return (\n <div ref=\"handle\" class={classList} {...props}/>\n );\n },\n\n render()\n {\n let classList = [\n 'n-resizer',\n 'n-resizer--' + this.position,\n ];\n\n let style = {};\n\n if ( this.width && ! this.tempValue ) {\n style['width'] = this.width + 'px';\n }\n\n if ( this.width ) {\n style['flex-basis'] = this.width + 'px';\n }\n\n if ( this.minWidth ) {\n style['min-width'] = this.minWidth + 'px';\n }\n\n if ( this.maxWidth ) {\n style['max-width'] = this.maxWidth + 'px';\n }\n\n return (\n <div class={classList} style={style}>\n { [this.$slots.default(), this.ctor('renderHandle')()] }\n </div>\n );\n }\n\n}\n","import Resizer from './src/resizer/resizer';\n\nexport default function (App) {\n App.component(Resizer.name, Resizer);\n}\n","import { UUID, Num, Arr, Obj, Any, Dom, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NModal',\n\n inject: {\n\n NScrollbar: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n listen: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n update: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n selector: {\n default()\n {\n return null;\n },\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n width: {\n default()\n {\n return '50%';\n },\n type: [String]\n },\n\n height: {\n default()\n {\n return 'auto';\n },\n type: [String]\n },\n\n title: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'center-center';\n },\n type: [String]\n },\n\n closable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n renderClose: {\n default()\n {\n return true;\n },\n type: [Boolean]\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n tempValue()\n {\n this.startRefreshTimeout();\n }\n\n },\n\n provide()\n {\n return {\n NModal: this\n };\n },\n\n data()\n {\n return {\n target: null, tempValue: false\n };\n },\n\n mounted()\n {\n this.target = Dom.find(this.selector || this.$el)\n .previous().get(0);\n\n Dom.find(document.body).on('mousedown',\n this.eventClick, this._.uid);\n\n Dom.find(document.body).on('keydown',\n this.eventKeydown, this._.uid);\n\n let showModal = () => {\n this.tempValue = true;\n };\n\n if ( this.modelValue ) {\n Any.delay(showModal, 100);\n }\n\n Dom.find(document.body).append(this.$el);\n },\n\n beforeUnmount()\n {\n this.$el.remove();\n },\n\n unmounted()\n {\n Dom.find(document.body).off('mousedown',\n null, this._.uid);\n\n Dom.find(document.body).off('keydown',\n null, this._.uid);\n },\n\n methods: {\n\n openModal(force = false, source = null)\n {\n if ( this.tempValue ) {\n return;\n }\n\n if ( this.closable || force ) {\n this.tempValue = true;\n }\n\n this.$emit('update:modelValue', true, source);\n },\n\n closeModal(force = false, source = null)\n {\n if ( ! this.tempValue ) {\n return;\n }\n\n if ( ! this.update ) {\n return this.$emit('close', source);\n }\n\n if ( this.closable || force ) {\n this.tempValue = false;\n }\n\n this.$emit('update:modelValue', false, source);\n },\n\n stopRefreshTimeout()\n {\n clearTimeout(this.refresh);\n\n Dom.find(this.$el).removeClass('n-ready');\n },\n\n startRefreshTimeout()\n {\n if ( ! this.tempValue ) {\n return this.stopRefreshTimeout();\n }\n\n window.zIndex += 1;\n\n Dom.find(this.$el).attr('data-modal',\n window.zIndex);\n\n Dom.find(this.$el).css({\n 'z-index': window.zIndex\n });\n\n this.queueRefreshTimeout();\n },\n\n queueRefreshTimeout()\n {\n if ( ! this.tempValue ) {\n return this.stopRefreshTimeout();\n }\n\n this.refresh = setTimeout(() => {\n Dom.find(this.$el).addClass('n-ready');\n }, 100);\n },\n\n eventClick(event, el)\n {\n if ( this.disabled || event.which !== 1 ) {\n return;\n }\n\n let result = !! Dom.find(el).closest(this.target);\n\n if ( ! result && ! this.tempValue ) {\n return;\n }\n\n if ( this.tempValue && this.closable ) {\n result = ! Dom.find(el).closest(this.$refs.backdrop);\n }\n\n if ( result === this.tempValue ) {\n return;\n }\n\n if ( ! result ) {\n return this.closeModal(false, 'escape');\n }\n\n if ( this.listen ) {\n this.openModal(true, 'selector');\n }\n },\n\n eventKeydown(event, el)\n {\n if ( ! this.tempValue || event.which !== 27 ) {\n return;\n }\n\n let extractIndex = (modal) => {\n return Dom.find(modal).attr('data-modal');\n };\n\n let indexes = Dom.find('.n-modal:not(.n-hidden)')\n .each(extractIndex);\n\n let index = Dom.find(this.$el).attr('data-modal');\n\n if ( Arr.last(indexes.sort()) !== index ) {\n return;\n }\n\n this.closeModal(false, 'escape');\n },\n\n },\n\n renderClose()\n {\n if ( ! this.renderClose || ! this.closable ) {\n return null;\n }\n\n let props = {\n onClick: () => this.closeModal(false, 'escape')\n };\n\n return (\n <div class=\"n-modal__close\" {...props}>\n <span class={nano.Icons.times}></span>\n </div>\n );\n },\n\n renderHeader()\n {\n if ( ! this.$slots.header && ! this.title ) {\n return null;\n }\n\n return (\n <div class=\"n-modal__header\">\n { [this.$slots.header && this.$slots.header({ closeModal: this.closeModal }) || this.title, this.ctor('renderClose')()] }\n </div>\n );\n },\n\n renderFooter()\n {\n if ( ! this.$slots.footer ) {\n return null;\n }\n\n return (\n <div class=\"n-modal__footer\">\n { this.$slots.footer({ closeModal: this.closeModal }) }\n </div>\n );\n },\n\n renderBody()\n {\n let bodyHtml = (\n <NScrollbar ref=\"scrollbar\" relative={true} wrapClass=\"n-modal__wrap\">\n { this.$slots.default && this.$slots.default({ closeModal: this.closeModal }) }\n </NScrollbar>\n );\n\n if ( this.$slots.body ) {\n bodyHtml = this.$slots.body({ closeModal: this.closeModal });\n }\n\n return (\n <div class=\"n-modal__body\">\n { bodyHtml }\n </div>\n );\n },\n\n renderFrame()\n {\n if ( ! this.tempValue ) {\n return null;\n }\n\n let style = {\n width: this.width, height: this.height\n };\n\n let innerHtml = [\n this.ctor('renderHeader')(),\n this.ctor('renderBody')(),\n this.ctor('renderFooter')(),\n ]\n\n return (\n <div class=\"n-modal__frame\" style={style}>\n { this.$slots.raw ? this.$slots.raw() : innerHtml }\n </div>\n );\n },\n\n renderBackdrop()\n {\n return (\n <div ref=\"backdrop\" class=\"n-modal__backdrop\"></div>\n );\n },\n\n render()\n {\n if ( ! window.zIndex ) {\n window.zIndex = 9000;\n }\n\n let classList = [\n 'n-modal',\n 'n-modal--' + this.size,\n 'n-modal--' + this.type,\n 'n-modal--' + this.position\n ];\n\n if ( this.tempValue ) {\n this.queueRefreshTimeout();\n }\n\n if ( this.renderClose ) {\n classList.push('n-closable');\n }\n\n if ( ! this.tempValue ) {\n classList.push('n-hidden');\n }\n\n let innerHtml = null;\n\n if ( this.tempValue ) {\n innerHtml = this.ctor('renderFrame')();\n }\n\n return (\n <div class={classList}>\n { [innerHtml, this.ctor('renderBackdrop')()] }\n </div>\n );\n }\n\n}\n","import Modal from './src/modal/modal';\n\nexport default function (App) {\n App.component(Modal.name, Modal);\n}\n","import { h } from \"vue\";\nimport { Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NInput',\n\n inject: {\n\n NForm: {\n default: undefined\n },\n\n NFormItem: {\n default: undefined\n }\n\n },\n\n inheritAttrs: false,\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n iconPosition: {\n default()\n {\n return 'after';\n },\n type: [String]\n },\n\n iconDisabled: {\n default()\n {\n return null;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n nativeType: {\n default()\n {\n return 'text';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n placeholder: {\n default()\n {\n return '';\n },\n type: [String]\n }\n\n },\n\n computed: {\n\n deepDisabled() {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n }\n\n },\n\n data()\n {\n return {\n focus: false, tempValue: this.modelValue || ''\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n methods: {\n\n onIconClick(event)\n {\n if ( event.clientX || event.clientY ) {\n this.$emit('icon-click', event);\n }\n },\n\n onInput(event)\n {\n this.$emit('update:modelValue',\n this.tempValue = event.target.value);\n },\n\n onKeydown(event)\n {\n this.$emit('keydown', event);\n\n if ( event.which !== 13 ) {\n return;\n }\n\n event.preventDefault();\n\n if ( ! this.NForm ) {\n return;\n }\n\n this.NForm.onSubmit(event);\n },\n\n onFocus(event)\n {\n this.focus = true;\n },\n\n onBlur(event)\n {\n this.focus = false;\n }\n\n },\n\n renderIcon()\n {\n if ( !this.icon ) {\n return null;\n }\n\n let disabled = this.deepDisabled;\n\n if ( this.iconDisabled !== null ) {\n disabled = this.iconDisabled;\n }\n\n let props = {\n type: 'input',\n icon: this.icon,\n size: this.size,\n square: true,\n disabled: disabled,\n };\n\n if ( !disabled ) {\n props.onClick = this.onIconClick;\n }\n\n return (<NButton {...props} />);\n },\n\n renderInput()\n {\n let props = Obj.except(this.$attrs, [\n 'class', 'style'\n ]);\n\n Obj.assign(props, {\n value: this.tempValue,\n type: this.nativeType,\n disabled: this.deepDisabled,\n placeholder: this.placeholder,\n onInput: this.onInput,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onKeydown: this.onKeydown\n });\n\n return h('input', props);\n },\n\n render()\n {\n let classList = [\n 'n-input',\n 'n-input--' + this.size,\n 'n-input--' + this.type,\n ];\n\n if ( this.icon ) {\n classList.push('n-input--icon');\n classList.push('n-input--icon-' + this.iconPosition);\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n let props = Obj.only(this.$attrs, ['style'], {\n class: this.cmer(classList)\n });\n\n let innerHtml = [];\n\n if ( this.iconPosition === 'before' ) {\n innerHtml.push(this.ctor('renderIcon')());\n }\n\n innerHtml.push(this.ctor('renderInput')());\n\n if ( this.iconPosition === 'after' ) {\n innerHtml.push(this.ctor('renderIcon')());\n }\n\n return h('div', props, innerHtml);\n }\n\n}\n","import Input from './src/input/input';\n\nexport default function (App) {\n App.component(Input.name, Input);\n}\n","import { Arr, Obj, Num, Now, Any, Dom, Locale } from \"@kizmann/pico-js\";\nimport { h } from \"vue\";\n\nexport default {\n\n name: 'NInputNumber',\n\n inheritAttrs: false,\n\n inject: {\n\n NFormItem: {\n default: undefined\n }\n \n },\n\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n min: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n max: {\n default()\n {\n return Number.MAX_VALUE;\n },\n type: [Number]\n },\n\n placeholder: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n stepSize: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n precision: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n format: {\n default()\n {\n return ':count';\n },\n type: [String]\n },\n\n decimals: {\n default()\n {\n return Locale.trans('.');\n },\n type: [String]\n },\n\n },\n\n computed: {\n\n deepDisabled() {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = this.getValue(value);\n }\n }\n\n },\n\n data()\n {\n return {\n focus: false, tempValue: this.getValue(),\n }\n },\n\n methods: {\n\n clear()\n {\n this.$emit('update:modelValue', this.tempValue = this.clearValue);\n },\n\n getValue(value = null)\n {\n if ( Any.isNull(value) ) {\n value = this.modelValue;\n }\n\n if ( Any.isEmpty(value) ) {\n return this.min;\n }\n\n return Num.float(value);\n },\n\n getDisplayValue()\n {\n\n if ( Any.isEmpty(this.modelValue) ) {\n return null;\n }\n\n let value = Num.format(this.tempValue,\n this.decimals, ' ', this.precision);\n\n return Locale.trans(this.format, { count: value });\n },\n\n nextStep()\n {\n if ( isNaN(this.tempValue) ) {\n this.tempValue = 0;\n }\n\n let value = this.tempValue + this.stepSize;\n\n if ( this.max < value ) {\n return;\n }\n\n value = Num.float(value).toFixed(this.precision);\n\n this.$emit('update:modelValue',\n this.tempValue = Num.float(value));\n },\n\n onNextDown()\n {\n this.nextStep();\n\n this.nextTimeout = setTimeout(() => {\n this.nextInterval = setInterval(this.nextStep, 100);\n }, 400);\n\n Dom.find(document).on('mouseup', this.onNextUp,\n this._.uid);\n },\n\n onNextUp()\n {\n clearTimeout(this.nextTimeout);\n clearInterval(this.nextInterval);\n\n Dom.find(document).off('mouseup', null,\n this._.uid);\n },\n\n prevStep()\n {\n if ( isNaN(this.tempValue) ) {\n this.tempValue = 0;\n }\n\n let value = this.tempValue - this.stepSize;\n\n if ( this.min > value ) {\n return;\n }\n\n value = Num.float(value).toFixed(this.precision);\n\n this.$emit('update:modelValue',\n this.tempValue = Num.float(value));\n },\n\n onPrevDown()\n {\n this.prevStep();\n\n this.prevTimeout = setTimeout(() => {\n this.prevInterval = setInterval(this.prevStep, 100);\n }, 400);\n\n Dom.find(document).on('mouseup', this.onPrevUp,\n this._.uid);\n },\n\n onPrevUp()\n {\n clearTimeout(this.prevTimeout);\n clearInterval(this.prevInterval);\n\n Dom.find(document).off('mouseup', null,\n this._.uid);\n },\n\n onKeydown(event)\n {\n if ( event.which === 13 ) {\n this.onInput(event);\n }\n },\n\n onFocus(event)\n {\n this.focus = true;\n },\n\n onBlur(event)\n {\n this.onInput(event);\n\n this.focus = false;\n },\n\n onInput(event)\n {\n let value = event.target.value;\n\n if ( value.match(/^[0-9]+((.|,)[0-9]+)?$/) ) {\n value = this.format.replace(':count', value);\n }\n\n let format = this.format.replace(':count',\n `([0-9\\\\,\\\\.\\\\-\\\\s]+)`);\n\n let regex = new RegExp(`^${format}$`);\n\n let match = value.match(regex);\n\n if ( !match ) {\n return event.target.value = this.getDisplayValue();\n }\n\n value = match[1].replace(',', '.')\n .replace(/\\s/, '');\n\n value = Num.float(value).toFixed(this.precision);\n\n if ( value < this.min ) {\n value = this.min;\n }\n\n if ( value > this.max ) {\n value = this.max;\n }\n\n this.$emit('update:modelValue',\n this.tempValue = Num.float(value));\n\n event.target.value = this.getDisplayValue();\n }\n\n },\n\n renderPrev()\n {\n let disabled = this.deepDisabled ||\n this.tempValue <= this.min;\n\n let props = {\n type: 'input-number',\n size: this.size,\n icon: 'fa fa-minus',\n square: true,\n disabled: disabled,\n onMousedown: this.onPrevDown,\n };\n\n return (<NButton {...props} />);\n },\n\n renderNext()\n {\n let disabled = this.deepDisabled ||\n this.tempValue >= this.max;\n\n let props = {\n type: 'input-number',\n size: this.size,\n icon: 'fa fa-plus',\n square: true,\n disabled: disabled,\n onMousedown: this.onNextDown,\n };\n\n return (<NButton {...props} />);\n },\n\n renderInput()\n {\n let props = Obj.except(this.$attrs,\n ['class', 'style']);\n\n Obj.assign(props, {\n value: this.getDisplayValue(),\n disabled: this.deepDisabled,\n placeholder: this.placeholder,\n onKeydown: this.onKeydown,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n });\n\n return h('input', props);\n },\n\n renderClear()\n {\n if ( !this.clearable || Any.isEmpty(this.tempValue) ) {\n return null;\n }\n\n let props = {};\n\n if ( !this.deepDisabled ) {\n props.onMousedown = this.clear;\n }\n\n return (\n <div class=\"n-input-number__clear\" {...props}>\n <i class={nano.Icons.times}></i>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-input-number',\n 'n-input-number--' + this.type,\n 'n-input-number--' + this.size,\n ];\n\n if ( Any.isEmpty(this.modelValue) ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n {this.ctor('renderPrev')()}\n {this.ctor('renderInput')()}\n {this.ctor('renderClear')()}\n {this.ctor('renderNext')()}\n </div>\n );\n }\n\n}","import InputNumber from \"./src/input-number/input-number\";\n\nexport default function (App) {\n App.component(InputNumber.name, InputNumber);\n}","import { h } from \"vue\";\nimport {Obj, Any, UUID} from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTextarea',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n placeholder: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n autoRows: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n maxRows: {\n default()\n {\n return 12;\n },\n type: [Number]\n },\n\n minRows: {\n default()\n {\n return 4;\n },\n type: [Number]\n },\n\n maxLength: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n methods: {\n\n eventInput(event)\n {\n this.$emit('update:modelValue', \n this.tempValue = event.target.value);\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue || ''\n };\n },\n\n renderInput()\n {\n let props = Obj.except(this.$attrs, ['class', 'style']);\n\n Obj.assign(props, {\n value: this.tempValue,\n rows: this.minRows,\n disabled: this.disabled,\n placeholder: this.placeholder,\n onInput: this.eventInput,\n });\n\n if ( this.maxLength !== 0 ) {\n props.maxLength = this.maxLength;\n }\n\n let currentRows = (this.tempValue.match(/\\n/g) || []).length + 1;\n\n if ( this.autoRows && props.rows < currentRows ) {\n props.rows = currentRows <= this.maxRows ? currentRows : this.maxRows;\n }\n\n return h('textarea', props);\n },\n\n render()\n {\n let classList = [\n 'n-textarea',\n 'n-textarea--' + this.size,\n 'n-textarea--' + this.type,\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = Obj.only(this.$attrs, ['style'], {\n class: this.cmer(classList)\n });\n\n return h('div', props, [this.ctor('renderInput')()]);\n }\n\n}\n","import Textarea from './src/textarea/textarea';\n\nexport default function (App) {\n App.component(Textarea.name, Textarea);\n}","import { Obj, Arr, Any, Num, Dom, Event } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSlider',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n range: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n steps: {\n default()\n {\n return 1;\n }\n },\n\n labels: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n min: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n max: {\n default()\n {\n return 100;\n },\n type: [Number]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n },\n\n data()\n {\n return {\n index: 0, width: null, tempValue: [null, null]\n };\n },\n\n computed: {\n\n selector()\n {\n return `[data-index=\"${this.index}\"]`;\n },\n\n fixmin()\n {\n return Any.isArray(this.steps) ? Arr.first(this.steps) : this.min;\n },\n\n fixmax()\n {\n return Any.isArray(this.steps) ? Arr.last(this.steps) : this.max;\n },\n\n minmax()\n {\n return this.fixmax - this.fixmin;\n },\n\n touch() {\n return !! ('ontouchstart' in window ||\n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n },\n\n watch: {\n\n modelValue()\n {\n this.getPseudoValue();\n }\n\n },\n\n mounted()\n {\n Dom.find(window).on('resize',\n Any.debounce(this.onResize, 500), this._.uid);\n\n this.onResize();\n this.getPseudoValue();\n },\n\n unmounted()\n {\n Dom.find(window).off('resize',\n null, this._.uid);\n },\n\n methods: {\n\n onResize()\n {\n this.width = Dom.find(this.$el).width();\n },\n\n getPseudoValue()\n {\n let value = this.modelValue;\n\n if ( Any.isNull(value) ) {\n value = this.fixmax;\n }\n if ( ! Any.isArray(value) ) {\n value = [this.fixmin, value];\n }\n\n return this.tempValue = value;\n },\n\n setModelValue()\n {\n let value = this.tempValue;\n\n if ( ! this.range ) {\n value = this.tempValue[1];\n }\n\n this.$emit('update:modelValue', value);\n },\n\n getValPos(value)\n {\n return Num.fixed(this.width / this.minmax * (value - this.fixmin), 2) + 'px';\n },\n\n getValStyle(value)\n {\n return 'transform: translateX(' + this.getValPos(value) + ');';\n },\n\n getBarPos()\n {\n return Num.fixed(this.width / this.minmax * (this.tempValue[0] - this.fixmin), 2) + 'px';\n },\n\n getBarWidth()\n {\n return Num.fixed(this.width / this.minmax * (this.tempValue[1] - this.tempValue[0]), 2) + 'px';\n },\n\n getBarStyle()\n {\n return 'max-width: ' + this.getBarWidth() + '; ' +\n 'transform: translateX(' + this.getBarPos() + ');';\n },\n\n getClosestValue(width)\n {\n if ( Any.isNumber(this.steps) ) {\n return Num.round(width / this.steps) * this.steps;\n }\n\n let range = Arr.last(this.steps) -\n Arr.first(this.steps);\n\n let diff = Arr.each(this.steps, (step) => {\n return Math.abs((range / 100 * width) - step + this.fixmin);\n });\n\n let index = Arr.findIndex(diff, Math.min(...diff));\n\n return this.steps[index];\n },\n\n getTouchEvent(event)\n {\n if ( ! this.touch ) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n onMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n Dom.find(this.$el).find(this.selector).addClass('n-move');\n Dom.find(document.body).addClass('n-move');\n\n Dom.find(document).on(this.mouseup,\n Any.framerate(this.onMouseup, 60), this._.uid);\n\n Dom.find(document).on(this.mousemove,\n Any.framerate(this.onMousemove, 60), this._.uid);\n },\n\n onMousemove(event)\n {\n this.clientX = this.getTouchEvent(event).clientX;\n\n let offsetX = Dom.find(this.$el)\n .offset('left');\n\n let relativeWidth = (this.clientX - offsetX) / this.width * 100;\n\n let closestValue = this.getClosestValue(relativeWidth);\n\n if ( closestValue < this.fixmin ) {\n closestValue = this.fixmin;\n }\n\n if ( closestValue > this.fixmax ) {\n closestValue = this.fixmax;\n }\n\n let stepMin = this.tempValue[0] + this.steps;\n\n if ( this.index === 1 && closestValue < stepMin ) {\n closestValue = stepMin;\n }\n\n let stepMax = this.tempValue[1] - this.steps;\n\n if ( this.index === 0 && closestValue > stepMax ) {\n closestValue = stepMax;\n }\n\n this.tempValue[this.index] = closestValue;\n },\n\n onMouseup(event)\n {\n event.preventDefault();\n event.stopPropagation();\n\n Dom.find(document).off(this.mouseup, null, this._.uid);\n Dom.find(document).off(this.mousemove, null, this._.uid);\n\n Dom.find(this.$el).find(this.selector).removeClass('n-move');\n Dom.find(document.body).removeClass('n-move');\n\n this.setModelValue();\n },\n\n },\n\n renderHandle(value, index)\n {\n let handleProps = {\n 'data-value': value,\n 'data-index': index,\n style: this.getValStyle(value)\n };\n\n handleProps['onMousedown'] = (event) => {\n this.onMousedown(event, this.index = index);\n };\n\n let key = Arr.findIndex(this.steps, value);\n\n return (\n <div class=\"n-slider__handle\" {...handleProps}>\n <span>{ Obj.get(this.labels, key, value) }</span>\n </div>\n );\n },\n\n renderHandles()\n {\n let values = Arr.clone(this.tempValue);\n\n if ( ! this.range ) {\n delete values[0];\n }\n\n return Arr.each(values, (value, index) => {\n return this.ctor('renderHandle')(value, index);\n });\n },\n\n renderBar()\n {\n let barProps = {\n style: this.getBarStyle()\n };\n\n return (\n <div class=\"n-slider__bar\">\n <div class=\"n-slider__range\" {...barProps}></div>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-slider',\n 'n-slider--' + this.size\n ];\n\n if ( this.range ) {\n classList.push('n-range');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderBar')() }\n { this.ctor('renderHandles')() }\n </div>\n );\n }\n\n}\n","import Vue from \"vue\";\n\nimport Slider from './src/slider/slider';\n\nexport default function (App) {\n App.component(Slider.name, Slider);\n}","import { Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSwitch',\n\n inject: {\n\n NFormItem: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return false;\n }\n },\n\n onValue: {\n default()\n {\n return true;\n }\n },\n\n offValue: {\n default()\n {\n return false;\n }\n },\n\n onType: {\n default()\n {\n return 'primary';\n }\n },\n\n offType: {\n default()\n {\n return 'default';\n }\n },\n\n size: {\n default()\n {\n return 'md';\n }\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n },\n\n computed: {\n\n deepDisabled() {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue\n };\n },\n\n methods: {\n\n eventClick()\n {\n let tempValue = this.onValue;\n\n if ( this.tempValue === this.onValue ) {\n tempValue = this.offValue;\n }\n\n this.$emit('update:modelValue', this.tempValue = tempValue);\n }\n\n },\n\n watch: {\n\n modelValue()\n {\n if ( this.modelValue !== this.tempValue ) {\n this.tempValue = this.modelValue;\n }\n }\n\n },\n\n renderSwitch()\n {\n let classList = [\n 'n-switch__switch'\n ];\n\n let props = {};\n\n if ( ! this.deepDisabled ) {\n props.onMousedown = this.eventClick;\n }\n\n return (\n <div class={classList} {...props}>\n <span></span>\n </div>\n )\n },\n\n renderLabel()\n {\n if ( ! this.$slots.default ) {\n return null;\n }\n\n let classList = [\n 'n-switch__label',\n ];\n\n let props = {};\n\n if ( ! this.deepDisabled ) {\n props.onMousedown = this.eventClick;\n }\n\n return (\n <div class={classList} {...props}>\n { this.$slots.default() }\n </div>\n )\n },\n\n render()\n {\n let classList = [\n 'n-switch',\n 'n-switch--' + this.size\n ];\n\n if ( this.tempValue === this.onValue ) {\n classList.push('n-switch--' + this.onType);\n }\n\n if ( this.tempValue === this.offValue) {\n classList.push('n-switch--' + this.offType);\n }\n\n if ( this.tempValue === this.onValue ) {\n classList.push('n-on');\n }\n\n if ( this.tempValue === this.offValue ) {\n classList.push('n-off');\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderSwitch')() }\n { this.ctor('renderLabel')() }\n </div>\n );\n }\n\n}\n","import Vue from \"vue\";\n\nimport Switch from './src/switch/switch';\n\nexport default function (App) {\n App.component(Switch.name, Switch);\n}","import { Obj, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NConfirm',\n\n props: {\n\n visible: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n listen: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n update: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n selector: {\n default()\n {\n return null;\n },\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n width: {\n default()\n {\n return 'auto';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'center-center';\n },\n type: [String]\n },\n\n closable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n confirmText: {\n default()\n {\n return Locale.trans('Confirm');\n },\n type: [String]\n },\n\n abortText: {\n default()\n {\n return Locale.trans('Abort');\n },\n type: [String]\n },\n\n buttonSize: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n },\n\n watch: {\n\n visible()\n {\n if ( this.visible !== this.tempVisible ) {\n this.tempVisible = this.visible;\n }\n }\n\n },\n\n data()\n {\n return {\n tempVisible: this.visible\n };\n },\n\n methods: {\n\n abort(event)\n {\n this.$refs.modal.closeModal(true, 'self');\n this.$emit('abort');\n },\n\n confirm(event)\n {\n this.$refs.modal.closeModal(true, 'self');\n this.$emit('confirm');\n },\n\n eventInput(value, source)\n {\n if ( ! value && source !== 'self' ) {\n this.$emit('abort');\n }\n\n this.$emit('update:visible', this.tempVisible = value);\n }\n\n },\n\n renderIcon()\n {\n return (\n <div class=\"n-confirm__icon\">\n <span class={nano.Icons[this.type]}></span>\n </div>\n );\n },\n\n renderBody()\n {\n return (\n <div class=\"n-confirm__body\">\n { this.$slots.default && this.$slots.default() || this.trans('Are you sure?') }\n </div>\n );\n },\n\n renderAction()\n {\n let classList = [\n 'n-confirm__action'\n ];\n\n if ( window.WIN ) {\n classList.push('n-reverse');\n }\n\n return (\n <div class={classList}>\n <NButton size={this.buttonSize} type={this.type} link={true} onClick={this.abort}>\n { this.abortText }\n </NButton>\n <NButton size={this.buttonSize} type={this.type} link={false} onClick={this.confirm}>\n { this.confirmText }\n </NButton>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-confirm',\n 'n-confirm--' + this.type,\n 'n-confirm--' + this.size\n ];\n\n let props = {\n type: 'default',\n selector: this.selector,\n listen: this.listen,\n update: this.update,\n width: this.width,\n position: this.position,\n closable: this.closable,\n modelValue: this.tempVisible,\n };\n\n // Override input listener\n props['onUpdate:modelValue'] = this.eventInput;\n\n let innerHtml = {\n raw: () => (\n <div class={classList}>\n { this.ctor('renderIcon')() }\n { this.ctor('renderBody')() }\n { this.ctor('renderAction')() }\n </div>\n )\n };\n\n return (\n <NModal ref=\"modal\" {...props}>\n { innerHtml }\n </NModal>\n );\n }\n\n}\n","import Confirm from './src/confirm/confirm';\n\nexport default function (App) {\n App.component(Confirm.name, Confirm);\n}\n","import { Obj, Now, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDatetimepicker',\n\n inject: {\n\n NFormItem: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n minDate: {\n default()\n {\n return null;\n }\n },\n\n maxDate: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n placeholder: {\n default()\n {\n return Locale.trans('Select datetime');\n },\n type: [String]\n },\n\n monthPanels: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n boundary: {\n default()\n {\n return null;\n }\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return Locale.trans('YYYY-MM-DD HH:mm:ss');\n },\n type: [String]\n },\n\n weekdays: {\n default()\n {\n return [\n Locale.trans('Mo'),\n Locale.trans('Tu'),\n Locale.trans('We'),\n Locale.trans('Th'),\n Locale.trans('Fr'),\n Locale.trans('Sa'),\n Locale.trans('Su'),\n ];\n },\n type: [Array]\n },\n\n months: {\n default()\n {\n return [\n Locale.trans('Jan'),\n Locale.trans('Feb'),\n Locale.trans('Mar'),\n Locale.trans('Apr'),\n Locale.trans('May'),\n Locale.trans('Jun'),\n Locale.trans('Jul'),\n Locale.trans('Aug'),\n Locale.trans('Sep'),\n Locale.trans('Oct'),\n Locale.trans('Nov'),\n Locale.trans('Dec'),\n ];\n },\n type: [Array]\n }\n\n },\n\n computed: {\n\n deepDisabled() {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n },\n\n },\n\n data()\n {\n return {\n focus: false, tempValue: Now.make(this.modelValue, this.format),\n };\n },\n\n methods: {\n\n clearDatetimepicker()\n {\n this.tempValue = Now.make(this.clearValue, \n this.format);\n\n this.$emit('update:modelValue', this.clearValue);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n onValueInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n hour: value.moment.hour(),\n minute: value.moment.minute(),\n second: value.moment.second(),\n });\n\n this.tempValue = Now.make(moment);\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n onDatepickerInput(value)\n {\n this.tempValue = Now.make(value, \n this.format);\n\n this.$emit('update:modelValue', value);\n },\n\n onTimepickerInput(value)\n {\n this.tempValue = Now.make(value,\n this.format);\n\n this.$emit('update:modelValue', value);\n },\n\n },\n\n\n renderLabelClear()\n {\n let isEmpty = ! this.tempValue.initialDate;\n\n if ( ! this.clearable || isEmpty ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.deepDisabled ) {\n props.onMousedown = this.clearDatetimepicker;\n }\n\n return (\n <div class=\"n-datetimepicker__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-datetimepicker__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderSingle()\n {\n let props = {\n value: '',\n disabled: this.deepDisabled,\n placeholder: this.placeholder,\n onInput: this.onValueInput,\n };\n\n if ( this.tempValue.valid() ) {\n props.value = this.tempValue.format(\n this.displayFormat, true);\n }\n\n return (\n <div class=\"n-datetimepicker__input\">\n <input {...props}/>\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-datetimepicker__display'\n ];\n\n if ( this.range ) {\n classList.push('n-range');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderSingle')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderPanels()\n {\n return (\n <div class=\"n-datetimepicker__body\">\n {[this.ctor('renderDatePanel')(), this.ctor('renderTimePanel')()]}\n </div>\n );\n },\n\n renderDatePanel()\n {\n let props = Obj.only(this.$props, [\n 'minDate', 'maxDate', 'size', 'type', 'format', 'monthPanels', 'disabled', 'weekdays', 'months'\n ]);\n\n props = Obj.assign(props, {\n modelValue: this.tempValue.format(this.format) || null,\n });\n\n props['onUpdate:modelValue'] = this.onDatepickerInput;\n\n return (\n <NDatepickerPanel class=\"n-datetimepicker__date-panel\" {...props}></NDatepickerPanel>\n );\n },\n\n renderTimePanel()\n {\n let props = Obj.only(this.$props, [\n 'size', 'type', 'format', 'disabled', 'hoursInterval', 'minutesInterval', 'secondsInterval'\n ]);\n\n props = Obj.assign(props, {\n modelValue: this.tempValue.format(this.format) || null,\n });\n\n props['onUpdate:modelValue'] = this.onTimepickerInput;\n\n return (\n <NTimepickerPanel class=\"n-datetimepicker__time-panel\" {...props}></NTimepickerPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.deepDisabled\n };\n\n let slots = {\n raw: this.ctor('renderPanels')\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props} v-slots={slots} />\n );\n },\n\n render()\n {\n let classList = [\n 'n-datetimepicker',\n 'n-datetimepicker--' + this.type,\n 'n-datetimepicker--' + this.size,\n ];\n\n let isEmpty = ! this.tempValue.initialDate;\n\n if ( isEmpty ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import Datetimepicker from \"./src/datetimepicker/datetimepicker\";\n\nexport default function (App) {\n App.component(Datetimepicker.name, Datetimepicker);\n}","import { Any, Obj, Arr, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDurationpicker',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n options: {\n default()\n {\n return [\n 60 * 5,\n 60 * 10,\n 60 * 15,\n 60 * 30,\n 60 * 45,\n 60 * 60,\n 60 * 90,\n 60 * 120,\n 60 * 150,\n 60 * 60 * 3,\n 60 * 60 * 4,\n 60 * 60 * 5,\n 60 * 60 * 6,\n 60 * 60 * 12,\n 60 * 60 * 24,\n 60 * 60 * 24 * 2,\n 60 * 60 * 24 * 3,\n 60 * 60 * 24 * 4,\n 60 * 60 * 24 * 5,\n 60 * 60 * 24 * 6,\n 60 * 60 * 24 * 7,\n ];\n },\n type: [Array]\n },\n\n minDuration: {\n default()\n {\n return null;\n }\n },\n\n maxDuration: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n placeholder: {\n default()\n {\n return Locale.trans('Select duration');\n },\n type: [String]\n },\n\n negativeText: {\n default()\n {\n return Locale.trans('Negative duration');\n },\n type: [String]\n },\n\n boundary: {\n default()\n {\n return null;\n }\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n days: {\n default()\n {\n return Locale.trans(':count Day|:count Days');\n },\n type: [String]\n },\n\n hours: {\n default()\n {\n return Locale.trans(':count Hour|:count Hours');\n },\n type: [String]\n },\n\n minutes: {\n default()\n {\n return Locale.trans(':count Minute|:count Minutes');\n },\n type: [String]\n },\n\n seconds: {\n default()\n {\n return Locale.trans(':count Second|:count Seconds');\n },\n type: [String]\n }\n\n },\n\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n },\n\n data()\n {\n return {\n focus: false, tempValue: this.modelValue, editValue: null\n };\n },\n\n methods: {\n\n findPattern(text, pattern)\n {\n pattern = pattern.replaceAll(':count', '([0-9\\.\\,]+)')\n .replaceAll(' ', '\\\\s*');\n\n return text.match(new RegExp(pattern, 'i'));\n },\n\n humanizeValue(value)\n {\n if ( Any.isEmpty(value) ) {\n return '';\n }\n\n if ( value < 0 ) {\n return this.negativeText;\n }\n\n let seconds = value;\n\n // Extract minutes\n let minutes = Math.floor(seconds/60);\n seconds -= minutes * 60;\n\n // Extract hours\n let hours = Math.floor(minutes/60);\n minutes -= hours * 60;\n\n\n // Extract days\n let days = Math.floor(hours/24);\n hours -= days * 24;\n\n let text = [];\n\n if ( days ) {\n text.push(Locale.choice(this.days, days));\n }\n\n if ( hours ) {\n text.push(Locale.choice(this.hours, hours));\n }\n\n if ( minutes ) {\n text.push(Locale.choice(this.minutes, minutes));\n }\n\n if ( seconds ) {\n text.push(Locale.choice(this.seconds, seconds));\n }\n\n return text.join(' ');\n },\n\n digitizeValue(text)\n {\n if ( Any.isEmpty(text) ) {\n return this.clearValue;\n }\n\n let value = 0;\n\n let dmatch = this.findPattern(text, this.days);\n\n if ( dmatch && dmatch.length === 3 ) {\n value += Any.float(dmatch[1].replace(',', '.')) * 24 * 60 * 60;\n }\n\n let hmatch = this.findPattern(text, this.hours);\n\n if ( hmatch && hmatch.length === 3 ) {\n value += Any.float(hmatch[1].replace(',', '.')) * 60 * 60;\n }\n\n let mmatch = this.findPattern(text, this.minutes);\n\n if ( mmatch && mmatch.length === 3 ) {\n value += Any.float(mmatch[1].replace(',', '.')) * 60;\n }\n\n let smatch = this.findPattern(text, this.seconds);\n\n if ( smatch && smatch.length === 3 ) {\n value += Any.float(smatch[1].replace(',', '.'));\n }\n\n return value;\n },\n\n clearDurationpicker()\n {\n this.$emit('update:modelValue', this.tempValue = this.clearValue);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n onValueInput(e)\n {\n let value = this.digitizeValue(e.target.value);\n\n if ( value === this.tempValue ) {\n return;\n }\n\n this.editValue = value;\n },\n\n onValueChange(e)\n {\n let value = this.editValue;\n\n // Clear edit value\n this.editValue = null;\n\n if ( ! value || value === this.tempValue ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue = value);\n },\n\n onDurationpickerInput(value)\n {\n this.focus = false;\n\n // Clear edit value\n this.editValue = null;\n\n this.$emit('update:modelValue', this.tempValue = value);\n },\n\n },\n\n renderLabelClear()\n {\n if ( ! this.clearable || ! this.tempValue ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearDurationpicker;\n }\n\n return (\n <div class=\"n-durationpicker__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-durationpicker__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderInput()\n {\n let props = {\n value: this.humanizeValue(this.tempValue),\n disabled: this.disabled,\n placeholder: this.placeholder,\n onInput: this.onValueInput,\n onBlur: this.onValueChange,\n onChange: this.onValueChange,\n };\n\n return (\n <div class=\"n-durationpicker__input\">\n <input {...props}/>\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-durationpicker__display'\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderInput')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderItems()\n {\n return Arr.each(this.options, (value) => {\n\n let text = this.humanizeValue(value);\n\n let optionProps = {\n //\n };\n\n optionProps['onClick'] = () => {\n this.onDurationpickerInput(value);\n }\n\n return (<NPopoverOption {...optionProps}>{text}</NPopoverOption>)\n });\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: -1,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled\n };\n\n let slots = {};\n\n slots.raw = () => {\n\n let scrollProps = {\n relative: true, size: this.size\n }\n\n return (\n <NScrollbar ref=\"scrollbar\" class=\"n-durationpicker__body\" {...scrollProps}>\n {this.ctor('renderItems')()}\n </NScrollbar>\n )\n }\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props} v-slots={slots} />\n );\n },\n\n render()\n {\n let classList = [\n 'n-durationpicker',\n 'n-durationpicker--' + this.type,\n 'n-durationpicker--' + this.size,\n ];\n\n if ( ! this.tempValue ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import Durationpicker from \"./src/durationpicker/durationpicker\";\n\nexport default function (App) {\n App.component(Durationpicker.name, Durationpicker);\n}","import { Str, Arr, Obj, Any, UUID } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTransfer',\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n sourceLabel: {\n default()\n {\n return 'Source';\n },\n type: [String]\n },\n\n targetLabel: {\n default()\n {\n return 'Target';\n },\n type: [String]\n },\n\n labelProp: {\n default()\n {\n return 'label';\n },\n type: [String]\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n }\n\n },\n\n computed: {\n\n sourceChecked()\n {\n return !! this.selectedSource.length && \n this.selectedSource.length === this.tempSource.length;\n },\n\n sourceIntermediate()\n {\n return !! this.selectedSource.length && \n this.selectedSource.length !== this.tempSource.length;\n },\n\n targetChecked()\n {\n return !! this.selectedTarget.length && \n this.selectedTarget.length === this.tempTarget.length;\n },\n\n targetIntermediate()\n {\n return !! this.selectedTarget.length && \n this.selectedTarget.length !== this.tempTarget.length;\n },\n\n tempSource()\n {\n let source = Arr.filter(this.options, (item) => {\n return ! Arr.find(this.tempValue, { [this.uniqueProp]: item[this.uniqueProp] });\n });\n\n if ( Any.isEmpty(this.sourceSearch) ) {\n return Arr.clone(source);\n }\n\n let searchPattern = new RegExp(this.sourceSearch, 'i');\n\n source = Arr.filter(source, (item) => {\n return item[this.labelProp].match(searchPattern);\n });\n\n return Arr.clone(source);\n },\n\n tempTarget()\n {\n let target = Arr.filter(this.options, (item) => {\n return !! Arr.find(this.tempValue, { [this.uniqueProp]: item[this.uniqueProp] });\n });\n\n if ( Any.isEmpty(this.targetSearch) ) {\n return Arr.clone(target);\n }\n\n let searchPattern = new RegExp(this.targetSearch, 'i');\n\n target = Arr.filter(target, (item) => {\n return item[this.labelProp].match(searchPattern);\n });\n\n return Arr.clone(target);\n }\n\n },\n data()\n {\n return {\n uid: UUID(),\n tempValue: this.modelValue,\n sourceSearch: '',\n targetSearch: '',\n selectedSource: [],\n selectedTarget: []\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n methods: {\n\n moveItemsTarget(options)\n {\n Arr.each(options, (source) => {\n\n let item = Arr.find(this.options, {\n [this.uniqueProp]: source\n });\n\n Arr.add(this.tempValue, item, {\n [this.uniqueProp]: source\n });\n\n });\n\n this.$emit('input', this.tempValue);\n },\n\n moveItemsSource(options)\n {\n Arr.each(options, (source) => {\n\n Arr.remove(this.tempValue, {\n [this.uniqueProp]: source\n });\n\n });\n\n this.$emit('input', this.tempValue);\n },\n\n moveRowTarget(node)\n {\n // Get node unique\n let target = node.value[this.uniqueProp];\n\n // Remove item from selected list\n Arr.remove(this.selectedTarget, target);\n\n this.tempValue = Arr.remove(this.tempValue, {\n [this.uniqueProp]: target\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n moveRowSource(node)\n {\n // Get node unique\n let source = node.value[this.uniqueProp];\n\n // Remove item from selected list\n Arr.remove(this.selectedSource, source);\n\n Arr.add(this.tempValue, node.item, source, {\n [this.uniqueProp]: source\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n moveToSource()\n {\n Arr.each(this.selectedTarget, (target) => {\n\n Arr.remove(this.tempValue, {\n [this.uniqueProp]: target\n });\n\n });\n\n this.selectedTarget = [];\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n moveToTarget()\n {\n Arr.each(this.selectedSource, (source) => {\n\n let item = Arr.find(this.options, {\n [this.uniqueProp]: source\n });\n\n Arr.add(this.tempValue, item, {\n [this.uniqueProp]: source\n });\n\n });\n\n this.selectedSource = [];\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n updateSelectedSource(selected)\n {\n this.selectedSource = selected;\n },\n\n updateSelectedTarget(selected)\n {\n this.selectedTarget = selected;\n }\n\n },\n\n renderSourceSelect()\n {\n let props = {\n modelValue: this.sourceChecked,\n size: this.size,\n type: this.type,\n intermediate: this.sourceIntermediate,\n disabled: ! this.tempSource.length\n };\n\n props['onUpdate:modelValue'] = () => {\n this.$refs.source.selectAll();\n };\n\n return (\n <div class=\"n-transfer__select\">\n <NCheckbox {...props} />\n </div>\n );\n },\n\n renderSourceTitle()\n {\n let labelHtml = (\n <span class=\"n-transfer__item-title\">\n { this.sourceLabel }\n </span>\n );\n\n let counterHtml = (\n <span class=\"n-transfer__item-count\">\n { this.tempSource.length }\n </span>\n );\n\n return (\n <div class=\"n-transfer__title\">\n { [labelHtml, counterHtml] }\n </div>\n );\n },\n\n renderSourceHeader()\n {\n return (\n <div class=\"n-transfer__header\">\n { this.ctor('renderSourceSelect')() }\n { this.ctor('renderSourceTitle')() }\n </div>\n );\n },\n\n renderSourceSearch()\n {\n let props = {\n placeholder: this.trans('Search item'),\n size: this.size,\n type: this.type,\n icon: nano.Icons.times,\n iconDisabled: ! this.sourceSearch\n };\n\n props['onIconClick'] = () => {\n this.sourceSearch = '';\n };\n\n props['onUpdate:modelValue'] = () => {\n this.selectedSource = [];\n };\n\n return (\n <div class=\"n-transfer__search\">\n <NInput vModel={this.sourceSearch} {...props} />\n </div>\n )\n },\n\n renderSourceBody()\n {\n let props = {\n group: [this.uid + 'source'],\n allowGroups: [this.uid + 'target'],\n items: this.tempSource,\n size: this.size,\n type: this.type,\n renderSelect: true,\n selected: this.selectedSource,\n safezone: () => -10,\n disableMove: true,\n renderNode: this.ctor('renderNode'),\n onMove: this.moveItemsSource,\n 'onRowDblclick': this.moveRowSource,\n 'onUpdate:selected': this.updateSelectedSource\n };\n\n return (\n <NDraglist ref=\"source\" class=\"n-transfer__body\" {...props} />\n );\n },\n\n renderTargetSelect()\n {\n let props = {\n modelValue: this.targetChecked,\n size: this.size,\n type: this.type,\n intermediate: this.targetIntermediate,\n disabled: ! this.tempTarget.length\n };\n\n props['onUpdate:modelValue'] = () => {\n this.$refs.target.selectAll();\n };\n\n return (\n <div class=\"n-transfer__select\">\n <NCheckbox {...props} />\n </div>\n );\n },\n\n renderTargetTitle()\n {\n let labelHtml = (\n <span class=\"n-transfer__item-title\">\n { this.targetLabel }\n </span>\n );\n\n let counterHtml = (\n <span class=\"n-transfer__item-count\">\n { this.tempTarget.length }\n </span>\n );\n\n return (\n <div class=\"n-transfer__title\">\n { [labelHtml, counterHtml] }\n </div>\n );\n },\n\n renderTargetHeader()\n {\n return (\n <div class=\"n-transfer__header\">\n { this.ctor('renderTargetSelect')() }\n { this.ctor('renderTargetTitle')() }\n </div>\n );\n },\n\n renderTargetSearch()\n {\n let props = {\n placeholder: this.trans('Search item'),\n size: this.size,\n type: this.type,\n icon: nano.Icons.times,\n iconDisabled: ! this.targetSearch\n };\n\n props['onIconClick'] = () => {\n this.targetSearch = '';\n };\n\n props['onUpdate:modelValue'] = () => {\n this.selectedTarget = [];\n };\n\n return (\n <div class=\"n-transfer__search\">\n <NInput vModel={this.targetSearch} {...props} />\n </div>\n )\n },\n\n renderTargetBody()\n {\n let props = {\n group: [this.uid + 'target'],\n allowGroups: [this.uid + 'source'],\n items: this.tempTarget,\n size: this.size,\n type: this.type,\n renderSelect: true,\n selected: this.selectedTarget,\n safezone: () => -1,\n disableMove: true,\n renderNode: this.ctor('renderNode'),\n onMove: this.moveItemsTarget,\n 'onRowDblclick': this.moveRowTarget,\n 'onUpdate:selected': this.updateSelectedTarget\n };\n\n return (\n <NDraglist ref=\"target\" class=\"n-transfer__body\" {...props} />\n );\n },\n\n renderNode(props)\n {\n if ( this.$slots.default ) {\n return this.$slots.default(props);\n }\n\n return (\n <div class=\"n-transfer__item\">\n { Obj.get(props.item, this.labelProp) }\n </div>\n );\n },\n\n renderMoveSource()\n {\n let props = {\n disabled: ! this.selectedSource.length,\n size: this.size,\n type: this.type,\n square: true, \n icon: nano.Icons.angleRight,\n onClick: this.moveToTarget\n };\n\n return (\n <NButton {...props} />\n );\n },\n\n renderMoveTarget()\n {\n let props = {\n disabled: ! this.selectedTarget.length,\n size: this.size,\n type: this.type,\n square: true, \n icon: nano.Icons.angleLeft,\n onClick: this.moveToSource\n };\n return (\n <NButton {...props} />\n );\n },\n\n render($render)\n {\n let classList = [\n 'n-transfer',\n 'n-transfer--' + this.size,\n 'n-transfer--' + this.type,\n ]\n\n return (\n <div class={classList}>\n <div class=\"n-transfer__panel\">\n { this.ctor('renderSourceHeader')() }\n { this.ctor('renderSourceSearch')() }\n { this.ctor('renderSourceBody')() }\n </div>\n <div class=\"n-transfer__controls\">\n { this.ctor('renderMoveSource')() }\n { this.ctor('renderMoveTarget')() }\n </div>\n <div class=\"n-transfer__panel\">\n { this.ctor('renderTargetHeader')() }\n { this.ctor('renderTargetSearch')() }\n { this.ctor('renderTargetBody')() }\n </div>\n </div>\n );\n }\n\n}","import Transfer from \"./src/transfer/transfer\";\n\nexport default function (App) {\n App.component(Transfer.name, Transfer);\n}","import { Str, Num, Arr, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NPaginator',\n\n props: {\n\n page: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n limit: {\n default()\n {\n return 100;\n },\n type: [Number]\n },\n\n limitOptions: {\n default()\n {\n return [25, 50, 100, 500, 1000, 2500];\n },\n },\n\n total: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n maxPages: {\n default()\n {\n return 5;\n },\n type: [Number]\n },\n\n layout: {\n default()\n {\n return [\n 'limit', 'count', 'spacer', 'goto', 'pages'\n ]\n },\n type: [Array]\n }\n\n },\n\n computed: {\n\n pages()\n {\n return Num.ceil(this.total / this.tempLimit);\n },\n\n pageOptions()\n {\n return Arr.make(this.pages || 1);\n }\n\n },\n\n data()\n {\n return {\n tempPage: this.page, tempLimit: this.limit,\n };\n },\n\n\n\n methods: {\n\n forcePage(page)\n {\n if ( page !== this.tempPage ) {\n this.tempPage = page;\n }\n },\n\n updatePaginate()\n {\n let paginate = {\n page: this.tempPage, limit: this.tempLimit\n };\n\n this.$emit('paginate', paginate);\n },\n\n onPrevPage()\n {\n this.onPageInput(this.tempPage - 1);\n },\n\n onNextPage()\n {\n this.onPageInput(this.tempPage + 1);\n },\n\n onFirstPage()\n {\n this.onPageInput(1);\n },\n\n onLastPage()\n {\n this.onPageInput(this.pages);\n },\n\n onPageInput(value)\n {\n this.$emit('update:page', this.tempPage = value);\n\n this.updatePaginate();\n },\n\n onLimitInput(value)\n {\n if ( this.tempLimit !== value ) {\n this.$emit('update:page', this.tempPage = 1);\n }\n\n this.$emit('update:limit', this.tempLimit = value);\n\n this.updatePaginate();\n },\n\n },\n\n watch: {\n\n page(value)\n {\n if ( value !== this.tempPage ) {\n this.tempPage = value;\n }\n },\n\n limit(value)\n {\n if ( value !== this.tempLimit ) {\n this.tempLimit = value;\n }\n }\n\n },\n\n renderLimit()\n {\n let props = {\n modelValue: this.tempLimit,\n size: this.size,\n type: this.type,\n optionsValue: '$value.value',\n optionsLabel: '$value.label',\n };\n\n props.options = Arr.each(this.limitOptions, (limit) => {\n return {\n value: limit, label: this.choice(':count items', limit)\n };\n });\n\n props['onUpdate:modelValue'] = this.onLimitInput;\n\n return (\n <div class=\"n-paginator__limit\">\n <NSelect {...props} />\n </div>\n );\n },\n\n renderCount()\n {\n return (\n <div class=\"n-paginator__count\">\n { this.choice('No items|Total :count item|Total :count items', this.total) }\n </div>\n );\n },\n\n renderSpacer()\n {\n return (\n <div class=\"n-paginator__spacer\">\n { /* Nothing :( */ }\n </div>\n );\n },\n\n renderGoto()\n {\n if ( this.pageOptions.length > 500 ) {\n return null;\n }\n\n let props = {\n modelValue: this.tempPage,\n size: this.size,\n type: this.type,\n undefinedText: '?',\n optionsValue: '$value.value',\n optionsLabel: '$value.label',\n };\n\n props.options = Arr.reduce(this.pageOptions, (merge, index) => {\n return Arr.push(merge, {\n value: index, label: index\n });\n }, []);\n\n props['onUpdate:modelValue'] = this.onPageInput;\n\n return (\n <div class=\"n-paginator__goto\">\n <NSelect {...props} />\n </div>\n );\n },\n\n renderPrev()\n {\n let props = {\n type: this.type,\n square: true,\n size: this.size,\n icon: nano.Icons.angleLeft,\n onClick: this.onPrevPage\n };\n\n if ( this.tempPage - 1 < 1 ) {\n props.disabled = true;\n }\n\n return (\n <NButton {...props} />\n );\n },\n\n renderNext()\n {\n let props = {\n type: this.type,\n square: true,\n size: this.size,\n icon: nano.Icons.angleRight,\n onClick: this.onNextPage\n };\n\n if ( this.tempPage + 1 > this.pages ) {\n props.disabled = true;\n }\n\n return (\n <NButton {...props} />\n );\n },\n\n renderFirst()\n {\n if ( this.pages < this.maxPages ) {\n return null;\n }\n\n let props = {\n type: this.type,\n square: true,\n size: this.size,\n icon: nano.Icons.angleDoubleLeft,\n onClick: this.onFirstPage\n };\n\n if ( this.tempPage - 1 < 1 ) {\n props.disabled = true;\n }\n\n return (\n <NButton {...props} />\n );\n },\n\n renderLast()\n {\n if ( this.pages < this.maxPages ) {\n return null;\n }\n\n let props = {\n type: this.type,\n square: true,\n size: this.size,\n icon: nano.Icons.angleDoubleRight,\n onClick: this.onLastPage\n };\n\n if ( this.tempPage + 1 > this.pages ) {\n props.disabled = true;\n }\n\n return (\n <NButton {...props} />\n );\n },\n\n renderPage(index)\n {\n let page = this.tempPage;\n\n let pages = Math.abs(this.maxPages / 2);\n\n if ( page < pages ) {\n page = pages;\n }\n\n let global = Array(this.pages).length;\n\n if ( page > global - pages ) {\n page = global - pages;\n }\n\n let current = Num.int(index);\n\n if ( current < page - pages ) {\n return null;\n }\n\n if ( current > Math.max(1, page + pages) ) {\n return null;\n }\n\n let props = {\n type: this.type,\n size: this.size,\n };\n\n if ( current === this.tempPage ) {\n props.disabled = true;\n }\n\n props.onClick = () => {\n this.onPageInput(current);\n };\n\n return (\n <NButton {...props}>{ current }</NButton>\n );\n },\n\n renderPages()\n {\n let pages = Arr.each(this.pageOptions, (index) => {\n return this.ctor('renderPage')(index);\n });\n\n return (\n <div class=\"n-paginator__pages\">\n { this.ctor('renderFirst')() }\n { this.ctor('renderPrev')() }\n { ...pages }\n { this.ctor('renderNext')() }\n { this.ctor('renderLast')() }\n </div>\n );\n },\n\n renderSlot(view)\n {\n let renderFunction = this.ctor('render' + \n Str.ucfirst(view));\n\n if ( Any.isFunction(renderFunction) ) {\n return renderFunction();\n }\n\n return this.$slots[view] && this.$slots[view]();\n },\n\n render()\n {\n let className = [\n 'n-paginator',\n 'n-paginator--' + this.size,\n 'n-paginator--' + this.type\n ];\n\n return <div class={className}>\n {\n Arr.each(this.layout, (view) => {\n return this.ctor('renderSlot')(view);\n })\n }\n </div>;\n }\n}\n","import Paginator from './src/paginator/paginator';\n\nexport default function (App) {\n App.component(Paginator.name, Paginator);\n}","import { Arr, Obj, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NFile',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n multiple: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n placeholder: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n clearable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n clearableIcon: {\n default()\n {\n return nano.Icons.times;\n },\n type: [String]\n },\n\n buttonText: {\n default()\n {\n return Locale.trans('Select file');\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue\n };\n },\n\n watch: {\n\n modelValue()\n {\n if ( this.modelValue !== this.tempValue ) {\n this.tempValue = this.modelValue;\n }\n },\n\n tempValue()\n {\n if ( Any.isEmpty(this.tempValue) ) {\n this.$refs.input.value = null;\n }\n }\n\n },\n\n methods: {\n\n openContext()\n {\n this.$refs.input.click();\n },\n\n updateFile()\n {\n let tempValue = [\n ...this.$refs.input.files\n ];\n\n if ( ! this.multiple ) {\n tempValue = tempValue[0];\n }\n\n this.$emit('update:modelValue', this.tempValue = tempValue);\n },\n\n clearFile()\n {\n this.$emit('update:modelValue', null);\n }\n\n },\n\n renderInput()\n {\n let props = {\n size: this.size,\n disabled: true,\n iconDisabled: false,\n };\n\n props['onIconClick'] = this.clearFile;\n\n if ( ! this.multiple ) {\n props.modelValue = Obj.get(this.tempValue, 'name');\n }\n\n if ( this.multiple ) {\n props.modelValue = Locale.choice(':count File|:count Files',\n this.tempValue.length);\n }\n\n if ( this.clearable && !Any.isEmpty(this.tempValue) ) {\n props.icon = this.clearableIcon;\n }\n\n return (\n <NInput {...props}>\n { /* Input field for text */ }\n </NInput>\n );\n },\n\n renderButton()\n {\n let props = {\n size: this.size,\n disabled: this.disabled,\n icon: this.icon,\n onClick: this.openContext\n };\n\n return (\n <NButton {...props}>{this.buttonText}</NButton>\n );\n },\n\n renderHidden()\n {\n let props = {\n 'onInput': this.updateFile\n };\n\n return (\n <div class=\"n-file__input\">\n <input ref=\"input\" type=\"file\" multiple={this.multiple} {...props}></input>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-file'\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderInput')() }\n { this.ctor('renderButton')() }\n { this.ctor('renderHidden')() }\n </div>\n )\n }\n\n}\n","import File from './src/file/file';\n\nexport default function (App) {\n App.component(File.name, File);\n}\n\n","import { Num, Arr, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NRating',\n\n props: {\n\n modelValue: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n steps: {\n default()\n {\n return 0.5;\n },\n type: [Number]\n },\n\n fixed: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n max: {\n default()\n {\n return 5;\n },\n type: [Number]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n choice: {\n default()\n {\n return ':count';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n computed: {\n\n virtualValue()\n {\n return Num.fixed(1 / this.max * this.modelValue * 5, this.fixed);\n },\n\n },\n\n renderStars()\n {\n let stars = [\n 1, 2, 3, 4, 5\n ];\n\n return Arr.each (stars, (rate) => {\n\n let className = 'is-null';\n\n if ( this.virtualValue >= rate - 0.5 ) {\n className = 'is-half';\n }\n\n if ( this.virtualValue >= rate ) {\n className = 'is-full';\n }\n\n return (\n <span class={className}></span>\n );\n });\n },\n\n renderValue()\n {\n let vars = {\n value: Num.format(this.modelValue, '.', '', this.fixed)\n };\n\n if ( this.$slots.default ) {\n return this.$slots.default(vars);\n }\n\n return Locale.choice(this.choice, this.modelValue, vars);\n },\n\n render()\n {\n let classList = [\n 'n-rating',\n 'n-rating--' + this.size,\n 'n-rating--' + this.type\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n <div class=\"n-rating__stars\">\n {this.ctor('renderStars')()}\n </div>\n <div class=\"n-rating__value\">\n {this.ctor('renderValue')()}\n </div>\n </div>\n );\n }\n\n}\n","import Rating from './src/rating/rating';\n\nexport default function (App) {\n App.component(Rating.name, Rating);\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://Nano/webpack/universalModuleDefinition","webpack://Nano/webpack/bootstrap","webpack://Nano/external {\"root\":\"pi\",\"commonjs2\":\"@kizmann/pico-js\",\"commonjs\":\"@kizmann/pico-js\",\"amd\":\"@kizmann/pico-js\"}","webpack://Nano/external {\"root\":\"Vue\",\"commonjs2\":\"vue\",\"commonjs\":\"vue\",\"amd\":\"vue\"}","webpack://Nano/(webpack)/buildin/global.js","webpack://Nano/./src/draggable/src/draghandler/draghandler.js","webpack://Nano/./src/mixins/src/ctor.js","webpack://Nano/./src/virtualscroller/src/virtualscroller/virtualscroller.beta.js","webpack://Nano/./src/draggable/src/draglist/draglist.js","webpack://Nano/./src/draggable/src/draglist-item/draglist-item.js","webpack://Nano/./src/draggable/src/draggrid/draggrid.js","webpack://Nano/./src/draggable/src/draggrid-item/draggrid-item.js","webpack://Nano/./src/draggable/src/dropzone/dropzone.js","webpack://Nano/./src/preview/src/preview/preview.js","webpack://Nano/./src/preview/src/preview-video/preview-video.js","webpack://Nano/./src/mixins/src/cmer.js","webpack://Nano/./src/mixins/src/cslo.js","webpack://Nano/./src/index.js","webpack://Nano/./src/virtualscroller/index.js","webpack://Nano/./src/draggable/index.js","webpack://Nano/./src/table/src/table/table.js","webpack://Nano/./src/table/src/table-column/table-column.js","webpack://Nano/./src/table/src/table-cell/table-cell.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-string.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-boolean.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-datetime.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-option.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-image.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-matrix.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-select.js","webpack://Nano/./src/table/src/table-filter/table-filter.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-string.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-boolean.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-datetime.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-option.js","webpack://Nano/./src/table/index.js","webpack://Nano/./src/info/src/info/info.js","webpack://Nano/./src/info/src/info-column/info-column.js","webpack://Nano/./src/info/src/info-field/info-field.js","webpack://Nano/./src/info/src/info-field/types/info-field-string.js","webpack://Nano/./src/info/src/info-field/types/info-field-boolean.js","webpack://Nano/./src/info/src/info-field/types/info-field-datetime.js","webpack://Nano/./src/info/src/info-field/types/info-field-option.js","webpack://Nano/./src/info/src/info-field/types/info-field-image.js","webpack://Nano/./src/info/index.js","webpack://Nano/./src/popover/src/popover/popover.js","webpack://Nano/./src/popover/src/popover-group/popover-group.js","webpack://Nano/./src/popover/src/popover-option/popover-option.js","webpack://Nano/./src/popover/index.js","webpack://Nano/./src/form/src/form/form.js","webpack://Nano/./src/form/src/form-group/form-group.js","webpack://Nano/./src/form/src/form-item/form-item.js","webpack://Nano/./src/form/index.js","webpack://Nano/./src/config/src/config/config.js","webpack://Nano/./src/config/src/config/config-next.js","webpack://Nano/./src/config/index.js","webpack://Nano/./src/button/src/button/button.js","webpack://Nano/./src/button/src/button-group/button-group.js","webpack://Nano/./src/button/index.js","webpack://Nano/./src/select/src/select/select.js","webpack://Nano/./src/select/src/select-option/select-option.js","webpack://Nano/./src/select/index.js","webpack://Nano/./src/checkbox/src/checkbox/checkbox.js","webpack://Nano/./src/checkbox/src/checkbox-group/checkbox-group.js","webpack://Nano/./src/checkbox/index.js","webpack://Nano/./src/radio/src/radio/radio.js","webpack://Nano/./src/radio/src/radio-group/radio-group.js","webpack://Nano/./src/radio/index.js","webpack://Nano/./src/cascader/src/cascader-panel/cascader-panel.js","webpack://Nano/./src/cascader/src/cascader/cascader.js","webpack://Nano/./src/cascader/index.js","webpack://Nano/./src/datepicker/src/datepicker-panel/datepicker-panel.js","webpack://Nano/./src/datepicker/src/datepicker/datepicker.js","webpack://Nano/./src/datepicker/index.js","webpack://Nano/./src/timepicker/src/timepicker-panel/timepicker-panel.js","webpack://Nano/./src/timepicker/src/timepicker/timepicker.js","webpack://Nano/./src/timepicker/index.js","webpack://Nano/./src/tabs/src/tabs/tabs.js","webpack://Nano/./src/tabs/src/tabs-item/tabs-item.js","webpack://Nano/./src/tabs/index.js","webpack://Nano/./src/tags/src/tags/tags.js","webpack://Nano/./src/tags/src/tags-item/tags-item.js","webpack://Nano/./src/tags/index.js","webpack://Nano/./src/collapse/src/collapse/collapse.js","webpack://Nano/./src/collapse/src/collapse-item/collapse-item.js","webpack://Nano/./src/collapse/index.js","webpack://Nano/./src/preview/src/preview-plain/preview-plain.js","webpack://Nano/./src/preview/src/preview-image/preview-image.js","webpack://Nano/./src/preview/index.js","webpack://Nano/./src/map/src/map/map.js","webpack://Nano/./src/map/src/map-marker/map-marker.js","webpack://Nano/./src/map/index.js","webpack://Nano/./src/alert/src/alert/alert.js","webpack://Nano/./src/alert/index.js","webpack://Nano/./src/notification/src/notification/notification.js","webpack://Nano/./src/notification/index.js","webpack://Nano/./src/empty/src/empty-icon/empty-icon.js","webpack://Nano/./src/empty/index.js","webpack://Nano/./src/scrollbar/src/scrollbar/scrollbar.next.js","webpack://Nano/./src/scrollbar/index.js","webpack://Nano/./src/loader/src/loader/loader.js","webpack://Nano/./src/loader/index.js","webpack://Nano/./src/resizer/src/resizer/resizer.js","webpack://Nano/./src/resizer/index.js","webpack://Nano/./src/modal/src/modal/modal.js","webpack://Nano/./src/modal/index.js","webpack://Nano/./src/input/src/input/input.js","webpack://Nano/./src/input/index.js","webpack://Nano/./src/input-number/src/input-number/input-number.js","webpack://Nano/./src/input-number/index.js","webpack://Nano/./src/textarea/src/textarea/textarea.js","webpack://Nano/./src/textarea/index.js","webpack://Nano/./src/slider/src/slider/slider.js","webpack://Nano/./src/slider/index.js","webpack://Nano/./src/switch/src/switch/switch.js","webpack://Nano/./src/switch/index.js","webpack://Nano/./src/confirm/src/confirm/confirm.js","webpack://Nano/./src/confirm/index.js","webpack://Nano/./src/datetimepicker/src/datetimepicker/datetimepicker.js","webpack://Nano/./src/datetimepicker/index.js","webpack://Nano/./src/durationpicker/src/durationpicker/durationpicker.js","webpack://Nano/./src/durationpicker/index.js","webpack://Nano/./src/transfer/src/transfer/transfer.js","webpack://Nano/./src/transfer/index.js","webpack://Nano/./src/paginator/src/paginator/paginator.js","webpack://Nano/./src/paginator/index.js","webpack://Nano/./src/file/src/file/file.js","webpack://Nano/./src/file/index.js","webpack://Nano/./src/rating/src/rating/rating.js","webpack://Nano/./src/rating/index.js"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__1__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","g","this","Function","e","global","dragMods","NDragCounter","$el","Dom","make","classList","appendTo","document","body","event","count","update","html","Locale","choice","dataTransfer","setData","setDragImage","keyMods","Arr","has","push","attr","join","DragCounter","NDragIndicator","parent","safezone","el","strategy","rect","getBoundingClientRect","clientY","y","height","find","hasClass","show","hide","offsetTop","style","top","css","Obj","map","item","remove","NDraghandler","rootNode","frame","DragIndicator","DragCache","bindDragstart","on","onDragenterRoot","onDragoverRoot","onDragleaveRoot","onDragendRoot","onDragdropRoot","Event","uid","bindDragend","bindDragdrop","off","unbind","preventDefault","target","closest","cacheNodes","length","frames","Date","now","allowDrop","Any","isFunction","rainbow","each","node","addClass","removeClass","fire","moveNodes","group","cache","allowGroups","JSON","parse","stringify","dragcount","dropNodes","tempSelected","$emit","removeNode","clone","items","unlinkNodes","removeNodes","isSelected","id","virtuals","uniqueProp","route","clientHeight","resolve","targetNode","isInSelf","cascade","childNodes","unbindNode","$handle","handle","onDragstartNode","onDragenterNode","onDragoverNode","onDragleaveNode","onDragendNode","onDragdropNode","undefined","moveNodesMany","moveNodesOne","insertNode","moveNodesRoot","source","first","transformDrop","moveNodesInto","moveNodesBefore","moveNodesAfter","sources","eventName","set","prop","filter","childProp","disableMove","targetRoute","children","replace","index","splice","except","UUID","props","reduce","merge","reduceItem","Num","depth","cascades","unique","tempCascade","virtual","last","isEmpty","childRoute","ctor","fallback","$options","split","args","apply","DEBUG_NVSCROLL","inject","NDraggable","default","model","itemHeight","itemWidth","renderNode","deathzone","type","Number","overflowY","Boolean","overflowX","offsetY","offsetX","threshold","framerate","useKeys","data","state","start","end","grid","buffer","width","load","watch","updateRender","beforeMount","scrollTop","mounted","bindAdaptScroll","beforeUnmount","unbindAdaptScroll","methods","refreshScroll","setInterval","onScrollupdate","clearInterval","isIndexRendered","scrollIntoView","$refs","scrollbar","scrollToIndex","selector","delay","onScrollToIndex","total","Math","ceil","floor","targetTop","scrollTo","x","onScrollTo","clearState","content","async","refreshDriver","offset","offsetHeight","inner","scrollHeight","onSizechange","queue","timer","clearTimeout","to","setTimeout","bufferItems","round","startItem","endItem","isEqual","renderItem","passed","topOffset","renderFunction","$slots","renderRows","slice","renderGridRows","counter","chunk","renderGrid","chunks","renderItems","empty","render","totalHeight","DEBUG_NDLIST","draggable","size","String","current","selected","expanded","Array","lazyload","showEmptyIcon","itemOffset","scrollTopOnChange","renderCurrent","renderHandle","renderSelect","renderExpand","allowSelect","allowDrag","keyEvents","highlightTimeout","provide","modifier","visible","highlight","firstSelected","lastSelected","tempCurrent","tempExpanded","drag","watchModifierDown","_","watchModifierUp","virtualscroller","bindRoot","$watch","watchSelected","deep","refreshVirtuals","unbindRoot","filterVirtuals","add","which","updateNode","findVirtual","console","log","contains","getIndex","findIndex","getCurrentIndex","isDraggable","canDrag","isHighlight","highlightNode","refresh","recursive","val","$nextTick","scrollToHighlight","isCurrent","setCurrent","setRawCurrent","setNextCurrent","setPrevCurrent","reset","syncCurrent","isDisabled","canSelect","hasChildren","getChildren","isExpanded","expandItem","toggle","expandCurrent","isTotalSelected","isInterSelected","toggleSingleNode","toggleRangeNode","indexies","reversed","selectItem","selectAll","result","row","unselectAll","bindKeydown","onKeydown","unbindKeydown","stopPropagation","renderEmpty","trans","only","$props","onMouseenter","onMouseleave","NDraggableItem","required","computed","touch","navigator","msMaxTouchPoints","mousedown","mousemove","mouseup","init","bindNode","copy","copyNode","onClick","onDblclick","renderElement","renderSpacer","nano","Icons","Str","ucfirst","angleRight","checked","NDropzone","fileMap","image","video","font","text","application","file","thumb","fit","preview","typre","showSrc","tempFile","tempThumb","fileMime","getFileMime","thumbMime","getThumbMime","lightbox","extension","exts","resolveVimeo","resolveYoutube","showLightbox","renderPreview","renderFull","isObject","renderLightbox","slots","raw","url","isString","host","match","path","src","provider","tempSrc","resolveType","resolveData","youtube","vimeo","renderYoutube","renderVimeo","renderPlain","cmer","attrsList","isArray","isPlain","assign","$attrs","cslo","slot","Comment","circle","intermediate","clock","calendar","times","primary","success","warning","danger","info","angleUp","angleDown","angleLeft","angleDoubleLeft","angleDoubleRight","Settings","iconPosition","notifySize","notifyPosition","Install","App","pi","error","config","globalProperties","CtorMixin","CmerMixin","CsloMixin","Nano","component","Virtualscroller","Draglist","DraglistItem","Draggrid","DraggridItem","Dropzone","NTable","sortProp","sortDir","closeFilterOnEnter","elements","tempVisible","tempVisibleProps","tempSortProp","tempSortDir","tempFilter","tempFilterProps","makeVisibleProps","detectVisible","addColumn","column","removeColumn","getColumnIndex","getColumnVisiblity","getColumnSorted","getColumnFilter","filterProp","getColumnFiltered","detectVisibity","intersect","extract","onResize","sortByColumn","dir","replaceFilter","search","filters","resetFilter","refreshCurrent","modelValue","disabled","renderBody","columns","values","renderContext","label","renderHead","defaultRender","draggableHtml","tooltip","align","sort","breakpoint","previewProp","matrix","matrixProp","options","optionsValue","optionsLabel","fluid","fixedWidth","minWidth","maxWidth","emptyText","undefinedText","trueText","falseText","datetimeFormat","allowUncheck","matrixValues","NTableColumn","tempWidth","changedStates","sortDirection","flexBasis","onMousedown","renderHeadLabel","labelHtml","renderHeadSort","renderHeadFilter","angleHtml","resolveComponent","h","class","input","setFirstState","firstState","extends","TableCell","convertString","convertBoolean","convertDatetime","renderOption","$value","$index","option","toggleMatrix","toggleSelect","itemList","currentMatrix","combine","finder","isChecked","canReset","canApply","getFilterClone","mountFilter","getFilterProp","getDefaultFilter","applyFilter","clearFilter","popover","close","renderForm","renderApply","link","renderReset","renderFooter","trigger","footer","TableFilter","operator","li","nl","eq","ne","1","0","lt","gt","in","ni","Table","TableColumn","TableCellString","TableCellBoolean","TableCellDatetime","TableCellOption","TableCellImage","TableCellMatrix","TableCellSelect","TableFilterString","TableFilterBoolean","TableFilterDatetime","TableFilterOption","syncEvent","relative","tempValue","bindSyncEvent","unbindSyncEvent","updated","adaptHeight","setValue","NInfo","vals","infoHtml","renderLabel","InfoField","Info","InfoColumn","InfoFieldString","InfoFieldBoolean","InfoFieldDatetime","InfoFieldOption","InfoFieldImage","NPopover","listen","position","scrollClose","multiClose","clientX","prevent","refreshVisible","previous","append","onHover","onContext","onExit","onCloseEvent","active","open","pause","unpause","stopRefreshInterval","startRefreshInterval","passedOffset","updatePosition","isSameOffset","isSameSize","passedSize","getTargetHorizontal","targetRect","left","windowRect","posY","posX","center","inverse","broken","innerHeight","innerWidth","clientWidth","getTargetVertical","getTargetOffset","scroll","zIndex","isScrollClose","keyCode","header","viewBody","isNull","tempSize","focus","icon","imagePosition","clickClose","renderImage","renderIcon","renderContent","Popover","PopoverGroup","PopoverOption","inheritAttrs","dom","form","errors","ignore","forceChange","forceErrors","blocked","NForm","ready","emitChange","resetChange","onSubmit","is","addItem","removeItem","timeout","prevState","nextState","attrs","collapse","tooltipPosition","collapseGroup","renderCollapse","renderText","textHtml","renderAction","action","renderTooltip","NTabs","NTabsItem","NFormItem","tooltipWindow","conditional","conditionOn","conditionOff","enabled","toggleCondition","focusInput","$input","childs","click","gotoInput","keys","changeTab","renderCondition","renderError","renderInput","Form","FormGroup","FormItem","scope","solveAwait","$$scope","$$value","solveValue","solveEvent","$configRefs","solveContent","$render","prepareValue","veModel","deepSet","inputClosure","closure","obj","shift","renderLayer","setup","vIf","vShow","vAwait","$on","display","resolved","extraValue","sempValue","propAwait","getState","propExists","exists","solveInput","$scope","$model","$extra","$global","toPropKey","splits","lcfirst","toEventKey","cb","solveContext","getProp","getInput","setInput","renderSetup","alias","defaultsBind","binds","events","updateKey","NConfig","NConfigNext","square","nativeType","innerHtml","Button","ButtonGroup","clearValue","lazy","multiple","clearable","placeholder","collapseText","allowCreate","optionsDisabled","deepDisabled","custom","element","tempClear","searched","generateOptions","searchOptions","NSelect","scrollToClosest","clear","tempLabel","addOption","removeOption","resetInput","onFocusInput","onInputInput","onKeydownInput","createOrToggle","selectPrev","selectNext","searchRegex","RegExp","toggleOption","denyUpdate","getOptionLabel","newIndex","scrollToCurrent","createOption","virtualbar","select","renderLabelClear","renderLabelAngle","renderLabelItem","renderLabelCollapse","firstHtml","renderLabelItems","renderMultiple","isEmptyValue","isNumber","onFocus","onInput","inputHtml","renderSingle","modelLabel","renderDisplay","displayHtml","emptyHtml","renderLazyOption","isMultipleActive","isSingleActive","renderLazyItems","renderPopover","onClose","renderOptions","valueProp","labelProp","toggleItem","Select","SelectOption","NCheckboxGroup","tempComputed","globalChecked","tempChecked","tempIntermediate","globalIntermediate","tempDisabled","globalDisabled","addCheckbox","removeCheckbox","check","checkCheckbox","uncheck","uncheckCheckbox","eventShiftClick","shiftCheckbox","eventLocalClick","shiftKey","toggleCheckbox","eventGlobalClick","toggleAll","updateFromGroup","renderCheckbox","interHtml","checkHtml","checkbox","emit","checkboxes","uncheckAll","checkAll","Checkbox","CheckboxGroup","NRadioGroup","addRadio","removeRadio","checkRadio","renderRadio","radio","NRadio","hover","disabledProp","tempHover","clearCascader","hoverItem","onSelect","updateHover","clickTimer","lastclick","hoverTimer","fireSelectItem","onMousemove","renderCascade","renderList","onCascaderInput","onCascaderHover","onPopoverInput","itemLabel","CascaderPanel","Cascader","arrive","clearArrive","depart","clearDepart","minDate","maxDate","range","monthPanels","format","weekdays","months","yearsGrid","tempCache","getYears","monthsGrid","getMonths","Now","tempArrive","tempDepart","tempView","tempRanger","cacheArrive","cacheDepart","gotoDate","gotoMonth","gotoYear","patchDate","resetTime","applyTime","patchMonth","printRange","patchYear","patchRange","renderToolbarPrev","renderToolbarNext","renderToolbarMonth","monthsHtml","month","addMonths","renderToolbarYear","yearsHtml","year","renderToolbar","prev","next","renderDateItem","equalDate","valid","isNotBeforeMin","after","isNotAfterMax","before","renderRangeDateItem","viewMode","isTempValid","between","arriveFirst","renderDate","legendHtml","day","bodyHtml","getDatesGrid","panelHtml","prevMonth","nextMonth","renderMonthItem","equal","renderMonth","prevYear","nextYear","renderYearItem","renderYear","prevDecade","nextDecade","placeholderArrive","placeholderDepart","rangeSeparator","boundary","displayFormat","clearDatepicker","clearRangeDatepicker","clearSingleDatepicker","onValueInput","moment","isValid","date","onArriveInput","onDepartInput","onDatepickerInput","onDatepickerDepart","onDatepickerArrive","initialDate","renderRange","arriveProps","departProps","DatepickerPanel","Datepicker","hoursInterval","minutesInterval","secondsInterval","hoursGrid","getHours","minutesGrid","getMinutes","secondsGrid","getSeconds","eventSelect","scrollbars","ref","renderHourItem","hour","renderHourPanel","renderMinuteItem","minute","renderMinutePanel","renderSecondItem","second","renderSecondPanel","clearTimepicker","onTimepickerInput","renderPanel","TimepickerPanel","Timepicker","addTab","tab","$forceUpdate","removeTab","getTab","updateEvent","currentTab","sorted","repeatNext","renderHeaderIndicator","transform","renderHeader","tabs","preload","keep","_key","renderHeaderIcon","renderHeaderLabel","Tabs","TabsItem","NTags","tags","addTag","removeTag","color","Tags","TagsItem","NCollapse","showTab","hideTab","toggleTab","NCollapseItem","dragger","renderHeaderAngle","angle","showDelay","order","Collapse","CollapseItem","tempExt","ImageCache","resolveLoad","loaded","laod","reader","FileReader","onload","readAsDataURL","Preview","PreviewPlain","PreviewImage","PreviewVideo","lat","lng","zoom","NMap","callbacks","tempMap","focusMarkers","Map","callback","getMap","onMount","tempMarker","importMarkerPosition","marker","setPosition","updateMarkerPosition","getPosition","initializeMarker","innerHTML","createMarker","addListener","debounce","setMarkerByAddress","address","then","Notify","MapMarker","AlertFrame","iconPrimary","iconSecondary","iconSuccess","iconWarning","iconDanger","iconInfo","Alert","backdrop","onclick","getIcon","alert","Notification","duration","wrapper","getWrapper","notifications","Notifcation","EmptyIcon","NScrollbar","fixture","allowNative","wrapClass","native","adaptScrollBehavior","bindAdaptHeight","bindAdaptWidth","passive","onUpdate","onScroll","passedHeight","passedWidth","unbindAdaptHeight","unbindAdaptWidth","scrollLeft","onScrollIntoView","outerHeight","outerWidth","offsetLeft","$dom","offsetWidth","adaptScrollHeight","virtualHeight","barHeight","max","maxHeight","heightRatio","vbar","hasVtrack","adaptScrollPosition","adaptScrollWidth","scrollWidth","virtualWidth","barWidth","widthRatio","hbar","hasHtrack","vbarTop","hbarLeft","cacheChildEl","child","cacheWindwoEl","windowCache","spacer","refreshHeight","adaptWidth","resizeTimer","refreshWidth","$inner","actual","getTouchEvent","touches","changedTouches","onVbarMousedown","onVbarMousemove","onVbarMouseup","onHbarMousedown","onHbarMousemove","onHbarMouseup","WIN","vbarProps","hbarProps","Scrollbar","NLoader","minimum","applyTimer","timing","startTimer","restartTimer","Loader","resizerWidth","sizeFixed","updateWidth","bindSizechange","forceWidth","unmounted","unbindSizechange","flex","updateHandle","onLeftMousedown","onLeftMouseup","onLeftMousemove","scrollX","targetWidth","min","frameStyle","onRightMousedown","onRightMouseup","onRightMousemove","Resizer","title","closable","renderClose","startRefreshTimeout","NModal","eventClick","eventKeydown","openModal","force","closeModal","stopRefreshTimeout","queueRefreshTimeout","indexes","modal","renderFrame","renderBackdrop","Modal","iconDisabled","onIconClick","onBlur","Input","MAX_VALUE","stepSize","precision","decimals","getValue","getDisplayValue","nextStep","isNaN","toFixed","onNextDown","nextTimeout","nextInterval","onNextUp","prevStep","onPrevDown","prevTimeout","prevInterval","onPrevUp","regex","renderPrev","renderNext","renderClear","InputNumber","autoRows","maxRows","minRows","maxLength","eventInput","rows","currentRows","Textarea","steps","labels","fixmin","fixmax","minmax","getPseudoValue","setModelValue","getValPos","fixed","getValStyle","getBarPos","getBarWidth","getBarStyle","getClosestValue","diff","step","abs","onMouseup","relativeWidth","closestValue","stepMin","stepMax","handleProps","renderHandles","renderBar","barProps","Slider","onValue","offValue","onType","offType","renderSwitch","Switch","confirmText","abortText","buttonSize","abort","confirm","Confirm","clearDatetimepicker","renderPanels","renderDatePanel","renderTimePanel","Datetimepicker","minDuration","maxDuration","negativeText","days","hours","minutes","seconds","editValue","findPattern","pattern","replaceAll","humanizeValue","digitizeValue","dmatch","hmatch","mmatch","smatch","clearDurationpicker","onValueChange","onDurationpickerInput","onChange","optionProps","scrollProps","Durationpicker","sourceLabel","targetLabel","sourceChecked","selectedSource","tempSource","sourceIntermediate","targetChecked","selectedTarget","tempTarget","targetIntermediate","sourceSearch","searchPattern","targetSearch","moveItemsTarget","moveItemsSource","moveRowTarget","moveRowSource","moveToSource","moveToTarget","updateSelectedSource","updateSelectedTarget","renderSourceSelect","renderSourceTitle","counterHtml","renderSourceHeader","renderSourceSearch","renderSourceBody","onMove","renderTargetSelect","renderTargetTitle","renderTargetHeader","renderTargetSearch","renderTargetBody","renderMoveSource","renderMoveTarget","Transfer","page","limit","limitOptions","maxPages","layout","pages","tempLimit","pageOptions","tempPage","forcePage","updatePaginate","paginate","onPrevPage","onPageInput","onNextPage","onFirstPage","onLastPage","onLimitInput","renderLimit","renderCount","renderGoto","renderFirst","renderLast","renderPage","renderPages","renderSlot","view","className","Paginator","clearableIcon","buttonText","openContext","updateFile","files","clearFile","renderButton","renderHidden","File","virtualValue","renderStars","rate","renderValue","vars","Rating"],"mappings":"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","file":"nano-ui.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@kizmann/pico-js\"), require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@kizmann/pico-js\", \"vue\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Nano\"] = factory(require(\"@kizmann/pico-js\"), require(\"vue\"));\n\telse\n\t\troot[\"Nano\"] = factory(root[\"pi\"], root[\"Vue\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__, __WEBPACK_EXTERNAL_MODULE__1__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 15);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import { Arr, Obj, Num, Any, Dom, Event, Locale, UUID } from \"@kizmann/pico-js\";\n\nglobal.dragMods = [];\n\nclass NDragCounter\n{\n\n $el = null;\n\n constructor()\n {\n this.$el = Dom.make('div', {\n classList: ['n-draggable__counter']\n });\n\n this.$el.appendTo(document.body);\n }\n\n get(event, count)\n {\n // Update dragover color/type\n this.update();\n\n this.$el.html(\n `<span>${Locale.choice(':count Item|:count Items', count)}</span>`\n );\n\n // Fix data transfer\n event.dataTransfer.setData('text/plain', '');\n\n if ( typeof event.dataTransfer.setDragImage !== 'function' ) {\n return;\n }\n\n // Set finally the drop image\n event.dataTransfer.setDragImage(this.$el.get(0), 0, 0);\n }\n\n update()\n {\n global.dragMods = global.keyMods;\n\n let classList = [\n 'n-draggable__counter'\n ];\n\n if ( Arr.has(global.dragMods, 18) ) {\n classList.push('n-modify--alt');\n }\n\n if ( Arr.has(global.dragMods, 17) ) {\n classList.push('n-modify--ctrl');\n }\n\n if ( Arr.has(global.dragMods, 91) ) {\n classList.push('n-modify--meta');\n }\n\n this.$el.attr('class', classList.join(' '));\n }\n\n}\n\nglobal.DragCounter = new NDragCounter;\n\nclass NDragIndicator\n{\n\n $el = null;\n\n parent = null;\n\n constructor(parent)\n {\n this.$el = Dom.make('div', {\n classList: ['n-draggable__indicator']\n });\n\n this.$el.appendTo(this.parent = parent);\n }\n\n resolve(event, safezone, el, strategy = 'inner')\n {\n let rect = el.getBoundingClientRect();\n\n if ( event.clientY < rect.y + safezone ) {\n strategy = 'before';\n }\n\n if ( event.clientY > rect.y + rect.height - safezone ) {\n strategy = 'after';\n }\n\n if ( Dom.find(el).hasClass('n-expanded') ) {\n strategy = strategy === 'after' ? 'inner' : strategy;\n }\n\n Arr.has(['before', 'after'], strategy) ?\n this.show(el, strategy) : this.hide();\n\n\n return strategy;\n }\n\n show(el, strategy)\n {\n let offsetTop = Dom.find(el).offsetTop(this.parent);\n\n let style = {\n top: offsetTop || 1\n };\n\n if ( strategy === 'after' ) {\n style.top = offsetTop + Dom.find(el).height();\n }\n\n this.$el.css(Obj.map(style, (item) => item + 'px'));\n }\n\n hide()\n {\n this.$el.css(null);\n }\n\n destroy()\n {\n this.$el.get(0).remove();\n }\n\n}\n\nclass NDraghandler\n{\n\n uid = null;\n\n rootNode = null;\n childNodes = {};\n\n dropNodes = [];\n cacheNodes = [];\n\n strategy = 'nodrop';\n frames = 0;\n timeout = 0;\n dragcount = {};\n\n constructor(rootNode)\n {\n this.rootNode = rootNode;\n }\n\n bindRoot(frame = null)\n {\n this.DragIndicator = new NDragIndicator(frame || this.rootNode.$el);\n\n if ( global.DragCache ) {\n this.bindDragstart.call(this, ...global.DragCache);\n }\n\n Dom.find(this.rootNode.$el).on('dragenter', (event) => {\n this.onDragenterRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragover', (event) => {\n this.onDragoverRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragleave', (event) => {\n this.onDragleaveRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragend', (event) => {\n this.onDragendRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('drop', (event) => {\n this.onDragdropRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragdrop', (event) => {\n this.onDragdropRoot(event);\n });\n\n Event.bind('NDrag:start', this.bindDragstart.bind(this),\n this.rootNode.uid);\n\n Event.bind('NDrag:end', this.bindDragend.bind(this),\n this.rootNode.uid);\n\n Event.bind('NDrag:drop', this.bindDragdrop.bind(this),\n this.rootNode.uid);\n }\n\n unbindRoot()\n {\n let events = [\n 'dragstart',\n 'dragenter',\n 'dragover',\n 'dragleave',\n 'dragend',\n 'drop',\n 'dragdrop',\n ];\n\n Dom.find(this.rootNode.$el).off(events);\n\n Event.unbind('NDrag:start', this.rootNode.uid);\n Event.unbind('NDrag:end', this.rootNode.uid);\n Event.unbind('NDrag:drop', this.rootNode.uid);\n }\n\n onDragenterRoot(event)\n {\n event.preventDefault();\n }\n\n onDragoverRoot(event)\n {\n let isNode = Dom.find(event.target)\n .closest('.n-draglist-item');\n\n if ( isNode || !this.cacheNodes.length ) {\n return;\n }\n\n event.preventDefault();\n\n if ( this.frames && Date.now() - this.frames < 135 ) {\n return;\n }\n\n let allowDrop = this.rootNode.allowDrop;\n\n if ( !Any.isFunction(allowDrop) ) {\n allowDrop = () => this.rootNode.allowDrop;\n }\n\n let rainbow = Arr.each(this.cacheNodes, (node) => {\n return !!allowDrop(node, null, this.strategy);\n });\n\n this.strategy = 'root';\n\n if ( Arr.has(rainbow, false) ) {\n this.strategy = 'nodrop';\n }\n\n this.DragIndicator.hide();\n\n if ( this.strategy !== 'nodrop' ) {\n Dom.find(this.rootNode.$el).addClass('n-dragover');\n } else {\n Dom.find(this.rootNode.$el).removeClass('n-dragover');\n }\n\n if ( this.strategy === 'nodrop' ) {\n Dom.find(this.rootNode.$el).addClass('n-nodrop');\n } else {\n Dom.find(this.rootNode.$el).removeClass('n-nodrop');\n }\n\n this.frames = Date.now();\n }\n\n onDragleaveRoot(event)\n {\n Dom.find(this.rootNode.$el)\n .removeClass('n-dragover n-nodrop');\n }\n\n onDragendRoot(event)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n Dom.find(this.rootNode.$el)\n .removeClass('n-dragover n-nodrop');\n\n if ( this.strategy !== 'root' ) {\n return;\n }\n\n Event.fire('NDrag:end');\n }\n\n onDragdropRoot(event)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n Dom.find(this.rootNode.$el)\n .removeClass('n-dragover n-nodrop');\n\n if ( this.strategy !== 'root' ) {\n return;\n }\n\n event.preventDefault();\n\n this.moveNodes(null, this.strategy);\n\n Event.fire('NDrag:drop');\n }\n\n bindDragstart(group, cache)\n {\n if ( Arr.has(this.rootNode.allowGroups, group) ) {\n this.cacheNodes = JSON.parse(JSON.stringify(cache));\n }\n }\n\n bindDragend()\n {\n this.dragcount = {};\n\n this.cacheNodes = this.dropNodes = [];\n }\n\n bindDragdrop(...args)\n {\n if ( !this.dropNodes.length ) {\n return;\n }\n\n this.rootNode.tempSelected = [];\n\n this.rootNode.$emit('update:selected',\n this.rootNode.tempSelected);\n\n if ( !this.rootNode.removeNode ) {\n return;\n }\n\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n this.unlinkNodes(clone);\n this.removeNodes(clone);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n onDragstartNode(event, node)\n {\n if ( !this.rootNode.isSelected(node) ) {\n this.rootNode.$emit('update:selected',\n this.rootNode.tempSelected = [node.uid]);\n }\n\n let cache = Arr.each(this.rootNode.tempSelected, (id) => {\n return Arr.find(this.rootNode.virtuals, { [this.rootNode.uniqueProp]: id });\n });\n\n global.DragCounter.get(event, cache.length);\n\n Arr.map(cache, (value) => {\n return { value, item: Obj.get(this.rootNode, value.route) };\n });\n\n Event.fire('NDrag:start', this.rootNode.group,\n this.dropNodes = cache);\n\n global.DragCache = [\n this.rootNode.group, this.dropNodes\n ];\n\n this.dragcount[node.uid] = 0;\n }\n\n onDragenterNode(event, node)\n {\n event.preventDefault();\n\n if ( !this.dragcount[node.uid] ) {\n this.dragcount[node.uid] = 0;\n }\n\n this.dragcount[node.uid] ++;\n }\n\n onDragoverNode(event, node)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n event.preventDefault();\n\n if ( this.frames && Date.now() - this.frames < 45 ) {\n return;\n }\n\n let safezone = this.rootNode\n .safezone(node.$el.clientHeight);\n\n this.strategy = this.DragIndicator\n .resolve(event, safezone, node.$el);\n\n let targetNode = {\n value: node.value, item: node.item\n };\n\n let allowDrop = this.rootNode.allowDrop;\n\n if ( !Any.isFunction(allowDrop) ) {\n allowDrop = () => this.rootNode.allowDrop;\n }\n\n let rainbow = Arr.each(this.cacheNodes, (node) => {\n return !!allowDrop(node, targetNode, this.strategy);\n });\n\n let isInSelf = Arr.has(node.value.cascade,\n this.rootNode.tempSelected);\n\n rainbow.push(!isInSelf);\n\n if ( Arr.has(rainbow, false) ) {\n this.strategy = 'nodrop';\n }\n\n if ( this.strategy === 'nodrop' ) {\n this.DragIndicator.hide();\n }\n\n if ( this.strategy !== 'nodrop' ) {\n Dom.find(node.$el).addClass('n-dragover');\n Dom.find(node.$el).removeClass('n-nodrop');\n }\n\n if ( this.strategy === 'nodrop' ) {\n Dom.find(node.$el).removeClass('n-dragover');\n Dom.find(node.$el).addClass('n-nodrop');\n }\n\n this.frames = Date.now();\n }\n\n onDragleaveNode(event, node)\n {\n this.dragcount[node.uid] --;\n\n if ( this.dragcount[node.uid] !== 0 ) {\n return;\n }\n\n Dom.find(node.$el).removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n }\n\n onDragendNode(event, node)\n {\n Dom.find(node.$el).removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n\n Event.fire('NDrag:end');\n\n global.DragCache = null;\n }\n\n onDragdropNode(event, node)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n Dom.find(node.$el).removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n\n if ( this.strategy === 'nodrop' ) {\n return;\n }\n\n event.preventDefault();\n\n this.moveNodes(node, this.strategy);\n\n Event.fire('NDrag:drop');\n }\n\n bindNode(node)\n {\n if ( this.childNodes[node.uid] ) {\n this.unbindNode(node);\n }\n\n let $handle = Dom.find(node.$el);\n\n if ( this.rootNode.handle ) {\n $handle = $handle.find('[draggable]');\n }\n\n let $el = Dom.find(node.$el);\n\n $handle.on('dragstart', (event) => {\n this.onDragstartNode(event, node);\n });\n\n $el.on('dragenter', (event) => {\n this.onDragenterNode(event, node);\n });\n\n $el.on('dragover', (event) => {\n this.onDragoverNode(event, node);\n });\n\n $el.on('dragleave', (event) => {\n this.onDragleaveNode(event, node);\n });\n\n $el.on('dragend', (event) => {\n this.onDragendNode(event, node);\n });\n\n $el.on('drop', (event) => {\n this.onDragdropNode(event, node);\n });\n\n $el.on('dragdrop', (event) => {\n this.onDragdropNode(event, node);\n });\n\n this.childNodes[node.uid] = node;\n }\n\n unbindNode(node)\n {\n let $handle = Dom.find(node.$el);\n\n if ( this.rootNode.handle ) {\n $handle = $handle.find('[draggable]');\n }\n\n $handle.off('dragstart');\n\n let $el = Dom.find(node.$el);\n\n $el.off([\n 'dragenter',\n 'dragover',\n 'dragleave',\n 'dragend',\n 'drop',\n 'dragdrop',\n ]);\n\n $el.removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n\n delete this.childNodes[node.uid];\n }\n\n moveNodes(target, strategy) {\n\n if ( this.rootNode.items !== undefined ) {\n return this.moveNodesMany(target, strategy);\n }\n\n if ( this.rootNode.item !== undefined ) {\n return this.moveNodesOne(target, strategy);\n }\n\n return null;\n }\n\n moveNodesOne(target, strategy)\n {\n let clone = {\n items: [Obj.clone(this.rootNode.item)]\n };\n\n if ( this.rootNode.insertNode ) {\n clone = this.moveNodesRoot(clone, target);\n }\n\n if ( this.rootNode.removeNode ) {\n clone = this.removeNodes(clone);\n }\n\n let sources = Arr.each(this.cacheNodes, (node) => {\n return node.item[this.rootNode.uniqueProp];\n });\n\n let source = Arr.first(this.cacheNodes);\n\n this.rootNode.$emit('move', Obj.get(source, 'value.id'),\n Obj.get(target, 'uid'), strategy);\n\n this.rootNode.$emit('moveRaw',\n source, target, strategy);\n\n this.rootNode.$emit('update:item',\n Obj.get(source, 'item'));\n }\n\n moveNodesMany(target, strategy)\n {\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n if ( this.rootNode.removeNode ) {\n this.unlinkNodes(clone);\n }\n\n if ( !this.dropNodes.length ) {\n Arr.each(this.cacheNodes, (value, key) => {\n this.cacheNodes[key]['item'] = this.rootNode.transformDrop(value.item);\n });\n }\n\n if ( this.rootNode.insertNode && strategy === 'root' ) {\n clone = this.moveNodesRoot(clone, target);\n }\n\n if ( this.rootNode.insertNode && strategy === 'inner' ) {\n clone = this.moveNodesInto(clone, target);\n }\n\n if ( this.rootNode.insertNode && strategy === 'before' ) {\n clone = this.moveNodesBefore(clone, target);\n }\n\n if ( this.rootNode.insertNode && strategy === 'after' ) {\n clone = this.moveNodesAfter(clone, target);\n }\n\n if ( this.rootNode.removeNode ) {\n clone = this.removeNodes(clone);\n }\n\n let sources = Arr.each(this.cacheNodes, (node) => {\n return node.item[this.rootNode.uniqueProp];\n });\n\n this.dropNodes = this.rootNode.tempSelected = [];\n\n let eventName = 'move';\n\n if ( Arr.has(global.dragMods, 18) ) {\n eventName = 'moveAlt';\n }\n\n if ( Arr.has(global.dragMods, 17) ) {\n eventName = 'moveCtrl';\n }\n\n if ( Arr.has(global.dragMods, 91) ) {\n eventName = 'moveMeta';\n }\n\n this.rootNode.$emit(eventName, sources,\n Obj.get(target, 'uid'), strategy);\n\n this.rootNode.$emit(eventName + 'Raw',\n this.cacheNodes, target, strategy);\n\n this.rootNode.$emit('update:selected',\n this.rootNode.tempSelected);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n unlinkNodes(clone)\n {\n Arr.each(this.dropNodes, (node) => {\n Obj.set(clone, node.value.route, null);\n });\n }\n\n removeNodes(clone, prop = 'items')\n {\n clone[prop] = Arr.filter(clone[prop], (node) => {\n return !!node;\n });\n\n Arr.map(clone[prop], (node) => {\n\n if ( !node[this.rootNode.childProp] ) {\n return node;\n }\n\n return this.removeNodes(node,\n this.rootNode.childProp);\n });\n\n return clone;\n }\n\n moveNodesRoot(clone)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n Arr.each(this.cacheNodes, (node) => {\n clone.items.push(node.item);\n });\n\n return clone;\n }\n\n moveNodesInto(clone, target)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n let targetRoute = [\n target.value.route,\n this.rootNode.childProp\n ].join('.');\n\n let children = Obj.get(clone,\n targetRoute, []);\n\n Arr.each(this.cacheNodes, (node) => {\n children.push(node.item);\n });\n\n Obj.set(clone, targetRoute, children);\n\n return clone;\n }\n\n moveNodesBefore(clone, target)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n let targetRoute = target.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n Arr.each(this.cacheNodes, (node, index) => {\n items.splice(target.value.index + index, 0, node.item);\n });\n\n Obj.set(clone, targetRoute, items);\n\n return clone;\n }\n\n moveNodesAfter(clone, target)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n let targetRoute = target.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n Arr.each(this.cacheNodes, (node, index) => {\n items.splice(target.value.index + index + 1, 0, node.item);\n });\n\n Obj.set(clone, targetRoute, items);\n\n return clone;\n }\n\n copyNode(node)\n {\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n let targetRoute = node.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n let target = Obj.except(node.item, [], {\n [this.rootNode.uniqueProp]: UUID()\n });\n\n items.splice(node.value.index + 1,\n 0, target);\n\n Obj.set(clone, targetRoute, items);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n removeNode(node)\n {\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n let targetRoute = node.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n items.splice(node.value.index, 1);\n\n Obj.set(clone, targetRoute, items);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n reduce(items, ...props)\n {\n return Arr.reduce(items, (merge, item, index) =>\n this.reduceItem(merge, item, Num.int(index), ...props), []);\n }\n\n reduceItem(merge, item, index, depth = 0, route = 'items', cascades = [])\n {\n // Get a unique id\n let unique = Obj.get(item,\n this.rootNode.uniqueProp, UUID());\n\n // Add unique to cascader\n let tempCascade = Arr.merge(cascades,\n [unique]);\n\n let virtual = {\n index: index,\n depth: depth,\n route: [route, index].join('.'),\n parent: Arr.last(cascades),\n cascade: tempCascade,\n };\n\n virtual[this.rootNode.uniqueProp] = unique;\n\n let children = Obj.get(item,\n this.rootNode.childProp, []);\n\n if ( Any.isEmpty(children) ) {\n return Arr.merge(merge, [virtual]);\n }\n\n let childRoute = [\n route, index,\n this.rootNode.childProp\n ].join('.');\n\n let props = [\n depth + 1, childRoute, tempCascade\n ]\n\n return Arr.merge(merge, [virtual],\n this.reduce(children, ...props));\n }\n\n}\n\nexport default NDraghandler;","import { Arr, Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n ctor(key, fallback = null)\n {\n let ctor = Obj.get(this.$options, key.split('.'), -1);\n\n // if ( ctor === -1 ) {\n // ctor = Obj.get(this.$vnode.componentOptions.Ctor,\n // Arr.merge(['options'], key.split('.')), -1);\n // }\n\n if ( ctor === -1 ) {\n ctor = fallback;\n }\n\n if ( typeof ctor !== 'function' ) {\n return ctor;\n }\n\n return (...args) => ctor.apply(this, args);\n }\n\n}\n","import { Arr, Obj, Any, Dom } from \"@kizmann/pico-js\";\n\nglobal.DEBUG_NVSCROLL = false;\n\nexport default {\n\n name: 'NVirtualscroller',\n\n inject: {\n\n NDraggable: {\n default: undefined\n }\n\n },\n\n model: {\n prop: 'items'\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n }\n },\n\n itemHeight: {\n default()\n {\n return 34;\n }\n },\n\n itemWidth: {\n default()\n {\n return 0;\n }\n },\n\n renderNode: {\n default()\n {\n return null;\n }\n },\n\n deathzone: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n threshold: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n framerate: {\n default()\n {\n return 65;\n },\n type: [Number]\n },\n\n useKeys: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n },\n\n data()\n {\n let state = {\n start: 0, end: 0, grid: 1\n };\n\n return {\n state, buffer: [], width: 0, height: 0, load: true\n };\n },\n\n watch: {\n\n 'items': function () {\n this.updateRender();\n }\n\n },\n\n beforeMount()\n {\n this.scrollTop = 0;\n },\n\n mounted()\n {\n\n this.bindAdaptScroll()\n },\n\n\n beforeUnmount()\n {\n this.unbindAdaptScroll()\n },\n\n methods: {\n\n bindAdaptScroll()\n {\n this.refreshScroll = setInterval(this.onScrollupdate,\n 1000 / this.framerate);\n },\n\n unbindAdaptScroll()\n {\n clearInterval(this.refreshScroll);\n },\n\n isIndexRendered(index)\n {\n if ( ! this.itemHeight ) {\n return true;\n }\n\n return this.state.start < index &&\n this.state.end > index;\n },\n\n scrollIntoView(index)\n {\n if ( ! this.$refs.scrollbar ) {\n return;\n }\n\n if ( index === -1 || index >= this.items.length ) {\n index = this.items.length;\n }\n\n if ( ! this.isIndexRendered(index) ) {\n return this.scrollToIndex(index);\n }\n\n let selector = `[data-index=\"${index}\"]`;\n\n this.$refs.scrollbar.scrollIntoView(selector);\n },\n\n scrollToIndex(index, delay = 0)\n {\n Any.delay(() => this.onScrollToIndex(index), delay);\n },\n\n onScrollToIndex(index)\n {\n if ( ! this.$refs.scrollbar ) {\n return;\n }\n\n let total = Math.ceil(this.items.length /\n this.state.grid);\n\n index = Math.floor(index / this.state.grid);\n\n if ( index === -1 || index >= total ) {\n index = total;\n }\n\n let targetTop = index * this.itemHeight;\n\n if ( this.scrollTop > targetTop ) {\n return this.scrollTo(0, targetTop);\n }\n\n targetTop = targetTop - this.height +\n this.itemHeight;\n\n this.scrollTo(0, targetTop);\n },\n\n scrollTo(x = 0, y = 0, delay = 0)\n {\n Any.delay(() => this.onScrollTo(x, y), delay);\n },\n\n onScrollTo(x = 0, y = 0)\n {\n if ( ! this.$refs.scrollbar ) {\n return;\n }\n\n this.$refs.scrollbar.scrollTo(x, y);\n },\n\n clearState()\n {\n this.state = { start: 0, end: 0 };\n },\n\n updateRender()\n {\n if ( ! this.$refs.scrollbar ) {\n return Any.delay(this.updateRender);\n }\n\n this.scrollTop = this.$refs.scrollbar.\n $refs.content.scrollTop;\n\n Any.async(this.refreshDriver);\n },\n\n onScrollupdate()\n {\n if ( ! this.threshold ) {\n return;\n }\n\n let scrollTop = this.$refs.scrollbar.\n $refs.content.scrollTop;\n\n if ( scrollTop === this.scrollTop ) {\n return;\n }\n\n this.scrollTop = scrollTop;\n\n let offset = this.$refs.scrollbar.$el.offsetHeight -\n this.$refs.scrollbar.$el.clientHeight;\n\n let isOutOfRange = scrollTop < 0 || scrollTop + this.height\n > this.$refs.inner.scrollHeight + offset;\n\n if ( isOutOfRange ) {\n return;\n }\n\n Any.async(this.refreshDriver);\n },\n\n onSizechange(height, width, el)\n {\n this.width = width;\n this.height = height;\n\n Any.async(this.refreshDriver);\n },\n\n\n refreshDriver(queue = true)\n {\n if ( Any.isEmpty(this.timer) ) {\n this.timer = Date.now();\n }\n\n if ( Date.now() - this.timer > 20 ) {\n queue = false;\n }\n\n clearTimeout(this.to);\n\n this.to = setTimeout(() => {\n this.refreshDriver(false);\n }, 25);\n\n if ( queue ) {\n return;\n }\n\n clearTimeout(this.to);\n\n let grid = 1;\n\n if ( this.itemWidth ) {\n grid = Math.floor((this.width - this.deathzone) /\n this.itemWidth) || 1;\n }\n\n if ( ! this.threshold || this.threshold > this.items.length ) {\n return this.state = { start: 0, end: 0, grid };\n }\n\n let total = Math.ceil(this.items.length\n / grid);\n\n let bufferItems = Math.round((this.height /\n this.itemHeight) * 0.6);\n\n let startItem = Math.round(this.scrollTop /\n this.itemHeight);\n\n let endItem = Math.round((this.scrollTop +\n this.height) / this.itemHeight);\n\n let start = (startItem - bufferItems);\n\n if ( start < 0 ) {\n start = 0;\n }\n\n let end = endItem + bufferItems;\n\n if ( end > total ) {\n end = total;\n }\n\n let state = { start, end, grid };\n\n if ( Any.isEqual(this.state, state) ) {\n return;\n }\n\n this.state = state;\n },\n\n },\n\n renderItem(passed)\n {\n passed.index = (passed.index +\n this.state.start);\n\n let topOffset = Math.round(this.itemHeight *\n passed.index);\n\n let renderFunction = this.$slots.default;\n\n if ( this.renderNode ) {\n renderFunction = this.renderNode;\n }\n\n let props = {\n 'data-index': passed.index\n };\n\n if ( this.NDraggable && this.useKeys ) {\n props.key = passed.value[this.NDraggable.uniqueProp];\n }\n\n let style = {};\n\n let isLazy = this.threshold && this.threshold <=\n this.items.length;\n\n if ( isLazy && this.state.grid === 1 ) {\n style.top = topOffset + 'px';\n }\n\n if ( this.itemHeight ) {\n style.height = this.itemHeight + 'px';\n }\n\n if ( this.state.grid !== 1 ) {\n style.width = this.itemWidth + 'px';\n }\n\n return (\n <div class=\"n-virtualscroller__item\" style={style} {...props}>\n { renderFunction(passed) }\n </div>\n );\n },\n\n renderRows()\n {\n let items = Arr.slice(this.items, this.state.start,\n this.state.end);\n\n if ( ! this.threshold || this.threshold > this.items.length ) {\n items = this.items;\n }\n\n return Arr.each(items, (value, index) => {\n return this.ctor('renderItem')({ value, index });\n });\n },\n\n renderGridRows(passed)\n {\n let topOffset = Math.round(this.itemHeight *\n (passed.index + this.state.start));\n\n let style = {};\n\n if ( this.threshold && this.threshold <= this.items.length ) {\n style.top = topOffset + 'px';\n }\n\n let counter = passed.index * this.state.start;\n\n return (\n <div data-row={passed.index} class=\"n-virtualscroller__row\" style={style}>\n {\n Arr.each(passed.chunk, (value, index) => {\n return this.ctor('renderItem')({\n value, index: index + counter\n });\n })\n }\n </div>\n );\n },\n\n renderGrid()\n {\n let chunks = Arr.chunk(this.items,\n this.state.grid);\n\n let items = Arr.slice(chunks, this.state.start,\n this.state.end);\n\n if ( ! this.threshold || this.threshold > this.items.length ) {\n items = chunks;\n }\n\n return Arr.each(items, (chunk, index) => {\n return this.ctor('renderGridRows')({ chunk, index });\n });\n },\n\n renderItems()\n {\n if ( ! this.items.length ) {\n return this.$slots.empty && this.$slots.empty() || null;\n }\n\n if ( this.state.grid === 1 ) {\n return this.ctor('renderRows')();\n }\n\n return this.ctor('renderGrid')();\n },\n\n render()\n {\n let classList = [\n 'n-virtualscroller'\n ];\n\n if ( this.threshold && this.threshold <= this.items.length ) {\n classList.push('n-virtualscroller--absolute');\n }\n\n let props = {\n overflowY: this.overflowY,\n overflowX: this.overflowX,\n offsetY: this.offsetY,\n offsetX: this.offsetX,\n onSizechange: this.onSizechange,\n };\n\n let style = {\n 'overflow-y': 'hidden'\n };\n\n let totalHeight = Math.ceil(this.items.length / this.state.grid) *\n this.itemHeight;\n\n if ( this.threshold && this.items.length ) {\n style.height = Math.ceil(totalHeight + this.offsetY) + 'px';\n }\n\n return (\n <NScrollbar class={classList} ref=\"scrollbar\" {...props}>\n <div ref=\"inner\" class=\"n-virtualscroller__inner\" style={style}>\n { this.ctor('renderItems')() }\n </div>\n </NScrollbar>\n );\n }\n\n}\n","import { UUID, Num, Arr, Obj, Dom, Any, Event, Locale } from \"@kizmann/pico-js\";\nimport NDraghandler from \"../draghandler/draghandler\";\n\nglobal.DEBUG_NDLIST = false;\n\nexport default {\n\n name: 'NDraglist',\n\n model: {\n prop: 'items'\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n }\n },\n\n renderNode: {\n default()\n {\n return null;\n }\n },\n\n draggable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n current: {\n default()\n {\n return null;\n }\n },\n\n selected: {\n default()\n {\n return [];\n }\n },\n\n expanded: {\n default()\n {\n return [];\n }\n },\n\n handle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n group: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n allowGroups: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n safezone: {\n default()\n {\n return (height) => height * 0.265;\n }\n },\n\n lazyload: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n itemHeight: {\n default()\n {\n return 34;\n },\n type: [Number]\n },\n\n itemOffset: {\n default()\n {\n return 30;\n },\n type: [Number]\n },\n\n threshold: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n useKeys: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n scrollTopOnChange: {\n default()\n {\n return false;\n }\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n renderCurrent: {\n default()\n {\n return true;\n }\n },\n\n renderHandle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderSelect: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderExpand: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n transformDrop: {\n default()\n {\n return (node) => node;\n }\n },\n\n disableMove: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n insertNode: {\n default()\n {\n return true;\n }\n },\n\n removeNode: {\n default()\n {\n return true;\n }\n },\n\n allowSelect: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrag: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrop: {\n default()\n {\n return () => true;\n }\n },\n\n keyEvents: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n highlightTimeout: {\n default()\n {\n return 7000;\n },\n type: [Number]\n }\n\n },\n\n provide()\n {\n return {\n NDraggable: this\n };\n },\n\n data()\n {\n return {\n uid: UUID(),\n modifier: [],\n virtuals: [], \n visible: [], \n childNodes: {}, \n highlight: [],\n firstSelected: null,\n lastSelected: null,\n tempCurrent: this.current, \n tempExpanded: this.expanded, \n tempSelected: this.selected\n };\n },\n\n beforeMount()\n {\n this.drag = new NDraghandler(this);\n\n Dom.find(window).on('keydown',\n this.watchModifierDown, this._.uid);\n\n Dom.find(window).on('keyup',\n this.watchModifierUp, this._.uid);\n },\n\n mounted()\n {\n let frame = this.$refs.virtualscroller.\n $refs.inner;\n\n this.drag.bindRoot(frame);\n\n this.$watch('tempSelected', this.watchSelected, \n { deep: true });\n\n this.refreshVirtuals();\n },\n\n beforeUnmount()\n {\n this.drag.unbindRoot();\n\n Dom.find(document).off('keydown', null, this.uid);\n Dom.find(document).off('keyup', null, this.uid);\n },\n\n watch: {\n \n items()\n {\n if ( this.scrollTopOnChange ) {\n this.scrollTo();\n }\n\n this.refreshVirtuals();\n },\n\n virtuals()\n {\n this.filterVirtuals();\n },\n\n expanded(value)\n {\n this.tempExpanded = value;\n\n this.filterVirtuals();\n },\n\n selected(value)\n {\n this.tempSelected = value;\n },\n\n current(value)\n {\n this.tempCurrent = value;\n }\n\n },\n\n methods: {\n\n watchModifierDown(e)\n {\n Arr.add(this.modifier, e.which);\n },\n\n watchModifierUp(e)\n {\n Arr.remove(this.modifier, e.which);\n },\n\n watchSelected()\n {\n if ( ! this.tempSelected.length ) {\n return this.firstSelected = null;\n }\n\n this.firstSelected = Arr.find(this.virtuals, {\n [this.uniqueProp]: this.tempSelected[0]\n });\n },\n\n updateNode(node)\n {\n Obj.set(this, node.value.route, node.item);\n\n this.$emit('update:items', this.items);\n },\n\n findVirtual(unique)\n {\n let value = Arr.find(this.virtuals, (item) => {\n return item[this.uniqueProp] === unique;\n });\n\n if ( ! value ) {\n return null;\n }\n\n return {\n value, item: Obj.get(this, value.route, null)\n };\n },\n\n refreshVirtuals()\n {\n this.virtuals = this.drag.reduce(this.items);\n\n if ( global.DEBUG_NDLIST ) {\n console.log('Total virtual items mounted: ' + this.virtuals.length);\n }\n },\n\n filterVirtuals()\n {\n this.visible = Arr.filter(this.virtuals, (node) => {\n return Arr.contains(this.tempExpanded, node.cascade.slice(0, -1));\n });\n },\n\n getIndex(unique)\n {\n return Arr.findIndex(this.visible, {\n [this.uniqueProp]: unique\n });\n },\n\n getCurrentIndex()\n {\n if ( ! this.tempCurrent ) {\n return -1;\n }\n\n return Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n },\n\n scrollTo(x = 0, y = 0)\n {\n if ( ! this.$refs.virtualscroller ) {\n return Any.delay(() => this.scrollTo(x, y));\n }\n\n this.$refs.virtualscroller.scrollTo(x, y);\n },\n\n scrollToIndex(index)\n {\n if ( ! this.$refs.virtualscroller ) {\n return Any.delay(() => this.scrollToIndex(index));\n }\n\n this.$refs.virtualscroller.scrollIntoView(index);\n },\n\n isDraggable(node)\n {\n let canDrag = this.allowDrag;\n\n if ( ! Any.isFunction(canDrag) ) {\n canDrag = () => this.allowDrag;\n }\n\n return canDrag(node);\n },\n\n isHighlight(node)\n {\n return Arr.has(this.highlight, node.value[this.uniqueProp]);\n },\n\n highlightNode(value, key = null)\n {\n clearTimeout(this.refresh);\n\n // Clear highlight items\n this.highlight = [];\n\n Arr.recursive(this.items, this.childProp, (node, cascade) => {\n\n let val = node;\n\n if ( !Any.isEmpty(key) ) {\n val = Obj.get(val, key);\n }\n\n if ( ! Any.isFunction(value) ) {\n value = (val) => val === value;\n }\n\n if ( ! value(val) ) {\n return;\n }\n\n Arr.each(cascade, (item) => {\n Arr.add(this.tempExpanded, item[this.uniqueProp]);\n });\n\n Arr.add(this.highlight, node[this.uniqueProp]);\n });\n\n if ( ! this.highlight.length ) {\n return;\n }\n\n this.$nextTick(this.scrollToHighlight);\n \n this.refresh = setTimeout(() =>\n this.highlight = [], this.highlightTimeout);\n \n this.filterVirtuals();\n },\n\n scrollToHighlight()\n {\n if ( ! this.highlight.length ) {\n return;\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: Arr.first(this.highlight)\n });\n\n this.$refs.virtualscroller.scrollIntoView(index);\n },\n\n isCurrent(node)\n {\n return this.renderCurrent && this.tempCurrent && \n node.value[this.uniqueProp] === this.tempCurrent[this.uniqueProp] ;\n },\n\n setCurrent(node)\n {\n let isSameNode = this.tempCurrent && \n this.tempCurrent[this.uniqueProp] === node.value[this.uniqueProp];\n\n if ( isSameNode ) {\n return;\n }\n\n this.$emit('update:current', \n this.tempCurrent = node.item);\n \n Event.fire('NDraglist:syncCurrent', node.item, this.uid);\n },\n\n setRawCurrent(index)\n {\n let route = Obj.get(this.visible, \n [index, 'route']);\n\n if ( ! route ) {\n return this.setRawCurrent(0);\n }\n\n let item = Obj.get(this, route);\n\n this.$refs.virtualscroller\n .scrollIntoView(index);\n\n this.$emit('update:current', \n this.tempCurrent = item);\n \n Event.fire('NDraglist:syncCurrent', item, this.uid);\n },\n\n setNextCurrent()\n {\n if ( ! this.visible.length ) {\n return;\n }\n\n let reset = 0;\n\n if ( ! this.tempCurrent ) {\n return this.setRawCurrent(reset);\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n\n if ( index !== -1 ) {\n index++;\n }\n\n if ( index >= this.visible.length ) {\n index = reset;\n }\n\n this.setRawCurrent(index);\n },\n\n setPrevCurrent()\n {\n if ( ! this.visible.length ) {\n return;\n }\n\n let reset = this.visible.length - 1;\n\n if ( ! this.tempCurrent ) {\n return this.setRawCurrent(reset);\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n\n if ( index !== -1 ) {\n index--;\n }\n\n if ( index < 0 ) {\n index = reset;\n }\n \n this.setRawCurrent(index);\n },\n\n syncCurrent()\n {\n return ['NDraglist:syncCurrent', this.uid];\n },\n\n isDisabled(node)\n {\n let canSelect = this.allowSelect;\n\n if ( ! Any.isFunction(canSelect) ) {\n canSelect = () => this.allowSelect;\n }\n\n return ! canSelect(node) || (this.firstSelected &&\n node.value.depth !== this.firstSelected.depth);\n },\n\n hasChildren(node)\n {\n return !! this.getChildren(node).length;\n },\n\n getChildren(node)\n {\n return Obj.get(node.item, this.childProp, []);\n },\n\n isExpanded(node)\n {\n return Arr.has(this.tempExpanded, node.value[this.uniqueProp]);\n },\n\n expandItem(node)\n {\n if ( ! this.hasChildren(node) ) {\n return;\n }\n\n Arr.toggle(this.tempExpanded, node.value[this.uniqueProp]);\n\n this.filterVirtuals();\n },\n\n expandCurrent()\n {\n if ( ! this.tempCurrent ) {\n return;\n }\n\n let children = Obj.get(this.tempCurrent, \n this.childProp);\n\n if ( Any.isEmpty(children) ) {\n return;\n }\n\n Arr.toggle(this.tempExpanded, \n this.tempCurrent[this.uniqueProp]);\n\n this.filterVirtuals();\n },\n\n isSelected(node)\n {\n return Arr.has(this.tempSelected, node.value[this.uniqueProp]);\n },\n\n isTotalSelected()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n return visible.length === this.tempSelected;\n },\n\n isInterSelected()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n return visible.length !== this.tempSelected &&\n this.tempSelected;\n },\n\n toggleSingleNode(node)\n {\n Arr.toggle(this.tempSelected, this.lastSelected =\n node.value[this.uniqueProp]);\n },\n\n toggleRangeNode(node)\n {\n let indexies = [0, -1], reversed = false;\n\n if ( ! Any.isEmpty(this.lastSelected) ) {\n indexies[1] = this.getIndex(this.lastSelected);\n }\n\n indexies[0] = this.getIndex(node.value[this.uniqueProp]);\n\n if ( indexies[1] > indexies[0] ) {\n reversed = true;\n }\n\n if ( ! reversed ) {\n indexies = [indexies[1]+1, indexies[0]+1];\n }\n\n Arr.each(this.items.slice(indexies[0], indexies[1]), (item, index) => {\n Arr.toggle(this.tempSelected, item[this.uniqueProp]);\n });\n\n this.lastSelected = node.value[this.uniqueProp];\n },\n\n selectItem(node)\n {\n if ( this.isDisabled(node) ) {\n return;\n }\n\n ! Arr.has(this.modifier, 16) || this.renderExpand ?\n this.toggleSingleNode(node) : this.toggleRangeNode(node);\n\n this.$emit('update:selected', this.tempSelected);\n },\n\n selectAll()\n {\n let result = Arr.filter(this.visible, (item) => {\n\n let canSelect = this.allowSelect;\n\n if ( ! Any.isFunction(canSelect) ) {\n canSelect = () => this.allowSelect;\n }\n\n let row = {\n value: item, item: Obj.get(this, item.route)\n };\n\n return ! item.depth && canSelect(row);\n });\n\n let indexies = Arr.each(result, (item) => {\n return item[this.uniqueProp];\n });\n\n if ( indexies.length === this.tempSelected.length ) {\n return this.$emit('update:selected', this.tempSelected = []);\n }\n\n this.lastSelected = null;\n\n this.$emit('update:selected', this.tempSelected = indexies);\n },\n\n unselectAll()\n {\n if ( this.tempSelected.length ) {\n this.$emit('update:selected', this.tempSelected = []);\n }\n },\n\n bindKeydown()\n {\n if ( ! this.keyEvents ) {\n return;\n }\n\n Dom.find(document).on('keydown', \n this.onKeydown, this.uid)\n },\n\n unbindKeydown()\n {\n if ( ! this.keyEvents ) {\n return;\n }\n\n Dom.find(document).off('keydown', \n null, this.uid)\n },\n\n onKeydown(event, el)\n {\n if ( Dom.find(el).closest('input') ) {\n return;\n }\n\n if ( event.which === 32 ) {\n event.preventDefault();\n event.stopPropagation();\n this.expandCurrent();\n }\n\n if ( event.which === 38 ) {\n event.preventDefault();\n event.stopPropagation();\n this.setPrevCurrent();\n }\n\n if ( event.which === 40 ) {\n event.preventDefault();\n event.stopPropagation();\n this.setNextCurrent();\n }\n }\n\n },\n\n renderEmpty()\n {\n return (\n <NEmptyIcon disabled={! this.showEmptyIcon} class=\"n-draglist__empty\">\n { this.$slots.empty && this.$slots.empty() || this.trans('No entries') }\n </NEmptyIcon>\n );\n },\n\n renderItem(props)\n {\n return (\n <NDraglistItem {...Obj.except(props, ['index'])}>\n { { default: this.$slots.default } }\n </NDraglistItem>\n );\n },\n\n render()\n {\n let classList = [\n 'n-draglist',\n 'n-draglist--' + this.size,\n 'n-draglist--' + this.type\n ];\n\n if ( ! this.items.length ) {\n classList.push('n-empty');\n }\n\n let passed = [\n 'threshold', 'bufferItems', 'itemHeight', \n 'overflowX', 'overflowY', 'offsetX', 'offsetY', 'useKeys'\n ];\n\n let props = Obj.only(this.$props, passed, {\n items: this.visible,\n onMouseenter: this.bindKeydown,\n onMouseleave: this.unbindKeydown\n });\n\n return (\n <NVirtualscroller ref=\"virtualscroller\" class={classList} {...props}>\n { { default: this.ctor('renderItem'), empty: this.ctor('renderEmpty') } }\n </NVirtualscroller>\n );\n }\n\n}\n","import { Str, Obj, Arr, Dom } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDraglistItem',\n\n inject: {\n\n NDraggable: {\n default: undefined\n }\n \n },\n\n provide()\n {\n return {\n NDraggableItem: this\n };\n },\n\n props: {\n\n value: {\n required: true\n },\n\n },\n\n computed: {\n\n uid()\n {\n return Obj.get(this.value, this.NDraggable.uniqueProp);\n },\n\n item()\n {\n return Obj.get(this.NDraggable, this.value.route);\n },\n\n touch() {\n return !! ('ontouchstart' in window ||\n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n init: ! this.NDraggable.lazyload\n };\n },\n\n mounted()\n {\n this.timer = setTimeout(() => {\n\n if ( this.NDraggable.draggable ) {\n this.timer = setTimeout(() => {\n this.NDraggable.drag.bindNode(this);\n }, 10);\n }\n\n this.init = true;\n }, 5);\n },\n\n beforeUnmount()\n {\n clearTimeout(this.timer);\n\n this.NDraggable.drag.unbindNode(this);\n },\n\n methods: {\n\n copy()\n {\n return this.NDraggable.drag.copyNode(this);\n },\n\n remove()\n {\n return this.NDraggable.drag.removeNode(this);\n },\n\n hasChildren()\n {\n return this.NDraggable.hasChildren(this);\n },\n\n isDisabled()\n {\n return this.NDraggable.isDisabled(this);\n },\n\n isHighlight()\n {\n return this.NDraggable.isHighlight(this);\n },\n\n isCurrent()\n {\n return this.NDraggable.isCurrent(this);\n },\n\n isDraggable()\n {\n return this.NDraggable.isDraggable(this);\n },\n\n isExpanded()\n {\n return this.NDraggable.isExpanded(this);\n },\n\n expandItem()\n {\n this.NDraggable.expandItem(this);\n },\n\n isSelected()\n {\n return this.NDraggable.isSelected(this);\n },\n\n selectItem()\n {\n this.NDraggable.selectItem(this);\n },\n\n onClick(event)\n {\n let isExpand = Dom.find(event.target)\n .closest('.n-draglist-item__expand');\n\n if ( isExpand ) {\n return;\n }\n\n this.NDraggable.setCurrent(this);\n\n if ( Arr.has(global.keyMods, 91) ) {\n this.NDraggable.selectItem(this);\n }\n\n this.NDraggable.$emit('row-click', this);\n },\n\n onDblclick()\n {\n this.NDraggable.setCurrent(this);\n\n this.NDraggable.$emit('row-dblclick', this);\n }\n\n },\n\n renderElement()\n {\n let classList = [\n 'n-draglist-item__element'\n ];\n\n if ( ! this.init ) {\n return (<div class={classList} />);\n }\n\n let props = {\n value: this.value,\n item: this.item,\n copy: this.copy,\n remove: this.remove,\n };\n\n let renderFunction = this.$slots.default;\n\n if ( this.NDraggable.renderNode ) {\n renderFunction = this.NDraggable.renderNode;\n }\n\n return (\n <div class={classList}>\n { renderFunction(props) }\n </div>\n );\n },\n\n renderSpacer()\n {\n let width = this.value.depth * \n this.NDraggable.itemOffset;\n\n if ( ! width ) {\n return null;\n }\n\n let style = {\n width: width + 'px'\n };\n\n return (\n <div class=\"n-draglist-item__spacer\" style={style}>\n { /* SPACER */ }\n </div>\n );\n },\n\n renderHandle()\n {\n if ( ! this.NDraggable.renderHandle ) {\n return null;\n }\n\n let props = {};\n\n if ( this.NDraggable.draggable && this.isDraggable() ) {\n props.draggable = true;\n }\n\n return (\n <div class=\"n-draglist-item__handle\" {...props}>\n <div class=\"n-draglist-item__ellipsis\">\n <i class={ nano.Icons.handle }></i>\n </div>\n </div>\n );\n },\n\n renderExpand()\n {\n if ( ! this.NDraggable.renderExpand ) {\n return null;\n }\n\n let props = {\n ['on' + Str.ucfirst(this.mousedown)]: this.expandItem\n };\n\n return (\n <div class=\"n-draglist-item__expand\" {...props}>\n <div class=\"n-draglist-item__angle\">\n <i class={ nano.Icons.angleRight }></i>\n </div>\n </div>\n );\n },\n\n renderSelect()\n {\n if ( ! this.NDraggable.renderSelect ) {\n return null;\n }\n\n let props = {\n ['on' + Str.ucfirst(this.mousedown)]: this.selectItem\n };\n\n return (\n <div class=\"n-draglist-item__select\" {...props}>\n <div class=\"n-draglist-item__checkbox\">\n <i class={ nano.Icons.checked }></i>\n </div>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-draglist-item'\n ];\n\n if ( this.hasChildren() ) {\n classList.push('n-children');\n }\n\n if ( this.isDisabled() ) {\n classList.push('n-disabled');\n }\n\n if ( this.isSelected() ) {\n classList.push('n-selected');\n }\n\n if ( this.isExpanded() ) {\n classList.push('n-expanded');\n }\n\n if ( this.isCurrent() ) {\n classList.push('n-current');\n }\n\n if ( this.isHighlight() ) {\n classList.push('n-highlight');\n }\n\n let props = {\n onClick: this.onClick,\n onDblclick: this.onDblclick,\n };\n\n if ( this.NDraggable.draggable && ! this.NDraggable.handle && this.isDraggable() ) {\n props.draggable = true;\n }\n\n props['data-unique'] = this.value[this.NDraggable.uniqueProp];\n\n return (\n <div class={classList} {...props}>\n { this.ctor('renderHandle')() }\n { this.ctor('renderSpacer')() }\n { this.ctor('renderExpand')() }\n { this.ctor('renderSelect')() }\n { this.ctor('renderElement')() }\n </div>\n );\n }\n\n}\n","import { UUID, Num, Arr, Obj, Dom, Any, Event, Locale } from \"@kizmann/pico-js\";\nimport NDraghandler from \"../draghandler/draghandler\";\n\nglobal.DEBUG_NDLIST = false;\n\nexport default {\n\n name: 'NDraggrid',\n\n model: {\n prop: 'items'\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n }\n },\n\n renderNode: {\n default()\n {\n return null;\n }\n },\n\n draggable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n current: {\n default()\n {\n return null;\n }\n },\n\n selected: {\n default()\n {\n return [];\n }\n },\n\n handle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n group: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n allowGroups: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n safezone: {\n default()\n {\n return (height) => -1;\n }\n },\n\n lazyload: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n itemHeight: {\n default()\n {\n return 200;\n },\n type: [Number]\n },\n\n itemWidth: {\n default()\n {\n return 150;\n },\n type: [Number]\n },\n\n threshold: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n useKeys: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n deathzone: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n scrollTopOnChange: {\n default()\n {\n return false;\n }\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n renderCurrent: {\n default()\n {\n return true;\n }\n },\n\n renderHandle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderSelect: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n transformDrop: {\n default()\n {\n return (node) => node;\n }\n },\n\n disableMove: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n insertNode: {\n default()\n {\n return true;\n }\n },\n\n removeNode: {\n default()\n {\n return true;\n }\n },\n\n allowSelect: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrag: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrop: {\n default()\n {\n return () => true;\n }\n },\n\n keyEvents: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n highlightTimeout: {\n default()\n {\n return 7000;\n },\n type: [Number]\n }\n\n },\n\n provide()\n {\n return {\n NDraggable: this\n };\n },\n\n data()\n {\n return {\n uid: UUID(),\n virtuals: [],\n visible: [],\n childNodes: {},\n highlight: [],\n firstSelected: null,\n tempCurrent: this.current,\n tempExpanded: this.expanded,\n tempSelected: this.selected\n };\n },\n\n beforeMount()\n {\n this.drag = new NDraghandler(this);\n },\n\n mounted()\n {\n let frame = this.$refs.virtualscroller.\n $refs.inner;\n\n this.drag.bindRoot(frame);\n\n this.$watch('tempSelected', this.watchSelected,\n { deep: true });\n\n this.refreshVirtuals();\n },\n\n beforeUnmount()\n {\n this.drag.unbindRoot();\n\n Dom.find(document).off('keydown', null, this.uid);\n },\n\n watch: {\n\n items()\n {\n if ( this.scrollTopOnChange ) {\n this.scrollTo();\n }\n\n this.refreshVirtuals();\n },\n\n virtuals()\n {\n this.filterVirtuals();\n },\n\n selected(value)\n {\n this.tempSelected = value;\n },\n\n current(value)\n {\n this.tempCurrent = value;\n }\n\n },\n\n methods: {\n\n watchSelected()\n {\n if ( ! this.tempSelected.length ) {\n return this.firstSelected = null;\n }\n\n this.firstSelected = Arr.find(this.virtuals, {\n [this.uniqueProp]: this.tempSelected[0]\n });\n },\n\n refreshVirtuals()\n {\n this.virtuals = this.drag.reduce(this.items);\n\n if ( global.DEBUG_NDLIST ) {\n console.log('Total virtual items mounted: ' + this.virtuals.length);\n }\n },\n\n filterVirtuals()\n {\n this.visible = Arr.filter(this.virtuals, (node) => {\n return node.depth === 0;\n });\n },\n\n getIndex(unique)\n {\n return Arr.findIndex(this.visible, {\n [this.uniqueProp]: unique\n });\n },\n\n getCurrentIndex()\n {\n if ( ! this.tempCurrent ) {\n return -1;\n }\n\n return Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n },\n\n scrollTo(x = 0, y = 0)\n {\n this.$refs.virtualscroller.scrollTo(x, y);\n },\n\n scrollToIndex(index)\n {\n this.$refs.virtualscroller.scrollIntoView(index);\n },\n\n isDraggable(node)\n {\n let canDrag = this.allowDrag;\n\n if ( ! Any.isFunction(canDrag) ) {\n canDrag = () => this.allowDrag;\n }\n\n return canDrag(node);\n },\n\n isHighlight(node)\n {\n return Arr.has(this.highlight, node.value[this.uniqueProp]);\n },\n\n highlightNode(value, key = null)\n {\n clearTimeout(this.refresh);\n\n // Clear highlight items\n this.highlight = [];\n\n Arr.recursive(this.items, this.childProp, (node, cascade) => {\n\n if ( Obj.get(node, key || this.uniqueProp) !== value ) {\n return;\n }\n\n Arr.each(cascade, (item) => {\n Arr.add(this.tempExpanded, item[this.uniqueProp]);\n });\n\n Arr.add(this.highlight, node[this.uniqueProp]);\n });\n\n if ( ! this.highlight.length ) {\n return;\n }\n\n this.$nextTick(this.scrollToHighlight);\n\n this.refresh = setTimeout(() =>\n this.highlight = [], this.highlightTimeout);\n\n this.filterVirtuals();\n },\n\n scrollToHighlight()\n {\n if ( ! this.highlight.length ) {\n return;\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: Arr.first(this.highlight)\n });\n\n this.$refs.virtualscroller.scrollIntoView(index);\n },\n\n isCurrent(node)\n {\n return this.renderCurrent && this.tempCurrent &&\n node.value[this.uniqueProp] === this.tempCurrent[this.uniqueProp] ;\n },\n\n setCurrent(node)\n {\n let isSameNode = this.tempCurrent &&\n this.tempCurrent[this.uniqueProp] === node.value[this.uniqueProp];\n\n if ( isSameNode ) {\n return;\n }\n\n this.$emit('update:current',\n this.tempCurrent = node.item);\n\n Event.fire('NDraggrid:syncCurrent', node.item, this.uid);\n },\n\n setRawCurrent(index)\n {\n let route = Obj.get(this.visible,\n [index, 'route']);\n\n if ( ! route ) {\n return this.setRawCurrent(0);\n }\n\n let item = Obj.get(this, route);\n\n this.$refs.virtualscroller\n .scrollIntoView(index);\n\n this.$emit('update:current',\n this.tempCurrent = item);\n\n Event.fire('NDraggrid:syncCurrent', item, this.uid);\n },\n\n setNextCurrent()\n {\n if ( ! this.visible.length ) {\n return;\n }\n\n let reset = 0;\n\n if ( ! this.tempCurrent ) {\n return this.setRawCurrent(reset);\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n\n if ( index !== -1 ) {\n index++;\n }\n\n if ( index >= this.visible.length ) {\n index = reset;\n }\n\n this.setRawCurrent(index);\n },\n\n setPrevCurrent()\n {\n if ( ! this.visible.length ) {\n return;\n }\n\n let reset = this.visible.length - 1;\n\n if ( ! this.tempCurrent ) {\n return this.setRawCurrent(reset);\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n\n if ( index !== -1 ) {\n index--;\n }\n\n if ( index < 0 ) {\n index = reset;\n }\n\n this.setRawCurrent(index);\n },\n\n syncCurrent()\n {\n return ['NDraggrid:syncCurrent', this.uid];\n },\n\n isDisabled(node)\n {\n let canSelect = this.allowSelect;\n\n if ( ! Any.isFunction(canSelect) ) {\n canSelect = () => this.allowSelect;\n }\n\n return ! canSelect(node) || (this.firstSelected &&\n node.value.depth !== this.firstSelected.depth);\n },\n\n isSelected(node)\n {\n return Arr.has(this.tempSelected, node.value[this.uniqueProp]);\n },\n\n isTotalSelected()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n return visible.length === this.tempSelected;\n },\n\n isInterSelected()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n return visible.length !== this.tempSelected &&\n this.tempSelected;\n },\n\n selectItem(node)\n {\n if ( this.isDisabled(node) ) {\n return;\n }\n\n Arr.toggle(this.tempSelected, node.value[this.uniqueProp]);\n\n this.$emit('update:selected', this.tempSelected);\n },\n\n selectAll()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n let indexies = Arr.each(visible, (item) => {\n return item[this.uniqueProp];\n });\n\n if ( indexies.length === this.tempSelected.length ) {\n return this.$emit('update:selected', this.tempSelected = []);\n }\n\n this.$emit('update:selected', this.tempSelected = indexies);\n },\n\n unselectAll()\n {\n if ( this.tempSelected.length ) {\n this.$emit('update:selected', this.tempSelected = []);\n }\n },\n\n bindKeydown()\n {\n if ( ! this.keyEvents ) {\n return;\n }\n\n Dom.find(document).on('keydown',\n this.onKeydown, this.uid)\n },\n\n unbindKeydown()\n {\n if ( ! this.keyEvents ) {\n return;\n }\n\n Dom.find(document).off('keydown',\n null, this.uid)\n },\n\n onKeydown(event, el)\n {\n if ( Dom.find(el).closest('input') ) {\n return;\n }\n\n if ( event.which === 38 ) {\n event.preventDefault();\n event.stopPropagation();\n // this.setPrevCurrent();\n }\n\n if ( event.which === 40 ) {\n event.preventDefault();\n event.stopPropagation();\n // this.setNextCurrent();\n }\n }\n\n },\n\n renderEmpty()\n {\n return (\n <NEmptyIcon disabled={! this.showEmptyIcon} class=\"n-draggrid__empty\">\n { this.$slots.empty && this.$slots.empty() || this.trans('No entries') }\n </NEmptyIcon>\n );\n },\n\n renderItem(props)\n {\n return (\n <NDraggridItem {...Obj.except(props, ['index'])}>\n { { default: this.$slots.default } }\n </NDraggridItem>\n );\n },\n\n render()\n {\n let classList = [\n 'n-draggrid',\n 'n-draggrid--' + this.size,\n 'n-draggrid--' + this.type\n ];\n\n if ( ! this.items.length ) {\n classList.push('n-empty');\n }\n\n let passed = [\n 'threshold', 'deathzone', 'itemHeight', 'itemWidth',\n 'overflowX', 'overflowY', 'offsetX', 'offsetY', 'useKeys'\n ];\n\n let props = Obj.only(this.$props, passed, {\n items: this.visible,\n onMouseenter: this.bindKeydown,\n onMouseleave: this.unbindKeydown\n });\n\n return (\n <NVirtualscroller ref=\"virtualscroller\" class={classList} {...props}>\n { { default: this.ctor('renderItem'), empty: this.ctor('renderEmpty') } }\n </NVirtualscroller>\n );\n }\n\n}\n","import { Str, Arr, Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDraggridItem',\n\n inject: {\n\n NDraggable: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return {\n NDraggableItem: this\n };\n },\n\n props: {\n\n value: {\n required: true\n }\n\n },\n\n computed: {\n\n uid()\n {\n return Obj.get(this.value, this.NDraggable.uniqueProp);\n },\n\n item()\n {\n return Obj.get(this.NDraggable, this.value.route);\n },\n\n touch() {\n return !! ('ontouchstart' in window ||\n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n init: ! this.NDraggable.lazyload\n };\n },\n\n mounted()\n {\n this.timer = setTimeout(() => {\n\n if ( this.NDraggable.draggable ) {\n this.timer = setTimeout(() => {\n this.NDraggable.drag.bindNode(this);\n }, 50);\n }\n\n this.init = true;\n }, 40);\n },\n\n beforeUnmount()\n {\n if ( ! this.init ) {\n clearTimeout(this.timer);\n }\n\n this.NDraggable.drag.unbindNode(this);\n },\n\n methods: {\n\n copy()\n {\n return this.NDraggable.drag.copyNode(this);\n },\n\n remove()\n {\n return this.NDraggable.drag.removeNode(this);\n },\n\n isDisabled()\n {\n return this.NDraggable.isDisabled(this);\n },\n\n isHighlight()\n {\n return this.NDraggable.isHighlight(this);\n },\n\n isCurrent()\n {\n return this.NDraggable.isCurrent(this);\n },\n\n isDraggable()\n {\n return this.NDraggable.isDraggable(this);\n },\n\n isSelected()\n {\n return this.NDraggable.isSelected(this);\n },\n\n selectItem()\n {\n this.NDraggable.selectItem(this);\n },\n\n onClick()\n {\n this.NDraggable.setCurrent(this);\n\n if ( Arr.has(global.keyMods, 91) ) {\n this.NDraggable.selectItem(this);\n }\n\n this.NDraggable.$emit('row-click', this);\n },\n\n onDblclick()\n {\n this.NDraggable.setCurrent(this);\n\n this.NDraggable.$emit('row-dblclick', this);\n }\n\n },\n\n renderElement()\n {\n let classList = [\n 'n-draglist-item__element'\n ];\n\n if ( ! this.init ) {\n return (<div class={classList} />);\n }\n\n let props = {\n value: this.value,\n item: this.item,\n copy: this.copy,\n remove: this.remove,\n };\n\n let renderFunction = this.$slots.default;\n\n if ( this.NDraggable.renderNode ) {\n renderFunction = this.NDraggable.renderNode;\n }\n\n return (\n <div class={classList}>\n {renderFunction(props)}\n </div>\n );\n },\n\n renderHandle()\n {\n if ( ! this.NDraggable.renderHandle ) {\n return null;\n }\n\n let props = {};\n\n if ( this.NDraggable.draggable && this.isDraggable() ) {\n props.draggable = true;\n }\n\n return (\n <div class=\"n-draggrid-item__handle\" {...props}>\n <div class=\"n-draggrid-item__ellipsis\">\n <i class={ nano.Icons.handle }></i>\n </div>\n </div>\n );\n },\n\n renderSelect()\n {\n if ( ! this.NDraggable.renderSelect ) {\n return null;\n }\n\n let props = {\n ['on' + Str.ucfirst(this.mousedown)]: this.selectItem\n };\n\n return (\n <div class=\"n-draggrid-item__select\" {...props}>\n <div class=\"n-draggrid-item__checkbox\">\n <i class={ nano.Icons.checked }></i>\n </div>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-draggrid-item'\n ];\n\n if ( this.isDisabled() ) {\n classList.push('n-disabled');\n }\n\n if ( this.isSelected() ) {\n classList.push('n-selected');\n }\n\n if ( this.isCurrent() ) {\n classList.push('n-current');\n }\n\n if ( this.isHighlight() ) {\n classList.push('n-highlight');\n }\n\n let props = {\n onClick: this.onClick,\n onDblclick: this.onDblclick,\n };\n\n if ( this.NDraggable.draggable && ! this.NDraggable.handle && this.isDraggable() ) {\n props.draggable = true;\n }\n\n props['data-unique'] = this.value[this.NDraggable.uniqueProp];\n\n return (\n <div class={classList} {...props}>\n { this.ctor('renderHandle')() }\n { this.ctor('renderSelect')() }\n { this.ctor('renderElement')() }\n </div>\n );\n }\n\n}\n","import { UUID, Num, Arr, Obj, Dom, Any, Event, Locale } from \"@kizmann/pico-js\";\nimport NDraghandler from \"../draghandler/draghandler\";\n\nglobal.DEBUG_NDLIST = false;\n\nexport default {\n\n name: 'NDropzone',\n\n model: {\n prop: 'item'\n },\n\n props: {\n\n item: {\n default()\n {\n return null;\n }\n },\n\n renderNode: {\n default()\n {\n return null;\n }\n },\n\n draggable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n group: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n allowGroups: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n transformDrop: {\n default()\n {\n return (node) => node;\n }\n },\n\n disableMove: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n insertNode: {\n default()\n {\n return true;\n }\n },\n\n removeNode: {\n default()\n {\n return true;\n }\n },\n\n allowDrop: {\n default()\n {\n return () => true;\n }\n },\n\n },\n\n provide()\n {\n return {\n NDropzone: this\n };\n },\n\n data()\n {\n return {\n uid: UUID(),\n };\n },\n\n beforeMount()\n {\n this.drag = new NDraghandler(this);\n },\n\n mounted()\n {\n this.drag.bindRoot(this.$el);\n },\n\n beforeUnmount()\n {\n this.drag.unbindRoot();\n },\n\n renderItem()\n {\n if ( Any.isEmpty(this.item) ) {\n return null;\n }\n\n return this.$slots.default && this.$slots.default(this.item)\n },\n\n renderEmpty()\n {\n if ( ! Any.isEmpty(this.item) ) {\n return null;\n }\n\n return (\n <NEmptyIcon disabled={! this.showEmptyIcon} class=\"n-dropzone__empty\">\n { this.$slots.empty && this.$slots.empty() || this.trans('No entry') }\n </NEmptyIcon>\n );\n },\n\n render()\n {\n let classList = [\n 'n-dropzone',\n 'n-dropzone--' + this.size,\n 'n-dropzone--' + this.type\n ];\n\n if ( Any.isEmpty(this.item) ) {\n classList.push('n-empty');\n }\n\n return (\n <div class={classList}>\n {[this.ctor('renderItem')(), this.ctor('renderEmpty')()]}\n </div>\n );\n }\n\n}\n","import { Obj, Arr, Any, Dom } from \"@kizmann/pico-js\";\n\nconst fileMap = {\n image: [\n 'jpg', 'jpeg', 'gif', 'svg', 'png'\n ],\n video: [\n 'mp4', 'webm', 'mov'\n ],\n font: [\n 'woff', 'ttf', 'otf'\n ],\n text: [\n 'csv', 'txt', 'html'\n ],\n application: [\n 'pdf', 'doc', 'xls'\n ]\n}\n\nexport default {\n\n name: 'NPreview',\n\n props: {\n\n file: {\n default()\n {\n return null;\n }\n },\n\n thumb: {\n default()\n {\n return null;\n }\n },\n\n fit: {\n default()\n {\n return 'cover';\n },\n type: [String]\n },\n\n preview: {\n default()\n {\n return true;\n },\n typre: [Boolean]\n },\n\n showSrc: {\n default()\n {\n return true;\n },\n typre: [Boolean]\n },\n\n map: {\n default()\n {\n return fileMap;\n },\n type: [Object]\n }\n\n },\n\n computed: {\n\n tempFile()\n {\n return this.file || this.thumb;\n },\n\n tempThumb()\n {\n return this.thumb || this.file;\n },\n\n fileMime()\n {\n return this.getFileMime();\n },\n\n thumbMime()\n {\n return this.getThumbMime();\n },\n\n },\n\n data()\n {\n return {\n lightbox: false, load: false\n };\n },\n\n methods: {\n\n getFileMime(fallback = null)\n {\n let file = Obj.get(this.tempFile, 'name',\n this.tempFile);\n\n if ( Any.isEmpty(file) ) {\n return fallback;\n }\n\n let extension = file.replace(/^.*?\\.([^.?]+)(\\?.*?)?$/,\n '$1');\n\n Obj.each(this.map, (exts, key) => {\n if ( Arr.has(exts, extension) ) fallback = key;\n });\n\n if ( global.resolveVimeo(file) ) {\n fallback = 'video';\n }\n\n if ( global.resolveYoutube(file) ) {\n fallback = 'video';\n }\n\n return fallback;\n },\n\n getThumbMime(fallback = null)\n {\n let file = Obj.get(this.tempThumb, 'name',\n this.tempThumb);\n\n if ( Any.isEmpty(file) ) {\n return fallback;\n }\n\n let extension = file.replace(/^.*?\\.([^.?]+)(\\?.*?)?$/,\n '$1');\n\n Obj.each(this.map, (exts, key) => {\n if ( Arr.has(exts, extension) ) fallback = key;\n });\n\n return fallback;\n },\n\n showLightbox()\n {\n this.lightbox = true;\n },\n\n },\n\n renderPreview()\n {\n if ( ! this.preview ) {\n return this.ctor('renderFull')();\n }\n\n if ( this.thumbMime === 'image' ) {\n return (<NPreviewImage src={this.tempThumb} />);\n }\n\n let props = {\n type: this.thumbMime,\n showSrc: false,\n }\n\n return (<NPreviewPlain src={this.tempThumb} {...props} />);\n },\n\n renderFull()\n {\n let isObject = Any.isObject(this.tempFile);\n\n if ( this.fileMime === 'image' ) {\n return (<NPreviewImage src={this.tempFile} />);\n }\n\n if ( this.fileMime === 'video' && ! isObject ) {\n return (<NPreviewVideo src={this.tempFile} />);\n }\n\n let props = {\n type: this.thumbMime,\n showSrc: this.showSrc,\n }\n\n return (<NPreviewPlain src={this.tempFile} {...props} />);\n },\n\n renderLightbox()\n {\n if ( ! this.lightbox || ! this.preview ) {\n return null;\n }\n\n let slots = {\n raw: this.ctor('renderFull')\n }\n\n let props = {\n type: 'preview',\n width: '80%',\n height: '90%',\n }\n\n return (<NModal vModel={this.lightbox} {...props} v-slots={slots} />);\n },\n\n render()\n {\n let classList = [\n 'n-preview',\n 'n-preview--' + this.fit\n ];\n\n if ( this.preview ) {\n classList.push('n-clickable');\n }\n\n if ( this.fileMime ) {\n classList.push('n-mime-' + this.fileMime);\n }\n\n let props = {};\n\n if ( this.preview ) {\n props.onClick = this.showLightbox;\n }\n\n return (\n <div class={classList} {...props}>\n { [this.ctor('renderPreview')(), this.ctor('renderLightbox')()] }\n </div>\n );\n }\n\n}","import { Obj, Arr, Str, Any, Dom } from \"@kizmann/pico-js\";\n\nglobal.resolveYoutube = function(url, fallback = null) {\n\n if ( ! Any.isString(url) ) {\n return fallback;\n }\n\n let host = url.match(/^https?:\\/\\/(www\\.)?(youtube\\.com|youtu\\.be)/);\n\n if ( ! host ) {\n return fallback;\n }\n\n let id = url.match(/(\\?v=.*?)(?=&|$)/);\n\n if ( id && id.length === 2 ) {\n return id[0].replace(/^\\?v=/, '');\n }\n\n let path = url.match(/(\\.be\\/.*?)(?=\\?|$)/);\n\n if ( path && path.length === 2 ) {\n return path[0].replace(/^\\.be\\//, '');\n }\n\n let frame = url.match(/(\\/embed\\/)(.*?$)/);\n\n if ( frame && frame.length === 3 ) {\n return frame[0].replace(/^\\/embed\\//, '');\n }\n\n return fallback;\n}\n\nglobal.resolveVimeo = function(url, fallback = null) {\n\n if ( ! Any.isString(url) ) {\n return fallback;\n }\n\n let host = url.match(/^https?:\\/\\/(www\\.|player\\.)?vimeo\\.com/);\n\n if ( ! host ) {\n return fallback;\n }\n\n let path = url.match(/(\\/[0-9]+)(&|$)/);\n\n if ( path && path.length === 3 ) {\n return path[0].replace(/(^\\/|&$)/, '');\n }\n\n return fallback;\n}\n\nexport default {\n\n name: 'NPreviewVideo',\n\n props: {\n\n src: {\n default()\n {\n return null;\n }\n },\n\n },\n\n data()\n {\n return {\n provider: 'plain', unique: null, tempSrc: null\n };\n },\n\n mounted()\n {\n this.resolveType();\n },\n\n watch: {\n\n 'src': function () {\n this.resolveType();\n }\n\n },\n\n methods: {\n\n resolveType()\n {\n this.tempSrc = null;\n\n if ( this.resolveYoutube() ) {\n return;\n }\n\n if ( this.resolveVimeo() ) {\n return;\n }\n\n if ( Any.isObject(this.src) ) {\n this.resolveData();\n }\n\n this.provider = 'plain';\n },\n\n resolveData()\n {\n console.log('Coming at some point (blob stream)....');\n },\n\n resolveYoutube()\n {\n let youtube = global.resolveYoutube(this.src);\n\n if ( ! youtube ) {\n return false;\n }\n\n this.provider = 'youtube';\n\n this.$emit('resolve:youtube', this.unique = youtube);\n\n return true;\n },\n\n resolveVimeo()\n {\n let vimeo = global.resolveVimeo(this.src);\n\n if ( ! vimeo ) {\n return false;\n }\n\n this.provider = 'vimeo';\n\n this.$emit('resolve:vimeo', this.unique = vimeo);\n\n return true;\n }\n\n },\n\n renderYoutube()\n {\n let props = {\n src: `https://www.youtube.com/embed/${this.unique}`\n };\n\n return (\n <iframe {...props}></iframe>\n );\n },\n\n renderVimeo()\n {\n let props = {\n src: `https://player.vimeo.com/video/${this.unique}`\n };\n\n return (\n <iframe {...props}></iframe>\n );\n },\n\n renderPlain()\n {\n let src = Obj.get(this.src, 'name', this.src);\n\n let extension = src.replace(/^.*?\\.([^.?]+)(\\?.*?)?$/,\n '$1');\n\n return (\n <video width=\"320\" height=\"240\" controls>\n <source src={this.tempSrc || this.src} type={`video/${extension}`} />\n </video>\n );\n },\n\n render()\n {\n let classList = [\n 'n-preview-video'\n ];\n\n return (\n <div class={classList}>\n { this.ctor('render' + Str.ucfirst(this.provider))() }\n </div>\n );\n }\n\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n cmer(classList)\n {\n let attrsList = {};\n\n if ( Any.isString(classList) ) {\n attrsList[classList] = true;\n }\n\n if ( Any.isArray(classList) ) {\n Arr.each(classList, (value) => attrsList[value] = true);\n }\n\n if ( Any.isPlain(classList) ) {\n Obj.assign(attrsList, classList);\n }\n\n if ( Any.isString(this.$attrs.class) ) {\n attrsList[this.$attrs.class] = true;\n }\n\n if ( Any.isArray(this.$attrs.class) ) {\n Arr.each(this.$attrs.class, (value) => attrsList[value] = true);\n }\n\n if ( Any.isPlain(this.$attrs.class) ) {\n Obj.assign(attrsList, this.$attrs.class);\n }\n\n return attrsList;\n }\n\n}\n","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\nimport { Comment } from 'vue';\n\nexport default {\n\n cslo(slot = 'default', props = {})\n {\n if ( ! this.$slots[slot] ) {\n return false;\n }\n\n return this.$slots[slot](props).findIndex((o) => {\n return o.type !== Comment;\n }) !== -1;\n }\n\n}\n","import { Arr, Obj, Dom, Locale } from \"@kizmann/pico-js\";\n\nimport CtorMixin from \"./mixins/src/ctor\";\nimport CmerMixin from \"./mixins/src/cmer\";\nimport CsloMixin from \"./mixins/src/cslo\";\n\nexport const Icons = {\n handle: 'fa fa-ellipsis-v',\n checked: 'fa fa-check',\n circle: 'fa fa-circle',\n intermediate: 'fa fa-minus',\n clock: 'fa fa-clock',\n calendar: 'fa fa-calendar',\n times: 'fa fa-times',\n primary: 'fa fa-info-circle',\n success: 'fa fa-check-circle',\n warning: 'fa fa-exclamation-circle',\n danger: 'fa fa-times-circle',\n info: 'fa fa-info-circle',\n angleUp: 'fa fa-angle-up',\n angleRight: 'fa fa-angle-right',\n angleDown: 'fa fa-angle-down',\n angleLeft: 'fa fa-angle-left',\n angleDoubleLeft: 'fa fa-angle-double-left',\n angleDoubleRight: 'fa fa-angle-double-right'\n};\n\nexport const Settings = {\n iconPosition: 'before',\n notifySize: 'md',\n notifyPosition: 'bottom-start'\n};\n\nexport function Install(App, Icons = {}, Styles = {})\n{\n /**\n * @const global.pi\n */\n\n if ( typeof global.pi === 'undefined' ) {\n return console.error('pico-js is not available.');\n }\n\n Obj.each(global.pi, (value, key) => {\n App.config.globalProperties[key] = value;\n });\n\n App.config.globalProperties.ctor = CtorMixin.ctor;\n App.config.globalProperties.cmer = CmerMixin.cmer;\n App.config.globalProperties.cslo = CsloMixin.cslo;\n\n App.config.globalProperties.trans = Locale.trans;\n App.config.globalProperties.choice = Locale.choice;\n\n global.nano.Icons = Obj.assign(Icons, global.nano.Icons);\n global.nano.Settings = Obj.assign(Settings, global.nano.Settings);\n\n require('./alert/index').default(App);\n require('./notification/index').default(App);\n require('./empty/index').default(App);\n require('./config/index').default(App); //!complex 17.1\n require('./scrollbar/index').default(App);\n require('./virtualscroller/index').default(App);\n require('./draggable/index').default(App);\n require('./loader/index').default(App);\n require('./resizer/index').default(App);\n require('./popover/index').default(App);\n require('./modal/index').default(App);\n require('./button/index').default(App);\n require('./input/index').default(App);\n require('./input-number/index').default(App);\n require('./textarea/index').default(App);\n require('./select/index').default(App);\n require('./checkbox/index').default(App);\n require('./radio/index').default(App);\n require('./slider/index').default(App);\n require('./switch/index').default(App);\n require('./confirm/index').default(App);\n require('./cascader/index').default(App);\n require('./datepicker/index').default(App);\n require('./timepicker/index').default(App);\n require('./datetimepicker/index').default(App);\n require('./durationpicker/index').default(App);\n require('./transfer/index').default(App);\n require('./form/index').default(App); // check\n require('./tabs/index').default(App);\n require('./tags/index').default(App);\n require('./collapse/index').default(App);\n require('./table/index').default(App); // 18.1 options\n require('./paginator/index').default(App);\n require('./info/index').default(App); //!complex 16.1\n require('./preview/index').default(App);\n require('./map/index').default(App);\n require('./file/index').default(App);\n require('./rating/index').default(App);\n\n // require('./chart/index'); // Ignore\n // require('./wysiwyg/index'); // Ignore\n}\n\nexport const Nano = {\n Icons: Icons, Settings: Settings, Install: Install\n};\n\nglobal.keyMods = [];\n\nDom.find(document).on('keydown', (event) => {\n Arr.add(global.keyMods, event.which);\n});\n\nDom.find(document).on('keyup', (event) => {\n Arr.remove(global.keyMods, event.which);\n});\n\nDom.find(document).on('dragstart', (event) => {\n Arr.add(global.keyMods, event.which);\n});\n\nDom.find(document).on('dragend', (event) => {\n global.keyMods = [];\n});\n\nif ( typeof global.nano === 'undefined' ) {\n global.nano = Nano;\n}\n\nexport default Nano;\n","import Virtualscroller from './src/virtualscroller/virtualscroller.beta';\n\nexport default function (App) {\n App.component(Virtualscroller.name, Virtualscroller);\n}","import Draglist from './src/draglist/draglist';\nimport DraglistItem from './src/draglist-item/draglist-item';\nimport Draggrid from './src/draggrid/draggrid';\nimport DraggridItem from './src/draggrid-item/draggrid-item';\nimport Dropzone from './src/dropzone/dropzone';\n\nexport default function (App) {\n App.component(Draglist.name, Draglist);\n App.component(DraglistItem.name, DraglistItem);\n App.component(Draggrid.name, Draggrid);\n App.component(DraggridItem.name, DraggridItem);\n App.component(Dropzone.name, Dropzone);\n}","import { Any, Arr, Obj, Dom, Event, UUID } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NTable',\n\n provide()\n {\n return {\n NTable: this\n };\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n draggable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n visible: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n current: {\n default()\n {\n return null;\n }\n },\n\n selected: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n expanded: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n filter: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n sortProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n sortDir: {\n default()\n {\n return 'desc';\n },\n type: [String]\n },\n\n closeFilterOnEnter: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n group: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n allowGroups: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n handle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n safezone: {\n default()\n {\n return (height) => height * 0.51;\n }\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n itemHeight: {\n default()\n {\n return 38;\n },\n type: [Number]\n },\n\n itemOffset: {\n default()\n {\n return 30;\n },\n type: [Number]\n },\n\n scrollTopOnChange: {\n default()\n {\n return false;\n }\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n renderSelect: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n renderHandle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderExpand: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderCurrent: {\n default()\n {\n return true;\n }\n },\n\n transformDrop: {\n default()\n {\n return (node) => node;\n }\n },\n\n disableMove: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n insertNode: {\n default()\n {\n return () => true;\n }\n },\n\n removeNode: {\n default()\n {\n return () => true;\n }\n },\n\n allowSelect: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrag: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrop: {\n default()\n {\n return () => true;\n }\n },\n\n threshold: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n useKeys: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n keyEvents: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n highlightTimeout: {\n default()\n {\n return 7000;\n },\n type: [Number]\n },\n\n },\n\n computed: {\n\n checked()\n {\n return !!this.tempSelected.length &&\n this.tempSelected.length === this.items.length;\n },\n\n intermediate()\n {\n return !!this.tempSelected.length &&\n this.tempSelected.length !== this.items.length\n }\n\n },\n\n data()\n {\n return {\n uid: UUID(),\n elements: [],\n tempVisible: this.visible,\n tempVisibleProps: [],\n tempSelected: this.selected,\n tempSortProp: this.sortProp,\n tempSortDir: this.sortDir,\n tempFilter: this.filter,\n tempFilterProps: [],\n }\n },\n\n mounted()\n {\n this.$watch('tempVisible',\n this.makeVisibleProps, { deep: true });\n\n if ( !this.tempVisible.length ) {\n Arr.each(this.elements, this.detectVisible);\n }\n },\n\n watch: {\n\n selected(value)\n {\n this.tempSelected = value;\n },\n\n },\n\n methods: {\n\n addColumn(column)\n {\n Arr.add(this.elements, column,\n { uid: column.uid });\n },\n\n removeColumn(column)\n {\n Arr.remove(this.elements,\n { uid: column.uid });\n },\n\n getColumnIndex(column)\n {\n if ( !Any.isString(column) ) {\n column = column['prop'];\n }\n\n return Arr.findIndex(this.tempVisibleProps,\n column);\n },\n\n getColumnVisiblity(column)\n {\n if ( !Any.isString(column) ) {\n column = column.prop;\n }\n\n return Arr.has(this.tempVisible, column);\n },\n\n getColumnSorted(column)\n {\n let prop = column;\n\n if ( !Any.isString(prop) ) {\n prop = column.sortProp;\n }\n\n if ( Any.isEmpty(prop) ) {\n prop = column.prop;\n }\n\n if ( this.tempSortProp !== prop ) {\n return null;\n }\n\n return this.tempSortDir;\n },\n\n getColumnFilter(column)\n {\n let prop = column;\n\n if ( !Any.isString(prop) ) {\n prop = column.filterProp;\n }\n\n if ( Any.isEmpty(prop) ) {\n prop = column.prop;\n }\n\n return Arr.find(this.tempFilter, {\n property: prop\n });\n },\n\n getColumnFiltered(column)\n {\n let prop = column;\n\n if ( !Any.isString(prop) ) {\n prop = column.filterProp;\n }\n\n if ( Any.isEmpty(prop) ) {\n prop = column.prop;\n }\n\n return Arr.has(this.tempFilterProps, prop);\n },\n\n detectVisible(column)\n {\n if ( column.detectVisibity() ) {\n Arr.add(this.tempVisible, column.prop);\n }\n },\n\n makeVisibleProps()\n {\n this.tempVisibleProps = Arr.intersect(\n Arr.extract(this.elements, 'prop'), this.tempVisible);\n\n this.$nextTick(this.$refs.scrollbar.onResize);\n },\n\n sortByColumn(column)\n {\n let prop = column;\n\n if ( !Any.isString(prop) ) {\n prop = column.sortProp;\n }\n\n if ( Any.isEmpty(prop) ) {\n prop = column.prop;\n }\n\n\n let dir = this.tempSortDir;\n\n if ( prop === this.tempSortProp && this.tempSortDir === 'desc' ) {\n dir = 'asc';\n }\n\n if ( prop === this.tempSortProp && this.tempSortDir === 'asc' ) {\n dir = 'desc';\n }\n\n if ( this.tempSortDir !== dir ) {\n this.$emit('update:sortDir', this.tempSortDir = dir);\n }\n\n if ( this.tempSortProp !== prop ) {\n this.$emit('update:sortProp', this.tempSortProp = prop);\n }\n\n this.$emit('sort', this.tempSortProp, this.tempSortDir);\n },\n\n replaceFilter(filter, search)\n {\n Arr.replace(this.tempFilter, filter, search);\n\n let filters = Arr.filter(this.tempFilter, (filter) => {\n return Arr.has(this.tempFilterProps, filter.property);\n });\n\n this.$emit('update:filter', filters);\n\n this.$emit('filter', filters, this.tempFilterProps);\n },\n\n resetFilter()\n {\n this.tempFilter = this.tempFilterProps = [];\n\n Event.fire('NTable:reset', this.uid);\n\n this.$emit('update:filter', this.tempFilter);\n\n this.$emit('filter', this.tempFilter, this.tempFilterProps);\n },\n\n selectAll()\n {\n this.$refs.draggable.selectAll();\n },\n\n highlightNode(value, key = null)\n {\n this.$refs.draggable.highlightNode(value, key);\n },\n\n syncCurrent()\n {\n return this.$refs.draggable.syncCurrent();\n },\n\n refreshCurrent()\n {\n this.$refs.draggable.refreshCurrent();\n },\n\n },\n\n renderHandle()\n {\n if ( !this.renderHandle ) {\n return null;\n }\n\n return (\n <div class=\"n-draglist-item__handle\">\n { /* Only used in row */}\n </div>\n )\n },\n\n renderExpand()\n {\n if ( !this.renderExpand ) {\n return null;\n }\n\n return (\n <div class=\"n-draglist-item__expand\">\n { /* Only used in row */}\n </div>\n )\n },\n\n renderSelect()\n {\n if ( !this.renderSelect ) {\n return null;\n }\n\n let props = {\n modelValue: this.checked,\n intermediate: this.intermediate,\n disabled: !this.items.length,\n onClick: this.selectAll\n };\n\n return (\n <div class=\"n-draglist-item__select\">\n <NCheckbox {...props}></NCheckbox>\n </div>\n );\n },\n\n renderBody(props)\n {\n let columns = Obj.each(this.elements, (column) => {\n return column.ctor('renderBody')(props);\n });\n\n return Obj.values(columns);\n },\n\n renderContext()\n {\n let columns = Obj.each(this.elements, (column) => {\n return (\n <NCheckbox class=\"n-table__checkbox\" value={column.prop}>\n {column.label}\n </NCheckbox>\n );\n });\n\n return (\n <NPopover trigger=\"context\" width={220}>\n <NCheckboxGroup vModel={this.tempVisible} align=\"vertical\">\n {Obj.values(columns)}\n </NCheckboxGroup>\n </NPopover>\n );\n },\n\n renderHead()\n {\n let defaultRender = [\n this.ctor('renderHandle')(),\n this.ctor('renderExpand')(),\n this.ctor('renderSelect')(),\n this.ctor('renderContext')()\n ];\n\n let columns = Obj.each(this.elements, (column) => {\n return column.ctor('renderHead')();\n });\n\n return (\n <div class=\"n-table__header\">\n {defaultRender} {Obj.values(columns)}\n </div>\n );\n },\n\n render()\n {\n let except = [\n 'visible', 'filter', 'sortProp',\n 'sortDir', 'closeFilterOnEnter'\n ];\n\n let props = Obj.except(this.$props, except, {\n items: this.items,\n selected: this.tempSelected,\n overflowX: false,\n useKeys: this.useKeys,\n // renderNode: this.ctor('renderBody')\n });\n\n props['onRowClick'] = (...args) => {\n this.$emit('row-click', ...args);\n }\n\n props['onRowDblclick'] = (...args) => {\n this.$emit('row-dblclick', ...args);\n }\n\n props['onUpdate:items'] = (value) => {\n this.$emit('update:items', value);\n }\n\n props['onUpdate:current'] = (value) => {\n this.$emit('update:current', value);\n }\n\n props['onUpdate:expanded'] = (value) => {\n this.$emit('update:expanded', value);\n }\n\n props['onUpdate:selected'] = (value) => {\n this.$emit('update:selected', this.tempSelected = value);\n }\n\n let draggableHtml = (\n <div class=\"n-table__body\">\n <NDraglist ref=\"draggable\" {...props} offsetX={25}>\n {{ default: this.ctor('renderBody') }}\n </NDraglist>\n </div>\n );\n\n return (\n <div class=\"n-table\">\n <NScrollbar ref=\"scrollbar\" class=\"n-table__wrap\" fixture={true} overflowY={false}>\n <div class=\"n-table__inner\">\n {[this.ctor('renderHead')(), draggableHtml]}\n </div>\n </NScrollbar>\n {this.$slots.default && this.$slots.default()}\n </div>\n );\n },\n\n}","import { Any, Arr, Obj, Str, Dom, UUID, Num, Locale } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NTableColumn',\n\n inject: {\n\n NTable: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n prop: {\n default()\n {\n return UUID();\n },\n type: [String]\n },\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n tooltip: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'string';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'left';\n },\n type: [String]\n },\n\n sort: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n filter: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n visible: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean, Function]\n },\n\n breakpoint: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n previewProp: {\n default()\n {\n return 'preview';\n },\n type: [String]\n },\n\n matrix: {\n default()\n {\n return - 1;\n },\n type: [Number, String]\n },\n\n matrixProp: {\n default()\n {\n return 'matrix';\n },\n type: [String]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Object, Array, Function]\n },\n\n optionsValue: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n optionsLabel: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n sortProp: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n filterProp: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n fluid: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n fixedWidth: {\n default()\n {\n return 0;\n }\n },\n\n width: {\n default()\n {\n return 0;\n }\n },\n\n minWidth: {\n default()\n {\n return 120;\n }\n },\n\n maxWidth: {\n default()\n {\n return 0;\n }\n },\n\n emptyText: {\n default()\n {\n return '-';\n },\n type: [String]\n },\n\n undefinedText: {\n default()\n {\n return Locale.trans('-');\n },\n type: [String]\n },\n\n trueText: {\n default()\n {\n return Locale.trans('Yes');\n },\n type: [String]\n },\n\n falseText: {\n default()\n {\n return Locale.trans('No');\n },\n type: [String]\n },\n\n datetimeFormat: {\n default()\n {\n return Locale.trans('YYYY-MM-DD HH:mm');\n },\n type: [String]\n },\n\n allowUncheck: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n },\n\n computed: {\n\n matrixValues()\n {\n if ( this.type !== 'matrix' ) {\n return;\n }\n\n let values = {};\n\n if ( Any.isEmpty(this.modelValue) ) {\n return values;\n }\n\n Arr.each(this.modelValue, (item) => {\n Obj.set(values, item[this.NTable.uniqueProp],\n Num.matrix(item[this.matrixProp]));\n });\n\n return values;\n }\n\n },\n\n provide()\n {\n return {\n NTableColumn: this\n };\n },\n\n data()\n {\n return {\n uid: UUID(), tempWidth: 0\n };\n },\n\n methods: {\n\n detectVisibity()\n {\n let visible = this.visible;\n\n if ( this.breakpoint ) {\n visible &= Dom.find(this.NTable.$el).width() > this.breakpoint;\n }\n\n return visible;\n },\n\n sortByColumn(event)\n {\n if ( !Arr.has([0, 1], event.which) ) {\n return;\n }\n\n if ( !Dom.find(event.target).closest('.n-table-column__filter') ) {\n this.NTable.sortByColumn(this);\n }\n },\n\n },\n\n beforeMount()\n {\n this.changedStates = {};\n this.NTable.addColumn(this);\n },\n\n beforeUnmount()\n {\n this.NTable.removeColumn(this);\n },\n\n renderHead()\n {\n if ( !this.NTable.getColumnVisiblity(this) ) {\n return null;\n }\n\n let classList = [\n 'n-table-column',\n 'n-table-column--' + this.align,\n 'n-table-column--' + this.type,\n ];\n\n let sortDirection = this.NTable.getColumnSorted(this);\n\n if ( sortDirection ) {\n classList.push('n-sorted', 'n-' + sortDirection);\n }\n\n if ( this.fluid || !this.width ) {\n classList.push('n-fluid');\n }\n\n if ( this.fixedWidth ) {\n classList.push('n-fixed');\n }\n\n if ( this.NTable.getColumnFiltered(this) ) {\n classList.push('n-filtered');\n }\n\n let style = {};\n\n if ( this.fixedWidth ) {\n style.width = this.fixedWidth + 'px';\n }\n\n if ( this.width ) {\n style.flexBasis = this.width + 'px';\n }\n\n let props = {\n modelValue: this.tempWidth,\n width: this.width,\n minWidth: this.minWidth,\n maxWidth: this.maxWidth,\n disabled: !!this.fixedWidth,\n group: [this.NTable.uid],\n };\n\n props['onUpdate:modelValue'] = (value) => {\n this.tempWidth = value;\n }\n\n if ( this.sort ) {\n props.onMousedown = this.sortByColumn;\n }\n\n return (\n <NResizer ref=\"column\" class={classList} style={style} {...props}>\n {this.ctor('renderHeadSort')()}\n {this.ctor('renderHeadLabel')()}\n {this.ctor('renderHeadFilter')()}\n </NResizer>\n );\n },\n\n renderHeadLabel()\n {\n let classList = [\n 'n-table-column__label'\n ];\n\n let labelHtml = (\n <div class={classList}>\n <span>{this.label}</span>\n </div>\n );\n\n if ( Any.isEmpty(this.tooltip) ) {\n return labelHtml;\n }\n\n let tooltipHtml = (\n <NPopover type=\"tooltip\">{this.tooltip}</NPopover>\n );\n\n return [labelHtml, tooltipHtml];\n },\n\n renderHeadSort()\n {\n if ( !this.sort ) {\n return null;\n }\n\n return (\n <div class=\"n-table-column__sort\">\n <i>{ /* Sorting angles */}</i>\n </div>\n )\n },\n\n renderHeadFilter()\n {\n if ( !this.filter ) {\n return null;\n }\n\n let angleHtml = (\n <div class=\"n-table-column__filter\">\n <i class={nano.Icons.angleDown}></i>\n </div>\n );\n\n let component = resolveComponent('NTableFilter' +\n Str.ucfirst(this.type));\n\n return [\n angleHtml, h(component, { column: this })\n ];\n },\n\n renderBody(props)\n {\n if ( !this.NTable.getColumnVisiblity(this) ) {\n return null;\n }\n\n let uid = props.value[this.NTable.uniqueProp]\n + this.uid;\n\n let classList = [\n 'n-table-cell',\n 'n-table-cell--' + this.align,\n 'n-table-cell--' + this.type,\n ];\n\n if ( this.fluid ) {\n classList.push('n-fluid');\n }\n\n if ( this.tempWidth ) {\n classList.push('n-fixed');\n }\n\n let index = this.NTable.getColumnIndex(this);\n\n let offset = 0;\n\n if ( index === 0 ) {\n offset = props.value.depth * this.NTable.itemOffset;\n }\n\n let style = {\n width: (this.tempWidth - offset) + 'px'\n };\n\n if ( this.minWidth ) {\n style.minWidth = (this.minWidth - offset) + 'px';\n }\n\n if ( this.maxWidth ) {\n style.maxWidth = (this.maxWidth - offset) + 'px';\n }\n\n let passed = Obj.except(this.$attrs, [], {\n ...props, uid: uid, class: classList, style: style, column: this\n });\n\n let component = resolveComponent('NTableCell' +\n Str.ucfirst(this.type));\n\n return h(component, passed);\n },\n\n render()\n {\n return null;\n }\n\n}","import { Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n inject: {\n\n NTable: {\n default: undefined\n },\n\n NDraggableItem: {\n default: undefined\n }\n\n },\n\n props: {\n\n uid: {\n required: true\n },\n\n column: {\n required: true\n },\n\n item: {\n required: true\n },\n\n value: {\n required: true\n },\n\n copy: {\n required: true\n },\n\n remove: {\n required: true\n },\n\n\n },\n\n computed: {\n\n input()\n {\n return Obj.get(this.item, this.column.prop);\n }\n\n },\n\n data()\n {\n return { init: false };\n },\n\n mounted()\n {\n this.timer = setTimeout(() => this.init = true, 20);\n },\n\n beforeUnmount()\n {\n clearTimeout(this.timer);\n },\n\n methods: {\n\n setFirstState(state)\n {\n Obj.set(this.column.changedStates,\n this.uid, this.firstState = state);\n }\n\n },\n\n render()\n {\n if ( this.column.$slots.default ) {\n return this.column.$slots.default(this);\n }\n \n return (\n <div>{ this.input }</div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellString',\n\n extends: TableCell,\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n return (\n <div>\n <span>{ Any.convertString(this.input, this.column.emptyText) }</span>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellBoolean',\n\n extends: TableCell,\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div> \n );\n }\n\n return (\n <div>\n <span>{ Any.convertBoolean(this.input, this.column.trueText, this.column.falseText) }</span>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellDatetime',\n\n extends: TableCell,\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div> \n );\n }\n\n return (\n <div>\n <span>{ Any.convertDatetime(this.input, this.column.datetimeFormat, this.column.emptyText) }</span>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellOption',\n\n extends: TableCell,\n\n renderOption(value)\n {\n let options = this.column.options;\n\n if ( Any.isFunction(options) ) {\n options = this.column.options(this);\n }\n\n options = Arr.each(options, (value, index) => {\n return { $value: value, $index: index };\n });\n\n let prop = this.column.optionsValue;\n\n let option = Arr.find(options, (item) => {\n return Obj.get(item, prop) == value;\n });\n\n if ( ! option ) {\n return [this.column.emptyText];\n }\n\n return Obj.get(option, this.column.optionsLabel,\n this.column.undefinedText);\n },\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div> \n );\n }\n\n let input = ! Any.isObject(this.input) ?\n [this.input] : this.input;\n\n return (\n <div>\n <span>{ Arr.each(input, this.ctor('renderOption')) }</span>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellImage',\n\n extends: TableCell,\n\n computed: {\n\n preview()\n {\n return Obj.get(this.item, this.column.previewProp);\n }\n\n },\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div> \n );\n }\n\n let classList = [\n 'n-table-cell',\n 'n-table-cell--' + this.column.type\n ];\n\n let props = {\n fit: 'contain',\n }\n\n return (\n <div class={classList}>\n <NPreview file={this.preview || this.input} thumb={this.input} {...props} />\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Num, Any, Obj, Arr, UUID } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellMatrix',\n\n extends: TableCell,\n\n beforeMount()\n {\n this.firstState = Obj.get(this.column.changedStates,\n this.uid);\n },\n\n methods: {\n\n toggleMatrix()\n {\n if ( this.column.matrix === -1 ) {\n return this.toggleSelect();\n }\n\n let itemList = this.column.modelValue;\n\n if ( itemList === null ) {\n itemList = [];\n }\n\n let item = Arr.find(itemList, {\n [this.NTable.uniqueProp]: this.value[this.NTable.uniqueProp]\n });\n\n if ( ! item ) {\n item = Obj.assign({}, this.item, { [this.column.matrixProp]: 0 });\n }\n\n let currentMatrix = Num.int(item[this.column.matrixProp]);\n\n let matrix = Arr.toggle(Num.matrix(currentMatrix),\n Num.int(this.column.matrix));\n\n item[this.column.matrixProp] = Num.combine(matrix);\n\n Arr.replace(itemList, item, {\n [this.NTable.uniqueProp]: item[this.NTable.uniqueProp]\n });\n\n this.column.$emit('update:modelValue', itemList);\n },\n\n toggleSelect()\n {\n let itemList = this.column.modelValue;\n\n if ( itemList === null ) {\n itemList = [];\n }\n\n let fallback = Obj.assign({}, this.item, {\n [this.column.matrixProp]: this.column.matrix\n });\n\n let finder = {\n [this.NTable.uniqueProp]: this.value[this.NTable.uniqueProp],\n };\n\n let item = Arr.find(itemList, finder);\n\n if ( ! item ) {\n Arr.add(itemList, fallback);\n } else {\n Arr.remove(itemList, finder);\n }\n\n this.column.$emit('update:modelValue', itemList);\n },\n\n isChecked()\n {\n let matrix = Obj.get(this.column.matrixValues,\n this.item[this.NTable.uniqueProp]);\n\n if ( ! matrix ) {\n return false;\n }\n\n let value = Num.int(this.column.matrix);\n\n if ( value === -1 ) {\n return true;\n }\n\n return Arr.has(matrix, value);\n },\n\n isDisabled()\n {\n if ( ! Any.isFunction(this.column.disabled) ) {\n return this.column.disabled;\n }\n\n return this.column.disabled(this);\n }\n\n },\n\n render()\n {\n let checked = this.isChecked();\n\n if ( this.firstState === null ) {\n this.setFirstState(checked);\n }\n\n if ( ! this.init ) {\n return null;\n }\n\n let classList = [\n 'n-table-cell--checkbox'\n ];\n\n if ( this.firstState !== checked ) {\n classList.push('n-changed');\n }\n\n if ( checked ) {\n classList.push('n-checked');\n }\n\n let isDisabled = this.isDisabled();\n\n if ( this.column.allowUncheck ) {\n isDisabled = isDisabled && ! checked;\n }\n\n if ( isDisabled ) {\n classList.push('n-disabled');\n }\n\n let props = {};\n\n if ( ! isDisabled ) {\n props.onClick = this.toggleMatrix;\n }\n\n return (\n <div class={classList} {...props}>\n <i class={nano.Icons.checked}></i>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Num, Any, Obj, Arr } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellSelect',\n\n extends: TableCell,\n\n beforeMount()\n {\n this.firstState = Obj.get(this.column.changedStates,\n this.uid);\n },\n\n methods: {\n\n toggleSelect()\n {\n let item = null;\n\n if ( ! this.isChecked() ) {\n item = Obj.assign({}, this.item);\n }\n\n this.column.$emit('update:modelValue', item);\n },\n\n isChecked()\n {\n if ( Any.isEmpty(this.column.modelValue) ) {\n return false;\n }\n\n return Obj.get(this.column.modelValue, this.NTable.uniqueProp) ===\n this.value[this.NTable.uniqueProp];\n },\n\n isDisabled()\n {\n if ( ! Any.isEmpty(this.column.modelValue) ) {\n return true;\n }\n\n if ( ! Any.isFunction(this.column.disabled) ) {\n return this.column.disabled;\n }\n\n return this.column.disabled(this);\n },\n\n },\n\n render()\n {\n let checked = this.isChecked();\n\n if ( this.firstState === null ) {\n this.setFirstState(checked);\n }\n\n if ( ! this.init ) {\n return null;\n }\n\n let classList = [\n 'n-table-cell--checkbox'\n ];\n\n if ( this.firstState !== checked ) {\n classList.push('n-changed');\n }\n\n if ( checked ) {\n classList.push('n-checked');\n }\n\n let isDisabled = this.isDisabled();\n\n if ( this.column.allowUncheck ) {\n isDisabled = isDisabled && ! checked;\n }\n\n if ( isDisabled ) {\n classList.push('n-disabled');\n }\n\n let props = {};\n\n if ( ! isDisabled ) {\n props.onClick = this.toggleSelect;\n }\n\n return (\n <div class={classList} {...props}>\n <i class={nano.Icons.checked}></i>\n </div>\n );\n }\n\n}\n","import {Arr, Obj, Any, Dom, Event, UUID} from \"@kizmann/pico-js\";\n\nexport default {\n\n inject: {\n\n NTable: {\n default: undefined\n }\n\n },\n\n props: {\n\n column: {\n required: true\n }\n\n },\n\n computed: {\n\n tempFilter()\n {\n return this.NTable.getColumnFilter(this.column);\n },\n\n canReset()\n {\n return ! this.NTable.getColumnFiltered(this.column);\n },\n\n canApply()\n {\n return ! Any.isEmpty(this.filter.value);\n }\n\n },\n\n data()\n {\n return {\n filter: this.getFilterClone(), visible: false\n };\n },\n\n beforeMount()\n {\n this.mountFilter();\n },\n\n mounted()\n {\n Event.bind('NTable:reset', \n this.resetFilter, this._.uid);\n\n Dom.find(document).on('keydown', \n this.onKeydown, this._.uid);\n },\n\n beforeUnmount()\n {\n Event.unbind('NTable:reset', \n this._.uid);\n\n Dom.find(document).off('keydown', \n null, this._.uid);\n },\n\n methods: {\n\n getFilterClone()\n {\n let tempFilter = this.NTable.getColumnFilter(this.column);\n\n if ( Any.isEmpty(tempFilter) ) {\n return null;\n }\n\n return Obj.clone(tempFilter);\n },\n\n getFilterProp()\n {\n return this.column.filterProp || \n this.column.prop;\n },\n\n getDefaultFilter()\n {\n return {\n type: this.column.type, \n value: null,\n property: this.getFilterProp(), \n };\n },\n\n mountFilter()\n {\n if ( this.filter ) {\n return this.applyFilter();\n }\n\n this.filter = this.getDefaultFilter();\n\n if ( ! this.canApply ) {\n return;\n }\n\n Arr.add(this.NTable.tempFilter, this.filter, {\n property: this.getFilterProp()\n });\n },\n\n resetFilter(uid)\n {\n if ( this.NTable.uid !== uid ) {\n return;\n }\n\n this.filter = this.getDefaultFilter();\n\n Arr.add(this.NTable.tempFilter, this.filter, {\n property: this.getFilterProp()\n });\n },\n\n onKeydown(event)\n {\n if ( ! this.visible ) {\n return;\n }\n\n if ( event.which === 13 && this.canApply ) {\n this.applyFilter();\n }\n\n if ( event.which === 13 && ! this.canApply ) {\n this.clearFilter();\n }\n\n let closeAnyway = event.which === 13 &&\n this.NTable.closeFilterOnEnter;\n\n if ( closeAnyway || event.which === 27 ) {\n this.$refs.popover.close();\n }\n },\n\n applyFilter()\n {\n let filter = Obj.clone(this.filter);\n\n Arr.add(this.NTable.tempFilterProps, \n this.getFilterProp());\n\n this.NTable.replaceFilter(filter, {\n property: this.getFilterProp()\n });\n },\n\n clearFilter()\n {\n let filter = this.getDefaultFilter();\n\n Arr.remove(this.NTable.tempFilterProps, \n this.getFilterProp());\n\n this.NTable.replaceFilter(filter, {\n property: this.getFilterProp()\n });\n\n this.filter = filter;\n }\n\n },\n\n renderForm()\n {\n return null;\n },\n\n renderApply()\n {\n let props = {\n type: 'primary',\n link: true,\n size: 'xs',\n disabled: ! this.canApply\n };\n\n return (\n <NButton {...props} onClick={this.applyFilter}>\n { this.trans('Apply') }\n </NButton>\n );\n },\n\n renderReset()\n {\n let props = {\n type: 'danger',\n link: true,\n size: 'xs',\n disabled: this.canReset,\n };\n\n return (\n <NButton {...props} onClick={this.clearFilter}>\n { this.trans('Reset') }\n </NButton>\n );\n },\n\n renderFooter()\n {\n return (\n <div class=\"n-table-filter__footer\">\n { this.ctor('renderReset')() }\n { this.ctor('renderApply')() }\n </div>\n )\n },\n\n render()\n {\n let props = {\n class: 'n-table-filter__popover',\n trigger: 'click',\n size: 'sm',\n width: 220,\n }\n\n return (\n <NPopover ref=\"popover\" vModel={this.visible} {...props}>\n {\n { default: this.ctor('renderForm'), footer: this.ctor('renderFooter') }\n }\n </NPopover>\n );\n }\n}\n","import TableFilter from \"../table-filter\";\nimport { Dom, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableFilterString',\n\n extends: TableFilter,\n\n methods: {\n\n getDefaultFilter()\n {\n return {\n type: this.column.type, \n value: null, \n operator: 'li',\n property: this.getFilterProp(), \n };\n }\n\n },\n\n renderForm()\n {\n let options = {\n li: this.trans('Includes value'),\n nl: this.trans('Excludes value'),\n eq: this.trans('Equal value'),\n ne: this.trans('Except value'),\n };\n\n return (\n <NForm>\n <NFormItem>\n <NInput size=\"sm\" vModel={this.filter.value} />\n </NFormItem>\n <NFormItem>\n <NSelect size=\"sm\" vModel={this.filter.operator} options={options} />\n </NFormItem>\n </NForm>\n );\n }\n\n}\n","import TableFilter from \"../table-filter\";\nimport { Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableFilterBoolean',\n\n extends: TableFilter,\n\n methods: {\n\n getDefaultFilter()\n {\n return {\n type: this.column.type, \n value: null, \n operator: 'in',\n property: this.getFilterProp(), \n };\n }\n\n },\n\n renderForm()\n {\n let options = {\n 1: this.trans(this.column.trueText),\n 0: this.trans(this.column.falseText),\n };\n\n return (\n <NForm>\n <NFormItem>\n <NSelect size=\"sm\" vModel={this.filter.value} options={options} />\n </NFormItem>\n </NForm>\n );\n }\n\n}\n","import TableFilter from \"../table-filter\";\n\nexport default {\n\n name: 'NTableFilterDatetime',\n\n extends: TableFilter,\n\n methods: {\n\n getDefaultFilter()\n {\n return {\n type: this.column.type, \n value: null, \n operator: 'eq',\n property: this.getFilterProp(), \n };\n }\n\n },\n\n renderForm()\n {\n let options = {\n eq: this.trans('Exact date'),\n lt: this.trans('Before date'),\n gt: this.trans('After date'),\n };\n\n return (\n <NForm>\n <NFormItem>\n <NDatepicker size=\"sm\" vModel={this.filter.value} format={this.column.datetimeFormat} />\n </NFormItem>\n <NFormItem>\n <NSelect size=\"sm\" vModel={this.filter.operator} options={options} />\n </NFormItem>\n </NForm>\n );\n }\n\n}\n","import TableFilter from \"../table-filter\";\nimport { Arr, Obj, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableFilterOption',\n\n extends: TableFilter,\n\n methods: {\n\n getDefaultFilter()\n {\n return {\n type: this.column.type,\n value: [],\n operator: 'in',\n property: this.getFilterProp(),\n };\n }\n\n },\n\n renderOption(value)\n {\n let props = {\n value: Obj.get(value, this.column.optionsValue)\n };\n\n return (\n <NCheckbox {...props}>{ Obj.get(value, this.column.optionsLabel) }</NCheckbox>\n );\n },\n\n renderForm()\n {\n let items = this.column.options;\n\n if ( Any.isFunction(items) ) {\n items = this.column.options(this);\n }\n\n items = Arr.each(items, (value, index) => {\n return { $value: value, $index: index };\n });\n\n let options = {\n in: this.trans('Includes value'),\n ni: this.trans('Excludes value'),\n };\n\n return (\n <NForm>\n <NFormItem>\n <NCheckboxGroup size=\"sm\" align=\"vertical\" vModel={this.filter.value}>\n { Arr.each(items, this.ctor('renderOption')) }\n </NCheckboxGroup>\n </NFormItem>\n <NFormItem>\n <NSelect size=\"sm\" vModel={this.filter.operator} options={options} />\n </NFormItem>\n </NForm>\n );\n }\n\n}\n","import Table from './src/table/table';\nimport TableColumn from './src/table-column/table-column';\nimport TableCellString from './src/table-cell/types/table-cell-string';\nimport TableCellBoolean from './src/table-cell/types/table-cell-boolean';\nimport TableCellDatetime from './src/table-cell/types/table-cell-datetime';\nimport TableCellOption from './src/table-cell/types/table-cell-option';\nimport TableCellImage from './src/table-cell/types/table-cell-image';\nimport TableCellMatrix from './src/table-cell/types/table-cell-matrix';\nimport TableCellSelect from './src/table-cell/types/table-cell-select';\nimport TableFilterString from './src/table-filter/types/table-filter-string';\nimport TableFilterBoolean from './src/table-filter/types/table-filter-boolean';\nimport TableFilterDatetime from './src/table-filter/types/table-filter-datetime';\nimport TableFilterOption from './src/table-filter/types/table-filter-option';\n\n\nexport default function (App) {\n App.component(Table.name, Table);\n App.component(TableColumn.name, TableColumn);\n App.component(TableCellString.name, TableCellString);\n App.component(TableCellBoolean.name, TableCellBoolean);\n App.component(TableCellDatetime.name, TableCellDatetime);\n App.component(TableCellOption.name, TableCellOption);\n App.component(TableCellImage.name, TableCellImage);\n App.component(TableCellMatrix.name, TableCellMatrix);\n App.component(TableCellSelect.name, TableCellSelect);\n App.component(TableFilterString.name, TableFilterString);\n App.component(TableFilterBoolean.name, TableFilterBoolean);\n App.component(TableFilterDatetime.name, TableFilterDatetime);\n App.component(TableFilterOption.name, TableFilterOption);\n}","import { Arr, Any, Obj, Event, UUID } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NInfo',\n\n model: {\n prop: 'item'\n },\n\n props: {\n\n item: {\n default()\n {\n return null;\n }\n },\n\n syncEvent: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n relative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n },\n\n data()\n {\n return {\n uid: UUID(),\n elements: [],\n options: [],\n tempValue: this.item,\n };\n },\n\n watch: {\n\n item(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n mounted()\n {\n this.bindSyncEvent();\n },\n\n beforeUnmount()\n {\n this.unbindSyncEvent();\n },\n\n updated()\n {\n Any.delay(() => {\n if ( this.$refs.scrollbar ) {\n this.$refs.scrollbar.adaptHeight();\n }\n }, 500);\n },\n\n methods: {\n\n bindSyncEvent()\n {\n if ( !this.syncEvent ) {\n return;\n }\n\n this.options = this.syncEvent;\n\n if ( Any.isFunction(this.options) ) {\n this.options = this.options(this);\n }\n\n let syncFunction = (value, uid = null) => {\n if ( uid === this.options[1] ) {\n this.setValue(value);\n }\n };\n\n Event.bind(this.options[0], syncFunction,\n this.uid);\n },\n\n unbindSyncEvent()\n {\n Event.unbind(this.options[0], this.uid);\n },\n\n setValue(value)\n {\n this.$emit('update:modelValue',\n this.tempValue = value);\n },\n\n addColumn(column)\n {\n Arr.add(this.elements,\n column, { uid: column.uid });\n },\n\n removeColumn(column)\n {\n Arr.remove(this.elements,\n { uid: column.uid });\n },\n\n },\n\n provide()\n {\n return {\n NInfo: this\n };\n },\n\n renderEmpty()\n {\n return (\n <NEmptyIcon disabled={!this.showEmptyIcon} class=\"n-info__empty\">\n {this.$slots.empty && this.$slots.empty() || this.trans('No entry')}\n </NEmptyIcon>\n );\n },\n\n renderBody()\n {\n if ( Any.isEmpty(this.tempValue) ) {\n return this.ctor('renderEmpty')();\n }\n\n let elements = Obj.each(this.elements, (column) => {\n return (\n <div class=\"n-info__column\">\n {column.ctor('renderLabel')({ item: this.tempValue })}\n {column.ctor('renderBody')({ item: this.tempValue })}\n </div>\n );\n });\n\n return (\n <div class=\"n-info__body\">\n {Any.vals(elements)}\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-info',\n 'n-info--' + this.type,\n 'n-info--' + this.size,\n ];\n\n let infoHtml = (\n <NScrollbar ref=\"scrollbar\" relative={this.relative}>\n {this.ctor('renderBody')()}\n </NScrollbar>\n );\n\n return (\n <div class={classList}>\n {[infoHtml, this.$slots.default()]}\n </div>\n );\n }\n}\n","import { UUID, Obj, Locale, Str } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NInfoColumn',\n\n inject: {\n\n NInfo: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n prop: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'string';\n },\n type: [String]\n },\n\n previewProp: {\n default()\n {\n return 'preview';\n },\n type: [String]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Object, Array, Function]\n },\n\n optionsValue: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n optionsLabel: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n emptyText: {\n default()\n {\n return Locale.trans('-');\n },\n type: [String]\n },\n\n trueText: {\n default()\n {\n return Locale.trans('Yes');\n },\n type: [String]\n },\n\n falseText: {\n default()\n {\n return Locale.trans('No');\n },\n type: [String]\n },\n\n datetimeFormat: {\n default()\n {\n return Locale.trans('YYYY-MM-DD HH:mm');\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n uid: UUID()\n };\n },\n\n beforeMount()\n {\n this.NInfo.addColumn(this);\n },\n\n beforeUnmount()\n {\n this.NInfo.removeColumn(this);\n },\n\n renderLabel()\n {\n if ( this.$slots.label ) {\n return this.$slots.label();\n }\n \n return (\n <div class=\"n-info-column\">\n <span>{this.label}</span>\n </div>\n );\n },\n\n renderBody(props)\n {\n let passed = Obj.except(props, [], {\n column: this\n });\n\n let component = resolveComponent('NInfoField' + \n Str.ucfirst(this.type));\n\n if ( ! component ) {\n return null;\n }\n\n passed.class = [\n 'n-info-field',\n 'n-info-field--' + this.type\n ];\n\n return h(component, passed);\n },\n\n render()\n {\n return null;\n }\n\n}\n","import { Obj } from \"@kizmann/pico-js\";\nimport CtorMixin from \"../../../mixins/src/ctor\";\n\nexport default {\n\n inject: {\n\n NInfo: {\n default: undefined\n }\n\n },\n\n props: {\n\n column: {\n required: true\n },\n\n item: {\n required: true\n },\n\n },\n\n computed: {\n\n input()\n {\n return Obj.get(this.item, this.column.prop);\n }\n\n },\n\n render()\n {\n return (\n <div>\n <span>{ this.input }</span>\n </div>\n );\n }\n\n}\n","import { Any } from \"@kizmann/pico-js\";\nimport InfoField from \"../info-field\";\n\nexport default {\n\n name: 'NInfoFieldString',\n\n extends: InfoField,\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n return (\n <div>\n <span>{ Any.convertString(this.input, this.column.emptyText) }</span>\n </div>\n );\n }\n\n}\n","import { Any } from \"@kizmann/pico-js\";\nimport InfoField from \"../info-field\";\n\nexport default {\n\n name: 'NInfoFieldBoolean',\n\n extends: InfoField,\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n return (\n <div>\n <span>{ Any.convertBoolean(this.input, this.column.trueText, this.column.falseText) }</span>\n </div>\n );\n }\n\n}\n","import { Any } from \"@kizmann/pico-js\";\nimport InfoField from \"../info-field\";\n\nexport default {\n\n name: 'NInfoFieldDatetime',\n\n extends: InfoField,\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n return (\n <div>\n <span>{ Any.convertDatetime(this.input, this.column.datetimeFormat, this.column.emptyText) }</span>\n </div>\n );\n }\n\n}\n","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\nimport InfoField from \"../info-field\";\n\nexport default {\n\n name: 'NInfoFieldOption',\n\n extends: InfoField,\n\n renderOption(value)\n {\n let options = this.column.options;\n\n if ( Any.isFunction(options) ) {\n options = this.column.options(this);\n }\n\n let prop = this.column.optionsValue;\n\n options = Arr.each(options, (value, index) => {\n return { $value: value, $index: index };\n });\n\n let option = Arr.find(options, (item) => {\n return Obj.get(item, prop) == value;\n });\n\n if ( ! option ) {\n return [this.column.emptyText];\n }\n\n return Obj.get(option, this.column.optionsLabel,\n this.column.undefinedText);\n },\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n let input = ! Any.isObject(this.input) ?\n [this.input] : this.input;\n\n return (\n <div>\n <span>{ Arr.each(input, this.ctor('renderOption')) }</span>\n </div>\n );\n }\n\n}\n","import InfoField from \"../info-field\";\nimport { Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NInfoFieldImage',\n\n extends: InfoField,\n\n computed: {\n\n preview()\n {\n return Obj.get(this.item, this.column.previewProp);\n }\n\n },\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n let props = {\n fit: 'contain',\n };\n\n return (\n <div>\n <NPreview file={this.preview || this.input} thumb={this.input} {...props} />\n </div>\n );\n }\n\n}\n","import Info from './src/info/info';\nimport InfoColumn from './src/info-column/info-column';\nimport InfoFieldString from './src/info-field/types/info-field-string';\nimport InfoFieldBoolean from './src/info-field/types/info-field-boolean';\nimport InfoFieldDatetime from './src/info-field/types/info-field-datetime';\nimport InfoFieldOption from './src/info-field/types/info-field-option';\nimport InfoFieldImage from './src/info-field/types/info-field-image';\n\nexport default function (App) {\n App.component(Info.name, Info);\n App.component(InfoColumn.name, InfoColumn);\n App.component(InfoFieldString.name, InfoFieldString);\n App.component(InfoFieldBoolean.name, InfoFieldBoolean);\n App.component(InfoFieldDatetime.name, InfoFieldDatetime);\n App.component(InfoFieldOption.name, InfoFieldOption);\n App.component(InfoFieldImage.name, InfoFieldImage);\n}","import { Arr, Any, Dom, Event, UUID } from \"@kizmann/pico-js\";\n\n\nexport default {\n\n name: 'NPopover',\n\n provide()\n {\n return {\n NPopover: this\n };\n },\n\n inject: {\n\n NPopover: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n width: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n listen: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n window: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n trigger: {\n default()\n {\n return 'hover';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'bottom-center';\n },\n type: [String]\n },\n\n scrollClose: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n multiClose: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n framerate: {\n default()\n {\n return 15;\n },\n type: [Number]\n }\n\n },\n\n computed: {\n\n touch() {\n return !! ('ontouchstart' in window || \n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n tempValue: false,\n clientX: 0,\n clientY: 0,\n target: null,\n prevent: false,\n };\n },\n\n watch: {\n\n modelValue()\n {\n this.tempValue = this.modelValue;\n },\n\n tempValue()\n {\n Any.delay(this.refreshVisible, 50);\n }\n\n },\n\n beforeMount()\n {\n this.tempValue = this.modelValue;\n },\n\n mounted()\n {\n this.target = Dom.find(this.$el).previous().get(0);\n\n if ( this.trigger === 'context' ) {\n this.target = Dom.find(this.$el).parent().get(0);\n }\n\n if ( this.window ) {\n Dom.find(document.body).append(this.$el);\n }\n\n if ( this.listen && this.trigger === 'hover' ) {\n Dom.find(document.body).on('mousemove', \n Any.framerate(this.onHover, 30), this._.uid);\n }\n\n if ( this.listen && this.trigger === 'click' ) {\n Dom.find(document.body).on(this.mousedown, \n Any.framerate(this.onClick, 30), this._.uid);\n }\n\n if ( this.listen && this.trigger === 'context' ) {\n Dom.find(document.body).on('contextmenu', \n Any.framerate(this.onContext, 30), this._.uid);\n }\n\n Dom.find(document.body).on(this.mousedown, \n Any.framerate(this.onExit, 30), this._.uid);\n\n Event.bind('NPopover:close', this.onCloseEvent, this._.uid);\n },\n\n beforeUnmount()\n {\n this.$el.remove();\n\n Dom.find(document).off('mousemove', null, this._.uid);\n Dom.find(document).off('mousedown', null, this._.uid);\n Dom.find(document).off('contextmenu', null, this._.uid);\n\n Event.unbind('NPopover:close', this._.uid);\n \n },\n\n methods: {\n\n active()\n {\n return this.tempValue;\n },\n\n open()\n {\n this.$emit('update:modelValue', \n this.tempValue = true);\n },\n\n close(type = null)\n {\n if ( this.prevent ) {\n return;\n }\n\n delete this.timer;\n\n if ( ! type ) {\n this.$emit('close');\n }\n\n if ( type === 'scroll' ) {\n this.$emit('scrollClose');\n }\n\n if ( type === 'multi' ) {\n this.$emit('multiClose');\n }\n\n this.$emit('update:modelValue', \n this.tempValue = false);\n },\n\n pause()\n {\n this.prevent = true;\n },\n\n unpause()\n {\n this.prevent = false;\n },\n\n onCloseEvent(uid)\n {\n if ( this.multiClose && this.tempValue && this._.uid !== uid ) {\n this.close('multi');\n }\n },\n\n refreshVisible()\n {\n Dom.find(this.$el).css(null);\n\n if ( ! this.tempValue ) {\n return this.stopRefreshInterval();\n }\n\n this.startRefreshInterval();\n\n delete this.passedOffset;\n },\n\n startRefreshInterval()\n {\n this.refresh = setInterval(this.updatePosition, \n 1000 / this.framerate);\n\n let onReady = () => {\n\n if ( this.listen ) {\n Dom.find(this.target).addClass('n-open');\n }\n\n Dom.find(this.$el).addClass('n-ready');\n\n if ( this.NPopover ) {\n this.NPopover.pause();\n }\n\n Event.fire('NPopover:close', this._.uid);\n }\n\n Any.delay(onReady, 100);\n },\n\n stopRefreshInterval()\n {\n clearInterval(this.refresh);\n\n if ( this.NPopover ) {\n this.NPopover.unpause();\n }\n\n if ( this.listen ) {\n Dom.find(this.target).removeClass('n-open');\n }\n\n Dom.find(this.$el).removeClass('n-ready');\n },\n\n isSameOffset(offset)\n {\n if ( ! this.passedOffset ) {\n return false;\n }\n\n let rainbow = Arr.each(['x', 'y'], (key) => {\n return offset[key] === this.passedOffset[key];\n });\n\n return ! Arr.has(rainbow, false);\n },\n\n isSameSize(size)\n {\n if ( ! this.passedSize ) {\n return false;\n }\n\n let rainbow = Arr.each(['width', 'height'], (key) => {\n return size[key] === this.passedSize[key];\n });\n\n return ! Arr.has(rainbow, false);\n },\n\n getTargetHorizontal(position, fallback = null)\n {\n let targetRect = this.target.getBoundingClientRect();\n\n if ( this.trigger === 'context' ) {\n targetRect = {\n top: this.clientY, left: this.clientX, width: 2, height: 2\n };\n }\n\n let windowRect = this.$el.getBoundingClientRect();\n\n if ( this.width === -1 ) {\n windowRect.width = targetRect.width;\n }\n\n let posY = {\n\n // Set above the tagret element\n start: targetRect.top - windowRect.height,\n \n // Set at bottom of target element\n end: targetRect.top + targetRect.height,\n\n };\n\n let posX = {\n\n // Set on the left of target element\n start: targetRect.left,\n\n // Set into the center of the target element\n center: targetRect.left + (targetRect.width * 0.5) - \n (windowRect.width * 0.5),\n\n // Set on the right of the target element\n end: targetRect.left + targetRect.width - \n windowRect.width,\n\n };\n\n let offset = { x: 0, y: 0 };\n\n if ( position === 'top-start' ) {\n offset = { x: posX.start, y: posY.start };\n }\n\n if ( position === 'top-center' ) {\n offset = { x: posX.center, y: posY.start };\n }\n\n if ( position === 'top-end' ) {\n offset = { x: posX.end, y: posY.start };\n }\n\n if ( position === 'bottom-start' ) {\n offset = { x: posX.start, y: posY.end };\n }\n\n if ( position === 'bottom-center' ) {\n offset = { x: posX.center, y: posY.end };\n }\n\n if ( position === 'bottom-end' ) {\n offset = { x: posX.end, y: posY.end };\n }\n\n let inverse = this.position;\n\n if ( position.match(/^(top)\\-/) ) {\n inverse = inverse.replace(/^(top)\\-/, 'bottom-');\n }\n\n if ( position.match(/^(bottom)\\-/) ) {\n inverse = inverse.replace(/^(bottom)\\-/, 'top-');\n }\n\n let broken = offset.y + windowRect.height > \n window.innerHeight || offset.y < 0;\n\n if ( this.scrollClose && broken && ! fallback ) {\n return this.getTargetHorizontal(inverse, offset);\n }\n\n if ( fallback && broken ) {\n offset = fallback;\n }\n\n if ( offset.y < 0 ) {\n offset.y = 0;\n }\n \n if ( offset.y + windowRect.height > window.innerHeight ) {\n offset.y = window.innerHeight - windowRect.height;\n }\n\n if ( offset.x < 0 ) {\n offset.x = 0;\n }\n \n if ( offset.x + windowRect.width > window.innerWidth ) {\n offset.x = window.innerWidth - windowRect.width -\n (window.innerWidth - document.body.clientWidth);\n }\n\n return offset;\n },\n\n getTargetVertical(position, fallback = null)\n {\n let targetRect = this.target.getBoundingClientRect();\n\n if ( this.trigger === 'context' ) {\n targetRect = {\n top: this.clientY, left: this.clientX, width: 2, height: 2\n };\n }\n\n let windowRect = this.$el.getBoundingClientRect();\n\n if ( this.width === -1 ) {\n windowRect.width = targetRect.width;\n }\n \n let posY = {\n\n // Set at top edge of the target element\n start: targetRect.top,\n\n // Set at the middle of the target element\n center: targetRect.top + (targetRect.height * 0.5) - \n (windowRect.height * 0.5),\n\n // Ste at the bottom of the target elemnent\n end: targetRect.top + targetRect.height - \n windowRect.height,\n\n };\n\n let posX = {\n\n // Set to the left of the target element\n start: targetRect.left - windowRect.width,\n\n // Set to the right of the target element\n end: targetRect.left + targetRect.width,\n\n };\n\n let offset = { x: 0, y: 0 };\n\n if ( position === 'left-start' ) {\n offset = { x: posX.start, y: posY.start };\n }\n\n if ( position === 'left-center' ) {\n offset = { x: posX.start, y: posY.center };\n }\n\n if ( position === 'left-end' ) {\n offset = { x: posX.start, y: posY.end };\n }\n\n if ( position === 'right-start' ) {\n offset = { x: posX.end, y: posY.start };\n }\n\n if ( position === 'right-center' ) {\n offset = { x: posX.end, y: posY.center };\n }\n\n if ( position === 'right-end' ) {\n offset = { x: posX.end, y: posY.end };\n }\n\n let inverse = this.position;\n\n if ( position.match(/^(left)\\-/) ) {\n inverse = inverse.replace(/^(left)\\-/, 'right-');\n }\n\n if ( position.match(/^(right)\\-/) ) {\n inverse = inverse.replace(/^(right)\\-/, 'left-');\n }\n\n let broken = offset.x + windowRect.width > \n window.innerWidth || offset.x < 0;\n\n if ( this.scrollClose && broken && ! fallback ) {\n return this.getTargetVertical(inverse, offset);\n }\n\n if ( fallback && broken ) {\n offset = fallback;\n }\n\n if ( offset.y < 0 ) {\n offset.y = 0;\n }\n \n if ( offset.y + windowRect.height > window.innerHeight ) {\n offset.y = window.innerHeight - windowRect.height;\n }\n\n if ( offset.x < 0 ) {\n offset.x = 0;\n }\n \n if ( offset.x + windowRect.width > window.innerWidth ) {\n offset.x = window.innerWidth - windowRect.width -\n (window.innerWidth - document.body.clientWidth);\n }\n\n return offset;\n },\n\n getTargetOffset()\n {\n let position = this.position;\n\n if ( position.match(/^(top|bottom)\\-/) ) {\n return this.getTargetHorizontal(position);\n }\n\n if ( position.match(/^(left|right)\\-/) ) {\n return this.getTargetVertical(position);\n }\n\n return targetRect;\n },\n\n updatePosition()\n {\n let size = this.$el.getBoundingClientRect(),\n rect = this.target.getBoundingClientRect();\n\n let isSameSize = this.isSameSize(size);\n\n if ( isSameSize && this.isSameOffset(rect) ) {\n return;\n }\n\n if ( ! this.timer ) {\n this.timer = Date.now();\n }\n\n this.passedSize = size;\n\n if ( this.width ) {\n Dom.find(this.$el).css({ width: this.width + 'px' });\n }\n\n let offset = this.getTargetOffset();\n\n let scroll = Dom.find(document.body)\n .scroll();\n\n let style = {\n 'z-index': window.zIndex++,\n 'top': Math.round(offset.y + scroll.top) + 'px', \n 'left': Math.round(offset.x + scroll.left) + 'px', \n };\n\n if ( this.width === -1 ) {\n style.width = rect.width + 'px';\n }\n\n Dom.find(this.$el).css(style);\n\n let isScrollClose = this.passedOffset && isSameSize &&\n (Date.now() - this.timer) > 500;\n\n if ( this.scrollClose && isScrollClose ) {\n this.close('scroll');\n }\n\n this.passedOffset = rect;\n },\n\n onHover(event, el)\n {\n if ( this.disabled ) {\n return;\n }\n\n let target = Dom.find(el).closest(this.target),\n source = Dom.find(el).closest(this.$el);\n\n let result = (!! target || !! source);\n\n if ( this.tempValue === result ) {\n return;\n }\n\n if ( ! result ) {\n return this.$nextTick(this.close);\n }\n\n this.$emit('update:modelValue', this.tempValue = result);\n },\n\n onClick(event, el)\n {\n let keyCode = event.which === 1 ||\n event.which === 0;\n\n if ( this.disabled || this.tempValue || ! keyCode ) {\n return;\n }\n\n let target = Dom.find(el).closest(this.target),\n source = Dom.find(el).closest(this.$el);\n\n let result = (!! target || !! source);\n\n if ( this.tempValue === result ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue = result);\n },\n\n onContext(event, el)\n {\n let keyCode = event.which === 3;\n\n if ( this.disabled || this.tempValue || ! keyCode ) {\n return;\n }\n\n let target = Dom.find(el).closest(this.target),\n source = Dom.find(el).closest(this.$el);\n\n this.clientX = event.clientX;\n this.clientY = event.clientY;\n\n let result = (!! target || !! source);\n\n if ( result ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if ( this.tempValue === result ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue = result);\n },\n\n onExit(event, el)\n {\n if ( this.disabled || ! this.tempValue ) {\n return;\n }\n\n if ( !! Dom.find(el).closest(this.$el) ) {\n return;\n }\n\n let target = Dom.find(el).closest(this.target);\n\n if ( this.trigger !== 'context' && !! target ) {\n return;\n }\n\n this.close();\n }\n\n },\n\n renderBody()\n {\n if ( this.$slots.raw ) {\n return this.$slots.raw();\n }\n\n return (\n <div class=\"n-popover__frame\">\n { this.$slots.header &&\n <div class=\"n-popover__header\">\n { this.$slots.header() }\n </div>\n }\n <div class=\"n-popover__body\">\n { this.$slots.default() }\n </div>\n { this.$slots.footer &&\n <div class=\"n-popover__footer\">\n { this.$slots.footer() }\n </div>\n }\n </div>\n );\n },\n\n render()\n {\n if ( ! window.zIndex ) {\n window.zIndex = 9000;\n }\n\n let classList = [\n 'n-popover',\n 'n-popover--' + this.type,\n 'n-popover--' + this.size,\n 'n-popover--' + this.position,\n ];\n\n if ( ! this.tempValue ) {\n classList.push('n-hidden');\n }\n\n let viewBody = this.modelValue;\n\n if ( Any.isNull(this.modelValue) ) {\n viewBody = this.tempValue;\n }\n\n return (\n <div class={classList}>\n { viewBody && this.ctor('renderBody')() }\n </div>\n );\n }\n\n}\n","export default {\n\n name: 'NPopoverGroup',\n\n inject: {\n NPopover: {\n default: undefined\n }\n },\n\n props: {\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n\n },\n\n computed: {\n\n tempSize()\n {\n if ( this.NPopover ) {\n return this.NPopover.size;\n }\n\n return this.size;\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-popover-group',\n 'n-popover-group--' + this.tempSize,\n ];\n\n return (\n <label class={classList}>\n <span>{ this.$slots.default() }</span>\n </label>\n );\n }\n\n}\n","import { Obj, Arr, Any, Dom } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NPopoverOption',\n\n inject: {\n NPopover: {\n default: undefined\n }\n },\n\n props: {\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n focus: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n active: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n iconPosition: {\n default()\n {\n return 'after';\n },\n type: [String]\n },\n\n image: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n imagePosition: {\n default()\n {\n return 'before';\n },\n type: [String]\n },\n\n clickClose: {\n default()\n {\n return true;\n },\n type: [Boolean]\n }\n\n\n },\n\n computed: {\n\n tempSize()\n {\n if ( this.NPopover ) {\n return this.NPopover.size;\n }\n\n return this.size;\n }\n\n },\n\n methods: {\n\n onClick(event)\n {\n if ( this.NPopover && this.clickClose ) {\n this.NPopover.close();\n }\n\n this.$emit('fakeclick', event);\n }\n\n },\n\n renderImage()\n {\n if ( ! this.image ) {\n return null;\n }\n\n let classList = [\n 'n-image',\n 'n-image--' + this.imagePosition,\n ];\n\n return (<img class={classList} src={this.image} />);\n },\n\n renderIcon()\n {\n if ( ! this.icon ) {\n return null;\n }\n\n let classList = [\n 'n-icon', \n 'n-icon--' + this.iconPosition,\n ];\n\n classList.push(this.icon);\n\n return (<i class={classList}></i>);\n },\n\n renderContent()\n {\n if ( this.$slots.raw ) {\n return this.$slots.raw();\n }\n\n return (\n <span>{ this.$slots.default() }</span>\n );\n },\n\n render()\n {\n let classList = [\n 'n-popover-option',\n 'n-popover-option--' + this.type,\n 'n-popover-option--' + this.tempSize,\n ];\n\n if ( this.active ) {\n classList.push('n-active');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = Obj.clone(this.$attrs);\n\n if ( ! this.disabled ) {\n props.onClick = this.onClick;\n }\n\n if ( this.disabled ) {\n props.disabled = true;\n }\n\n return (\n <a class={classList} href=\"javascript:void(0)\" {...props}>\n { this.ctor('renderImage')() }\n { this.ctor('renderContent')() }\n { this.ctor('renderIcon')() }\n </a>\n );\n }\n\n}\n","import Popover from './src/popover/popover';\nimport PopoverGroup from './src/popover-group/popover-group';\nimport PopoverOption from './src/popover-option/popover-option';\n\nexport default function (App) {\n App.component(Popover.name, Popover);\n App.component(PopoverGroup.name, PopoverGroup);\n App.component(PopoverOption.name, PopoverOption);\n}","import { UUID, Num, Arr, Obj, Any, Dom, Locale } from \"@kizmann/pico-js\";\nimport { h } from \"vue\";\n\nexport default {\n\n name: 'NForm',\n\n inheritAttrs: false,\n\n model: {\n prop: 'form'\n },\n\n props: {\n\n dom: {\n default()\n {\n return 'div';\n },\n type: [String]\n },\n\n form: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n errors: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'vertical';\n },\n type: [String]\n },\n\n prevent: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n ignore: {\n default()\n {\n return ['modified', 'dragid'];\n },\n type: [Array]\n },\n\n forceChange: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n forceErrors: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n },\n\n computed: {\n\n classList()\n {\n if ( ! this.$attrs.class ) {\n return [];\n }\n\n return Any.isArray(this.$attrs) ? this.$attrs.class :\n [this.$attrs.class];\n }\n\n },\n\n data()\n {\n return {\n uid: UUID(), elements: [], blocked: true,\n };\n },\n\n provide()\n {\n return {\n NForm: this\n };\n },\n\n mounted()\n {\n Any.delay(this.ctor('ready'), 500);\n },\n\n ready()\n {\n this.$watch('form', this.emitChange,\n { deep: true });\n\n this.resetChange();\n },\n\n methods: {\n\n onSubmit(event)\n {\n if ( this.prevent ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if ( Dom.find(event.target).is('input') ) {\n this.$emit('submit', event);\n }\n\n return this.prevent;\n },\n\n addItem(item)\n {\n Arr.add(this.elements, item, {\n uid: item.uid\n });\n },\n\n removeItem(item)\n {\n Arr.remove(this.elements,{\n uid: item.uid\n });\n },\n\n resetChange(timeout = 500)\n {\n clearTimeout(this.timeout);\n\n this.timeout = setTimeout(() => {\n this.blocked = false;\n }, timeout);\n\n this.blocked = true;\n\n let value = Obj.except(this.form,\n this.ignore);\n\n this.prevState = JSON.stringify(value);\n },\n\n emitChange()\n {\n if ( this.blocked ) {\n return;\n }\n\n let value = Obj.except(this.form,\n this.ignore);\n\n let nextState = JSON.stringify(value);\n\n if ( this.prevState == nextState ) {\n return;\n }\n\n this.prevState = nextState;\n\n this.$emit('change');\n },\n\n },\n\n render()\n {\n let classList = [\n 'n-form',\n 'n-form--' + this.align,\n ];\n\n let attrs = Obj.except(this.$attrs, ['class', 'onChange', 'onSubmit'], {\n class: this.cmer(classList)\n });\n\n attrs['onSubmit'] = (e) => {\n return false;\n }\n\n return h(this.dom, { ...attrs }, [\n this.$slots.default && this.$slots.default()\n ]);\n }\n\n}\n","export default {\n\n name: 'NFormGroup',\n\n inject: {\n\n NForm: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n }\n },\n\n size: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'vertical';\n },\n type: [String]\n },\n\n collapse: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n tooltip: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n tooltipPosition: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n methods: {\n\n collapseGroup()\n {\n this.$emit('update:modelValue', this.tempValue = ! this.tempValue);\n }\n\n },\n\n renderCollapse()\n {\n if ( ! this.collapse ) {\n return null;\n }\n\n return (\n <div class=\"n-form-group__collapse\">\n <i class={nano.Icons.angleDown}></i>\n </div>\n );\n },\n\n renderIcon()\n {\n if ( ! this.icon ) {\n return null;\n }\n\n return (\n <div class=\"n-form-group__icon\">\n <i class={['n-icon', this.icon]}></i>\n </div>\n );\n },\n\n renderText()\n {\n let textHtml = (\n <div class=\"n-form-group__text\">\n <span>{ this.label }</span>\n </div>\n );\n\n return (\n <div class=\"n-form-group__label\">\n { [this.ctor('renderIcon')(), textHtml] } \n </div>\n );\n },\n\n renderAction()\n {\n if ( ! this.$slots.action ) {\n return null;\n }\n\n return (\n <div class=\"n-form-group__action\">\n { this.$slots.action() }\n </div>\n );\n },\n\n renderLabel()\n {\n return (\n <div class=\"n-form-group__legend\" onClick={this.collapseGroup}>\n { this.ctor('renderCollapse')() }\n { this.ctor('renderText')() }\n { this.ctor('renderAction')() }\n </div>\n );\n },\n\n renderTooltip()\n {\n if ( ! this.tooltip ) {\n return null;\n }\n\n return (\n <NPopover type=\"tooltip\" size=\"sm\" position={this.tooltipPosition}>\n {this.tooltip}\n </NPopover>\n );\n },\n\n renderBody()\n {\n return (\n <div class=\"n-form-group__body\">\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n },\n\n render()\n {\n let size = this.size || this.NForm.size;\n\n let classList = [\n 'n-form-group', \n 'n-form-group--' + size,\n 'n-form-group--' + this.type,\n 'n-form-group--' + this.align, \n ];\n\n if ( this.collapse ) {\n classList.push('n-form-group--collapse');\n }\n\n if ( ! this.tempValue ) {\n classList.push('n-hidden');\n }\n\n if ( this.$slots.action ) {\n classList.push('n-action');\n }\n\n return (\n <fieldset class={classList}>\n { this.ctor('renderLabel')() }\n { this.ctor('renderTooltip')() }\n { this.ctor('renderBody')() }\n </fieldset>\n );\n }\n}\n","import { Arr, Obj, Any, Dom, UUID, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NFormItem',\n\n inject: {\n\n NForm: {\n default: undefined\n },\n\n NTabs: {\n default: undefined\n },\n\n NTabsItem: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return { NFormItem: this };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n prop: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n tooltip: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n tooltipPosition: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n tooltipWindow: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n conditional: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n conditionOn: {\n default()\n {\n return Locale.trans('Enable field');\n },\n type: [String]\n },\n\n conditionOff: {\n default()\n {\n return Locale.trans('Disable field');\n },\n type: [String]\n }\n\n },\n\n methods: {\n\n enabled(component = false)\n {\n return (! this.conditional || this.modelValue) && ! component;\n },\n\n disabled(component)\n {\n return (this.conditional && ! this.modelValue) || component;\n },\n\n toggleCondition()\n {\n this.$emit('update:modelValue', !this.modelValue);\n },\n\n focusInput()\n {\n let $input = Dom.find(this.$el).find('input');\n\n if ( !$input.empty() ) {\n return $input.get(0).focus();\n }\n\n $input = Dom.find(this.$refs.input).childs();\n\n if ( !$input.empty() ) {\n return $input.get(0).click();\n }\n\n console.log('I dont belong here :o');\n },\n\n gotoInput()\n {\n let errors = this.NForm.errors;\n\n if ( Any.isEmpty(errors) ) {\n return;\n }\n\n if ( !this.NTabs || !this.NTabsItem ) {\n return;\n }\n\n let keys = Any.keys(errors);\n\n if ( Arr.first(keys) !== this.prop ) {\n return;\n }\n\n this.NTabs.changeTab(this.NTabsItem.name);\n }\n\n },\n\n data()\n {\n return {\n uid: UUID()\n };\n },\n\n beforeMount()\n {\n if ( this.NForm ) {\n this.NForm.addItem(this);\n }\n },\n\n mounted()\n {\n if ( this.NForm ) {\n this.NForm.$watch('errors', this.gotoInput, { deep: true });\n }\n },\n\n beforeUnmount()\n {\n if ( this.NForm ) {\n this.NForm.removeItem(this);\n }\n },\n\n renderTooltip()\n {\n if ( !this.tooltip && !this.$slots.tooltip ) {\n return null;\n }\n\n let props = {\n size: 'sm',\n position: this.tooltipPosition,\n };\n\n return (\n <NPopover type=\"tooltip\" {...props}>\n {this.$slots.tooltip && this.$slots.tooltip() || this.tooltip}\n </NPopover>\n );\n },\n\n renderCondition()\n {\n if ( ! this.conditional ) {\n return null;\n }\n\n return (\n <div class=\"n-form-item__condition\" onClick={this.toggleCondition}>\n <span>{ this.modelValue ? this.conditionOff : this.conditionOn }</span>\n </div>\n );\n },\n\n renderLabel()\n {\n if ( !this.label && !this.$slots.label ) {\n return null;\n }\n\n let labelHtml = (\n <div class=\"n-form-item__label\">\n <label onClick={this.focusInput}>\n {this.$slots.label && this.$slots.label() || this.label}\n </label>\n </div>\n );\n\n return [\n labelHtml, this.ctor('renderTooltip')()\n ]\n },\n\n renderError()\n {\n if ( !this.NForm || !Obj.has(this.NForm.errors, this.prop) ) {\n return null;\n }\n\n return (\n <div class=\"n-form-item__error\">\n {Obj.get(this.NForm.errors, this.prop)}\n </div>\n );\n },\n\n renderInput()\n {\n return (\n <div ref=\"input\" class=\"n-form-item__input\">\n {this.$slots.default && this.$slots.default()}\n </div>\n );\n },\n\n render()\n {\n let size = this.size || Obj.get(this.NForm, 'size', 'md');\n\n\n let classList = [\n 'n-form-item',\n 'n-form-item--' + size,\n ];\n\n if ( this.disabled() ) {\n classList.push('is-disabled');\n }\n\n return <div class={classList}>\n {this.ctor('renderCondition')()}\n {this.ctor('renderLabel')()}\n {this.ctor('renderInput')()}\n {this.ctor('renderError')()}\n </div>;\n }\n}\n","import Form from './src/form/form';\nimport FormGroup from './src/form-group/form-group';\nimport FormItem from './src/form-item/form-item';\n\nexport default function (App) {\n App.component(Form.name, Form);\n App.component(FormGroup.name, FormGroup);\n App.component(FormItem.name, FormItem);\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NConfig',\n\n props: {\n\n modelValue: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n config: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n scope: {\n default()\n {\n return this;\n },\n type: [Object]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue\n };\n },\n\n methods: {\n\n solveAwait(value)\n {\n if ( Any.isEmpty(value) ) {\n return true;\n }\n\n if ( Any.isString(value) && value.match(/\\$\\$scope/) ) {\n return Obj.has({ $$scope: this.scope }, value);\n }\n\n if ( Any.isString(value) && value.match(/\\$\\$value/) ) {\n return Obj.has({ $$value: this.tempValue }, value);\n }\n\n return false;\n },\n\n solveValue(value, ...args)\n {\n if ( Any.isFunction(value) ) {\n return value.apply(this.scope, [this.tempValue, ...args]);\n }\n\n if ( Any.isString(value) && value.match(/^\\$\\$scope/) ) {\n return Obj.get({ $$scope: this.scope }, value);\n }\n\n if ( Any.isString(value) && value.match(/^\\$\\$value/) ) {\n return Obj.get({ $$value: this.tempValue }, value);\n }\n\n return value;\n },\n\n solveEvent(value)\n {\n let scope = Obj.assign(this.scope, {\n $configRefs: this.$refs\n });\n\n if ( Any.isFunction(value) ) {\n return (...args) => value.apply(scope, args);\n }\n\n return value;\n },\n\n solveContent(value, ...args)\n {\n if ( Any.isFunction(value) ) {\n return value.apply(this.scope, [this.$render, this.tempValue, ...args]);\n }\n\n return value;\n },\n\n prepareValue(veModel)\n {\n if ( ! veModel.path ) {\n return veModel.fallback;\n }\n\n if ( ! Obj.has(this.tempValue, veModel.path) ) {\n this.deepSet(this.tempValue, veModel.path, veModel.fallback);\n }\n\n return Obj.get(this.tempValue, veModel.path);\n },\n\n inputClosure(veModel, closure = null)\n {\n if ( ! veModel.path ) {\n return () => null;\n }\n\n return (value) => {\n\n if ( closure ) {\n closure(value, this.tempValue);\n }\n\n this.deepSet(this.tempValue, veModel.path, value);\n };\n },\n\n deepSet(obj, keys, val)\n {\n keys = (typeof keys === 'string') ?\n keys.split('.') : keys;\n\n let key = keys.shift();\n\n if ( obj[key] === undefined || obj[key] === null ) {\n Obj.set(obj, key, {});\n }\n\n if ( keys.length === 0 ) {\n return Obj.set(obj, key, val);\n }\n\n return this.deepSet(obj[key], keys, val);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n renderLayer(source)\n {\n if ( ! Any.isPlain(source) ) {\n return source;\n }\n\n return Arr.each(source, (setup, component) => {\n\n component = component.replace(/:.*?$/, '');\n\n // Set setup defaults\n setup = Obj.assign({\n vIf: true, vShow: true, vAwait: null, class: null, $on: {}, $props: {}, $attrs: {}\n }, setup);\n\n if ( ! this.solveAwait(setup.vAwait) ) {\n return null;\n }\n\n if ( ! this.solveValue(setup.vIf) ) {\n return null;\n }\n\n if ( ! this.solveValue(setup.vShow) ) {\n setup.style = { display: 'none' };\n }\n\n // Build default model\n let veModel = Obj.assign({\n prop: 'modelValue', fallback: null\n }, setup.model);\n\n // Delete model from setup\n delete setup.model;\n\n // Normalize props\n setup.$props = this.solveValue(setup.$props);\n\n // Normalize class\n setup.class = this.solveValue(setup.class);\n\n // Solve props\n Obj.map(setup.$props, (value) => this.solveValue(value));\n\n // Normalize attrs\n setup.$attrs = this.solveValue(setup.$attrs);\n\n // Solve attrs\n Obj.map(setup.$attrs, (value) => this.solveValue(value));\n\n // Solve events\n Obj.map(setup.$on, (value) => this.solveEvent(value));\n\n if ( veModel.path ) {\n\n // Override input event\n setup['onUpdate:modelValue'] = this.inputClosure(veModel, setup.$on.input);\n\n // Set prop in value or get fallback\n setup.$props[veModel.prop] = this.prepareValue(veModel);\n }\n\n Obj.assign(setup, setup.$props);\n delete setup.$props;\n\n Obj.assign(setup, setup.$attrs);\n delete setup.$attrs;\n\n Obj.assign(setup, setup.$on);\n delete setup.$on;\n\n let content = setup.content;\n delete setup.content;\n\n delete setup.vIf;\n delete setup.vShow;\n delete setup.vAwait;\n\n // Solve content if is functional\n let slots = this.solveContent(content, setup);\n\n let domtypes = [\n 'div', 'span', 'a'\n ];\n\n let resolved = component;\n\n if ( ! Arr.has(domtypes, resolved) ) {\n resolved = resolveComponent(component);\n }\n\n return h(resolved, setup, this.ctor('renderLayer')(slots));\n });\n },\n\n render()\n {\n return this.ctor('renderLayer')(this.config)[0];\n }\n\n}","import { Arr, Obj, Str, Any } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NConfigNext',\n\n props: {\n\n modelValue: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n extraValue: {\n default()\n {\n return null;\n },\n type: [Object]\n },\n\n config: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n scope: {\n default()\n {\n return {};\n },\n type: [Object]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue, sempValue: this.extraValue || this.modelValue\n };\n },\n\n watch: {\n\n modelValue: function (value) {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n extraValue: function (value) {\n if ( value !== this.sempValue ) {\n this.sempValue = value;\n }\n }\n\n },\n\n methods: {\n\n propAwait(value)\n {\n if ( Any.isEmpty(value) ) {\n return true;\n }\n\n if ( ! Any.isArray(value) ) {\n value = [value];\n }\n\n let result = Arr.each(value, (state) => {\n return this.getState(state, true);\n });\n\n return ! Arr.has(result, false);\n },\n\n propExists(value)\n {\n if ( Any.isEmpty(value) ) {\n return true;\n }\n\n if ( ! Any.isArray(value) ) {\n value = [value];\n }\n\n let result = Arr.each(value, (state) => {\n return this.getState(state, false);\n });\n\n return ! Arr.has(result, false);\n },\n\n getState(value, exists = true)\n {\n if ( Any.isFunction(value) ) {\n return !! this.solveInput(value);\n }\n\n if ( ! Any.isString(value) ) {\n return !! value;\n }\n\n if ( ! value.match(/(\\$scope|\\$model|\\$global)/) ) {\n return !! value;\n }\n\n let sources = {\n $scope: this.scope, $model: this.tempValue, $extra: this.sempValue, $global: window\n };\n\n if ( exists ) {\n return Obj.get(sources, value, undefined) === undefined;\n }\n\n return !! Obj.get(sources, value);\n },\n\n toPropKey(value)\n {\n let splits = value.replace(/^!/, '').split('-');\n\n value = Arr.each(splits, (split) => {\n return Str.ucfirst(split);\n });\n\n return Str.lcfirst(value.join(''));\n },\n\n toEventKey(value)\n {\n if ( ! value.match(/^on/) ) {\n value = 'on-' + value;\n }\n\n let splits = value.split('-');\n\n value = Arr.each(splits, (split) => {\n return Str.ucfirst(split);\n });\n\n return Str.lcfirst(value.join(''));\n },\n\n solveInput(cb, fallback)\n {\n return cb.call(this.scope, this.tempValue, fallback);\n },\n\n solveContext(cb)\n {\n if ( ! Any.isFunction(cb) ) {\n return () => console.error('Raw suffix (!) only allowed on functions');\n }\n\n return (...args) => cb.call(this.scope, ...args);\n },\n\n getProp(key, value)\n {\n if ( key.match(/^!/) ) {\n return this.solveContext(value);\n }\n\n if ( Any.isFunction(value) ) {\n return this.solveInput(value);\n }\n\n if ( ! Any.isString(value) ) {\n return value;\n }\n\n if ( ! value.match(/(\\$scope|\\$model|\\$global)/) ) {\n return value;\n }\n\n let sources = {\n $scope: this.scope, $model: this.tempValue, $extra: this.sempValue, $global: window\n };\n\n let result = Obj.get(sources, value.replace(/^!+/, ''));\n\n if ( value.match(/^!!\\$/) ) {\n result = Any.isEmpty(result);\n }\n\n if ( value.match(/^!\\$/) ) {\n result = Any.isEmpty(result);\n }\n\n return result;\n },\n\n getInput(prop, fallback)\n {\n if ( Any.isFunction(prop) ) {\n return this.solveInput(prop, fallback);\n }\n\n let sources = {\n $scope: this.scope, $model: this.tempValue, $extra: this.sempValue, $global: window\n };\n\n if ( ! Any.isNull(fallback) && Obj.get(sources, prop, -1337) === -1337 ) {\n Obj.set(sources, prop, fallback);\n }\n\n return Obj.get(sources, prop);\n },\n\n setInput(prop, value)\n {\n if ( Any.isFunction(prop) ) {\n return console.error('NConfigNew: Bind with function is not allowed!');\n }\n\n let sources = {\n $scope: this.scope, $model: this.tempValue, $extra: this.sempValue, $global: window\n };\n\n Obj.set(sources, prop, value);\n }\n\n },\n\n renderSetup(setup, alias)\n {\n if ( ! Any.isPlain(setup) ) {\n return setup;\n }\n\n if ( ! this.propExists(setup['vIf']) ) {\n return null;\n }\n\n if ( ! this.propAwait(setup['vAwait']) ) {\n return null;\n }\n\n let defaults = {\n binds: {}, props: {}, events: {}, content: {}\n };\n\n let defaultsBind = {\n value: '', fallback: null\n };\n\n setup = Obj.assign(defaults, setup);\n\n let binds = {};\n\n Obj.each(setup['binds'], (value, key) => {\n\n if ( Any.isString(value) ) {\n value = { value: value };\n }\n\n binds[key] = Obj.assign(defaultsBind, value);\n });\n\n let events = {};\n\n Obj.each(setup['events'], (value, key) => {\n events[this.toEventKey(key)] = this.solveContext(value);\n });\n\n let props = {};\n\n Obj.each(setup['props'], (value, key) => {\n props[this.toPropKey(key)] = this.getProp(key, value);\n });\n\n props = Obj.assign(props, events);\n\n Obj.each(binds, (value, key) => {\n\n let updateKey = 'onUpdate:' + key;\n\n props[this.toEventKey(updateKey)] = (input) => {\n this.setInput(value.value, input);\n };\n\n props[this.toPropKey(key)] = this.getInput(value.value,\n value.fallback);\n });\n\n let component = alias.replace(/:.*?$/, '');\n\n if ( !Arr.has(['div', 'p'], component) ) {\n component = resolveComponent(component);\n }\n\n if ( Any.isEmpty(component) ) {\n return null;\n }\n\n if ( !this.propExists(setup['vShow']) ) {\n props.style = \"display: none;\";\n }\n\n let render = () => Arr.each(setup.content, (value, key) => {\n return this.ctor('renderSetup')(value, key);\n });\n\n if ( Any.isFunction(setup.content) ) {\n render = () => setup.content.apply(this.scope);\n }\n\n if ( Any.isString(setup.content) ) {\n render = () => setup.content;\n }\n\n return h(component, props, { default: render });\n },\n\n render()\n {\n return Arr.each(this.config, (value, key) => this.ctor('renderSetup')(value, key));\n }\n\n}","import NConfig from \"./src/config/config\";\nimport NConfigNext from \"./src/config/config-next\";\n\nexport default function(App) {\n App.component(NConfig.name, NConfig);\n App.component(NConfigNext.name, NConfigNext);\n}\n","import { Obj } from \"@kizmann/pico-js\";\nimport { h } from \"vue\";\n\nexport default {\n\n name: 'NButton',\n\n props: {\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n link: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n square: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n icon: {\n default()\n {\n return null;\n }\n },\n\n iconPosition: {\n default()\n {\n return 'before';\n },\n type: [String]\n },\n\n nativeType: {\n default()\n {\n return 'button';\n },\n type: [String]\n }\n\n },\n\n renderIcon()\n {\n if ( ! this.icon ) {\n return null;\n }\n\n let classList = [\n 'n-icon', \n 'n-icon--' + this.iconPosition,\n ];\n\n classList.push(this.icon);\n\n return (<i class={classList}></i>);\n },\n\n render()\n {\n let classList = [\n 'n-button',\n 'n-button--' + this.size,\n 'n-button--' + this.type,\n ];\n\n if ( this.icon ) {\n classList.push('n-button--icon');\n }\n\n if ( this.link ) {\n classList.push('n-button--link');\n }\n\n if ( this.square ) {\n classList.push('n-button--square');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = {\n class: classList\n };\n\n if ( this.disabled ) {\n props.disabled = true;\n }\n\n let innerHtml = [];\n\n if ( this.iconPosition === 'before' ) {\n innerHtml.push(this.ctor('renderIcon')());\n }\n\n if ( this.$slots.default && ! this.square ) {\n innerHtml.push(<span>{ this.$slots.default && this.$slots.default() }</span>);\n }\n\n if ( this.iconPosition === 'after' ) {\n innerHtml.push(this.ctor('renderIcon')());\n }\n\n return h(this.nativeType, props, innerHtml);\n }\n\n}\n","export default {\n\n name: 'NButtonGroup',\n\n props: {\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-button-group',\n 'n-button-group--' + this.size\n ]\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n\n}\n","import Button from './src/button/button';\nimport ButtonGroup from './src/button-group/button-group';\n\nexport default function (App) {\n App.component(Button.name, Button);\n App.component(ButtonGroup.name, ButtonGroup);\n}\n","import { Str, Arr, Obj, Any, Locale, Dom, Num } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSelect',\n\n inject: {\n\n NFormItem: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n },\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n lazy: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'bottom-center';\n },\n type: [String]\n },\n\n multiple: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n collapse: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n placeholder: {\n default()\n {\n return Locale.trans('Please select');\n },\n type: [String]\n },\n\n emptyText: {\n default()\n {\n return 'No items';\n },\n type: [String]\n },\n\n undefinedText: {\n default()\n {\n return 'Undefined item';\n },\n type: [String]\n },\n\n collapseText: {\n default()\n {\n return '+:count item|+:count items';\n },\n type: [String]\n },\n\n allowCreate: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Array, Object]\n },\n\n optionsValue: {\n default()\n {\n return '$index';\n },\n type: [String]\n },\n\n optionsLabel: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n optionsDisabled: {\n default()\n {\n return 'null';\n },\n type: [String]\n }\n\n },\n\n computed: {\n\n deepDisabled()\n {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n },\n\n empty()\n {\n return Any.isEmpty(this.tempValue);\n },\n\n custom()\n {\n let result = Arr.filter(this.elements, (element) => {\n\n if ( Any.isArray(this.tempValue) ) {\n return Arr.has(this.tempValue, element.value);\n }\n\n return element.value === this.tempValue;\n });\n\n return result.length === 0;\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n tempClear: this.clearValue,\n focus: false,\n search: '',\n index: - 1,\n elements: [],\n searched: []\n };\n },\n\n\n beforeMount()\n {\n if ( this.lazy ) {\n this.generateOptions();\n }\n\n if ( this.multiple && !Any.isArray(this.tempValue) ) {\n this.tempValue = [];\n }\n\n if ( this.multiple && !Any.isArray(this.clearValue) ) {\n this.tempClear = [];\n }\n\n this.searchOptions();\n },\n\n provide()\n {\n return {\n NSelect: this\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( !this.multiple && Any.isArray(value) ) {\n value = null;\n }\n\n if ( this.multiple && !Any.isArray(value) ) {\n value = [];\n }\n\n this.tempValue = value;\n },\n\n search()\n {\n this.searchOptions();\n },\n\n focus()\n {\n this.$nextTick(this.scrollToClosest);\n },\n\n },\n\n methods: {\n\n clear(event = null)\n {\n if ( event ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.focusInput();\n\n this.$emit('update:modelValue',\n this.tempValue = Arr.clone(this.tempClear));\n },\n\n generateOptions()\n {\n this.elements = Arr.each(this.options, (value, index) => {\n\n let data = {\n $value: value, $index: index\n };\n\n let option = {\n label: Obj.get(data, this.optionsLabel),\n value: Obj.get(data, this.optionsValue)\n };\n\n return Obj.assign(option, {\n tempLabel: option.label, tempValue: option.value\n });\n });\n },\n\n addOption(option)\n {\n Arr.add(this.elements, option,\n { tempValue: option.tempValue });\n },\n\n removeOption(option)\n {\n Arr.remove(this.elements,\n { tempValue: option.tempValue });\n },\n\n resetInput()\n {\n this.index = - 1;\n this.search = '';\n },\n\n focusInput(event = null)\n {\n if ( event ) {\n event.preventDefault();\n }\n\n this.$refs.input.focus();\n },\n\n onFocusInput()\n {\n if ( !this.focus ) {\n this.$refs.popover.open();\n }\n\n clearInterval(this.refresh);\n },\n\n onInputInput(event)\n {\n this.search = event.target.value;\n },\n\n onKeydownInput(event)\n {\n if ( !this.focus ) {\n return this.onFocusInput();\n }\n\n if ( event.which === 13 ) {\n this.createOrToggle();\n }\n\n if ( event.which === 38 ) {\n this.selectPrev();\n }\n\n if ( event.which === 40 ) {\n this.selectNext();\n }\n },\n\n searchOptions()\n {\n this.index = - 1;\n\n if ( Any.isEmpty(this.search) ) {\n return this.searched = this.elements;\n }\n\n let searchRegex = new RegExp(this.search, 'i');\n\n let searched = Arr.filter(this.elements, (option) => {\n return option.label.match(searchRegex);\n });\n\n this.searched = searched;\n },\n\n toggleOption(value, event = null)\n {\n if ( Any.isEmpty(value) ) {\n return;\n }\n\n if ( event && event.which !== 1 ) {\n return;\n }\n\n if ( event ) {\n event.preventDefault();\n }\n\n let tempValue = this.tempValue;\n\n if ( this.multiple ) {\n this.focusInput();\n }\n\n if ( !this.multiple ) {\n tempValue = value;\n }\n\n if ( this.multiple ) {\n Arr.toggle(tempValue, value);\n }\n\n this.$refs.popover.close();\n\n let denyUpdate = this.tempValue === tempValue;\n\n if ( this.multiple && !Any.isArray(this.modelValue) ) {\n denyUpdate = false;\n }\n\n if ( !this.multiple && Any.isArray(this.modelValue) ) {\n denyUpdate = false;\n }\n\n if ( denyUpdate ) {\n return;\n }\n\n this.$emit('update:modelValue',\n this.tempValue = tempValue);\n },\n\n getOptionLabel(value)\n {\n let option = Arr.find(this.elements,\n { tempValue: value });\n\n if ( !option && this.allowCreate ) {\n return value;\n }\n\n if ( !option && !this.allowCreate ) {\n return this.trans(this.undefinedText);\n }\n\n return option.tempLabel;\n },\n\n selectPrev()\n {\n let newIndex = this.index - 1;\n\n if ( newIndex < 0 ) {\n newIndex = this.searched.length - 1;\n }\n\n this.index = newIndex;\n\n this.scrollToCurrent();\n },\n\n selectNext()\n {\n let newIndex = this.index + 1;\n\n if ( newIndex > this.searched.length - 1 ) {\n newIndex = 0;\n }\n\n this.index = newIndex;\n\n this.scrollToCurrent();\n },\n\n createOrToggle()\n {\n if ( this.allowCreate && this.search ) {\n return this.createOption();\n }\n\n let selected = Arr.get(this.searched,\n this.index);\n\n if ( this.searched.length === 1 ) {\n selected = Arr.first(this.searched);\n }\n\n if ( !selected || selected.disabled ) {\n return;\n }\n\n this.toggleOption(selected.tempValue);\n },\n\n createOption()\n {\n this.toggleOption(this.search);\n\n this.search = '';\n },\n\n scrollToCurrent()\n {\n if ( !this.focus ) {\n return;\n }\n\n let selected = Arr.get(this.searched,\n this.index);\n\n if ( !selected ) {\n return;\n }\n\n if ( this.$refs.scrollbar ) {\n this.$refs.scrollbar.scrollIntoView(`[data-option=\"${selected._.uid}\"]`);\n }\n\n if ( this.$refs.virtualbar ) {\n this.$refs.virtualbar.scrollToIndex(this.index);\n }\n },\n\n scrollToClosest()\n {\n if ( !this.focus ) {\n return;\n }\n\n let value = this.tempValue;\n\n if ( Any.isArray(this.tempValue) ) {\n value = Arr.first(this.tempValue);\n }\n\n if ( !value ) {\n return;\n }\n\n let index = Arr.findIndex(this.elements, {\n tempValue: value\n });\n\n if ( !index ) {\n return;\n }\n\n if ( this.$refs.virtualbar ) {\n this.$refs.virtualbar.scrollToIndex(index, 250);\n }\n\n let select = `[data-option=\"${Obj.get(this.elements[index], '_.uid', 0)}\"]`;\n\n if ( this.$refs.scrollbar ) {\n this.$refs.scrollbar.scrollIntoView(select, 250);\n }\n }\n\n },\n\n renderLabelClear()\n {\n if ( !this.clearable || Any.isEmpty(this.tempValue) ) {\n return null;\n }\n\n let props = {};\n\n if ( !this.deepDisabled ) {\n props.onMousedown = this.clear;\n }\n\n return (\n <div class=\"n-select__clear\" {...props}>\n <i class={nano.Icons.times}></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-select__angle\">\n <i class={nano.Icons.angleDown}></i>\n </div>\n );\n },\n\n renderLabelItem(value)\n {\n let classList = [\n 'n-select__item'\n ];\n\n let props = {\n class: nano.Icons.times,\n };\n\n if ( !this.deepDisabled ) {\n props.onMousedown = (event) => this.toggleOption(value, event);\n }\n\n let labelHtml = (\n <span>{this.getOptionLabel(value)}</span>\n );\n\n return (\n <div class={classList}>\n {[labelHtml, <i {...props}></i>]}\n </div>\n );\n },\n\n renderLabelCollapse()\n {\n let first = Arr.first(this.tempValue);\n\n if ( !first ) {\n return null;\n }\n\n let firstHtml = this.ctor('renderLabelItem')(first);\n\n if ( this.tempValue.length === 1 ) {\n return firstHtml;\n }\n\n let count = this.tempValue.length - 1;\n\n let collapseHtml = (\n <div class=\"n-select__item\">\n <span>{this.choice(this.collapseText, count)}</span>\n </div>\n );\n\n return [\n firstHtml, collapseHtml\n ];\n },\n\n renderLabelItems()\n {\n if ( !Any.isArray(this.tempValue) ) {\n return null;\n }\n\n if ( this.collapse ) {\n return this.ctor('renderLabelCollapse')();\n }\n\n return Arr.each(this.tempValue, (value) => {\n return this.ctor('renderLabelItem')(value);\n });\n },\n\n renderMultiple()\n {\n let isEmptyValue = Any.isEmpty(this.tempValue) &&\n !Any.isNumber(this.tempValue);\n\n let props = {\n value: this.search,\n placeholder: this.placeholder,\n disabled: this.deepDisabled,\n onFocus: this.onFocusInput,\n onInput: this.onInputInput,\n onKeydown: this.onKeydownInput\n };\n\n if ( !this.focus ) {\n props.value = null;\n }\n\n if ( !isEmptyValue ) {\n props.placeholder = null;\n }\n\n let inputHtml = (\n <div class=\"n-select__input\">\n <input ref=\"input\" {...props} />\n </div>\n );\n\n return [\n this.ctor('renderLabelClear')(),\n (\n <div class=\"n-select__items\">\n {[this.ctor('renderLabelItems')(), inputHtml]}\n </div>\n ),\n this.ctor('renderLabelAngle')()\n ];\n },\n\n renderSingle()\n {\n let isEmptyValue = Any.isEmpty(this.tempValue) &&\n !Any.isNumber(this.tempValue);\n\n let modelLabel = this.getOptionLabel(\n this.tempValue);\n\n if ( isEmptyValue ) {\n modelLabel = null;\n }\n\n let props = {\n value: this.search,\n placeholder: this.placeholder,\n disabled: this.deepDisabled,\n onFocus: this.onFocusInput,\n onInput: this.onInputInput,\n onKeydown: this.onKeydownInput\n };\n\n if ( !this.search && this.custom ) {\n props.value = this.tempValue;\n }\n\n if ( !this.focus ) {\n props.value = modelLabel;\n }\n\n if ( !isEmptyValue ) {\n props.placeholder = modelLabel;\n }\n\n return [\n this.ctor('renderLabelClear')(),\n (\n <div class=\"n-select__input\">\n <input ref=\"input\" {...props} />\n </div>\n ),\n this.ctor('renderLabelAngle')()\n ];\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-select__display'\n ];\n\n if ( this.multiple ) {\n classList.push('n-multiple');\n }\n\n let displayHtml = this.ctor('renderSingle');\n\n if ( this.multiple ) {\n displayHtml = this.ctor('renderMultiple');\n }\n\n return (\n <div class={classList}>{displayHtml()}</div>\n );\n },\n\n renderItems()\n {\n let emptyHtml = (\n <div class=\"n-select__empty\">\n <NEmptyIcon>{this.trans(this.emptyText)}</NEmptyIcon>\n </div>\n );\n\n if ( !this.searched.length ) {\n return emptyHtml;\n }\n\n if ( this.lazy ) {\n return this.ctor('renderLazyItems')();\n }\n\n let options = Obj.each(this.searched, (option, index) => {\n return option.ctor('renderOption')(index);\n });\n\n let props = {\n relative: true, size: this.size\n }\n\n return (\n <NScrollbar ref=\"scrollbar\" class=\"n-select__body\" {...props}>\n {Obj.values(options)}\n </NScrollbar>\n );\n },\n\n renderLazyOption(value, index)\n {\n let classList = [];\n\n let isMultipleActive = this.multiple &&\n Arr.has(this.tempValue, value.value);\n\n if ( isMultipleActive ) {\n classList.push('n-active');\n }\n\n let isSingleActive = ! this.multiple &&\n this.tempValue === value.value;\n\n if ( isSingleActive ) {\n classList.push('n-active');\n }\n\n if ( this.index === Num.int(index) ) {\n classList.push('n-focus');\n }\n\n let props = {\n 'type': this.type,\n 'clickClose': ! this.multiple,\n };\n\n props['onMousedown'] = (e) => {\n this.toggleOption(value.value, e);\n };\n\n if ( isSingleActive || isMultipleActive ) {\n props.icon = nano.Icons.checked;\n }\n\n return (\n <NPopoverOption class={classList} {...props}>\n {value.label}\n </NPopoverOption>\n );\n },\n\n renderLazyItems()\n {\n let props = {\n items: this.searched\n };\n\n props.renderNode = ({ value, index }) => {\n return this.ctor('renderLazyOption')(value, index);\n };\n\n return (\n <NVirtualscroller ref=\"virtualbar\" class=\"n-select__body n-virtual\" {...props} />\n );\n },\n\n renderPopover()\n {\n let classList = [\n 'n-popover--select'\n ];\n\n if ( this.lazy ) {\n classList.push('n-virtual');\n }\n\n let props = {\n class: classList,\n trigger: 'click',\n width: - 1,\n listen: true,\n size: this.size,\n scrollClose: true,\n disabled: this.deepDisabled,\n onClose: this.resetInput\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n {{ raw: this.ctor('renderItems') }}\n </NPopover>\n );\n },\n\n renderOptions()\n {\n if ( this.lazy ) {\n return null;\n }\n\n if ( Any.isEmpty(this.options) ) {\n return this.$slots.default && this.$slots.default();\n }\n\n let optionRender = ($value, $index) => {\n\n let props = {\n label: Obj.get({ $value, $index }, this.optionsLabel, null),\n value: Obj.get({ $value, $index }, this.optionsValue, null),\n };\n\n return (<NSelectOption {...props}></NSelectOption>);\n };\n\n return Obj.values(Obj.each(this.options, optionRender));\n },\n\n render()\n {\n let classList = [\n 'n-select',\n 'n-select--' + this.type,\n 'n-select--' + this.size,\n ];\n\n let isEmptyValue = Any.isEmpty(this.tempValue) &&\n !Any.isNumber(this.tempValue);\n\n if ( isEmptyValue ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList} onClick={this.focusInput}>\n {this.ctor('renderDisplay')()}\n {this.ctor('renderPopover')()}\n {this.ctor('renderOptions')()}\n </div>\n );\n }\n\n}\n","import { Num, Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSelectOption',\n\n inheritAttrs: false,\n\n inject: {\n\n NSelect: {\n default: undefined\n }\n\n },\n\n props: {\n\n value: {\n default()\n {\n return '';\n }\n },\n\n label: {\n default()\n {\n return null;\n }\n },\n\n valueProp: {\n default()\n {\n return null;\n }\n },\n\n labelProp: {\n default()\n {\n return null;\n }\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n computed: {\n\n tempValue()\n {\n if ( Any.isEmpty(this.valueProp) ) {\n return this.value;\n }\n\n return Obj.get(this.value, this.valueProp);\n },\n\n tempLabel()\n {\n if ( Any.isEmpty(this.labelProp) ) {\n return this.label;\n }\n\n return Obj.get(this.value, this.labelProp);\n }\n\n },\n\n mounted()\n {\n if ( ! this.NSelect.lazy ) {\n this.NSelect.addOption(this);\n }\n },\n\n beforeUnmount()\n {\n if ( ! this.NSelect.lazy ) {\n this.NSelect.removeOption(this);\n }\n },\n\n methods: {\n\n toggleItem(event) \n {\n event.preventDefault();\n\n if ( event.which !== 1 ) {\n return;\n }\n\n if ( this.disabled ) {\n return;\n }\n\n this.NSelect.toggleOption(this.tempValue, \n event);\n },\n\n },\n\n renderOption(index)\n {\n\n let classList = [];\n\n let isMultipleActive = this.NSelect.multiple && \n Arr.has(this.NSelect.tempValue, this.tempValue);\n\n if ( isMultipleActive ) {\n classList.push('n-active');\n }\n\n let isSingleActive = ! this.NSelect.multiple && \n this.NSelect.tempValue === this.tempValue;\n\n if ( isSingleActive ) {\n classList.push('n-active');\n }\n\n if ( this.NSelect.index === Num.int(index) ) {\n classList.push('n-focus');\n }\n\n let props = {\n 'disabled': this.disabled,\n 'onMousedown': this.toggleItem,\n 'type': this.NSelect.type,\n 'clickClose': ! this.NSelect.multiple,\n };\n\n if ( isSingleActive || isMultipleActive ) {\n props.icon = nano.Icons.checked;\n }\n\n // Required for scrolldown\n props['data-option'] = this._.uid;\n\n return (\n <NPopoverOption class={classList} {...props}>\n { this.$slots.default && this.$slots.default() || this.tempLabel }\n </NPopoverOption>\n );\n },\n\n render()\n {\n return null;\n }\n\n}\n","import Vue from \"vue\";\n\nimport Select from './src/select/select';\nimport SelectOption from './src/select-option/select-option';\n\nexport default function (App) {\n App.component(Select.name, Select);\n App.component(SelectOption.name, SelectOption);\n}\n","import { Arr, Obj, Any, UUID } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCheckbox',\n\n inject: {\n\n NCheckboxGroup: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n value: {\n default()\n {\n return null;\n }\n },\n\n allowUncheck: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n intermediate: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n global: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n },\n\n computed: {\n\n tempComputed()\n {\n return ! this.global ? this.tempChecked :\n this.NCheckboxGroup.globalChecked;\n },\n\n tempIntermediate()\n {\n return ! this.global ? this.intermediate :\n this.NCheckboxGroup.globalIntermediate;\n },\n\n tempDisabled()\n {\n return ! this.global ? this.disabled :\n this.NCheckboxGroup.globalDisabled;\n }\n\n },\n\n data()\n {\n return {\n uid: UUID(), tempChecked: this.modelValue\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempChecked ) {\n this.tempChecked = value;\n }\n }\n\n },\n\n beforeMount()\n {\n if ( this.NCheckboxGroup ) {\n this.tempChecked = this.NCheckboxGroup.isChecked(this.value);\n }\n },\n\n mounted()\n {\n if ( ! this.NCheckboxGroup || this.global ) {\n return;\n }\n\n this.$watch('NCheckboxGroup.tempValue', () => {\n this.tempChecked = this.NCheckboxGroup.isChecked(this.value);\n });\n\n this.NCheckboxGroup.addCheckbox(this);\n },\n\n beforeUnmount()\n {\n if ( this.NCheckboxGroup && ! this.global ) {\n this.NCheckboxGroup.removeCheckbox(this);\n }\n },\n\n methods: {\n\n toggle()\n {\n this.$emit('update:modelValue', this.tempChecked = ! this.tempChecked);\n },\n\n check()\n {\n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.checkCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = true);\n },\n\n uncheck()\n {\n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.uncheckCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = false);\n },\n\n eventShiftClick()\n {\n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.shiftCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = true);\n },\n\n eventLocalClick(event)\n {\n let canClick = ! this.tempDisabled || (this.allowUncheck &&\n this.tempChecked);\n\n if ( ! canClick ) {\n return;\n }\n\n event.preventDefault();\n\n if ( event.shiftKey ) {\n return this.eventShiftClick();\n }\n \n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.toggleCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = ! this.tempChecked);\n },\n\n eventGlobalClick()\n {\n let canClick = ! this.tempDisabled || (this.allowUncheck &&\n this.tempChecked);\n\n if ( ! canClick ) {\n return;\n }\n\n this.NCheckboxGroup.toggleAll();\n },\n\n updateFromGroup()\n {\n let checked = this.NCheckboxGroup.isChecked(this.value);\n\n if ( this.tempChecked === checked ) {\n return;\n }\n \n this.$emit('update:modelValue', this.tempChecked = checked);\n }\n\n },\n\n renderCheckbox()\n {\n let interHtml = this.$slots.intermediate &&\n this.$slots.intermediate();\n\n if ( ! interHtml ) {\n interHtml = (<i class={nano.Icons.intermediate}></i>);\n }\n\n let checkHtml = this.$slots.checked &&\n this.$slots.checked();\n\n if ( ! checkHtml ) {\n checkHtml = (<i class={nano.Icons.checked}></i>);\n }\n\n return (\n <div class=\"n-checkbox__checkbox\">\n { this.tempIntermediate ? interHtml : checkHtml }\n </div>\n );\n },\n\n renderLabel()\n {\n if ( ! this.cslo('default') && ! this.cslo('label') ) {\n return null;\n }\n\n return (\n <div class=\"n-checkbox__label\">\n { this.$slots.default() || this.$slots.label() }\n </div>\n );\n },\n\n render()\n {\n let size = this.size;\n\n if ( this.NCheckboxGroup ) {\n size = this.NCheckboxGroup.size;\n }\n\n let classList = [\n 'n-checkbox',\n 'n-checkbox--' + size,\n 'n-checkbox--' + this.type,\n ];\n\n if ( this.allowUncheck ) {\n classList.push('n-uncheck');\n }\n\n if ( this.tempComputed ) {\n classList.push('n-checked');\n }\n\n if ( this.tempIntermediate ) {\n classList.push('n-intermediate');\n }\n\n if ( this.tempDisabled ) {\n classList.push('n-disabled');\n }\n\n if ( this.tempComputed && this.allowUncheck ) {\n Arr.remove(classList, 'n-disabled');\n }\n\n let props = Obj.clone(this.$attrs);\n\n if ( this.global ) {\n props.onMousedown = this.eventGlobalClick;\n }\n\n if ( ! this.global ) {\n props.onMousedown = this.eventLocalClick;\n }\n\n return (\n <div class={classList} {...props}>\n { [this.ctor('renderCheckbox')(), this.ctor('renderLabel')()] }\n </div>\n );\n }\n\n}\n","import { Arr, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCheckboxGroup',\n\n provide()\n {\n return {\n NCheckboxGroup: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'horizontal';\n },\n type: [String]\n }\n\n },\n\n computed: {\n\n globalChecked()\n {\n let checked = Arr.filter(this.elements, (checkbox) => {\n return checkbox.tempChecked;\n });\n\n return checked.length === this.elements.length &&\n this.elements.length !== 0;\n },\n\n globalIntermediate()\n {\n let checked = this.elements.filter((checkbox) => {\n return checkbox.tempChecked;\n });\n\n return checked.length !== this.elements.length &&\n checked.length !== 0 ;\n },\n\n globalDisabled()\n {\n return this.elements.length === 0;\n },\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n index: -1,\n elements: []\n }\n },\n\n watch: {\n\n modelValue()\n {\n if ( this.tempValue = this.modelValue ) {\n this.tempValue = this.modelValue;\n }\n \n },\n\n },\n\n methods: {\n\n addCheckbox(checkbox)\n {\n this.index = -1;\n\n Arr.add(this.elements, checkbox, {\n uid: checkbox.uid\n });\n\n this.elements = Arr.sort(this.elements, 'sort');\n },\n\n removeCheckbox(checkbox)\n {\n this.index = -1;\n \n Arr.remove(this.elements, {\n uid: checkbox.uid\n });\n },\n\n toggleCheckbox(checkbox, emit = true)\n {\n let index = Arr.findIndex(this.elements, {\n uid: checkbox.uid\n });\n\n if ( ! checkbox.tempChecked ) {\n this.index = index;\n }\n\n Arr.toggle(this.tempValue, checkbox.value);\n\n if ( ! emit ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n checkCheckbox(checkbox, emit = true)\n {\n Arr.add(this.tempValue, checkbox.value);\n\n if ( ! emit ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n uncheckCheckbox(checkbox, emit = true)\n {\n Arr.remove(this.tempValue, checkbox.value);\n\n if ( ! emit ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n shiftCheckbox(checkbox)\n {\n if ( this.index === -1 ) {\n return this.toggleCheckbox(checkbox, false);\n }\n\n let index = Arr.findIndex(this.elements, {\n uid: checkbox.uid\n });\n\n let checkboxes = this.elements.slice(this.index, index + 1);\n\n if ( index < this.index ) {\n checkboxes = this.elements.slice(index, this.index + 1);\n }\n\n this.index = -1;\n\n Arr.each(checkboxes, (checkbox) => {\n this.checkCheckbox(checkbox, false);\n });\n\n Arr.each(checkboxes, (checkbox) => {\n checkbox.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n toggleAll()\n {\n this.globalChecked ? this.uncheckAll() : this.checkAll();\n },\n\n checkAll()\n {\n Arr.each(this.elements, (checkbox) => {\n this.checkCheckbox(checkbox, false);\n });\n\n Arr.each(this.elements, (checkbox) => {\n checkbox.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n uncheckAll()\n {\n Arr.each(this.elements, (checkbox) => {\n this.uncheckCheckbox(checkbox, false);\n });\n\n Arr.each(this.elements, (checkbox) => {\n checkbox.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n isChecked(value)\n {\n return Arr.has(this.tempValue, value);\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-checkbox-group',\n 'n-checkbox-group--' + this.size,\n 'n-checkbox-group--' + this.align,\n ];\n\n return (\n <div class={classList}>\n {this.$slots.default()}\n </div>\n );\n }\n\n}\n","import Vue from \"vue\";\n\nimport Checkbox from './src/checkbox/checkbox';\nimport CheckboxGroup from './src/checkbox-group/checkbox-group';\n\nexport default function (App) {\n App.component(Checkbox.name, Checkbox);\n App.component(CheckboxGroup.name, CheckboxGroup);\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NRadio',\n\n model: {\n prop: 'checked'\n },\n\n inject: {\n\n NRadioGroup: {\n default: undefined\n }\n\n },\n\n props: {\n\n value: {\n default()\n {\n return null;\n }\n },\n\n checked: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n },\n\n computed: {\n\n uid()\n {\n return this._.uid;\n }\n\n },\n\n data()\n {\n return {\n tempChecked: this.checked\n };\n },\n\n watch: {\n\n checked()\n {\n if ( this.checked !== this.tempChecked ) {\n this.tempChecked = this.checked;\n }\n }\n\n },\n\n beforeMount()\n {\n if ( this.NRadioGroup ) {\n this.tempChecked = this.NRadioGroup.isChecked(this.value);\n }\n },\n\n mounted()\n {\n if ( this.NRadioGroup ) {\n this.NRadioGroup.addRadio(this);\n }\n },\n\n beforeUnmount()\n {\n if ( this.NRadioGroup ) {\n this.NRadioGroup.removeRadio(this);\n }\n },\n\n methods: {\n\n check()\n {\n if ( this.NRadioGroup ) {\n this.NRadioGroup.checkRadio(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = true);\n },\n\n updateFromGroup()\n {\n let checked = this.NRadioGroup.isChecked(this.value);\n\n if ( this.tempChecked === checked ) {\n return;\n }\n \n this.$emit('update:modelValue', this.tempChecked = checked);\n }\n\n },\n\n renderRadio()\n {\n return (\n <div class=\"n-radio__radio\">\n <span></span>\n </div>\n );\n },\n\n renderLabel()\n {\n if ( ! this.$slots.default && ! this.$slots.label ) {\n return null;\n }\n\n return (\n <div class=\"n-radio__label\">\n { this.$slots.default() || this.$slots.label() }\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-radio',\n 'n-radio--' + this.size,\n 'n-radio--' + this.type,\n ];\n\n if ( this.tempChecked ) {\n classList.push('n-checked');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = Obj.clone(this.$attrs);\n\n if ( ! this.disabled ) {\n props.onMousedown = this.check;\n }\n\n return (\n <div class={classList} {...props}>\n { this.ctor('renderRadio')() }\n { this.ctor('renderLabel')() }\n </div>\n );\n }\n\n}\n","import { Arr, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NRadioGroup',\n\n provide()\n {\n return {\n NRadioGroup: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'horizontal';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n elements: []\n }\n },\n\n watch: {\n\n modelValue()\n {\n if ( this.modelValue !== this.tempValue ) {\n this.tempValue = this.modelValue;\n }\n },\n\n },\n\n methods: {\n\n addRadio(radio)\n {\n Arr.add(this.elements, radio, {\n uid: radio.uid\n });\n },\n\n removeRadio(radio)\n {\n Arr.remove(this.elements, {\n uid: radio.uid\n });\n },\n\n checkRadio(radio)\n {\n this.tempValue = radio.value;\n \n Arr.each(this.elements, (radio) => {\n radio.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n isChecked(value)\n {\n return this.tempValue === value;\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-radio-group',\n 'n-radio-group--' + this.size,\n 'n-radio-group--' + this.align,\n ];\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n\n}\n","import NRadio from './src/radio/radio';\nimport NRadioGroup from './src/radio-group/radio-group';\n\nexport default function (App) {\n App.component(NRadio.name, NRadio);\n App.component(NRadioGroup.name, NRadioGroup);\n}\n","import { Arr, Obj, Any, Str } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCascaderPanel',\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n clearValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n hover: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n trigger: {\n default()\n {\n return 'hover';\n },\n type: [String]\n },\n\n labelProp: {\n default()\n {\n return 'label';\n },\n type: [String]\n },\n\n valueProp: {\n default()\n {\n return 'value';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n disabledProp: {\n default()\n {\n return 'disabled';\n },\n type: [String]\n },\n\n },\n\n computed: {\n\n touch() {\n return !! ('ontouchstart' in window || \n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n tempHover: this.hover,\n };\n },\n\n watch: {\n\n modelValue(value) {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n hover(value) {\n if ( value !== this.tempHover ) {\n this.tempHover = value;\n }\n }\n\n },\n\n methods: {\n\n clearCascader()\n {\n this.$emit('update:modelValue', this.tempHover = \n this.tempValue = this.clearValue);\n },\n\n onHover(cascade)\n {\n return (event) => this.hoverItem(cascade, event)\n },\n\n onSelect(cascade)\n {\n return (event) => this.selectItem(cascade, event)\n },\n\n hoverItem(cascade, event = null)\n {\n // Hover intend emulation\n clearTimeout(this.delay);\n\n let updateHover = () => {\n this.$emit('update:hover', \n this.tempHover = cascade);\n };\n\n this.delay = setTimeout(updateHover, 130);\n },\n\n selectItem(cascade, event = null)\n {\n clearTimeout(this.clickTimer);\n\n if ( ! this.lastclick ) {\n this.lastclick = 0;\n }\n\n this.lastclick++;\n\n let trigger = this.touch ? 'click' : \n this.trigger ;\n \n this.clickTimer = setTimeout(() => \n this.lastclick = 0, 240);\n\n this.hoverTimer = setTimeout(() => \n this.hoverItem(cascade), 240);\n\n if ( this.lastclick === 1 && trigger === 'click' ) {\n return this.hoverItem(cascade, event);\n }\n\n if ( event ) {\n event.preventDefault();\n }\n\n this.clickTimer = setTimeout(() => \n this.fireSelectItem(cascade), 50);\n },\n\n fireSelectItem(cascade)\n {\n clearTimeout(this.hoverTimer);\n\n this.lastclick = 0;\n\n this.$emit('update:modelValue', \n this.tempValue = cascade);\n }\n\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-cascader-panel',\n 'n-cascader-panel--' + this.size\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderLabel')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n )\n },\n\n renderOption(item, cascade = [])\n {\n let value = Obj.get(item, this.valueProp);\n\n let classList = [\n 'n-popover-option'\n ];\n\n if ( Arr.has(this.tempValue, item[this.valueProp]) ) {\n classList.push('n-active');\n }\n\n let disabled = Obj.get(item, this.disabledProp, false);\n\n if ( disabled ) {\n classList.push('n-disabled');\n }\n\n let props = {\n size: this.size,\n type: this.type,\n clickClose: false\n };\n\n if ( Arr.last(this.tempValue) === value ) {\n props.icon = nano.Icons.checked;\n }\n\n let tempCascade = Arr.merge(Arr.clone(cascade), [value]);\n\n if ( this.trigger === 'hover' ) {\n props.onMousemove = Any.framerate(this.onHover(tempCascade), 30);\n }\n\n if ( ! disabled ) {\n props['on' + Str.ucfirst(this.mousedown)] = this.onSelect(tempCascade);\n }\n\n let children = Obj.get(item, this.childProp);\n\n if ( ! props.icon && ! Any.isEmpty(children) ) {\n props.icon = nano.Icons.angleRight;\n }\n\n return (\n <NPopoverOption class={classList} {...props}>\n { Obj.get(item, this.labelProp) }\n </NPopoverOption>\n );\n },\n\n renderOptions(items, cascade = [])\n {\n if ( Any.isEmpty(items) ) {\n return null;\n }\n\n return (\n <div class=\"n-cascader-panel__items\">\n <NScrollbar relative={true}>\n {\n Arr.each(items, (item) => {\n return this.ctor('renderOption')(item, cascade);\n })\n }\n </NScrollbar>\n </div>\n )\n },\n\n renderCascade()\n {\n let renderList = [\n this.ctor('renderOptions')(this.options)\n ];\n\n let items = this.options, cascade = [];\n\n Arr.each(this.tempHover, (value) => {\n\n if ( ! items ) {\n return;\n }\n\n cascade.push(value);\n\n let item = Arr.find(items, {\n [this.valueProp]: value\n });\n\n items = Obj.get(item, this.childProp);\n\n let options = this.ctor('renderOptions')\n (items, cascade);\n\n renderList.push(options);\n });\n\n return renderList;\n },\n\n render()\n {\n let classList = [\n 'n-cascader-panel',\n 'n-cascader-panel--' + this.size\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>{ this.ctor('renderCascade')() }</div>\n );\n }\n\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCascader',\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n clearValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n current: {\n default()\n {\n return null;\n }\n },\n\n placeholder: {\n default()\n {\n return 'Please select';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n trigger: {\n default()\n {\n return 'hover';\n },\n type: [String]\n },\n\n labelProp: {\n default()\n {\n return 'label';\n },\n type: [String]\n },\n\n valueProp: {\n default()\n {\n return 'value';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n disabledProp: {\n default()\n {\n return 'disabled';\n },\n type: [String]\n },\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n tempHover: this.modelValue,\n focus: false,\n };\n },\n\n methods: {\n\n clearCascader()\n {\n this.focus = true;\n\n this.$emit('update:modelValue', \n this.tempValue = this.tempHover = this.clearValue);\n },\n\n onCascaderInput(value)\n {\n this.focus = false;\n\n this.$emit('update:modelValue', \n this.tempValue = value);\n },\n\n onCascaderHover(value)\n {\n this.$emit('update:hover', \n this.tempHover = value);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n },\n\n watch: {\n\n modelValue(value) {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n renderLabelClear()\n {\n if ( ! this.clearable || Any.isEmpty(this.tempValue) ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearCascader;\n }\n\n return (\n <div class=\"n-cascader__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-cascader__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderLabelItems()\n {\n let items = this.options, renderList = [];\n\n if ( Any.isEmpty(this.tempValue) ) {\n return (\n <div class=\"n-cascader__placeholder\">\n { this.trans(this.placeholder) }\n </div>\n );\n }\n\n Arr.each(this.tempValue, (value) => {\n\n if ( ! items ) {\n return;\n }\n\n let item = Arr.find(items, {\n [this.valueProp]: value\n });\n\n items = Obj.get(item, this.childProp);\n\n let itemLabel = (\n <div class=\"n-cascader__item\">\n <span>{ Obj.get(item, this.labelProp) }</span>\n </div>\n );\n\n renderList.push(itemLabel);\n });\n\n return (\n <div class=\"n-cascader__items\">\n { renderList }\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-cascader__display'\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderLabelItems')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderItems()\n {\n let props = Obj.except(this.$props, ['modelValue'], {\n hover: this.tempHover,\n modelValue: this.tempValue,\n });\n\n props['onUpdate:hover'] = this.onCascaderHover;\n props['onUpdate:modelValue'] = this.onCascaderInput;\n\n return (\n <NCascaderPanel class=\"n-cascader__body\" {...props}></NCascaderPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled,\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n { { raw: this.ctor('renderItems') } }\n </NPopover>\n );\n },\n\n render()\n {\n let classList = [\n 'n-cascader',\n 'n-cascader--' + this.type,\n 'n-cascader--' + this.size,\n ];\n\n if ( Any.isEmpty(this.tempValue) ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import CascaderPanel from './src/cascader-panel/cascader-panel';\nimport Cascader from './src/cascader/cascader';\n\nexport default function (App) {\n App.component(CascaderPanel.name, CascaderPanel);\n App.component(Cascader.name, Cascader);\n}","import { Arr, Str, Now, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDatepickerPanel',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n arrive: {\n default()\n {\n return null;\n }\n },\n\n clearArrive: {\n default()\n {\n return null;\n }\n },\n\n depart: {\n default()\n {\n return null;\n }\n },\n\n clearDepart: {\n default()\n {\n return null;\n }\n },\n\n minDate: {\n default()\n {\n return null;\n }\n },\n\n maxDate: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n range: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n monthPanels: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n weekdays: {\n default()\n {\n return [\n 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su',\n ];\n },\n type: [Array]\n },\n\n months: {\n default()\n {\n return [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', \n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',\n ]\n },\n type: [Array]\n }\n\n },\n\n computed: {\n\n yearsGrid()\n {\n return this.tempCache.getYears();\n },\n\n monthsGrid()\n {\n return this.tempCache.getMonths();\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n },\n\n arrive(value)\n {\n if ( value !== this.tempArrive.format(this.format) ) {\n this.tempArrive = Now.make(value);\n }\n },\n\n depart(value)\n {\n if ( value !== this.tempDepart.format(this.format) ) {\n this.tempDepart = Now.make(value);\n }\n },\n\n },\n\n data()\n {\n return {\n tempView: 'date',\n tempRanger: null,\n cacheArrive: null,\n cacheDepart: null,\n tempValue: Now.make(this.modelValue, this.format),\n tempCache: Now.make(this.modelValue, this.format),\n tempArrive: Now.make(this.arrive),\n tempDepart: Now.make(this.depart),\n }\n },\n\n methods: {\n\n gotoDate()\n {\n this.tempView = 'date';\n },\n\n gotoMonth()\n {\n this.tempView = 'month';\n },\n\n gotoYear()\n {\n this.tempView = 'year';\n },\n\n patchDate(now)\n {\n if ( Any.isString(now) ) {\n now = Now.make(now);\n }\n\n if ( Any.isEmpty(this.modelValue) ) {\n now.resetTime();\n } else {\n now.applyTime(this.tempValue);\n }\n\n // Copy now to cache\n this.tempCache = now.clone();\n\n // Copy now to value\n this.tempValue = now.clone();\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n patchMonth(now)\n {\n if ( Any.isString(now) ) {\n now = Now.make(now);\n }\n\n this.tempCache = now.clone();\n\n this.gotoDate();\n },\n\n printRange(now)\n {\n this.tempRanger = now.clone();\n },\n\n patchYear(now)\n {\n if ( Any.isString(now) ) {\n now = Now.make(now);\n }\n\n this.tempCache = now.clone();\n\n this.gotoMonth();\n },\n\n patchRange(now)\n {\n if ( this.cacheArrive && ! this.cacheDepart ) {\n this.cacheDepart = now.clone();\n }\n\n if ( ! this.cacheArrive && ! this.cacheDepart ) {\n this.cacheArrive = now.clone();\n }\n\n if ( ! this.cacheArrive || ! this.cacheDepart ) {\n return;\n }\n\n this.tempArrive = this.cacheArrive.clone();\n this.tempDepart = this.cacheDepart.clone();\n\n this.$emit('update:arrive', \n this.tempArrive.format(this.format));\n\n this.$emit('update:depart', \n this.tempDepart.format(this.format));\n\n this.cacheArrive = null;\n this.cacheDepart = null;\n\n this.$emit('rangeSelected', [\n this.tempArrive.format(this.format),\n this.tempDepart.format(this.format)\n ]);\n },\n\n },\n\n renderToolbarPrev(closure)\n {\n let props = {\n type: this.type,\n link: true,\n icon: nano.Icons.angleLeft,\n onClick: closure\n };\n\n return (<NButton {...props}></NButton>);\n },\n\n renderToolbarNext(closure)\n {\n let props = {\n type: this.type,\n link: true,\n icon: nano.Icons.angleRight,\n onClick: closure\n };\n\n return (<NButton {...props}></NButton>);\n },\n\n renderToolbarMonth()\n {\n let props = {\n onClick: this.gotoMonth\n };\n\n let monthsHtml = [\n this.months[this.tempCache.month()]\n ];\n\n let month = this.tempCache.clone()\n .addMonths(this.monthPanels - 1);\n\n if ( month.month() !== this.tempCache.month() ) {\n monthsHtml.push(this.months[month.month()]);\n }\n\n return (\n <span class=\"n-datepicker-panel__month\" {...props}>\n { monthsHtml.join(' - ') }\n </span>\n );\n },\n\n renderToolbarYear()\n {\n let props = {\n onClick: this.gotoYear\n };\n\n let yearsHtml = [\n this.tempCache.year()\n ];\n\n let month = this.tempCache.clone()\n .addMonths(this.monthPanels - 1);\n\n if ( month.year() !== this.tempCache.year() ) {\n yearsHtml.push(month.year());\n }\n\n return (\n <span class=\"n-datepicker-panel__year\" {...props}>\n { yearsHtml.join(' - ') }\n </span>\n );\n },\n\n renderToolbar({ prev, next })\n {\n return (\n <div class=\"n-datepicker-panel__toolbar\">\n <div class=\"n-datepicker-panel__display\">\n { this.ctor('renderToolbarMonth')() }\n { this.ctor('renderToolbarYear')() }\n </div>\n <div class=\"n-datepicker-panel__prev\">\n { this.ctor('renderToolbarPrev')(prev) }\n </div>\n <div class=\"n-datepicker-panel__next\">\n { this.ctor('renderToolbarNext')(next) }\n </div>\n </div>\n );\n },\n\n renderDateItem(now, month)\n {\n let classList = [\n 'n-datepicker-panel__day'\n ];\n\n if ( now.equalDate() ) {\n classList.push('n-today');\n }\n\n let isSelected = this.tempValue.valid() && \n now.equalDate(this.tempValue);\n\n if ( isSelected ) {\n classList.push('n-selected');\n }\n\n if ( now.month() === month.month() ) {\n classList.push('n-current');\n }\n\n let isNotBeforeMin = ! this.minDate || \n now.after(this.minDate) || now.equalDate(this.minDate);\n\n let isNotAfterMax = ! this.maxDate || \n now.before(this.maxDate) || now.equalDate(this.maxDate);\n\n if ( ! isNotBeforeMin || ! isNotAfterMax ) {\n classList.push('n-disabled');\n }\n\n let props = {};\n\n if ( isNotBeforeMin && isNotAfterMax ) {\n props.onClick = () => this.patchDate(now);\n }\n\n return (\n <div class={classList} {...props}>\n <span>{ now.format('DD') }</span>\n </div>\n );\n },\n\n renderRangeDateItem(now, month)\n {\n let classList = [\n 'n-datepicker-panel__day'\n ];\n\n if ( now.equalDate('now') ) {\n classList.push('n-today');\n }\n\n if ( now.month() === month.month() ) {\n classList.push('n-current');\n }\n\n let viewMode = 0;\n\n if ( !! this.cacheArrive ) {\n viewMode++;\n }\n\n if ( !! this.cacheDepart ) {\n viewMode++;\n }\n\n let isTempValid = this.tempArrive.valid() && \n this.tempDepart.valid();\n\n if ( viewMode === 0 && isTempValid ) {\n\n if ( now.between(this.tempArrive, this.tempDepart) ) {\n classList.push('n-between');\n classList.push('n-selected');\n }\n\n let arriveFirst = this.tempArrive.before(this.tempDepart);\n\n if ( now.equalDate(this.tempArrive) ) {\n classList.push(arriveFirst ? 'n-arrive' : 'n-depart');\n classList.push('n-selected');\n }\n\n if ( now.equalDate(this.tempDepart) ) {\n classList.push(arriveFirst ? 'n-depart' : 'n-arrive');\n classList.push('n-selected');\n }\n\n }\n\n if ( viewMode === 1 && this.cacheArrive ) {\n\n if ( now.between(this.cacheArrive, this.tempRanger) ) {\n classList.push('n-between');\n }\n\n let arriveFirst = this.cacheArrive.before(this.tempRanger);\n\n if ( now.equalDate(this.cacheArrive) ) {\n classList.push(arriveFirst ? 'n-arrive' : 'n-depart');\n }\n\n if ( now.equalDate(this.tempRanger) ) {\n classList.push(arriveFirst ? 'n-depart' : 'n-arrive');\n }\n\n }\n\n let isNotBeforeMin = ! this.minDate || \n now.after(this.minDate) || now.equalDate(this.minDate);\n\n let isNotAfterMax = ! this.maxDate || \n now.before(this.maxDate) || now.equalDate(this.maxDate);\n\n if ( ! isNotBeforeMin || ! isNotAfterMax ) {\n classList.push('n-disabled');\n }\n\n let props = {\n onMouseenter: () => this.printRange(now)\n };\n\n if ( isNotBeforeMin && isNotAfterMax ) {\n props.onClick = () => this.patchRange(now);\n }\n\n return (\n <div class={classList} {...props}>\n <span>{ now.format('DD') }</span>\n </div>\n );\n },\n\n renderDate()\n {\n let prev = () => {\n this.tempCache = this.tempCache.prevMonth();\n };\n let next = () => {\n this.tempCache = this.tempCache.nextMonth();\n };\n\n let legendHtml = (\n Arr.each(this.weekdays, (day) => {\n return (\n <div class=\"n-datepicker-panel__day\">\n <span>{ this.trans(day) }</span>\n </div>\n );\n })\n );\n\n let renderItem = this.ctor('renderDateItem');\n\n if ( this.range ) {\n renderItem = this.ctor('renderRangeDateItem');\n }\n\n let bodyHtml = (month) => (\n Arr.each(Arr.chunk(month.getDatesGrid(), 7), (chunks) => {\n return (\n <div class=\"n-datepicker-panel__week\">\n { Arr.each(chunks, (chunk) => renderItem(chunk, month)) }\n </div>\n );\n })\n );\n\n let panelHtml = (\n Arr.each(Arr.make(this.monthPanels), (offset) => {\n\n let month = this.tempCache.clone()\n .addMonths(offset - 1);\n\n return (\n <div class=\"n-datepicker-panel__panel\">\n <div class=\"n-datepicker-panel__legend\">\n { legendHtml }\n </div>\n <div class=\"n-datepicker-panel__body\">\n { bodyHtml(month) }\n </div>\n </div>\n );\n })\n );\n\n return (\n <div class=\"n-datepicker-panel__dateview\">\n <div class=\"n-datepicker-panel__header\">\n { this.ctor('renderToolbar')({ prev, next }) }\n </div>\n <div class=\"n-datepicker-panel__panels\">\n { panelHtml }\n </div>\n </div>\n );\n },\n\n renderMonthItem(now)\n {\n let classList = [\n 'n-datepicker-panel__month'\n ];\n\n if ( now.equal(this.tempCache, 'YYYYMM') ) {\n classList.push('n-selected');\n }\n\n if ( now.month() === Now.make('now').month() ) {\n classList.push('n-current');\n }\n\n let props = {\n onClick: () => this.patchMonth(now)\n };\n\n return (\n <div class={classList} {...props}>\n <span>{ this.trans(this.months[now.month()]) }</span>\n </div>\n )\n },\n\n renderMonth()\n {\n let prev = () => {\n this.tempCache = this.tempCache.prevYear();\n };\n\n let next = () => {\n this.tempCache = this.tempCache.nextYear();\n };\n\n return (\n <div class=\"n-datepicker-panel__monthview\">\n <div class=\"n-datepicker-panel__header\">\n { this.ctor('renderToolbar')({ prev, next }) }\n </div>\n <div class=\"n-datepicker-panel__body\">\n <div class=\"n-datepicker-panel__year\">\n { Arr.each(this.monthsGrid, this.ctor('renderMonthItem')) }\n </div>\n </div>\n <div class=\"n-datepicker-panel__footer\">\n <NButton size={this.type} size={this.size} link={true} onClick={this.gotoDate}>\n { this.trans('Go back') }\n </NButton>\n </div>\n </div>\n );\n },\n\n renderYearItem(now)\n {\n let classList = [\n 'n-datepicker-panel__year'\n ];\n\n if ( now.equal(this.tempCache, 'YYYY') ) {\n classList.push('n-selected');\n }\n\n if ( now.year() === Now.make('now').year() ) {\n classList.push('n-current');\n }\n\n let props = {\n onClick: () => this.patchYear(now)\n };\n\n return (\n <div class={classList} {...props}>\n <span>{ now.year() }</span>\n </div>\n )\n },\n\n renderYear()\n {\n let prev = () => {\n this.tempCache = this.tempCache.prevDecade();\n };\n\n let next = () => {\n this.tempCache = this.tempCache.nextDecade();\n };\n\n return (\n <div class=\"n-datepicker-panel__yearview\">\n <div class=\"n-datepicker-panel__header\">\n { this.ctor('renderToolbar')({ prev, next }) }\n </div>\n <div class=\"n-datepicker-panel__body\">\n <div class=\"n-datepicker-panel__decade\">\n { Arr.each(this.yearsGrid, this.ctor('renderYearItem')) }\n </div>\n </div>\n <div class=\"n-datepicker-panel__footer\">\n <NButton size={this.type} size={this.size} link={true} onClick={this.gotoDate}>\n { this.trans('Go back') }\n </NButton>\n </div>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-datepicker-panel',\n 'n-datepicker-panel--' + this.size,\n 'n-datepicker-panel--' + this.type\n ]\n\n return (\n <div class={classList}>\n { this.ctor('render' + Str.ucfirst(this.tempView))() }\n </div>\n );\n }\n\n}","import { Obj, Now, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDatepicker',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n arrive: {\n default()\n {\n return null;\n }\n },\n\n clearArrive: {\n default()\n {\n return null;\n }\n },\n\n depart: {\n default()\n {\n return null;\n }\n },\n\n clearDepart: {\n default()\n {\n return null;\n }\n },\n\n minDate: {\n default()\n {\n return null;\n }\n },\n\n maxDate: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n placeholder: {\n default()\n {\n return Locale.trans('Select date');\n },\n type: [String]\n },\n\n placeholderArrive: {\n default()\n {\n return Locale.trans('Start date');\n },\n type: [String]\n },\n\n placeholderDepart: {\n default()\n {\n return Locale.trans('End date');\n },\n type: [String]\n },\n\n range: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n rangeSeparator: {\n default()\n {\n return '-';\n },\n type: [String]\n },\n\n monthPanels: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n boundary: {\n default()\n {\n return null;\n }\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return Locale.trans('YYYY-MM-DD');\n },\n type: [String]\n },\n\n weekdays: {\n default()\n {\n return [\n Locale.trans('Mo'),\n Locale.trans('Tu'),\n Locale.trans('We'),\n Locale.trans('Th'),\n Locale.trans('Fr'),\n Locale.trans('Sa'),\n Locale.trans('Su'),\n ];\n },\n type: [Array]\n },\n\n months: {\n default()\n {\n return [\n Locale.trans('Jan'),\n Locale.trans('Feb'),\n Locale.trans('Mar'),\n Locale.trans('Apr'),\n Locale.trans('May'),\n Locale.trans('Jun'),\n Locale.trans('Jul'),\n Locale.trans('Aug'),\n Locale.trans('Sep'),\n Locale.trans('Oct'),\n Locale.trans('Nov'),\n Locale.trans('Dec'),\n ];\n },\n type: [Array]\n }\n\n },\n\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n },\n\n arrive(value)\n {\n if ( value !== this.tempArrive.format(this.format) ) {\n this.tempArrive = Now.make(value);\n }\n },\n\n depart(value)\n {\n if ( value !== this.tempDepart.format(this.format) ) {\n this.tempDepart = Now.make(value);\n }\n },\n\n },\n\n data()\n {\n return {\n focus: false,\n tempValue: Now.make(this.modelValue, this.format),\n tempArrive: Now.make(this.arrive, this.format),\n tempDepart: Now.make(this.depart, this.format),\n };\n },\n\n methods: {\n\n clearDatepicker()\n {\n this.range ? this.clearRangeDatepicker() :\n this.clearSingleDatepicker();\n },\n\n clearSingleDatepicker()\n {\n this.tempValue = Now.make(this.clearValue, \n this.format);\n\n this.$emit('update:modelValue', this.clearValue);\n },\n\n\n clearRangeDatepicker()\n {\n this.tempArrive = Now.make(this.clearArrive, \n this.format);\n\n this.$emit('update:arrive', this.clearValue);\n\n this.tempDepart = Now.make(this.clearDepart, \n this.format);\n\n this.$emit('update:depart', this.clearDepart);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n onValueInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n });\n\n this.tempValue = Now.make(moment);\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n onArriveInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n });\n\n this.tempArrive = Now.make(moment);\n\n this.$emit('update:arrive', \n this.tempArrive.format(this.format));\n },\n\n onDepartInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n });\n\n this.tempDepart = Now.make(moment);\n\n this.$emit('update:depart', \n this.tempDepart.format(this.format));\n },\n\n onDatepickerInput(value)\n {\n this.focus = false;\n\n this.tempValue = Now.make(value, \n this.format);\n\n this.$emit('update:modelValue', value);\n },\n\n onDatepickerDepart(value)\n {\n this.focus = false;\n\n this.tempDepart = Now.make(value, \n this.format);\n\n this.$emit('update:depart', value);\n },\n\n onDatepickerArrive(value)\n {\n this.focus = false;\n\n this.tempArrive = Now.make(value, \n this.format);\n\n this.$emit('update:arrive', value);\n },\n\n },\n\n\n renderLabelClear()\n {\n let isEmpty = ! this.tempArrive.initialDate &&\n ! this.tempDepart.initialDate;\n\n if ( ! this.range ) {\n isEmpty = ! this.tempValue.initialDate;\n }\n\n if ( ! this.clearable || isEmpty ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearDatepicker;\n }\n\n return (\n <div class=\"n-datepicker__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-datepicker__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderRange()\n {\n let arriveProps = {\n value: '',\n disabled: this.disabled,\n placeholder: this.placeholderArrive,\n onInput: this.onArriveInput,\n };\n\n if ( this.tempArrive.valid() ) {\n arriveProps.value = this.tempArrive.format(\n this.displayFormat, true);\n }\n\n let departProps = {\n value: '',\n disabled: this.disabled,\n placeholder: this.placeholderDepart,\n onInput: this.onDepartInput,\n };\n\n if ( this.tempDepart.valid() ) {\n departProps.value = this.tempDepart.format(\n this.displayFormat, true);\n }\n\n return [\n (\n <div class=\"n-datepicker__input\">\n <input {...arriveProps}/>\n </div>\n ),\n (\n <div class=\"n-datepicker__seperator\">\n <span>{ this.rangeSeparator }</span>\n </div>\n ),\n (\n <div class=\"n-datepicker__input\">\n <input {...departProps}/>\n </div>\n )\n ];\n },\n\n renderSingle()\n {\n let props = {\n value: '',\n disabled: this.disabled,\n placeholder: this.placeholder,\n onInput: this.onValueInput,\n };\n\n if ( this.tempValue.valid() ) {\n props.value = this.tempValue.format(\n this.displayFormat, true);\n }\n\n return (\n <div class=\"n-datepicker__input\">\n <input {...props}/>\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-datepicker__display'\n ];\n\n if ( this.range ) {\n classList.push('n-range');\n }\n\n let displayHtml = this.ctor('renderSingle');\n\n if ( this.range ) {\n displayHtml = this.ctor('renderRange');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { displayHtml() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderItems()\n {\n \n let props = Obj.except(this.$props, ['modelValue'], {\n arrive: this.tempArrive.format(this.format) || null,\n depart: this.tempDepart.format(this.format) || null,\n modelValue: this.tempValue.format(this.format) || null,\n });\n\n props['onUpdate:arrive'] = this.onDatepickerArrive;\n props['onUpdate:depart'] = this.onDatepickerDepart;\n props['onUpdate:modelValue'] = this.onDatepickerInput;\n\n return (\n <NDatepickerPanel class=\"n-datepicker__body\" {...props}></NDatepickerPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n { { raw: this.ctor('renderItems') } }\n </NPopover>\n );\n },\n\n render()\n {\n let classList = [\n 'n-datepicker',\n 'n-datepicker--' + this.type,\n 'n-datepicker--' + this.size,\n ];\n\n let isEmpty = ! this.tempArrive.initialDate &&\n ! this.tempDepart.initialDate;\n\n if ( ! this.range ) {\n isEmpty = ! this.tempValue.initialDate;\n }\n\n if ( isEmpty ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import DatepickerPanel from \"./src/datepicker-panel/datepicker-panel\";\nimport Datepicker from \"./src/datepicker/datepicker\";\n\nexport default function (App) {\n App.component(DatepickerPanel.name, DatepickerPanel);\n App.component(Datepicker.name, Datepicker);\n}","import { Arr, Obj, Now, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTimepickerPanel',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n placeholder: {\n default()\n {\n return 'Select time';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n }\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return 'HH:mm:ss';\n },\n type: [String]\n },\n\n hoursInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n minutesInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n secondsInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n }\n\n },\n\n computed: {\n\n hoursGrid()\n {\n return this.tempValue.getHours(this.hoursInterval);\n },\n\n minutesGrid()\n {\n return this.tempValue.getMinutes(this.minutesInterval);\n },\n\n secondsGrid()\n {\n return this.tempValue.getSeconds(this.secondsInterval);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n }\n\n },\n\n data()\n {\n let modelValue = Now.make(this.modelValue);\n\n if ( Any.isEmpty(this.modelValue) ) {\n modelValue = modelValue.resetTime();\n }\n\n return {\n tempValue: modelValue,\n }\n },\n\n mounted()\n {\n this.scrollTo();\n },\n\n methods: {\n\n eventSelect(now)\n {\n this.$emit('update:modelValue',\n (this.tempValue = now.clone()).format(this.format));\n },\n\n scrollTo()\n {\n let scrollbars = Obj.only(this.$refs, [\n 'hour', 'minute', 'second'\n ]);\n\n Arr.each(scrollbars, (ref, key) => {\n ref.scrollIntoView(`[data-index=\"${this.tempValue[key]()}\"]`);\n });\n }\n\n },\n\n renderToolbar()\n {\n return (\n <div class=\"n-timepicker-panel__toolbar\">\n <div class=\"n-timepicker-panel__display\">\n <span class=\"n-timepicker-panel__time\">\n {this.tempValue.format(this.displayFormat) || this.placeholder}\n </span>\n </div>\n </div>\n )\n },\n\n renderHourItem(now)\n {\n let classList = [\n 'n-timepicker-panel__item'\n ];\n\n if ( this.tempValue.valid() && now.hour() === this.tempValue.hour() ) {\n classList.push('n-selected');\n }\n\n let props = {\n onMousedown: () => this.eventSelect(now)\n };\n\n return (\n <div class={classList} {...props} data-index={now.hour()}>\n <span>{now.format('HH')}</span>\n </div>\n );\n },\n\n renderHourPanel()\n {\n if ( !this.displayFormat.match('HH') ) {\n return null;\n }\n\n return (\n <NScrollbar ref=\"hour\" class=\"n-timepicker-panel__panel\" wrapClass=\"n-timepicker-panel__wrap\">\n {Arr.each(this.hoursGrid, this.ctor('renderHourItem'))}\n </NScrollbar>\n );\n },\n\n renderMinuteItem(now)\n {\n let classList = [\n 'n-timepicker-panel__item'\n ];\n\n if ( this.tempValue.valid() && now.minute() === this.tempValue.minute() ) {\n classList.push('n-selected');\n }\n\n let props = {\n onMousedown: () => this.eventSelect(now)\n };\n\n return (\n <div class={classList} {...props} data-index={now.minute()}>\n <span>{now.format('mm')}</span>\n </div>\n );\n },\n\n renderMinutePanel()\n {\n if ( !this.displayFormat.match('mm') ) {\n return null;\n }\n\n return (\n <NScrollbar ref=\"minute\" class=\"n-timepicker-panel__panel\" wrapClass=\"n-timepicker-panel__wrap\">\n {Arr.each(this.minutesGrid, this.ctor('renderMinuteItem'))}\n </NScrollbar>\n );\n },\n\n renderSecondItem(now)\n {\n let classList = [\n 'n-timepicker-panel__item'\n ];\n\n if ( this.tempValue.valid() && now.second() === this.tempValue.second() ) {\n classList.push('n-selected');\n }\n\n let props = {\n onMousedown: () => this.eventSelect(now)\n };\n\n return (\n <div class={classList} {...props} data-index={now.second()}>\n <span>{now.format('ss')}</span>\n </div>\n );\n },\n\n renderSecondPanel()\n {\n if ( !this.displayFormat.match('ss') ) {\n return null;\n }\n\n return (\n <NScrollbar ref=\"second\" class=\"n-timepicker-panel__panel\" wrapClass=\"n-timepicker-panel__wrap\">\n {Arr.each(this.secondsGrid, this.ctor('renderSecondItem'))}\n </NScrollbar>\n );\n },\n\n render()\n {\n let classList = [\n 'n-timepicker-panel',\n 'n-timepicker-panel--' + this.size,\n 'n-timepicker-panel--' + this.type,\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n <div class=\"n-timepicker-panel__header\">\n {this.ctor('renderToolbar')()}\n </div>\n <div class=\"n-timepicker-panel__body\">\n {this.ctor('renderHourPanel')()}\n {this.ctor('renderMinutePanel')()}\n {this.ctor('renderSecondPanel')()}\n </div>\n </div>\n );\n }\n\n}","import { Arr, Obj, Now, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTimepicker',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n placeholder: {\n default()\n {\n return 'Select time';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return Locale.trans('HH:mm:ss');\n },\n type: [String]\n },\n\n hoursInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n minutesInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n secondsInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n }\n\n },\n\n computed: {\n\n hoursGrid()\n {\n return this.tempValue.getHours(this.hoursInterval);\n },\n\n minutesGrid()\n {\n return this.tempValue.getMinutes(this.minutesInterval);\n },\n\n secondsGrid()\n {\n return this.tempValue.getSeconds(this.secondsInterval);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n }\n\n },\n\n data()\n {\n return {\n focus: false,\n tempValue: Now.make(this.modelValue),\n }\n },\n\n methods: {\n\n clearTimepicker()\n {\n this.tempValue = Now.make(this.clearValue, \n this.format);\n\n this.$emit('update:modelValue', this.clearValue);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n onValueInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n hour: value.moment.hour(), \n minute: value.moment.minute(), \n second: value.moment.second(),\n });\n\n this.tempValue = Now.make(moment);\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n onTimepickerInput(value)\n {\n this.tempValue = Now.make(value, \n this.format);\n\n this.$emit('update:modelValue', value);\n },\n\n },\n\n renderLabelClear()\n {\n if ( ! this.clearable || ! this.tempValue.valid() ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearTimepicker;\n }\n\n return (\n <div class=\"n-timepicker__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-timepicker__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderSingle()\n {\n let props = {\n value: '',\n disabled: this.disabled,\n placeholder: this.trans(this.placeholder),\n onInput: this.onValueInput,\n };\n\n if ( this.tempValue.valid() ) {\n props.value = this.tempValue.format(\n this.displayFormat, true);\n }\n\n return (\n <div class=\"n-timepicker__input\">\n <input {...props}/>\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-timepicker__display'\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderSingle')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderPanel()\n {\n \n let props = Obj.except(this.$props, ['modelValue'], {\n modelValue: this.tempValue.format(this.format) || null,\n });\n\n props['onUpdate:modelValue'] = this.onTimepickerInput;\n\n return (\n <NTimepickerPanel class=\"n-timepicker__body\" {...props}></NTimepickerPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n { { raw: this.ctor('renderPanel') } }\n </NPopover>\n );\n },\n\n render()\n {\n let classList = [\n 'n-timepicker',\n 'n-timepicker--' + this.type,\n 'n-timepicker--' + this.size,\n ];\n\n if ( ! this.tempValue.valid() ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import TimepickerPanel from \"./src/timepicker-panel/timepicker-panel\";\nimport Timepicker from \"./src/timepicker/timepicker\";\n\nexport default function (App) {\n App.component(TimepickerPanel.name, TimepickerPanel);\n App.component(Timepicker.name, Timepicker);\n}","import { Arr, Dom, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTabs',\n\n provide()\n {\n return {\n NTabs: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n relative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n init: false,\n elements: [], \n width: 0, \n offset: 0, \n tempValue: this.modelValue\n };\n },\n\n methods: {\n\n addTab(tab)\n {\n Arr.add(this.elements, tab, \n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n removeTab(tab)\n {\n Arr.remove(this.elements, \n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n getTab(updateEvent = true)\n {\n let currentTab = Arr.find(this.elements, {\n name: this.modelValue\n });\n\n let sorted = Arr.sort(this.elements, 'sort');\n\n if ( ! currentTab ) {\n currentTab = Arr.first(sorted);\n }\n\n let repeatNext = () => this.getTab(updateEvent);\n\n if ( ! currentTab ) {\n return Any.delay(repeatNext, 250);\n }\n\n if ( currentTab.name === this.tempValue || ! updateEvent ) {\n return;\n }\n\n this.$emit('update:modelValue', \n this.tempValue = currentTab.name);\n },\n\n changeTab(value)\n {\n if ( this.tempValue === value ) {\n return;\n }\n\n this.$emit('update:modelValue', \n this.tempValue = value);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n mounted()\n {\n this.init = true;\n this.getTab(false);\n },\n\n updated()\n {\n let width = Dom.find(this.$el).find('.n-active')\n .width();\n\n this.width = width < 0 ? 0 : width;\n\n let offset = Dom.find(this.$el).find('.n-active')\n .offset('left', this.$el);\n\n this.offset = offset < 0 ? 0 : offset;\n },\n\n renderHeaderIndicator()\n {\n let transform = `scaleX(${this.width / 100}) ` + \n `translateX(${this.offset / (this.width / 100)}px)`;\n\n return (\n <div class=\"n-tabs__indicator\" style={{ transform }}>\n { /* Indicator bar */ }\n </div>\n );\n },\n\n renderHeader()\n {\n if ( this.elements.length <= 1 ) {\n return null;\n }\n\n // FIXME: As soon vue doesnt bug\n let sorted = Arr.sort(this.elements, 'sort');\n \n let tabs = Arr.each(Arr.make(sorted.length), (tab, index) => {\n return sorted[index].ctor('renderHeader')();\n });\n\n return (\n <div class=\"n-tabs__header\">\n {[tabs, this.ctor('renderHeaderIndicator')()]}\n </div>\n );\n },\n\n renderBody()\n {\n return (\n <div class=\"n-tabs__body\">\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-tabs', \n 'n-tabs--' + this.size, \n 'n-tabs--' + this.type\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderHeader')() }\n { this.ctor('renderBody')() }\n </div>\n );\n }\n}\n","import { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NTabsItem',\n\n inject: {\n\n NTabs: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return {\n NTabsItem: this\n };\n },\n\n props: {\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n name: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n sort: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n relative: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n preload: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n keep: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n\n },\n\n methods: {\n\n changeTab()\n {\n this.NTabs.changeTab(this.name);\n }\n\n },\n\n data()\n {\n return {\n _key: null, init: false\n }\n },\n\n beforeMount()\n {\n this.NTabs.addTab(this);\n },\n\n beforeUnmount()\n {\n this.NTabs.removeTab(this);\n },\n\n renderHeaderIcon()\n {\n if ( ! this.$slots.icon && ! this.icon ) {\n return null;\n }\n\n return (\n <div class=\"n-tabs__tab-icon\">\n { this.$slots.icon && this.$slots.icon() || <i class={this.icon}></i> }\n </div>\n );\n },\n\n renderHeaderLabel()\n {\n return (\n <div class=\"n-tabs__tab-label\">\n { this.$slots.label && this.$slots.label () || <span>{this.label}</span> }\n </div>\n );\n },\n\n renderHeader()\n {\n let classList = [\n 'n-tabs__tab'\n ];\n\n if ( this.NTabs.tempValue === this.name ) {\n classList.push('n-active');\n }\n\n let props = {\n onClick: () => this.changeTab(this.name)\n };\n\n return (\n <div class={classList} {...props}>\n { this.ctor('renderHeaderIcon')() }\n { this.ctor('renderHeaderLabel')() }\n </div>\n );\n },\n\n render()\n {\n let renderBody = this.NTabs.tempValue === this.name;\n\n if ( this.NTabs.tempValue !== this.name && this.keep ) {\n renderBody = this.init;\n }\n\n if ( this.NTabs.tempValue !== this.name && this.preload ) {\n renderBody = true;\n }\n\n if ( ! renderBody ) {\n return null;\n }\n\n this.init = true;\n\n let classList = [\n 'n-tabs-item'\n ];\n\n let style = {};\n\n if ( this.NTabs.tempValue !== this.name ) {\n style.display = 'none';\n }\n\n if ( this.$slots.raw ) {\n return this.$slots.raw({ style });\n }\n\n let element = 'div';\n\n if ( ! this.relative && ! this.NTabs.relative ) {\n element = resolveComponent('NScrollbar');\n }\n\n return h(element, { class: classList, style }, this.$slots);\n }\n}\n","import Tabs from './src/tabs/tabs';\nimport TabsItem from './src/tabs-item/tabs-item';\n\nexport default function (App) {\n App.component(Tabs.name, Tabs);\n App.component(TabsItem.name, TabsItem);\n}","import { Arr, Dom, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTags',\n\n provide()\n {\n return {\n NTags: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n tags: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n init: false, elements: [], tempValue: this.modelValue\n };\n },\n\n methods: {\n\n addTag(tab)\n {\n Arr.add(this.elements, tab,\n { label: tab.label });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n removeTag(tab)\n {\n Arr.remove(this.elements,\n { label: tab.label });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n mounted()\n {\n this.init = true;\n },\n\n render()\n {\n let classList = [\n 'n-tags',\n ];\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n}\n","import { Arr, Any, Dom } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTagsItem',\n\n inject: {\n\n NTags: {\n default: undefined\n }\n\n },\n\n props: {\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return -1;\n },\n type: [String, Number]\n },\n\n color: {\n default()\n {\n return 0;\n },\n type: [String, Number]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n },\n\n beforeMount()\n {\n if ( this.NTags ) {\n this.NTags.addTag(this);\n }\n },\n\n beforeUnmount()\n {\n if ( this.NTags ) {\n this.NTags.removeTag(this);\n }\n },\n\n renderIcon()\n {\n if ( Any.isEmpty(this.icon) ) {\n return null;\n }\n\n return (\n <i class={this.icon}></i>\n );\n },\n\n renderLabel()\n {\n return (\n <span>{this.$slots.default ? this.$slots.default() : this.label}</span>\n );\n },\n\n render()\n {\n let size = this.size;\n\n if ( this.NTags ) {\n size = this.NTags.size;\n }\n\n let classList = [\n 'n-tags-item',\n 'n-tags-item--' + size,\n ,\n ];\n\n if ( this.type === -1 ) {\n classList.push('n-tags-item--color-' + this.color);\n }\n\n if ( this.type !== -1 ) {\n classList.push('n-tags-item--color-' + this.type);\n }\n\n return (\n <div class={classList}>\n {[this.ctor('renderIcon')(), this.ctor('renderLabel')()]}\n </div>\n );\n }\n\n}\n","import Tags from './src/tags/tags';\nimport TagsItem from './src/tags-item/tags-item';\n\nexport default function (App) {\n App.component(Tags.name, Tags);\n App.component(TagsItem.name, TagsItem);\n}","import { Arr, Dom, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCollapse',\n\n provide()\n {\n return {\n NCollapse: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n relative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n init: false, elements: [], tempValue: this.modelValue\n };\n },\n\n methods: {\n\n addTab(tab)\n {\n Arr.add(this.elements, tab,\n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n removeTab(tab)\n {\n Arr.remove(this.elements,\n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n showTab(value)\n {\n if ( Arr.has(this.tempValue, value) ) {\n return;\n }\n\n Arr.add(this.tempValue, value);\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n hideTab(value)\n {\n if ( ! Arr.has(this.tempValue, value) ) {\n return;\n }\n\n Arr.remove(this.tempValue, value);\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n toggleTab(value)\n {\n Arr.toggle(this.tempValue, value);\n\n this.$emit('update:modelValue', this.tempValue);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n mounted()\n {\n this.init = true;\n },\n\n render()\n {\n let classList = [\n 'n-collapse',\n 'n-collapse--' + this.size,\n 'n-collapse--' + this.type\n ];\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n}\n","import { Arr, Any, Dom } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NCollapseItem',\n\n inject: {\n\n NCollapse: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return {\n NCollapseItem: this\n };\n },\n\n props: {\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n name: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n sort: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n relative: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n preload: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n keep: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n methods: {\n\n showTab()\n {\n this.NCollapse.showTab(this.name);\n },\n\n hideTab()\n {\n this.NCollapse.hideTab(this.name);\n },\n\n toggleTab()\n {\n this.NCollapse.toggleTab(this.name);\n }\n\n },\n\n data()\n {\n return {\n _key: null, init: false, dragger: 0\n }\n },\n\n beforeMount()\n {\n this.NCollapse.addTab(this);\n },\n\n beforeUnmount()\n {\n this.NCollapse.removeTab(this);\n },\n\n renderHeaderIcon()\n {\n if ( !this.$slots.icon && !this.icon ) {\n return null;\n }\n\n return (\n <div class=\"n-collapse__header-icon\">\n {this.$slots.icon && this.$slots.icon() || <i class={this.icon}></i>}\n </div>\n );\n },\n\n renderHeaderLabel()\n {\n return (\n <div class=\"n-collapse__header-label\">\n {this.$slots.label && this.$slots.label() || <span>{this.label}</span>}\n </div>\n );\n },\n\n renderHeaderAngle()\n {\n return (\n <div class=\"n-collapse__header-angle\">\n {this.$slots.angle && this.$slots.angle() || <i class={nano.Icons.angleRight}></i>}\n </div>\n );\n },\n\n renderHeader()\n {\n if ( !this.label && !this.$slots.label ) {\n return null;\n }\n\n let classList = [\n 'n-collapse__header'\n ];\n\n if ( Arr.has(this.NCollapse.tempValue, this.name) ) {\n classList.push('n-active');\n }\n\n let props = {\n onClick: () => this.toggleTab(this.name)\n };\n\n props['onDragenter'] = (event) => {\n\n this.dragger ++;\n\n if ( this.dragger !== 1 ) {\n return;\n }\n\n this.showDelay = setTimeout(() => {\n this.showTab(this.name);\n }, 350);\n };\n\n props['onDragleave'] = (event) => {\n\n this.dragger --;\n\n if ( this.dragger !== 0 ) {\n return;\n }\n\n clearTimeout(this.showDelay);\n };\n\n props.style = {\n order: this.sort + 1,\n };\n\n return (\n <div ref=\"header\" class={classList} {...props}>\n {this.ctor('renderHeaderIcon')()}\n {this.ctor('renderHeaderLabel')()}\n {this.ctor('renderHeaderAngle')()}\n </div>\n );\n },\n\n renderBody()\n {\n let classList = [\n 'n-collapse__body'\n ];\n\n let tempValue = Arr.clone(this.NCollapse.tempValue);\n\n if ( !this.label && !this.$slots.label ) {\n tempValue.push(this.name);\n }\n\n let renderBody = Arr.has(tempValue, this.name);\n\n if ( !Arr.has(tempValue, this.name) && this.keep ) {\n renderBody = this.init;\n }\n\n if ( !Arr.has(tempValue, this.name) && this.preload ) {\n renderBody = true;\n }\n\n if ( !renderBody && this.label ) {\n return null;\n }\n\n this.init = true;\n\n let style = {\n order: this.sort + 2\n };\n\n if ( !Arr.has(tempValue, this.name) ) {\n style.display = 'none';\n }\n\n let element = 'div';\n\n if ( !this.relative && !this.NCollapse.relative ) {\n element = resolveComponent('NScrollbar');\n }\n\n return h(element, { class: classList, style, }, this.$slots);\n },\n\n render()\n {\n return [\n this.ctor('renderHeader')(), this.ctor('renderBody')()\n ];\n }\n}\n","import Collapse from './src/collapse/collapse';\nimport CollapseItem from './src/collapse-item/collapse-item';\n\nexport default function (App) {\n App.component(Collapse.name, Collapse);\n App.component(CollapseItem.name, CollapseItem);\n}","import { Any, Obj, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NPreviewPlain',\n\n props: {\n\n src: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return null;\n }\n },\n\n showSrc: {\n default()\n {\n return true;\n }\n }\n\n },\n\n computed: {\n\n tempSrc()\n {\n return Obj.get(this.src, 'name', this.src);\n },\n\n tempExt()\n {\n let regex = /^.*?\\.([^.?]+)(\\?.*?)?$/;\n\n if ( Any.isEmpty(this.tempSrc) ) {\n return null;\n }\n\n return this.tempSrc.replace(regex, '$1');\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-preview-plain'\n ];\n\n let slots = [];\n\n slots[0] = (\n <li>{ this.type || Locale.trans('plain') }/{ this.tempExt || Locale.trans('none') }</li>\n );\n\n if ( this.showSrc ) {\n slots[1] = (<li>{ this.tempSrc }</li>);\n }\n\n return (\n <div class={classList}>\n <ul>{ slots }</ul>\n </div>\n );\n }\n\n}","import { Obj, Arr, Str, Any, Dom } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NPreviewImage',\n\n props: {\n\n src: {\n default()\n {\n return null;\n }\n },\n\n },\n\n data()\n {\n return {\n load: false, tempSrc: null\n };\n },\n\n beforeMount()\n {\n if ( ! window.ImageCache ) {\n window.ImageCache = [];\n }\n\n\n if ( ! Arr.has(window.ImageCache, this.src) ) {\n this.tempSrc = this.src;\n }\n },\n\n mounted()\n {\n this.resolveLoad();\n },\n\n watch: {\n\n 'src': function () {\n this.resolveLoad();\n }\n\n },\n\n methods: {\n\n resolveLoad()\n {\n if ( ! Arr.has(window.ImageCache, this.src) ) {\n return;\n }\n\n this.tempSrc = null;\n\n if ( Any.isObject(this.src) ) {\n return this.resolveData();\n }\n\n Dom.find(this.$refs.image).loaded(() => {\n\n /**\n * Add image to cache\n */\n Arr.add(window.ImageCache, this.src);\n\n /**\n * Mark image as loaded\n */\n Any.delay(() => this.load = false, 200);\n });\n\n this.laod = true;\n },\n\n resolveData()\n {\n let reader = new FileReader();\n\n reader.onload = () => {\n this.tempSrc = reader.result;\n };\n\n reader.readAsDataURL(this.src);\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-preview-image'\n ];\n\n if ( Arr.has(window.ImageCache, this.src) ) {\n classList.push('n-cached');\n }\n\n if ( ! this.load ) {\n classList.push('n-ready');\n }\n\n return (\n <div class={classList}>\n <img ref=\"image\" src={this.tempSrc || this.src} />\n </div>\n );\n }\n\n}","import Preview from './src/preview/preview';\nimport PreviewPlain from './src/preview-plain/preview-plain';\nimport PreviewImage from './src/preview-image/preview-image';\nimport PreviewVideo from './src/preview-video/preview-video';\n\nexport default function (App) {\n App.component(Preview.name, Preview);\n App.component(PreviewPlain.name, PreviewPlain);\n App.component(PreviewImage.name, PreviewImage);\n App.component(PreviewVideo.name, PreviewVideo);\n}\n\n","import { Arr, Map, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NMap',\n\n props: {\n\n lat: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n lng: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n zoom: {\n default()\n {\n return 15;\n },\n type: [Number]\n }\n\n },\n\n provide()\n {\n return {\n NMap: this\n };\n },\n\n data()\n {\n return { init: false, callbacks: [], tempMap: null };\n },\n\n watch: {\n\n lat()\n {\n Any.delay(() => this.tempMap.focusMarkers(), 100);\n },\n\n lng()\n {\n Any.delay(() => this.tempMap.focusMarkers(), 100);\n }\n\n },\n\n mounted()\n {\n this.tempMap = new Map(this.$el, {\n lat: this.lat, lng: this.lng, zoom: this.zoom\n });\n\n this.init = true;\n\n Arr.each(this.callbacks, (callback) => callback())\n },\n\n methods: {\n\n getMap()\n {\n return this.tempMap;\n },\n\n onMount(callback)\n {\n this.init ? callback() : this.callbacks.push(callback);\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-map'\n ];\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n}\n","import { UUID, Obj, Num, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NMapMarker',\n\n inject: {\n\n NMap: {\n default: undefined\n }\n\n },\n\n props: {\n\n lat: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n lng: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n drag: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n options: {\n default()\n {\n return { style: 'default' };\n },\n type: [Object]\n },\n\n },\n\n data()\n {\n return {\n id: UUID(), tempMarker: null\n };\n },\n\n methods: {\n\n importMarkerPosition()\n {\n this.tempMarker.marker.setPosition({\n lat: this.lat, lng: this.lng\n });\n },\n\n updateMarkerPosition()\n {\n this.$emit('update:lat', this.tempMarker.marker.getPosition().lat());\n this.$emit('update:lng', this.tempMarker.marker.getPosition().lng());\n },\n\n initializeMarker()\n {\n let options = Obj.assign({\n lat: Num.float(this.lat), lng: Num.float(this.lng), draggable: this.drag\n }, this.options);\n\n if ( ! Any.isEmpty(this.$slots.default) ) {\n options.html = this.$el.innerHTML;\n }\n\n this.tempMarker = this.NMap.getMap().createMarker(this.id, options);\n\n this.tempMarker.marker.addListener('position_changed',\n Any.debounce(this.updateMarkerPosition));\n\n this.tempMarker.marker.addListener('dragstart',\n () => this.$emit('dragstart', this.tempMarker));\n\n this.tempMarker.marker.addListener('dragend',\n () => this.$emit('dragend', this.tempMarker));\n\n this.tempMarker.marker.addListener('mouseover',\n () => this.$emit('mouseenter', this.tempMarker));\n\n this.tempMarker.marker.addListener('mouseout',\n () => this.$emit('mouseleave', this.tempMarker));\n },\n\n setMarkerByAddress(address)\n {\n let successClosure = () => {\n this.NMap.getMap().focusMarkers(null, this.NMap.zoom);\n };\n\n let errorClosure = () => {\n this.Notify(this.trans('Address not found.'), 'danger');\n };\n\n this.NMap.getMap().setMarkerByAddress(this.id, address)\n .then(successClosure, errorClosure);\n }\n\n },\n\n watch: {\n\n lat()\n {\n this.importMarkerPosition();\n },\n\n lng()\n {\n this.importMarkerPosition();\n }\n\n },\n\n beforeMount()\n {\n this.NMap.onMount(this.initializeMarker);\n },\n\n render()\n {\n return (\n <div style=\"display: none;\">\n { this.$slots.default }\n </div>\n );\n }\n\n}\n","import Map from './src/map/map';\nimport MapMarker from './src/map-marker/map-marker';\n\nexport default function (App) {\n App.component(Map.name, Map);\n App.component(MapMarker.name, MapMarker);\n}\n\n","import { Any, Str, Obj, Dom } from \"@kizmann/pico-js\";\n\nclass AlertFrame {\n\n el = null;\n\n text = '';\n\n icon = '';\n\n type = '';\n\n options = {\n iconPrimary: nano.Icons.info,\n iconSecondary: nano.Icons.info,\n iconSuccess: nano.Icons.success,\n iconWarning: nano.Icons.warning,\n iconDanger: nano.Icons.danger,\n iconInfo: nano.Icons.info\n };\n\n constructor(text, type = 'primary', options = {})\n {\n this.text = text;\n this.type = type;\n\n this.options = Obj.assign(this.options, options);\n\n this.render();\n }\n\n getIcon()\n {\n return Obj.get(this.options,\n 'icon' + Str.ucfirst(this.type));\n }\n\n append(el = document.body)\n {\n this.el.appendTo(el);\n\n Dom.find(document.body).on('keydown', (event) => {\n if ( event.which === 27 ) {\n this.remove();\n }\n }, 'n-alert');\n\n setTimeout(() => this.el.addClass('n-active'), 100);\n }\n\n remove()\n {\n Dom.find(document.body).off('keydown', null, 'n-alert');\n\n this.el.get(0).remove();\n }\n\n render()\n {\n let classList = [\n 'n-alert-frame',\n 'n-alert-frame--' + this.type,\n 'n-alert-frame--' + Alert.size\n ];\n\n this.el = Dom.make('div', {\n classList: classList.join(' ')\n });\n\n let backdrop = Dom.make('div', {\n classList: 'n-alert-backdrop', onclick: () => this.remove()\n });\n\n backdrop.onClick = () => {\n this.remove();\n };\n\n backdrop.appendTo(this.el);\n\n let frame = Dom.make('div', {\n classList: 'n-alert'\n });\n\n frame.appendTo(this.el);\n\n let icon = Dom.make('div', {\n classList: 'n-alert__icon'\n });\n\n icon.appendTo(frame);\n\n let iconSpan = Dom.make('span', {\n classList: this.getIcon()\n });\n\n iconSpan.appendTo(icon);\n\n let text = Dom.make('div', {\n classList: 'n-alert__text'\n });\n\n text.html(this.text).appendTo(frame);\n }\n\n}\n\nexport default class Alert {\n\n static alias = 'Alert';\n\n static size = nano.Settings.notifySize;\n\n static alert = null;\n\n static handle(...args)\n {\n if ( ! Any.isEmpty(Alert.alert) ) {\n Alert.alert.remove();\n }\n\n Alert.alert = new AlertFrame(...args);\n\n Alert.alert.append();\n\n return Alert;\n }\n\n}\n","import Alert from './src/alert/alert';\n\nexport default function (App) {\n App.config.globalProperties[Alert.alias] = window[Alert.alias] = Alert.handle;\n}\n","import { UUID, Str, Obj, Dom } from \"@kizmann/pico-js\";\n\nclass Notification {\n\n el = null;\n\n text = '';\n\n icon = '';\n\n type = '';\n\n options = {\n duration: 4500,\n iconPrimary: nano.Icons.info,\n iconSecondary: nano.Icons.info,\n iconSuccess: nano.Icons.success,\n iconWarning: nano.Icons.warning,\n iconDanger: nano.Icons.danger,\n iconInfo: nano.Icons.info\n };\n\n constructor(text, type = 'primary', options = {})\n {\n this.text = text;\n this.type = type;\n\n this.options = Obj.assign(this.options, options);\n\n this.render();\n }\n\n getIcon()\n {\n return Obj.get(this.options,\n 'icon' + Str.ucfirst(this.type));\n }\n\n append(el = document.body)\n {\n this.el.appendTo(el);\n\n setTimeout(() => this.el.addClass('n-active'), 100);\n\n return this;\n }\n\n remove()\n {\n this.el.get(0).remove();\n\n return this;\n }\n\n render()\n {\n let classList = [\n 'n-notification',\n 'n-notification--' + this.type\n ];\n\n this.el = Dom.make('div', {\n classList: classList.join(' '), onclick: () => this.remove()\n });\n \n\n let icon = Dom.make('div', {\n classList: 'n-notification__icon'\n });\n\n icon.appendTo(this.el);\n\n let iconSpan = Dom.make('span', {\n classList: this.getIcon()\n });\n\n iconSpan.appendTo(icon);\n\n let text = Dom.make('div', {\n classList: 'n-notification__text'\n });\n\n text.html(this.text).appendTo(this.el);\n }\n\n}\n\nexport default class Notify {\n\n static alias = 'Notify';\n\n static size = nano.Settings.notifySize;\n\n static position = nano.Settings.notifyPosition;\n\n static notifications = {};\n\n static handle(...args)\n {\n let uid = Notify.create(undefined, ...args);\n\n let wrapper = Notify.getWrapper();\n\n // Append element to dom\n Notify.notifications[uid].append(wrapper);\n\n // Queue remove\n setTimeout(() => Notify.remove(uid),\n Notify.notifications[uid].options.duration);\n\n return uid;\n }\n\n static create(uid = UUID(), ...args)\n {\n Notify.notifications[uid] = new Notification(...args);\n\n return uid;\n }\n\n static remove(uid)\n {\n if ( Notify.notifications[uid] === undefined ) {\n return;\n }\n\n // Remove dom element\n Notify.notifications[uid].remove();\n\n // Remove from list\n delete Notify.notifications[uid];\n }\n\n static getWrapper()\n {\n if ( ! window.zIndex ) {\n window.zIndex = 9000;\n }\n\n let style = {\n 'z-index': window.zIndex + 100\n };\n\n let classList = [\n 'n-notification-frame',\n 'n-notification-frame--' + this.size,\n 'n-notification-frame--' + this.position\n ];\n\n if ( Dom.find('.n-notification-frame').empty() === true ) {\n Dom.make('div', { classList: classList.join(' ') }).appendTo(document.body);\n }\n\n Dom.find('.n-notification-frame').css(style);\n\n return Dom.find('.n-notification-frame');\n }\n\n}\n","import Notifcation from './src/notification/notification';\n\nexport default function (App) {\n App.config.globalProperties[Notifcation.alias] = window[Notifcation.alias] = Notifcation.handle;\n}\n","export default {\n\n name: 'NEmptyIcon',\n\n props: {\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-empty-icon',\n 'n-empty-icon--' + this.size,\n 'n-empty-icon--' + this.type\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n <div class=\"n-empty-icon__frame\">\n { /* Icon */ }\n </div>\n <div class=\"n-empty-icon__text\">\n { this.$slots.default && this.$slots.default() }\n </div>\n </div>\n );\n }\n\n}\n","import EmptyIcon from './src/empty-icon/empty-icon';\n\nexport default function (App) {\n App.component(EmptyIcon.name, EmptyIcon);\n}\n","import { Arr, Obj, Dom, Any, Str, Event } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NScrollbar',\n\n provide()\n {\n return {\n NScrollbar: this\n };\n },\n\n props: {\n\n options: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n relative: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n fixture: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n allowNative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n framerate: {\n default()\n {\n return 24;\n },\n type: [Number]\n },\n\n wrapClass: {\n default()\n {\n return 'n-scrollbar__wrap';\n }\n }\n\n },\n\n computed: {\n\n touch() {\n return !! ('ontouchstart' in window ||\n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n native: false\n };\n },\n\n beforeMount()\n {\n this.adaptScrollBehavior();\n },\n\n mounted()\n {\n this.bindAdaptHeight();\n this.bindAdaptWidth();\n\n let passive = {\n passive: true, uid: this._.uid\n };\n\n Event.bind('NScrollbar:resize',\n this.onResize, this._.uid);\n\n Event.bind('NResizer:moved',\n this.onUpdate, this._.uid);\n\n Dom.find(window).on('resize',\n this.onResize, passive);\n\n Dom.find(this.$refs.content).on('scroll',\n this.onScroll, passive);\n },\n\n updated()\n {\n if ( this.passedHeight || this.passedWidth ) {\n Dom.find(this.$el).addClass('n-ready');\n }\n },\n\n beforeUnmount()\n {\n this.unbindAdaptHeight();\n this.unbindAdaptWidth();\n\n let passive = {\n passive: true, uid: this._.uid\n };\n\n Event.unbind('NScrollbar:resize',\n this._.uid);\n\n Event.unbind('NResizer:moved',\n this._.uid);\n\n Dom.find(window).off('resize',\n null, passive);\n\n Dom.find(this.$el).off('scroll',\n null, passive);\n },\n\n methods: {\n\n scrollTo(x = 0, y = 0, delay = 0)\n {\n Any.delay(() => this.onScrollTo(x, y), delay);\n },\n\n onScrollTo(x = 0, y = 0)\n {\n if ( this.$refs.content ) {\n this.$refs.content.scrollTop = y;\n this.$refs.content.scrollLeft = x;\n }\n },\n\n scrollIntoView(selector, delay = 0)\n {\n Any.delay(() => this.onScrollIntoView(selector), delay);\n },\n\n onScrollIntoView(selector)\n {\n let $el = Dom.find(this.$el).find(selector);\n\n let scrollTop = this.$refs.content\n .scrollTop;\n\n let outerHeight = this.$refs.content.\n clientHeight;\n\n let offsetTop = $el.offsetTop(this.$el);\n\n if ( offsetTop < scrollTop ) {\n this.$refs.content.scrollTop = offsetTop;\n }\n\n if ( offsetTop + $el.height() >= scrollTop + outerHeight ) {\n this.$refs.content.scrollTop = offsetTop - outerHeight + $el.height();\n }\n\n let scrollLeft = this.$refs.content\n .scrollLeft;\n\n let outerWidth = this.$refs.content.\n clientWidth;\n\n let offsetLeft = $el.offsetLeft(this.$el);\n\n if ( offsetLeft < scrollLeft ) {\n this.$refs.content.scrollLeft = offsetLeft;\n }\n\n if ( offsetLeft + $el.width() >= scrollLeft + outerWidth ) {\n this.$refs.content.scrollLeft = offsetLeft - outerWidth + $el.width();\n }\n },\n\n adaptScrollBehavior()\n {\n let $dom = Dom.make('div', { classList: ['n-scrollbar-test'] })\n .appendTo(document.body).get(0);\n\n Dom.make('div').appendTo($dom);\n\n this.native = $dom.clientWidth === $dom.offsetWidth ||\n $dom.clientHeight === $dom.offsetHeight;\n\n $dom.remove();\n },\n\n adaptScrollHeight()\n {\n if ( this.native && this.allowNative ) {\n return;\n }\n\n // let offsetHeight = this.$refs.content.clientHeight -\n // this.$refs.content.offsetHeight;\n //\n // let offsetWidth = this.$refs.content.clientWidth -\n // this.$refs.content.offsetWidth;\n\n let outerHeight = this.$refs.content.\n clientHeight || 0;\n\n if ( this.native && ! this.allowNative ) {\n outerHeight -= 16;\n }\n\n // if ( offsetHeight === 0 && this.overflowX ) {\n // outerHeight -= 15;\n // }\n\n let innerHeight = this.$refs.content\n .scrollHeight || 0;\n\n let virtualHeight = 0;\n\n Dom.find(this.$refs.content).childs().each((el) => {\n virtualHeight += Dom.find(el).height() || 0;\n });\n\n if ( this.native && ! this.allowNative ) {\n innerHeight -= 16;\n }\n\n if ( virtualHeight > innerHeight ) {\n innerHeight = virtualHeight;\n }\n\n // if ( offsetHeight === 0 && this.overflowX ) {\n // innerHeight -= 15;\n // }\n\n let isSameOld = outerHeight === this.outerHeight &&\n innerHeight === this.innerHeight;\n\n if ( isSameOld ) {\n return;\n }\n\n this.outerHeight = outerHeight;\n this.innerHeight = innerHeight;\n\n let height = (outerHeight / innerHeight)\n * outerHeight;\n\n let barHeight = Math.max(height, 50);\n\n let maxHeight = Math.ceil((outerHeight / innerHeight) *\n (innerHeight - outerHeight));\n\n this.heightRatio = (maxHeight - (barHeight - height)\n - this.offsetY) / maxHeight;\n\n Dom.find(this.$refs.vbar).css({\n height: (this.barHeight = Math.ceil(barHeight)) + 'px'\n });\n\n // let hasNativeBar = offsetWidth !== 0 && this.overflowY;\n //\n // if ( hasNativeBar ) {\n // Dom.find(this.$el).addClass('has-native-vbar');\n // }\n //\n // if ( hasNativeBar && this.overflowX ) {\n // Dom.find(this.$el).addClass('has-native-hbar');\n // }\n\n let hasVtrack = outerHeight && outerHeight < innerHeight;\n\n if ( hasVtrack ) {\n Dom.find(this.$el).addClass('has-vtrack');\n }\n\n if ( ! hasVtrack ) {\n Dom.find(this.$el).removeClass('has-vtrack');\n }\n\n // if ( hasVtrack && ! hasNativeBar ) {\n // Event.fire('NScrollbar:native');\n // }\n\n this.adaptScrollPosition();\n },\n\n adaptScrollWidth()\n {\n if ( this.native && this.allowNative ) {\n return;\n }\n\n // let offsetWidth = this.$refs.content.clientWidth -\n // this.$refs.content.offsetWidth;\n //\n // let offsetHeight = this.$refs.content.clientHeight -\n // this.$refs.content.offsetHeight;\n\n let outerWidth = this.$refs.content.\n clientWidth || 0;\n\n if ( this.native && ! this.allowNative ) {\n outerWidth -= 16;\n }\n\n // if ( offsetWidth === 0 && this.overflowY ) {\n // outerWidth -= 15;\n // }\n\n let innerWidth = this.$refs.content\n .scrollWidth || 0;\n\n let virtualWidth = 0;\n\n Dom.find(this.$refs.content).childs().each((el) => {\n virtualWidth += Dom.find(el).width() || 0;\n });\n\n if ( this.native && ! this.allowNative ) {\n innerWidth -= 16;\n }\n\n if ( virtualWidth > innerWidth ) {\n innerWidth = virtualWidth;\n }\n\n // if ( offsetWidth === 0 && this.overflowY ) {\n // innerWidth -= 15;\n // }\n\n let isSameOld = outerWidth === this.outerWidth &&\n innerWidth === this.innerWidth;\n\n if ( isSameOld ) {\n return;\n }\n\n this.outerWidth = outerWidth;\n this.innerWidth = innerWidth;\n\n let width = (outerWidth / innerWidth)\n * outerWidth;\n\n let barWidth = Math.max(width, 50);\n\n let maxWidth = Math.ceil((outerWidth / innerWidth) *\n (innerWidth - outerWidth));\n\n this.widthRatio = (maxWidth - (barWidth - width)\n - this.offsetX) / maxWidth;\n\n Dom.find(this.$refs.hbar).css({\n width: (this.barWidth = Math.ceil(barWidth)) + 'px'\n });\n\n // let hasNativeBar = offsetHeight && this.overflowX;\n\n // if ( hasNativeBar ) {\n // Dom.find(this.$el).addClass('has-native-hbar');\n // }\n //\n // if ( hasNativeBar && this.overflowY ) {\n // Dom.find(this.$el).addClass('has-native-vbar');\n // }\n\n let hasHtrack = outerWidth && outerWidth < innerWidth;\n\n if ( hasHtrack ) {\n Dom.find(this.$el).addClass('has-htrack');\n }\n\n if ( ! hasHtrack ) {\n Dom.find(this.$el).removeClass('has-htrack');\n }\n\n // if ( hasHtrack && ! hasNativeBar ) {\n // Event.fire('NScrollbar:native');\n // }\n\n this.adaptScrollPosition();\n },\n\n adaptScrollPosition(scroll = {})\n {\n if ( this.native && this.allowNative ) {\n return;\n }\n\n if ( ! scroll.top ) {\n scroll.top = this.$refs.content.scrollTop;\n }\n\n if ( ! scroll.left ) {\n scroll.left = this.$refs.content.scrollLeft;\n }\n\n let vbarTop = Math.ceil((this.outerHeight / this.innerHeight) *\n scroll.top * this.heightRatio) || 0;\n\n if ( ! this.vbarTop || vbarTop !== this.vbarTop ) {\n\n Dom.find(this.$refs.vbar).css({\n transform: `translateY(${vbarTop}px) translateZ(0)`\n });\n\n this.vbarTop = vbarTop;\n }\n\n let hbarLeft = Math.ceil((this.outerWidth / this.innerWidth) *\n scroll.left * this.widthRatio) || 0;\n\n if ( ! this.hbarLeft || hbarLeft !== this.hbarLeft ) {\n\n Dom.find(this.$refs.hbar).css({\n transform: `translateX(${hbarLeft}px) translateZ(0)`\n });\n\n this.hbarLeft = hbarLeft;\n }\n },\n\n adaptHeight()\n {\n if ( ! this.cacheChildEl ) {\n this.cacheChildEl = Dom.find(this.$refs.content).child();\n }\n\n let height = this.cacheChildEl\n .height();\n\n if ( ! this.cacheWindwoEl ) {\n this.cacheWindwoEl = Dom.find(this.$el);\n }\n\n let window = this.cacheWindwoEl\n .innerHeight();\n\n if ( height === this.passedHeight && window === this.windowCache ) {\n return;\n }\n\n this.windowCache = window;\n\n if ( this.overflowY ) {\n this.adaptScrollHeight();\n }\n\n if ( window ) {\n this.passedHeight = height;\n }\n\n let style = {\n height: (height + 1) + 'px'\n };\n\n if ( ! this.relative ) {\n return Any.delay(this.onSizechange, 100);\n }\n\n Dom.find(this.$refs.spacer).child().css(style);\n },\n\n bindAdaptHeight()\n {\n this.refreshHeight = setInterval(this.adaptHeight,\n 1000 / this.framerate);\n },\n\n unbindAdaptHeight()\n {\n clearInterval(this.refreshHeight);\n },\n\n adaptWidth()\n {\n if ( this.resizeTimer ) {\n return;\n }\n\n let width = Dom.find(this.$refs.content)\n .child().width();\n\n let window = Dom.find(this.$el)\n .innerWidth();\n\n if ( width === this.passedWidth ) {\n return;\n }\n\n if ( this.overflowX ) {\n this.adaptScrollWidth();\n }\n\n if ( window ) {\n this.passedWidth = width;\n }\n\n let style = {\n width: width + 'px'\n };\n\n if ( this.fixture ) {\n this.onUpdate();\n }\n\n if ( ! this.relative ) {\n return Any.delay(this.onSizechange, 100);\n }\n\n Dom.find(this.$refs.spacer).child().css(style);\n },\n\n bindAdaptWidth()\n {\n this.refreshWidth = setInterval(this.adaptWidth,\n 1000 / this.framerate);\n },\n\n unbindAdaptWidth()\n {\n clearInterval(this.refreshWidth);\n },\n\n onScroll(event)\n {\n let scroll = {\n top: this.$refs.content.scrollTop,\n left: this.$refs.content.scrollLeft\n };\n\n let scrollUpdate = () => {\n this.$emit('scrollupdate', scroll.top, scroll.left);\n }\n\n this.$nextTick(scrollUpdate);\n this.adaptScrollPosition(scroll);\n },\n\n onSizechange(event)\n {\n let height = Dom.find(this.$el).height();\n let width = Dom.find(this.$el).width();\n\n if ( ! height || ! width ) {\n return;\n }\n\n if ( this.passedHeight || this.passedWidth ) {\n Dom.find(this.$el).addClass('is-ready');\n }\n\n this.$emit('sizechange', height, width, this.$el);\n },\n\n onResize()\n {\n if ( ! this.fixture ) {\n return;\n }\n\n Dom.find(this.$refs.content)\n .child().css(null);\n\n clearTimeout(this.resizeTimer);\n\n this.resizeTimer = setTimeout(\n this.onUpdate, 500);\n\n Dom.find(this.$el).fire('resized');\n },\n\n onUpdate()\n {\n if ( ! this.fixture || ! this.$refs.content ) {\n return;\n }\n\n let $inner = Dom.find(this.$refs.content)\n .child();\n\n let height = $inner.actual(() => {\n return $inner.scrollHeight();\n });\n\n if ( height !== this.passedHeight ) {\n $inner.css({ height: height + 'px' });\n }\n\n let width = $inner.actual(() => {\n return $inner.scrollWidth();\n });\n\n if ( width !== this.passedWidth ) {\n $inner.css({ width: width + 'px' });\n }\n\n delete this.resizeTimer;\n },\n\n getTouchEvent(event)\n {\n if ( ! this.touch ) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n onVbarMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.stopPropagation();\n\n Dom.find(document).on(this.mousemove,\n this.onVbarMousemove, this._.uid);\n\n Dom.find(document).on(this.mouseup,\n this.onVbarMouseup, this._.uid);\n\n this.scrollTop = this.$refs.content\n .scrollTop;\n\n this.clientY = this.getTouchEvent(event)\n .clientY;\n },\n\n onVbarMousemove(event)\n {\n let clientY = this.getTouchEvent(event)\n .clientY;\n\n let top = (this.outerHeight / this.innerHeight) *\n this.scrollTop * this.heightRatio;\n\n let offset = (clientY - this.clientY) + top;\n\n let height = (this.outerHeight -\n this.barHeight - this.offsetY);\n\n this.$refs.content.scrollTop = offset / height *\n (this.innerHeight - this.outerHeight);\n },\n\n onVbarMouseup(event)\n {\n Dom.find(document).off(this.mousemove,\n null, this._.uid);\n\n Dom.find(document).off(this.mouseup,\n null, this._.uid);\n },\n\n onHbarMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.stopPropagation();\n\n Dom.find(document).on(this.mousemove,\n this.onHbarMousemove, this._.uid);\n\n Dom.find(document).on(this.mouseup,\n this.onHbarMouseup, this._.uid);\n\n this.scrollLeft = this.$refs.content\n .scrollLeft;\n\n this.clientX = event.clientX;\n },\n\n onHbarMousemove(event)\n {\n let top = (this.outerWidth / this.innerWidth) *\n this.scrollLeft * this.widthRatio;\n\n let offset = (event.clientX - this.clientX) + top;\n\n let width = (this.outerWidth -\n this.barWidth - this.offsetX);\n\n this.$refs.content.scrollLeft = offset / width *\n (this.innerWidth - this.outerWidth);\n },\n\n onHbarMouseup(event)\n {\n Dom.find(document).off(this.mousemove,\n null, this._.uid);\n\n Dom.find(document).off(this.mouseup,\n null, this._.uid);\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-scrollbar'\n ];\n\n if ( this.native ) {\n classList.push('n-scrollbar--native');\n }\n\n if ( ! this.allowNative ) {\n classList.push('n-scrollbar--forced');\n }\n\n if ( this.touch ) {\n classList.push('n-scrollbar--touch');\n }\n\n if ( window.WIN ) {\n classList.push('n-windows');\n }\n\n if ( this.overflowY ) {\n classList.push('n-overflow-y');\n }\n\n if ( this.overflowX ) {\n classList.push('n-overflow-x');\n }\n\n let vbarProps = {\n ['on' + Str.ucfirst(this.mousedown)]: this.onVbarMousedown\n };\n\n let hbarProps = {\n ['on' + Str.ucfirst(this.mousedown)]: this.onHbarMousedown\n };\n\n return (\n <div class={classList} {...Obj.except(this.$attrs, ['class'])}>\n <div class=\"n-scrollbar-content\" ref=\"content\">\n <div class={this.wrapClass}>\n { this.$slots.default && this.$slots.default() }\n </div>\n </div>\n <div class=\"n-scrollbar-spacer\" ref=\"spacer\">\n <div class={this.wrapClass}>\n { /* Adapt inner height */ }\n </div>\n </div>\n <div ref=\"hbar\" class=\"n-scrollbar-h\" {...hbarProps}></div>\n <div ref=\"vbar\" class=\"n-scrollbar-v\" {...vbarProps}></div>\n </div>\n );\n }\n\n}\n","import Scrollbar from './src/scrollbar/scrollbar.next';\n\nexport default function (App) {\n App.component(Scrollbar.name, Scrollbar);\n}","import { UUID, Num, Obj, Any, Dom, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NLoader',\n\n inject: {\n\n NLoader: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return {\n NLoader: this\n };\n },\n\n props: {\n\n visible: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n minimum: {\n default()\n {\n return 120;\n },\n type: [Number]\n },\n\n debounce: {\n default()\n {\n return 120;\n },\n type: [Number]\n }\n\n },\n\n data()\n {\n return {\n tempVisible: this.visible\n };\n },\n\n methods: {\n\n applyTimer()\n {\n this.timing = Date.now();\n\n if ( this.visible) {\n return this.tempVisible = this.visible;\n }\n\n this.startTimer();\n },\n\n startTimer()\n {\n let timing = Date.now() - this.timing;\n\n if ( timing < this.minimum ) {\n return this.restartTimer(timing);\n }\n\n this.timeout = setTimeout(() => this.tempVisible = false, \n this.debounce);\n },\n\n restartTimer(timing = 0) {\n Any.delay(this.startTimer, this.minimum - timing + 10);\n }\n\n },\n\n watch: {\n\n visible()\n {\n this.applyTimer();\n }\n\n },\n\n mounted()\n {\n this.applyTimer();\n },\n\n render()\n {\n let classList = [\n 'n-loader', \n 'n-loader--' + this.size, \n 'n-loader--' + this.type\n ];\n\n if ( this.tempVisible ) {\n classList.push('n-load');\n }\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n}\n","import Loader from './src/loader/loader';\n\nexport default function (App) {\n App.component(Loader.name, Loader);\n}\n","import { UUID, Arr, Obj, Dom, Any, Str, Locale, Event, Num } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NResizer',\n\n inject: {\n\n NScrollbar: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n width: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n minWidth: {\n default()\n {\n return 60;\n },\n type: [Number]\n },\n\n maxWidth: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n group: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n position: {\n default()\n {\n return 'right';\n },\n type: [String]\n },\n\n resizerWidth: {\n default()\n {\n return 6;\n },\n type: [Number]\n }\n\n },\n\n computed: {\n\n touch() {\n return !! ('ontouchstart' in window || \n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n sizeFixed: false,\n tempValue: this.modelValue,\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n },\n\n mounted()\n {\n if ( ! this.modelValue ) {\n this.updateWidth();\n }\n\n if ( this.NScrollbar ) {\n this.bindSizechange();\n }\n\n Event.bind('NResizer:move', \n this.forceWidth, this._.uid);\n\n Dom.find(window).on('resize', \n Any.debounce(this.onResize, 500), this._.uid);\n },\n\n updated()\n {\n this.updateWidth();\n },\n\n unmounted()\n {\n if ( this.NScrollbar ) {\n this.unbindSizechange();\n }\n\n Event.unbind('NResizer:move', \n this._.uid);\n \n Dom.find(window).off('resize', \n null, this._.uid);\n },\n\n methods: {\n\n forceWidth(group)\n {\n if ( ! Arr.has(group, this.group) ) {\n return;\n }\n \n if ( ! this.tempValue || ! this.group.length ) {\n return;\n }\n\n this.sizeFixed = true;\n\n let style = {\n width: this.tempValue + 'px', flex: '0 0 auto'\n };\n\n Dom.find(this.$el).css(style);\n },\n\n updateWidth()\n {\n let width = Dom.find(this.$el)\n .width();\n\n if ( width === this.tempValue ) {\n return;\n }\n\n this.$emit('update:modelValue', \n this.tempValue = width);\n \n this.updateHandle();\n },\n\n updateHandle()\n {\n let style = {};\n\n if ( this.position === 'left' ) {\n style.transform =`translateX(-${this.tempValue - this.resizerWidth}px)`\n }\n \n if ( this.position === 'right' ) {\n style.transform = `translateX(${this.tempValue - this.resizerWidth}px)`\n }\n\n Dom.find(this.$refs.handle).css(style);\n },\n\n bindSizechange()\n {\n Dom.find(this.NScrollbar.$el).on('resized', \n Any.debounce(this.updateWidth, 50), this._.uid);\n },\n\n unbindSizechange()\n {\n Dom.find(this.NScrollbar.$el)\n .off('resized', null, this._.uid);\n },\n\n\n onResize()\n {\n if ( this.NScrollbar ) {\n return;\n }\n\n this.updateWidth();\n },\n\n getTouchEvent(event)\n {\n if ( ! this.touch ) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n onLeftMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if ( this.group.length ) {\n Event.fire('NResizer:move', this.group);\n }\n\n Dom.find(this.$el).addClass('n-move');\n Dom.find(document.body).addClass('n-move');\n\n Dom.find(document).on(this.mouseup,\n Any.framerate(this.onLeftMouseup, 60), this._.uid);\n\n Dom.find(document).on(this.mousemove,\n Any.framerate(this.onLeftMousemove, 60), this._.uid);\n },\n\n onLeftMousemove(event)\n {\n this.clientX = (window.innerWidth - \n this.getTouchEvent(event).clientX);\n\n let offsetX = Dom.find(this.$el)\n .offset('right');\n\n let scrollX = Dom.find(this.$el)\n .scroll('right');\n\n let targetWidth = (this.clientX + scrollX - offsetX) -\n (this.resizerWidth / 2);\n\n if ( this.minWidth ) {\n targetWidth = Math.max(targetWidth,\n this.minWidth - this.resizerWidth);\n }\n\n if ( this.maxWidth ) {\n targetWidth = Math.min(targetWidth,\n this.maxWidth - this.resizerWidth);\n }\n\n let style = {\n transform: `translateX(-${targetWidth}px)`\n };\n\n Dom.find(this.$refs.handle).css(style);\n },\n\n onLeftMouseup(event)\n {\n event.preventDefault();\n event.stopPropagation();\n\n Dom.find(document).off(this.mouseup, null, this._.uid);\n Dom.find(document).off(this.mousemove, null, this._.uid);\n\n if ( ! this.clientX ) {\n return;\n }\n\n let offsetX = Dom.find(this.$el)\n .offset('right');\n\n let scrollX = Dom.find(this.$el)\n .scroll('right');\n\n let targetWidth = this.clientX + scrollX - offsetX;\n\n if ( this.minWidth ) {\n targetWidth = Math.max(targetWidth, this.minWidth);\n }\n\n if ( this.maxWidth ) {\n targetWidth = Math.min(targetWidth, this.maxWidth);\n }\n\n this.tempValue = Math.round(targetWidth);\n\n Dom.find(this.$el).removeClass('n-move');\n\n let style = {\n transform: `translateX(-${targetWidth - this.resizerWidth}px)`\n };\n\n Dom.find(this.$refs.handle).css(style);\n\n let frameStyle = {\n width: this.tempValue + 'px', flex: '0 0 auto'\n };\n\n Dom.find(this.$el).css(frameStyle);\n\n delete this.clientX;\n\n if ( this.group.length ) {\n Event.fire('NResizer:moved', this.group);\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n onRightMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if ( this.group.length ) {\n Event.fire('NResizer:move', this.group);\n }\n\n Dom.find(this.$el).addClass('n-move');\n Dom.find(document.body).addClass('n-move');\n\n Dom.find(document).on(this.mouseup,\n Any.framerate(this.onRightMouseup, 60), this._.uid);\n\n Dom.find(document).on(this.mousemove,\n Any.framerate(this.onRightMousemove, 60), this._.uid);\n },\n\n onRightMousemove(event)\n {\n this.clientX = this.getTouchEvent(event).clientX;\n\n let offsetX = Dom.find(this.$el)\n .offset('left');\n\n let scrollX = Dom.find(this.$el)\n .scroll('left');\n\n let targetWidth = (this.clientX + scrollX - offsetX) -\n (this.resizerWidth / 2);\n\n if ( this.minWidth ) {\n targetWidth = Math.max(targetWidth,\n this.minWidth - this.resizerWidth);\n }\n\n if ( this.maxWidth ) {\n targetWidth = Math.min(targetWidth,\n this.maxWidth - this.resizerWidth);\n }\n\n let style = {\n transform: `translateX(${targetWidth}px)`\n };\n\n Dom.find(this.$refs.handle).css(style);\n },\n\n onRightMouseup(event)\n {\n event.preventDefault();\n event.stopPropagation();\n\n Dom.find(document).off(this.mousemove, null, this._.uid);\n Dom.find(document).off(this.mouseup, null, this._.uid);\n\n if ( ! this.clientX ) {\n return;\n }\n\n let offsetX = Dom.find(this.$el)\n .offset('left');\n\n let scrollX = Dom.find(this.$el)\n .scroll('left');\n\n let targetWidth = this.clientX + scrollX - offsetX;\n\n if ( this.minWidth ) {\n targetWidth = Math.max(targetWidth, this.minWidth);\n }\n\n if ( this.maxWidth ) {\n targetWidth = Math.min(targetWidth, this.maxWidth);\n }\n\n this.tempValue = Math.round(targetWidth);\n\n Dom.find(this.$el).removeClass('n-move');\n\n let style = {\n transform: `translateX(${targetWidth - this.resizerWidth}px)`\n };\n\n Dom.find(this.$refs.handle).css(style);\n\n let frameStyle = {\n width: this.tempValue + 'px', flex: '0 0 auto'\n };\n\n Dom.find(this.$el).css(frameStyle);\n\n delete this.clientX;\n\n if ( this.group.length ) {\n Event.fire('NResizer:moved', this.group);\n }\n\n this.$emit('update:modelValue', this.tempValue);\n }\n\n },\n\n renderHandle()\n {\n if ( this.disabled ) {\n return null;\n }\n \n let classList = [\n 'n-resizer__handle',\n ];\n\n let props = {};\n\n if ( this.position === 'right' ) {\n props['on' + Str.ucfirst(this.mousedown)] = this.onRightMousedown;\n }\n\n if ( this.position === 'left' ) {\n props['on' + Str.ucfirst(this.mousedown)] = this.onLeftMousedown;\n }\n\n if ( this.resizerWidth ) {\n props.width = this.resizerWidth + 'px';\n }\n\n return (\n <div ref=\"handle\" class={classList} {...props}/>\n );\n },\n\n render()\n {\n let classList = [\n 'n-resizer',\n 'n-resizer--' + this.position,\n ];\n\n let style = {};\n\n if ( this.width && ! this.tempValue ) {\n style['width'] = this.width + 'px';\n }\n\n if ( this.width ) {\n style['flex-basis'] = this.width + 'px';\n }\n\n if ( this.minWidth ) {\n style['min-width'] = this.minWidth + 'px';\n }\n\n if ( this.maxWidth ) {\n style['max-width'] = this.maxWidth + 'px';\n }\n\n return (\n <div class={classList} style={style}>\n { [this.$slots.default(), this.ctor('renderHandle')()] }\n </div>\n );\n }\n\n}\n","import Resizer from './src/resizer/resizer';\n\nexport default function (App) {\n App.component(Resizer.name, Resizer);\n}\n","import { UUID, Num, Arr, Obj, Any, Dom, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NModal',\n\n inject: {\n\n NScrollbar: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n listen: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n update: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n selector: {\n default()\n {\n return null;\n },\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n width: {\n default()\n {\n return '50%';\n },\n type: [String]\n },\n\n height: {\n default()\n {\n return 'auto';\n },\n type: [String]\n },\n\n title: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'center-center';\n },\n type: [String]\n },\n\n closable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n renderClose: {\n default()\n {\n return true;\n },\n type: [Boolean]\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n tempValue()\n {\n this.startRefreshTimeout();\n }\n\n },\n\n provide()\n {\n return {\n NModal: this\n };\n },\n\n data()\n {\n return {\n target: null, tempValue: false\n };\n },\n\n mounted()\n {\n this.target = Dom.find(this.selector || this.$el)\n .previous().get(0);\n\n Dom.find(document.body).on('mousedown',\n this.eventClick, this._.uid);\n\n Dom.find(document.body).on('keydown',\n this.eventKeydown, this._.uid);\n\n let showModal = () => {\n this.tempValue = true;\n };\n\n if ( this.modelValue ) {\n Any.delay(showModal, 100);\n }\n\n Dom.find(document.body).append(this.$el);\n },\n\n beforeUnmount()\n {\n this.$el.remove();\n },\n\n unmounted()\n {\n Dom.find(document.body).off('mousedown',\n null, this._.uid);\n\n Dom.find(document.body).off('keydown',\n null, this._.uid);\n },\n\n methods: {\n\n openModal(force = false, source = null)\n {\n if ( this.tempValue ) {\n return;\n }\n\n if ( this.closable || force ) {\n this.tempValue = true;\n }\n\n this.$emit('update:modelValue', true, source);\n },\n\n closeModal(force = false, source = null)\n {\n if ( ! this.tempValue ) {\n return;\n }\n\n if ( ! this.update ) {\n return this.$emit('close', source);\n }\n\n if ( this.closable || force ) {\n this.tempValue = false;\n }\n\n this.$emit('update:modelValue', false, source);\n },\n\n stopRefreshTimeout()\n {\n clearTimeout(this.refresh);\n\n Dom.find(this.$el).removeClass('n-ready');\n },\n\n startRefreshTimeout()\n {\n if ( ! this.tempValue ) {\n return this.stopRefreshTimeout();\n }\n\n window.zIndex += 1;\n\n Dom.find(this.$el).attr('data-modal',\n window.zIndex);\n\n Dom.find(this.$el).css({\n 'z-index': window.zIndex\n });\n\n this.queueRefreshTimeout();\n },\n\n queueRefreshTimeout()\n {\n if ( ! this.tempValue ) {\n return this.stopRefreshTimeout();\n }\n\n this.refresh = setTimeout(() => {\n Dom.find(this.$el).addClass('n-ready');\n }, 100);\n },\n\n eventClick(event, el)\n {\n if ( this.disabled || event.which !== 1 ) {\n return;\n }\n\n let result = !! Dom.find(el).closest(this.target);\n\n if ( ! result && ! this.tempValue ) {\n return;\n }\n\n if ( this.tempValue && this.closable ) {\n result = ! Dom.find(el).closest(this.$refs.backdrop);\n }\n\n if ( result === this.tempValue ) {\n return;\n }\n\n if ( ! result ) {\n return this.closeModal(false, 'escape');\n }\n\n if ( this.listen ) {\n this.openModal(true, 'selector');\n }\n },\n\n eventKeydown(event, el)\n {\n if ( ! this.tempValue || event.which !== 27 ) {\n return;\n }\n\n let extractIndex = (modal) => {\n return Dom.find(modal).attr('data-modal');\n };\n\n let indexes = Dom.find('.n-modal:not(.n-hidden)')\n .each(extractIndex);\n\n let index = Dom.find(this.$el).attr('data-modal');\n\n if ( Arr.last(indexes.sort()) !== index ) {\n return;\n }\n\n this.closeModal(false, 'escape');\n },\n\n },\n\n renderClose()\n {\n if ( ! this.renderClose || ! this.closable ) {\n return null;\n }\n\n let props = {\n onClick: () => this.closeModal(false, 'escape')\n };\n\n return (\n <div class=\"n-modal__close\" {...props}>\n <span class={nano.Icons.times}></span>\n </div>\n );\n },\n\n renderHeader()\n {\n if ( ! this.$slots.header && ! this.title ) {\n return null;\n }\n\n return (\n <div class=\"n-modal__header\">\n { [this.$slots.header && this.$slots.header({ closeModal: this.closeModal }) || this.title, this.ctor('renderClose')()] }\n </div>\n );\n },\n\n renderFooter()\n {\n if ( ! this.$slots.footer ) {\n return null;\n }\n\n return (\n <div class=\"n-modal__footer\">\n { this.$slots.footer({ closeModal: this.closeModal }) }\n </div>\n );\n },\n\n renderBody()\n {\n let bodyHtml = (\n <NScrollbar ref=\"scrollbar\" relative={true} wrapClass=\"n-modal__wrap\">\n { this.$slots.default && this.$slots.default({ closeModal: this.closeModal }) }\n </NScrollbar>\n );\n\n if ( this.$slots.body ) {\n bodyHtml = this.$slots.body({ closeModal: this.closeModal });\n }\n\n return (\n <div class=\"n-modal__body\">\n { bodyHtml }\n </div>\n );\n },\n\n renderFrame()\n {\n if ( ! this.tempValue ) {\n return null;\n }\n\n let style = {\n width: this.width, height: this.height\n };\n\n let innerHtml = [\n this.ctor('renderHeader')(),\n this.ctor('renderBody')(),\n this.ctor('renderFooter')(),\n ]\n\n return (\n <div class=\"n-modal__frame\" style={style}>\n { this.$slots.raw ? this.$slots.raw() : innerHtml }\n </div>\n );\n },\n\n renderBackdrop()\n {\n return (\n <div ref=\"backdrop\" class=\"n-modal__backdrop\"></div>\n );\n },\n\n render()\n {\n if ( ! window.zIndex ) {\n window.zIndex = 9000;\n }\n\n let classList = [\n 'n-modal',\n 'n-modal--' + this.size,\n 'n-modal--' + this.type,\n 'n-modal--' + this.position\n ];\n\n if ( this.tempValue ) {\n this.queueRefreshTimeout();\n }\n\n if ( this.renderClose ) {\n classList.push('n-closable');\n }\n\n if ( ! this.tempValue ) {\n classList.push('n-hidden');\n }\n\n let innerHtml = null;\n\n if ( this.tempValue ) {\n innerHtml = this.ctor('renderFrame')();\n }\n\n return (\n <div class={classList}>\n { [innerHtml, this.ctor('renderBackdrop')()] }\n </div>\n );\n }\n\n}\n","import Modal from './src/modal/modal';\n\nexport default function (App) {\n App.component(Modal.name, Modal);\n}\n","import { h } from \"vue\";\nimport { Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NInput',\n\n inject: {\n\n NForm: {\n default: undefined\n },\n\n NFormItem: {\n default: undefined\n }\n\n },\n\n inheritAttrs: false,\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n iconPosition: {\n default()\n {\n return 'after';\n },\n type: [String]\n },\n\n iconDisabled: {\n default()\n {\n return null;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n nativeType: {\n default()\n {\n return 'text';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n placeholder: {\n default()\n {\n return '';\n },\n type: [String]\n }\n\n },\n\n computed: {\n\n deepDisabled() {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n }\n\n },\n\n data()\n {\n return {\n focus: false, tempValue: this.modelValue || ''\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n methods: {\n\n onIconClick(event)\n {\n if ( event.clientX || event.clientY ) {\n this.$emit('icon-click', event);\n }\n },\n\n onInput(event)\n {\n this.$emit('update:modelValue',\n this.tempValue = event.target.value);\n },\n\n onKeydown(event)\n {\n this.$emit('keydown', event);\n\n if ( event.which !== 13 ) {\n return;\n }\n\n event.preventDefault();\n\n if ( ! this.NForm ) {\n return;\n }\n\n this.NForm.onSubmit(event);\n },\n\n onFocus(event)\n {\n this.focus = true;\n },\n\n onBlur(event)\n {\n this.focus = false;\n }\n\n },\n\n renderIcon()\n {\n if ( !this.icon ) {\n return null;\n }\n\n let disabled = this.deepDisabled;\n\n if ( this.iconDisabled !== null ) {\n disabled = this.iconDisabled;\n }\n\n let props = {\n type: 'input',\n icon: this.icon,\n size: this.size,\n square: true,\n disabled: disabled,\n };\n\n if ( !disabled ) {\n props.onClick = this.onIconClick;\n }\n\n return (<NButton {...props} />);\n },\n\n renderInput()\n {\n let props = Obj.except(this.$attrs, [\n 'class', 'style'\n ]);\n\n Obj.assign(props, {\n value: this.tempValue,\n type: this.nativeType,\n disabled: this.deepDisabled,\n placeholder: this.placeholder,\n onInput: this.onInput,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onKeydown: this.onKeydown\n });\n\n return h('input', props);\n },\n\n render()\n {\n let classList = [\n 'n-input',\n 'n-input--' + this.size,\n 'n-input--' + this.type,\n ];\n\n if ( this.icon ) {\n classList.push('n-input--icon');\n classList.push('n-input--icon-' + this.iconPosition);\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n let props = Obj.only(this.$attrs, ['style'], {\n class: this.cmer(classList)\n });\n\n let innerHtml = [];\n\n if ( this.iconPosition === 'before' ) {\n innerHtml.push(this.ctor('renderIcon')());\n }\n\n innerHtml.push(this.ctor('renderInput')());\n\n if ( this.iconPosition === 'after' ) {\n innerHtml.push(this.ctor('renderIcon')());\n }\n\n return h('div', props, innerHtml);\n }\n\n}\n","import Input from './src/input/input';\n\nexport default function (App) {\n App.component(Input.name, Input);\n}\n","import { Arr, Obj, Num, Now, Any, Dom, Locale } from \"@kizmann/pico-js\";\nimport { h } from \"vue\";\n\nexport default {\n\n name: 'NInputNumber',\n\n inheritAttrs: false,\n\n inject: {\n\n NFormItem: {\n default: undefined\n }\n \n },\n\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n min: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n max: {\n default()\n {\n return Number.MAX_VALUE;\n },\n type: [Number]\n },\n\n placeholder: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n stepSize: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n precision: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n format: {\n default()\n {\n return ':count';\n },\n type: [String]\n },\n\n decimals: {\n default()\n {\n return Locale.trans('.');\n },\n type: [String]\n },\n\n },\n\n computed: {\n\n deepDisabled() {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = this.getValue(value);\n }\n }\n\n },\n\n data()\n {\n return {\n focus: false, tempValue: this.getValue(),\n }\n },\n\n methods: {\n\n clear()\n {\n this.$emit('update:modelValue', this.tempValue = this.clearValue);\n },\n\n getValue(value = null)\n {\n if ( Any.isNull(value) ) {\n value = this.modelValue;\n }\n\n if ( Any.isEmpty(value) ) {\n return this.min;\n }\n\n return Num.float(value);\n },\n\n getDisplayValue()\n {\n\n if ( Any.isEmpty(this.modelValue) ) {\n return null;\n }\n\n let value = Num.format(this.tempValue,\n this.decimals, ' ', this.precision);\n\n return Locale.trans(this.format, { count: value });\n },\n\n nextStep()\n {\n if ( isNaN(this.tempValue) ) {\n this.tempValue = 0;\n }\n\n let value = this.tempValue + this.stepSize;\n\n if ( this.max < value ) {\n return;\n }\n\n value = Num.float(value).toFixed(this.precision);\n\n this.$emit('update:modelValue',\n this.tempValue = Num.float(value));\n },\n\n onNextDown()\n {\n this.nextStep();\n\n this.nextTimeout = setTimeout(() => {\n this.nextInterval = setInterval(this.nextStep, 100);\n }, 400);\n\n Dom.find(document).on('mouseup', this.onNextUp,\n this._.uid);\n },\n\n onNextUp()\n {\n clearTimeout(this.nextTimeout);\n clearInterval(this.nextInterval);\n\n Dom.find(document).off('mouseup', null,\n this._.uid);\n },\n\n prevStep()\n {\n if ( isNaN(this.tempValue) ) {\n this.tempValue = 0;\n }\n\n let value = this.tempValue - this.stepSize;\n\n if ( this.min > value ) {\n return;\n }\n\n value = Num.float(value).toFixed(this.precision);\n\n this.$emit('update:modelValue',\n this.tempValue = Num.float(value));\n },\n\n onPrevDown()\n {\n this.prevStep();\n\n this.prevTimeout = setTimeout(() => {\n this.prevInterval = setInterval(this.prevStep, 100);\n }, 400);\n\n Dom.find(document).on('mouseup', this.onPrevUp,\n this._.uid);\n },\n\n onPrevUp()\n {\n clearTimeout(this.prevTimeout);\n clearInterval(this.prevInterval);\n\n Dom.find(document).off('mouseup', null,\n this._.uid);\n },\n\n onKeydown(event)\n {\n if ( event.which === 13 ) {\n this.onInput(event);\n }\n },\n\n onFocus(event)\n {\n this.focus = true;\n },\n\n onBlur(event)\n {\n this.onInput(event);\n\n this.focus = false;\n },\n\n onInput(event)\n {\n let value = event.target.value;\n\n if ( value.match(/^[0-9]+((.|,)[0-9]+)?$/) ) {\n value = this.format.replace(':count', value);\n }\n\n let format = this.format.replace(':count',\n `([0-9\\\\,\\\\.\\\\-\\\\s]+)`);\n\n let regex = new RegExp(`^${format}$`);\n\n let match = value.match(regex);\n\n if ( !match ) {\n return event.target.value = this.getDisplayValue();\n }\n\n value = match[1].replace(',', '.')\n .replace(/\\s/, '');\n\n value = Num.float(value).toFixed(this.precision);\n\n if ( value < this.min ) {\n value = this.min;\n }\n\n if ( value > this.max ) {\n value = this.max;\n }\n\n this.$emit('update:modelValue',\n this.tempValue = Num.float(value));\n\n event.target.value = this.getDisplayValue();\n }\n\n },\n\n renderPrev()\n {\n let disabled = this.deepDisabled ||\n this.tempValue <= this.min;\n\n let props = {\n type: 'input-number',\n size: this.size,\n icon: 'fa fa-minus',\n square: true,\n disabled: disabled,\n onMousedown: this.onPrevDown,\n };\n\n return (<NButton {...props} />);\n },\n\n renderNext()\n {\n let disabled = this.deepDisabled ||\n this.tempValue >= this.max;\n\n let props = {\n type: 'input-number',\n size: this.size,\n icon: 'fa fa-plus',\n square: true,\n disabled: disabled,\n onMousedown: this.onNextDown,\n };\n\n return (<NButton {...props} />);\n },\n\n renderInput()\n {\n let props = Obj.except(this.$attrs,\n ['class', 'style']);\n\n Obj.assign(props, {\n value: this.getDisplayValue(),\n disabled: this.deepDisabled,\n placeholder: this.placeholder,\n onKeydown: this.onKeydown,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n });\n\n return h('input', props);\n },\n\n renderClear()\n {\n if ( !this.clearable || Any.isEmpty(this.tempValue) ) {\n return null;\n }\n\n let props = {};\n\n if ( !this.deepDisabled ) {\n props.onMousedown = this.clear;\n }\n\n return (\n <div class=\"n-input-number__clear\" {...props}>\n <i class={nano.Icons.times}></i>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-input-number',\n 'n-input-number--' + this.type,\n 'n-input-number--' + this.size,\n ];\n\n if ( Any.isEmpty(this.modelValue) ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n {this.ctor('renderPrev')()}\n {this.ctor('renderInput')()}\n {this.ctor('renderClear')()}\n {this.ctor('renderNext')()}\n </div>\n );\n }\n\n}","import InputNumber from \"./src/input-number/input-number\";\n\nexport default function (App) {\n App.component(InputNumber.name, InputNumber);\n}","import { h } from \"vue\";\nimport {Obj, Any, UUID} from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTextarea',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n placeholder: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n autoRows: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n maxRows: {\n default()\n {\n return 12;\n },\n type: [Number]\n },\n\n minRows: {\n default()\n {\n return 4;\n },\n type: [Number]\n },\n\n maxLength: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n methods: {\n\n eventInput(event)\n {\n this.$emit('update:modelValue', \n this.tempValue = event.target.value);\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue || ''\n };\n },\n\n renderInput()\n {\n let props = Obj.except(this.$attrs, ['class', 'style']);\n\n Obj.assign(props, {\n value: this.tempValue,\n rows: this.minRows,\n disabled: this.disabled,\n placeholder: this.placeholder,\n onInput: this.eventInput,\n });\n\n if ( this.maxLength !== 0 ) {\n props.maxLength = this.maxLength;\n }\n\n let currentRows = (this.tempValue.match(/\\n/g) || []).length + 1;\n\n if ( this.autoRows && props.rows < currentRows ) {\n props.rows = currentRows <= this.maxRows ? currentRows : this.maxRows;\n }\n\n return h('textarea', props);\n },\n\n render()\n {\n let classList = [\n 'n-textarea',\n 'n-textarea--' + this.size,\n 'n-textarea--' + this.type,\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = Obj.only(this.$attrs, ['style'], {\n class: this.cmer(classList)\n });\n\n return h('div', props, [this.ctor('renderInput')()]);\n }\n\n}\n","import Textarea from './src/textarea/textarea';\n\nexport default function (App) {\n App.component(Textarea.name, Textarea);\n}","import { Obj, Arr, Any, Num, Dom, Event } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSlider',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n range: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n steps: {\n default()\n {\n return 1;\n }\n },\n\n labels: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n min: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n max: {\n default()\n {\n return 100;\n },\n type: [Number]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n },\n\n data()\n {\n return {\n index: 0, width: null, tempValue: [null, null]\n };\n },\n\n computed: {\n\n selector()\n {\n return `[data-index=\"${this.index}\"]`;\n },\n\n fixmin()\n {\n return Any.isArray(this.steps) ? Arr.first(this.steps) : this.min;\n },\n\n fixmax()\n {\n return Any.isArray(this.steps) ? Arr.last(this.steps) : this.max;\n },\n\n minmax()\n {\n return this.fixmax - this.fixmin;\n },\n\n touch() {\n return !! ('ontouchstart' in window ||\n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n },\n\n watch: {\n\n modelValue()\n {\n this.getPseudoValue();\n }\n\n },\n\n mounted()\n {\n Dom.find(window).on('resize',\n Any.debounce(this.onResize, 500), this._.uid);\n\n this.onResize();\n this.getPseudoValue();\n },\n\n unmounted()\n {\n Dom.find(window).off('resize',\n null, this._.uid);\n },\n\n methods: {\n\n onResize()\n {\n this.width = Dom.find(this.$el).width();\n },\n\n getPseudoValue()\n {\n let value = this.modelValue;\n\n if ( Any.isNull(value) ) {\n value = this.fixmax;\n }\n if ( ! Any.isArray(value) ) {\n value = [this.fixmin, value];\n }\n\n return this.tempValue = value;\n },\n\n setModelValue()\n {\n let value = this.tempValue;\n\n if ( ! this.range ) {\n value = this.tempValue[1];\n }\n\n this.$emit('update:modelValue', value);\n },\n\n getValPos(value)\n {\n return Num.fixed(this.width / this.minmax * (value - this.fixmin), 2) + 'px';\n },\n\n getValStyle(value)\n {\n return 'transform: translateX(' + this.getValPos(value) + ');';\n },\n\n getBarPos()\n {\n return Num.fixed(this.width / this.minmax * (this.tempValue[0] - this.fixmin), 2) + 'px';\n },\n\n getBarWidth()\n {\n return Num.fixed(this.width / this.minmax * (this.tempValue[1] - this.tempValue[0]), 2) + 'px';\n },\n\n getBarStyle()\n {\n return 'max-width: ' + this.getBarWidth() + '; ' +\n 'transform: translateX(' + this.getBarPos() + ');';\n },\n\n getClosestValue(width)\n {\n if ( Any.isNumber(this.steps) ) {\n return Num.round(width / this.steps) * this.steps;\n }\n\n let range = Arr.last(this.steps) -\n Arr.first(this.steps);\n\n let diff = Arr.each(this.steps, (step) => {\n return Math.abs((range / 100 * width) - step + this.fixmin);\n });\n\n let index = Arr.findIndex(diff, Math.min(...diff));\n\n return this.steps[index];\n },\n\n getTouchEvent(event)\n {\n if ( ! this.touch ) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n onMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n Dom.find(this.$el).find(this.selector).addClass('n-move');\n Dom.find(document.body).addClass('n-move');\n\n Dom.find(document).on(this.mouseup,\n Any.framerate(this.onMouseup, 60), this._.uid);\n\n Dom.find(document).on(this.mousemove,\n Any.framerate(this.onMousemove, 60), this._.uid);\n },\n\n onMousemove(event)\n {\n this.clientX = this.getTouchEvent(event).clientX;\n\n let offsetX = Dom.find(this.$el)\n .offset('left');\n\n let relativeWidth = (this.clientX - offsetX) / this.width * 100;\n\n let closestValue = this.getClosestValue(relativeWidth);\n\n if ( closestValue < this.fixmin ) {\n closestValue = this.fixmin;\n }\n\n if ( closestValue > this.fixmax ) {\n closestValue = this.fixmax;\n }\n\n let stepMin = this.tempValue[0] + this.steps;\n\n if ( this.index === 1 && closestValue < stepMin ) {\n closestValue = stepMin;\n }\n\n let stepMax = this.tempValue[1] - this.steps;\n\n if ( this.index === 0 && closestValue > stepMax ) {\n closestValue = stepMax;\n }\n\n this.tempValue[this.index] = closestValue;\n },\n\n onMouseup(event)\n {\n event.preventDefault();\n event.stopPropagation();\n\n Dom.find(document).off(this.mouseup, null, this._.uid);\n Dom.find(document).off(this.mousemove, null, this._.uid);\n\n Dom.find(this.$el).find(this.selector).removeClass('n-move');\n Dom.find(document.body).removeClass('n-move');\n\n this.setModelValue();\n },\n\n },\n\n renderHandle(value, index)\n {\n let handleProps = {\n 'data-value': value,\n 'data-index': index,\n style: this.getValStyle(value)\n };\n\n handleProps['onMousedown'] = (event) => {\n this.onMousedown(event, this.index = index);\n };\n\n let key = Arr.findIndex(this.steps, value);\n\n return (\n <div class=\"n-slider__handle\" {...handleProps}>\n <span>{ Obj.get(this.labels, key, value) }</span>\n </div>\n );\n },\n\n renderHandles()\n {\n let values = Arr.clone(this.tempValue);\n\n if ( ! this.range ) {\n delete values[0];\n }\n\n return Arr.each(values, (value, index) => {\n return this.ctor('renderHandle')(value, index);\n });\n },\n\n renderBar()\n {\n let barProps = {\n style: this.getBarStyle()\n };\n\n return (\n <div class=\"n-slider__bar\">\n <div class=\"n-slider__range\" {...barProps}></div>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-slider',\n 'n-slider--' + this.size\n ];\n\n if ( this.range ) {\n classList.push('n-range');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderBar')() }\n { this.ctor('renderHandles')() }\n </div>\n );\n }\n\n}\n","import Vue from \"vue\";\n\nimport Slider from './src/slider/slider';\n\nexport default function (App) {\n App.component(Slider.name, Slider);\n}","import { Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSwitch',\n\n inject: {\n\n NFormItem: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return false;\n }\n },\n\n onValue: {\n default()\n {\n return true;\n }\n },\n\n offValue: {\n default()\n {\n return false;\n }\n },\n\n onType: {\n default()\n {\n return 'primary';\n }\n },\n\n offType: {\n default()\n {\n return 'default';\n }\n },\n\n size: {\n default()\n {\n return 'md';\n }\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n },\n\n computed: {\n\n deepDisabled() {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue\n };\n },\n\n methods: {\n\n eventClick()\n {\n let tempValue = this.onValue;\n\n if ( this.tempValue === this.onValue ) {\n tempValue = this.offValue;\n }\n\n this.$emit('update:modelValue', this.tempValue = tempValue);\n }\n\n },\n\n watch: {\n\n modelValue()\n {\n if ( this.modelValue !== this.tempValue ) {\n this.tempValue = this.modelValue;\n }\n }\n\n },\n\n renderSwitch()\n {\n let classList = [\n 'n-switch__switch'\n ];\n\n let props = {};\n\n if ( ! this.deepDisabled ) {\n props.onMousedown = this.eventClick;\n }\n\n return (\n <div class={classList} {...props}>\n <span></span>\n </div>\n )\n },\n\n renderLabel()\n {\n if ( ! this.$slots.default ) {\n return null;\n }\n\n let classList = [\n 'n-switch__label',\n ];\n\n let props = {};\n\n if ( ! this.deepDisabled ) {\n props.onMousedown = this.eventClick;\n }\n\n return (\n <div class={classList} {...props}>\n { this.$slots.default() }\n </div>\n )\n },\n\n render()\n {\n let classList = [\n 'n-switch',\n 'n-switch--' + this.size\n ];\n\n if ( this.tempValue === this.onValue ) {\n classList.push('n-switch--' + this.onType);\n }\n\n if ( this.tempValue === this.offValue) {\n classList.push('n-switch--' + this.offType);\n }\n\n if ( this.tempValue === this.onValue ) {\n classList.push('n-on');\n }\n\n if ( this.tempValue === this.offValue ) {\n classList.push('n-off');\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderSwitch')() }\n { this.ctor('renderLabel')() }\n </div>\n );\n }\n\n}\n","import Vue from \"vue\";\n\nimport Switch from './src/switch/switch';\n\nexport default function (App) {\n App.component(Switch.name, Switch);\n}","import { Obj, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NConfirm',\n\n props: {\n\n visible: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n listen: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n update: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n selector: {\n default()\n {\n return null;\n },\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n width: {\n default()\n {\n return 'auto';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'center-center';\n },\n type: [String]\n },\n\n closable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n confirmText: {\n default()\n {\n return Locale.trans('Confirm');\n },\n type: [String]\n },\n\n abortText: {\n default()\n {\n return Locale.trans('Abort');\n },\n type: [String]\n },\n\n buttonSize: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n },\n\n watch: {\n\n visible()\n {\n if ( this.visible !== this.tempVisible ) {\n this.tempVisible = this.visible;\n }\n }\n\n },\n\n data()\n {\n return {\n tempVisible: this.visible\n };\n },\n\n methods: {\n\n abort(event)\n {\n this.$refs.modal.closeModal(true, 'self');\n this.$emit('abort');\n },\n\n confirm(event)\n {\n this.$refs.modal.closeModal(true, 'self');\n this.$emit('confirm');\n },\n\n eventInput(value, source)\n {\n if ( ! value && source !== 'self' ) {\n this.$emit('abort');\n }\n\n this.$emit('update:visible', this.tempVisible = value);\n }\n\n },\n\n renderIcon()\n {\n return (\n <div class=\"n-confirm__icon\">\n <span class={nano.Icons[this.type]}></span>\n </div>\n );\n },\n\n renderBody()\n {\n return (\n <div class=\"n-confirm__body\">\n { this.$slots.default && this.$slots.default() || this.trans('Are you sure?') }\n </div>\n );\n },\n\n renderAction()\n {\n let classList = [\n 'n-confirm__action'\n ];\n\n if ( window.WIN ) {\n classList.push('n-reverse');\n }\n\n return (\n <div class={classList}>\n <NButton size={this.buttonSize} type={this.type} link={true} onClick={this.abort}>\n { this.abortText }\n </NButton>\n <NButton size={this.buttonSize} type={this.type} link={false} onClick={this.confirm}>\n { this.confirmText }\n </NButton>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-confirm',\n 'n-confirm--' + this.type,\n 'n-confirm--' + this.size\n ];\n\n let props = {\n type: 'default',\n selector: this.selector,\n listen: this.listen,\n update: this.update,\n width: this.width,\n position: this.position,\n closable: this.closable,\n modelValue: this.tempVisible,\n };\n\n // Override input listener\n props['onUpdate:modelValue'] = this.eventInput;\n\n let innerHtml = {\n raw: () => (\n <div class={classList}>\n { this.ctor('renderIcon')() }\n { this.ctor('renderBody')() }\n { this.ctor('renderAction')() }\n </div>\n )\n };\n\n return (\n <NModal ref=\"modal\" {...props}>\n { innerHtml }\n </NModal>\n );\n }\n\n}\n","import Confirm from './src/confirm/confirm';\n\nexport default function (App) {\n App.component(Confirm.name, Confirm);\n}\n","import { Obj, Now, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDatetimepicker',\n\n inject: {\n\n NFormItem: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n minDate: {\n default()\n {\n return null;\n }\n },\n\n maxDate: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n placeholder: {\n default()\n {\n return Locale.trans('Select datetime');\n },\n type: [String]\n },\n\n monthPanels: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n boundary: {\n default()\n {\n return null;\n }\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return Locale.trans('YYYY-MM-DD HH:mm:ss');\n },\n type: [String]\n },\n\n weekdays: {\n default()\n {\n return [\n Locale.trans('Mo'),\n Locale.trans('Tu'),\n Locale.trans('We'),\n Locale.trans('Th'),\n Locale.trans('Fr'),\n Locale.trans('Sa'),\n Locale.trans('Su'),\n ];\n },\n type: [Array]\n },\n\n months: {\n default()\n {\n return [\n Locale.trans('Jan'),\n Locale.trans('Feb'),\n Locale.trans('Mar'),\n Locale.trans('Apr'),\n Locale.trans('May'),\n Locale.trans('Jun'),\n Locale.trans('Jul'),\n Locale.trans('Aug'),\n Locale.trans('Sep'),\n Locale.trans('Oct'),\n Locale.trans('Nov'),\n Locale.trans('Dec'),\n ];\n },\n type: [Array]\n }\n\n },\n\n computed: {\n\n deepDisabled() {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n },\n\n },\n\n data()\n {\n return {\n focus: false, tempValue: Now.make(this.modelValue, this.format),\n };\n },\n\n methods: {\n\n clearDatetimepicker()\n {\n this.tempValue = Now.make(this.clearValue, \n this.format);\n\n this.$emit('update:modelValue', this.clearValue);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n onValueInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n hour: value.moment.hour(),\n minute: value.moment.minute(),\n second: value.moment.second(),\n });\n\n this.tempValue = Now.make(moment);\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n onDatepickerInput(value)\n {\n this.tempValue = Now.make(value, \n this.format);\n\n this.$emit('update:modelValue', value);\n },\n\n onTimepickerInput(value)\n {\n this.tempValue = Now.make(value,\n this.format);\n\n this.$emit('update:modelValue', value);\n },\n\n },\n\n\n renderLabelClear()\n {\n let isEmpty = ! this.tempValue.initialDate;\n\n if ( ! this.clearable || isEmpty ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.deepDisabled ) {\n props.onMousedown = this.clearDatetimepicker;\n }\n\n return (\n <div class=\"n-datetimepicker__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-datetimepicker__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderSingle()\n {\n let props = {\n value: '',\n disabled: this.deepDisabled,\n placeholder: this.placeholder,\n onInput: this.onValueInput,\n };\n\n if ( this.tempValue.valid() ) {\n props.value = this.tempValue.format(\n this.displayFormat, true);\n }\n\n return (\n <div class=\"n-datetimepicker__input\">\n <input {...props}/>\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-datetimepicker__display'\n ];\n\n if ( this.range ) {\n classList.push('n-range');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderSingle')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderPanels()\n {\n return (\n <div class=\"n-datetimepicker__body\">\n {[this.ctor('renderDatePanel')(), this.ctor('renderTimePanel')()]}\n </div>\n );\n },\n\n renderDatePanel()\n {\n let props = Obj.only(this.$props, [\n 'minDate', 'maxDate', 'size', 'type', 'format', 'monthPanels', 'disabled', 'weekdays', 'months'\n ]);\n\n props = Obj.assign(props, {\n modelValue: this.tempValue.format(this.format) || null,\n });\n\n props['onUpdate:modelValue'] = this.onDatepickerInput;\n\n return (\n <NDatepickerPanel class=\"n-datetimepicker__date-panel\" {...props}></NDatepickerPanel>\n );\n },\n\n renderTimePanel()\n {\n let props = Obj.only(this.$props, [\n 'size', 'type', 'format', 'disabled', 'hoursInterval', 'minutesInterval', 'secondsInterval'\n ]);\n\n props = Obj.assign(props, {\n modelValue: this.tempValue.format(this.format) || null,\n });\n\n props['onUpdate:modelValue'] = this.onTimepickerInput;\n\n return (\n <NTimepickerPanel class=\"n-datetimepicker__time-panel\" {...props}></NTimepickerPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.deepDisabled\n };\n\n let slots = {\n raw: this.ctor('renderPanels')\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props} v-slots={slots} />\n );\n },\n\n render()\n {\n let classList = [\n 'n-datetimepicker',\n 'n-datetimepicker--' + this.type,\n 'n-datetimepicker--' + this.size,\n ];\n\n let isEmpty = ! this.tempValue.initialDate;\n\n if ( isEmpty ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import Datetimepicker from \"./src/datetimepicker/datetimepicker\";\n\nexport default function (App) {\n App.component(Datetimepicker.name, Datetimepicker);\n}","import { Any, Obj, Arr, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDurationpicker',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n options: {\n default()\n {\n return [\n 60 * 5,\n 60 * 10,\n 60 * 15,\n 60 * 30,\n 60 * 45,\n 60 * 60,\n 60 * 90,\n 60 * 120,\n 60 * 150,\n 60 * 60 * 3,\n 60 * 60 * 4,\n 60 * 60 * 5,\n 60 * 60 * 6,\n 60 * 60 * 12,\n 60 * 60 * 24,\n 60 * 60 * 24 * 2,\n 60 * 60 * 24 * 3,\n 60 * 60 * 24 * 4,\n 60 * 60 * 24 * 5,\n 60 * 60 * 24 * 6,\n 60 * 60 * 24 * 7,\n ];\n },\n type: [Array]\n },\n\n minDuration: {\n default()\n {\n return null;\n }\n },\n\n maxDuration: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n placeholder: {\n default()\n {\n return Locale.trans('Select duration');\n },\n type: [String]\n },\n\n negativeText: {\n default()\n {\n return Locale.trans('Negative duration');\n },\n type: [String]\n },\n\n boundary: {\n default()\n {\n return null;\n }\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n days: {\n default()\n {\n return Locale.trans(':count Day|:count Days');\n },\n type: [String]\n },\n\n hours: {\n default()\n {\n return Locale.trans(':count Hour|:count Hours');\n },\n type: [String]\n },\n\n minutes: {\n default()\n {\n return Locale.trans(':count Minute|:count Minutes');\n },\n type: [String]\n },\n\n seconds: {\n default()\n {\n return Locale.trans(':count Second|:count Seconds');\n },\n type: [String]\n }\n\n },\n\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n },\n\n data()\n {\n return {\n focus: false, tempValue: this.modelValue, editValue: null\n };\n },\n\n methods: {\n\n findPattern(text, pattern)\n {\n pattern = pattern.replaceAll(':count', '([0-9\\.\\,]+)')\n .replaceAll(' ', '\\\\s*');\n\n return text.match(new RegExp(pattern, 'i'));\n },\n\n humanizeValue(value)\n {\n if ( Any.isEmpty(value) ) {\n return '';\n }\n\n if ( value < 0 ) {\n return this.negativeText;\n }\n\n let seconds = value;\n\n // Extract minutes\n let minutes = Math.floor(seconds/60);\n seconds -= minutes * 60;\n\n // Extract hours\n let hours = Math.floor(minutes/60);\n minutes -= hours * 60;\n\n\n // Extract days\n let days = Math.floor(hours/24);\n hours -= days * 24;\n\n let text = [];\n\n if ( days ) {\n text.push(Locale.choice(this.days, days));\n }\n\n if ( hours ) {\n text.push(Locale.choice(this.hours, hours));\n }\n\n if ( minutes ) {\n text.push(Locale.choice(this.minutes, minutes));\n }\n\n if ( seconds ) {\n text.push(Locale.choice(this.seconds, seconds));\n }\n\n return text.join(' ');\n },\n\n digitizeValue(text)\n {\n if ( Any.isEmpty(text) ) {\n return this.clearValue;\n }\n\n let value = 0;\n\n let dmatch = this.findPattern(text, this.days);\n\n if ( dmatch && dmatch.length === 3 ) {\n value += Any.float(dmatch[1].replace(',', '.')) * 24 * 60 * 60;\n }\n\n let hmatch = this.findPattern(text, this.hours);\n\n if ( hmatch && hmatch.length === 3 ) {\n value += Any.float(hmatch[1].replace(',', '.')) * 60 * 60;\n }\n\n let mmatch = this.findPattern(text, this.minutes);\n\n if ( mmatch && mmatch.length === 3 ) {\n value += Any.float(mmatch[1].replace(',', '.')) * 60;\n }\n\n let smatch = this.findPattern(text, this.seconds);\n\n if ( smatch && smatch.length === 3 ) {\n value += Any.float(smatch[1].replace(',', '.'));\n }\n\n return value;\n },\n\n clearDurationpicker()\n {\n this.$emit('update:modelValue', this.tempValue = this.clearValue);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n onValueInput(e)\n {\n let value = this.digitizeValue(e.target.value);\n\n if ( value === this.tempValue ) {\n return;\n }\n\n this.editValue = value;\n },\n\n onValueChange(e)\n {\n let value = this.editValue;\n\n // Clear edit value\n this.editValue = null;\n\n if ( ! value || value === this.tempValue ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue = value);\n },\n\n onDurationpickerInput(value)\n {\n this.focus = false;\n\n // Clear edit value\n this.editValue = null;\n\n this.$emit('update:modelValue', this.tempValue = value);\n },\n\n },\n\n renderLabelClear()\n {\n if ( ! this.clearable || ! this.tempValue ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearDurationpicker;\n }\n\n return (\n <div class=\"n-durationpicker__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-durationpicker__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderInput()\n {\n let props = {\n value: this.humanizeValue(this.tempValue),\n disabled: this.disabled,\n placeholder: this.placeholder,\n onInput: this.onValueInput,\n onBlur: this.onValueChange,\n onChange: this.onValueChange,\n };\n\n return (\n <div class=\"n-durationpicker__input\">\n <input {...props}/>\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-durationpicker__display'\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderInput')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderItems()\n {\n return Arr.each(this.options, (value) => {\n\n let text = this.humanizeValue(value);\n\n let optionProps = {\n //\n };\n\n optionProps['onClick'] = () => {\n this.onDurationpickerInput(value);\n }\n\n return (<NPopoverOption {...optionProps}>{text}</NPopoverOption>)\n });\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: -1,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled\n };\n\n let slots = {};\n\n slots.raw = () => {\n\n let scrollProps = {\n relative: true, size: this.size\n }\n\n return (\n <NScrollbar ref=\"scrollbar\" class=\"n-durationpicker__body\" {...scrollProps}>\n {this.ctor('renderItems')()}\n </NScrollbar>\n )\n }\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props} v-slots={slots} />\n );\n },\n\n render()\n {\n let classList = [\n 'n-durationpicker',\n 'n-durationpicker--' + this.type,\n 'n-durationpicker--' + this.size,\n ];\n\n if ( ! this.tempValue ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import Durationpicker from \"./src/durationpicker/durationpicker\";\n\nexport default function (App) {\n App.component(Durationpicker.name, Durationpicker);\n}","import { Str, Arr, Obj, Any, UUID } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTransfer',\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n sourceLabel: {\n default()\n {\n return 'Source';\n },\n type: [String]\n },\n\n targetLabel: {\n default()\n {\n return 'Target';\n },\n type: [String]\n },\n\n labelProp: {\n default()\n {\n return 'label';\n },\n type: [String]\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n }\n\n },\n\n computed: {\n\n sourceChecked()\n {\n return !! this.selectedSource.length && \n this.selectedSource.length === this.tempSource.length;\n },\n\n sourceIntermediate()\n {\n return !! this.selectedSource.length && \n this.selectedSource.length !== this.tempSource.length;\n },\n\n targetChecked()\n {\n return !! this.selectedTarget.length && \n this.selectedTarget.length === this.tempTarget.length;\n },\n\n targetIntermediate()\n {\n return !! this.selectedTarget.length && \n this.selectedTarget.length !== this.tempTarget.length;\n },\n\n tempSource()\n {\n let source = Arr.filter(this.options, (item) => {\n return ! Arr.find(this.tempValue, { [this.uniqueProp]: item[this.uniqueProp] });\n });\n\n if ( Any.isEmpty(this.sourceSearch) ) {\n return Arr.clone(source);\n }\n\n let searchPattern = new RegExp(this.sourceSearch, 'i');\n\n source = Arr.filter(source, (item) => {\n return item[this.labelProp].match(searchPattern);\n });\n\n return Arr.clone(source);\n },\n\n tempTarget()\n {\n let target = Arr.filter(this.options, (item) => {\n return !! Arr.find(this.tempValue, { [this.uniqueProp]: item[this.uniqueProp] });\n });\n\n if ( Any.isEmpty(this.targetSearch) ) {\n return Arr.clone(target);\n }\n\n let searchPattern = new RegExp(this.targetSearch, 'i');\n\n target = Arr.filter(target, (item) => {\n return item[this.labelProp].match(searchPattern);\n });\n\n return Arr.clone(target);\n }\n\n },\n data()\n {\n return {\n uid: UUID(),\n tempValue: this.modelValue,\n sourceSearch: '',\n targetSearch: '',\n selectedSource: [],\n selectedTarget: []\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n methods: {\n\n moveItemsTarget(options)\n {\n Arr.each(options, (source) => {\n\n let item = Arr.find(this.options, {\n [this.uniqueProp]: source\n });\n\n Arr.add(this.tempValue, item, {\n [this.uniqueProp]: source\n });\n\n });\n\n this.$emit('input', this.tempValue);\n },\n\n moveItemsSource(options)\n {\n Arr.each(options, (source) => {\n\n Arr.remove(this.tempValue, {\n [this.uniqueProp]: source\n });\n\n });\n\n this.$emit('input', this.tempValue);\n },\n\n moveRowTarget(node)\n {\n // Get node unique\n let target = node.value[this.uniqueProp];\n\n // Remove item from selected list\n Arr.remove(this.selectedTarget, target);\n\n this.tempValue = Arr.remove(this.tempValue, {\n [this.uniqueProp]: target\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n moveRowSource(node)\n {\n // Get node unique\n let source = node.value[this.uniqueProp];\n\n // Remove item from selected list\n Arr.remove(this.selectedSource, source);\n\n Arr.add(this.tempValue, node.item, source, {\n [this.uniqueProp]: source\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n moveToSource()\n {\n Arr.each(this.selectedTarget, (target) => {\n\n Arr.remove(this.tempValue, {\n [this.uniqueProp]: target\n });\n\n });\n\n this.selectedTarget = [];\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n moveToTarget()\n {\n Arr.each(this.selectedSource, (source) => {\n\n let item = Arr.find(this.options, {\n [this.uniqueProp]: source\n });\n\n Arr.add(this.tempValue, item, {\n [this.uniqueProp]: source\n });\n\n });\n\n this.selectedSource = [];\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n updateSelectedSource(selected)\n {\n this.selectedSource = selected;\n },\n\n updateSelectedTarget(selected)\n {\n this.selectedTarget = selected;\n }\n\n },\n\n renderSourceSelect()\n {\n let props = {\n modelValue: this.sourceChecked,\n size: this.size,\n type: this.type,\n intermediate: this.sourceIntermediate,\n disabled: ! this.tempSource.length\n };\n\n props['onUpdate:modelValue'] = () => {\n this.$refs.source.selectAll();\n };\n\n return (\n <div class=\"n-transfer__select\">\n <NCheckbox {...props} />\n </div>\n );\n },\n\n renderSourceTitle()\n {\n let labelHtml = (\n <span class=\"n-transfer__item-title\">\n { this.sourceLabel }\n </span>\n );\n\n let counterHtml = (\n <span class=\"n-transfer__item-count\">\n { this.tempSource.length }\n </span>\n );\n\n return (\n <div class=\"n-transfer__title\">\n { [labelHtml, counterHtml] }\n </div>\n );\n },\n\n renderSourceHeader()\n {\n return (\n <div class=\"n-transfer__header\">\n { this.ctor('renderSourceSelect')() }\n { this.ctor('renderSourceTitle')() }\n </div>\n );\n },\n\n renderSourceSearch()\n {\n let props = {\n placeholder: this.trans('Search item'),\n size: this.size,\n type: this.type,\n icon: nano.Icons.times,\n iconDisabled: ! this.sourceSearch\n };\n\n props['onIconClick'] = () => {\n this.sourceSearch = '';\n };\n\n props['onUpdate:modelValue'] = () => {\n this.selectedSource = [];\n };\n\n return (\n <div class=\"n-transfer__search\">\n <NInput vModel={this.sourceSearch} {...props} />\n </div>\n )\n },\n\n renderSourceBody()\n {\n let props = {\n group: [this.uid + 'source'],\n allowGroups: [this.uid + 'target'],\n items: this.tempSource,\n size: this.size,\n type: this.type,\n renderSelect: true,\n selected: this.selectedSource,\n safezone: () => -10,\n disableMove: true,\n renderNode: this.ctor('renderNode'),\n onMove: this.moveItemsSource,\n 'onRowDblclick': this.moveRowSource,\n 'onUpdate:selected': this.updateSelectedSource\n };\n\n return (\n <NDraglist ref=\"source\" class=\"n-transfer__body\" {...props} />\n );\n },\n\n renderTargetSelect()\n {\n let props = {\n modelValue: this.targetChecked,\n size: this.size,\n type: this.type,\n intermediate: this.targetIntermediate,\n disabled: ! this.tempTarget.length\n };\n\n props['onUpdate:modelValue'] = () => {\n this.$refs.target.selectAll();\n };\n\n return (\n <div class=\"n-transfer__select\">\n <NCheckbox {...props} />\n </div>\n );\n },\n\n renderTargetTitle()\n {\n let labelHtml = (\n <span class=\"n-transfer__item-title\">\n { this.targetLabel }\n </span>\n );\n\n let counterHtml = (\n <span class=\"n-transfer__item-count\">\n { this.tempTarget.length }\n </span>\n );\n\n return (\n <div class=\"n-transfer__title\">\n { [labelHtml, counterHtml] }\n </div>\n );\n },\n\n renderTargetHeader()\n {\n return (\n <div class=\"n-transfer__header\">\n { this.ctor('renderTargetSelect')() }\n { this.ctor('renderTargetTitle')() }\n </div>\n );\n },\n\n renderTargetSearch()\n {\n let props = {\n placeholder: this.trans('Search item'),\n size: this.size,\n type: this.type,\n icon: nano.Icons.times,\n iconDisabled: ! this.targetSearch\n };\n\n props['onIconClick'] = () => {\n this.targetSearch = '';\n };\n\n props['onUpdate:modelValue'] = () => {\n this.selectedTarget = [];\n };\n\n return (\n <div class=\"n-transfer__search\">\n <NInput vModel={this.targetSearch} {...props} />\n </div>\n )\n },\n\n renderTargetBody()\n {\n let props = {\n group: [this.uid + 'target'],\n allowGroups: [this.uid + 'source'],\n items: this.tempTarget,\n size: this.size,\n type: this.type,\n renderSelect: true,\n selected: this.selectedTarget,\n safezone: () => -1,\n disableMove: true,\n renderNode: this.ctor('renderNode'),\n onMove: this.moveItemsTarget,\n 'onRowDblclick': this.moveRowTarget,\n 'onUpdate:selected': this.updateSelectedTarget\n };\n\n return (\n <NDraglist ref=\"target\" class=\"n-transfer__body\" {...props} />\n );\n },\n\n renderNode(props)\n {\n if ( this.$slots.default ) {\n return this.$slots.default(props);\n }\n\n return (\n <div class=\"n-transfer__item\">\n { Obj.get(props.item, this.labelProp) }\n </div>\n );\n },\n\n renderMoveSource()\n {\n let props = {\n disabled: ! this.selectedSource.length,\n size: this.size,\n type: this.type,\n square: true, \n icon: nano.Icons.angleRight,\n onClick: this.moveToTarget\n };\n\n return (\n <NButton {...props} />\n );\n },\n\n renderMoveTarget()\n {\n let props = {\n disabled: ! this.selectedTarget.length,\n size: this.size,\n type: this.type,\n square: true, \n icon: nano.Icons.angleLeft,\n onClick: this.moveToSource\n };\n return (\n <NButton {...props} />\n );\n },\n\n render($render)\n {\n let classList = [\n 'n-transfer',\n 'n-transfer--' + this.size,\n 'n-transfer--' + this.type,\n ]\n\n return (\n <div class={classList}>\n <div class=\"n-transfer__panel\">\n { this.ctor('renderSourceHeader')() }\n { this.ctor('renderSourceSearch')() }\n { this.ctor('renderSourceBody')() }\n </div>\n <div class=\"n-transfer__controls\">\n { this.ctor('renderMoveSource')() }\n { this.ctor('renderMoveTarget')() }\n </div>\n <div class=\"n-transfer__panel\">\n { this.ctor('renderTargetHeader')() }\n { this.ctor('renderTargetSearch')() }\n { this.ctor('renderTargetBody')() }\n </div>\n </div>\n );\n }\n\n}","import Transfer from \"./src/transfer/transfer\";\n\nexport default function (App) {\n App.component(Transfer.name, Transfer);\n}","import { Str, Num, Arr, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NPaginator',\n\n props: {\n\n page: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n limit: {\n default()\n {\n return 100;\n },\n type: [Number]\n },\n\n limitOptions: {\n default()\n {\n return [25, 50, 100, 500, 1000, 2500];\n },\n },\n\n total: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n maxPages: {\n default()\n {\n return 5;\n },\n type: [Number]\n },\n\n layout: {\n default()\n {\n return [\n 'limit', 'count', 'spacer', 'goto', 'pages'\n ]\n },\n type: [Array]\n }\n\n },\n\n computed: {\n\n pages()\n {\n return Num.ceil(this.total / this.tempLimit);\n },\n\n pageOptions()\n {\n return Arr.make(this.pages || 1);\n }\n\n },\n\n data()\n {\n return {\n tempPage: this.page, tempLimit: this.limit,\n };\n },\n\n\n\n methods: {\n\n forcePage(page)\n {\n if ( page !== this.tempPage ) {\n this.tempPage = page;\n }\n },\n\n updatePaginate()\n {\n let paginate = {\n page: this.tempPage, limit: this.tempLimit\n };\n\n this.$emit('paginate', paginate);\n },\n\n onPrevPage()\n {\n this.onPageInput(this.tempPage - 1);\n },\n\n onNextPage()\n {\n this.onPageInput(this.tempPage + 1);\n },\n\n onFirstPage()\n {\n this.onPageInput(1);\n },\n\n onLastPage()\n {\n this.onPageInput(this.pages);\n },\n\n onPageInput(value)\n {\n this.$emit('update:page', this.tempPage = value);\n\n this.updatePaginate();\n },\n\n onLimitInput(value)\n {\n if ( this.tempLimit !== value ) {\n this.$emit('update:page', this.tempPage = 1);\n }\n\n this.$emit('update:limit', this.tempLimit = value);\n\n this.updatePaginate();\n },\n\n },\n\n watch: {\n\n page(value)\n {\n if ( value !== this.tempPage ) {\n this.tempPage = value;\n }\n },\n\n limit(value)\n {\n if ( value !== this.tempLimit ) {\n this.tempLimit = value;\n }\n }\n\n },\n\n renderLimit()\n {\n let props = {\n modelValue: this.tempLimit,\n size: this.size,\n type: this.type,\n optionsValue: '$value.value',\n optionsLabel: '$value.label',\n };\n\n props.options = Arr.each(this.limitOptions, (limit) => {\n return {\n value: limit, label: this.choice(':count items', limit)\n };\n });\n\n props['onUpdate:modelValue'] = this.onLimitInput;\n\n return (\n <div class=\"n-paginator__limit\">\n <NSelect {...props} />\n </div>\n );\n },\n\n renderCount()\n {\n return (\n <div class=\"n-paginator__count\">\n { this.choice('No items|Total :count item|Total :count items', this.total) }\n </div>\n );\n },\n\n renderSpacer()\n {\n return (\n <div class=\"n-paginator__spacer\">\n { /* Nothing :( */ }\n </div>\n );\n },\n\n renderGoto()\n {\n if ( this.pageOptions.length > 500 ) {\n return null;\n }\n\n let props = {\n modelValue: this.tempPage,\n size: this.size,\n type: this.type,\n undefinedText: '?',\n optionsValue: '$value.value',\n optionsLabel: '$value.label',\n };\n\n props.options = Arr.reduce(this.pageOptions, (merge, index) => {\n return Arr.push(merge, {\n value: index, label: index\n });\n }, []);\n\n props['onUpdate:modelValue'] = this.onPageInput;\n\n return (\n <div class=\"n-paginator__goto\">\n <NSelect {...props} />\n </div>\n );\n },\n\n renderPrev()\n {\n let props = {\n type: this.type,\n square: true,\n size: this.size,\n icon: nano.Icons.angleLeft,\n onClick: this.onPrevPage\n };\n\n if ( this.tempPage - 1 < 1 ) {\n props.disabled = true;\n }\n\n return (\n <NButton {...props} />\n );\n },\n\n renderNext()\n {\n let props = {\n type: this.type,\n square: true,\n size: this.size,\n icon: nano.Icons.angleRight,\n onClick: this.onNextPage\n };\n\n if ( this.tempPage + 1 > this.pages ) {\n props.disabled = true;\n }\n\n return (\n <NButton {...props} />\n );\n },\n\n renderFirst()\n {\n if ( this.pages < this.maxPages ) {\n return null;\n }\n\n let props = {\n type: this.type,\n square: true,\n size: this.size,\n icon: nano.Icons.angleDoubleLeft,\n onClick: this.onFirstPage\n };\n\n if ( this.tempPage - 1 < 1 ) {\n props.disabled = true;\n }\n\n return (\n <NButton {...props} />\n );\n },\n\n renderLast()\n {\n if ( this.pages < this.maxPages ) {\n return null;\n }\n\n let props = {\n type: this.type,\n square: true,\n size: this.size,\n icon: nano.Icons.angleDoubleRight,\n onClick: this.onLastPage\n };\n\n if ( this.tempPage + 1 > this.pages ) {\n props.disabled = true;\n }\n\n return (\n <NButton {...props} />\n );\n },\n\n renderPage(index)\n {\n let page = this.tempPage;\n\n let pages = Math.abs(this.maxPages / 2);\n\n if ( page < pages ) {\n page = pages;\n }\n\n let global = Array(this.pages).length;\n\n if ( page > global - pages ) {\n page = global - pages;\n }\n\n let current = Num.int(index);\n\n if ( current < page - pages ) {\n return null;\n }\n\n if ( current > Math.max(1, page + pages) ) {\n return null;\n }\n\n let props = {\n type: this.type,\n size: this.size,\n };\n\n if ( current === this.tempPage ) {\n props.disabled = true;\n }\n\n props.onClick = () => {\n this.onPageInput(current);\n };\n\n return (\n <NButton {...props}>{ current }</NButton>\n );\n },\n\n renderPages()\n {\n let pages = Arr.each(this.pageOptions, (index) => {\n return this.ctor('renderPage')(index);\n });\n\n return (\n <div class=\"n-paginator__pages\">\n { this.ctor('renderFirst')() }\n { this.ctor('renderPrev')() }\n { ...pages }\n { this.ctor('renderNext')() }\n { this.ctor('renderLast')() }\n </div>\n );\n },\n\n renderSlot(view)\n {\n let renderFunction = this.ctor('render' + \n Str.ucfirst(view));\n\n if ( Any.isFunction(renderFunction) ) {\n return renderFunction();\n }\n\n return this.$slots[view] && this.$slots[view]();\n },\n\n render()\n {\n let className = [\n 'n-paginator',\n 'n-paginator--' + this.size,\n 'n-paginator--' + this.type\n ];\n\n return <div class={className}>\n {\n Arr.each(this.layout, (view) => {\n return this.ctor('renderSlot')(view);\n })\n }\n </div>;\n }\n}\n","import Paginator from './src/paginator/paginator';\n\nexport default function (App) {\n App.component(Paginator.name, Paginator);\n}","import { Arr, Obj, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NFile',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n multiple: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n placeholder: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n clearable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n clearableIcon: {\n default()\n {\n return nano.Icons.times;\n },\n type: [String]\n },\n\n buttonText: {\n default()\n {\n return Locale.trans('Select file');\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue\n };\n },\n\n watch: {\n\n modelValue()\n {\n if ( this.modelValue !== this.tempValue ) {\n this.tempValue = this.modelValue;\n }\n },\n\n tempValue()\n {\n if ( Any.isEmpty(this.tempValue) ) {\n this.$refs.input.value = null;\n }\n }\n\n },\n\n methods: {\n\n openContext()\n {\n this.$refs.input.click();\n },\n\n updateFile()\n {\n let tempValue = [\n ...this.$refs.input.files\n ];\n\n if ( ! this.multiple ) {\n tempValue = tempValue[0];\n }\n\n this.$emit('update:modelValue', this.tempValue = tempValue);\n },\n\n clearFile()\n {\n this.$emit('update:modelValue', null);\n }\n\n },\n\n renderInput()\n {\n let props = {\n size: this.size,\n disabled: true,\n iconDisabled: false,\n };\n\n props['onIconClick'] = this.clearFile;\n\n if ( ! this.multiple ) {\n props.modelValue = Obj.get(this.tempValue, 'name');\n }\n\n if ( this.multiple ) {\n props.modelValue = Locale.choice(':count File|:count Files',\n this.tempValue.length);\n }\n\n if ( this.clearable && !Any.isEmpty(this.tempValue) ) {\n props.icon = this.clearableIcon;\n }\n\n return (\n <NInput {...props}>\n { /* Input field for text */ }\n </NInput>\n );\n },\n\n renderButton()\n {\n let props = {\n size: this.size,\n disabled: this.disabled,\n icon: this.icon,\n onClick: this.openContext\n };\n\n return (\n <NButton {...props}>{this.buttonText}</NButton>\n );\n },\n\n renderHidden()\n {\n let props = {\n 'onInput': this.updateFile\n };\n\n return (\n <div class=\"n-file__input\">\n <input ref=\"input\" type=\"file\" multiple={this.multiple} {...props}></input>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-file'\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderInput')() }\n { this.ctor('renderButton')() }\n { this.ctor('renderHidden')() }\n </div>\n )\n }\n\n}\n","import File from './src/file/file';\n\nexport default function (App) {\n App.component(File.name, File);\n}\n\n","import { Num, Arr, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NRating',\n\n props: {\n\n modelValue: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n steps: {\n default()\n {\n return 0.5;\n },\n type: [Number]\n },\n\n fixed: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n max: {\n default()\n {\n return 5;\n },\n type: [Number]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n choice: {\n default()\n {\n return ':count';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n computed: {\n\n virtualValue()\n {\n return Num.fixed(1 / this.max * this.modelValue * 5, this.fixed);\n },\n\n },\n\n renderStars()\n {\n let stars = [\n 1, 2, 3, 4, 5\n ];\n\n return Arr.each (stars, (rate) => {\n\n let className = 'is-null';\n\n if ( this.virtualValue >= rate - 0.5 ) {\n className = 'is-half';\n }\n\n if ( this.virtualValue >= rate ) {\n className = 'is-full';\n }\n\n return (\n <span class={className}></span>\n );\n });\n },\n\n renderValue()\n {\n let vars = {\n value: Num.format(this.modelValue, '.', '', this.fixed)\n };\n\n if ( this.$slots.default ) {\n return this.$slots.default(vars);\n }\n\n return Locale.choice(this.choice, this.modelValue, vars);\n },\n\n render()\n {\n let classList = [\n 'n-rating',\n 'n-rating--' + this.size,\n 'n-rating--' + this.type\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n <div class=\"n-rating__stars\">\n {this.ctor('renderStars')()}\n </div>\n <div class=\"n-rating__value\">\n {this.ctor('renderValue')()}\n </div>\n </div>\n );\n }\n\n}\n","import Rating from './src/rating/rating';\n\nexport default function (App) {\n App.component(Rating.name, Rating);\n}\n"],"sourceRoot":""}