@kizmann/nano-ui 0.8.25 → 0.8.26

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","total","Math","ceil","floor","targetTop","scrollTo","x","clearState","delay","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","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","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","tooltipWindow","focusInput","$input","childs","click","gotoInput","keys","changeTab","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","propAwait","getState","propExists","exists","solveInput","$scope","$model","$global","toPropKey","splits","lcfirst","toEventKey","cb","solveContext","getProp","getInput","setInput","renderSetup","alias","defaultsBind","binds","events","updateKey","element","NConfig","NConfigNext","square","buttonType","nativeType","innerHtml","Button","ButtonGroup","clearValue","multiple","clearable","placeholder","collapseText","allowCreate","optionsDisabled","custom","tempClear","searched","NSelect","searchOptions","scrollToClosest","clear","addOption","removeOption","resetInput","onFocusInput","onInputInput","onKeydownInput","createOrToggle","selectPrev","selectNext","searchRegex","RegExp","toggleOption","denyUpdate","getOptionLabel","tempLabel","newIndex","scrollToCurrent","createOption","renderLabelClear","renderLabelAngle","renderLabelItem","renderLabelCollapse","firstHtml","renderLabelItems","renderMultiple","isEmptyValue","isNumber","onFocus","onInput","inputHtml","renderSingle","modelLabel","renderDisplay","displayHtml","emptyHtml","renderPopover","onClose","renderOptions","valueProp","labelProp","toggleItem","isMultipleActive","isSingleActive","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","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","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","onScrollTo","scrollLeft","onScrollIntoView","outerHeight","outerWidth","offsetLeft","$dom","offsetWidth","adaptScrollHeight","barHeight","max","maxHeight","heightRatio","vbar","hasVtrack","adaptScrollPosition","adaptScrollWidth","scrollWidth","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","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","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\n\n //console.log(this.$options, ctor);\n\n // console.log(ctor);\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)\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)\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 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 > chunks.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\n let totalHeight = this.items.length / this.state.grid *\n this.itemHeight;\n\n if ( this.threshold && this.items.length ) {\n style.height = Math.ceil(totalHeight) + '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 return canSelect({ item }) && ! item.depth;\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 } 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 props: {\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 },\n\n methods: {\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 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 return <div class={classList}>\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 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\n };\n },\n\n watch: {\n\n modelValue: function (value) {\n if ( value !== this.tempValue ) {\n this.tempValue = 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, $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, $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, $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, $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 element = alias.replace(/:.*?$/, '');\n\n let component = null;\n\n try {\n component = resolveComponent(element);\n } catch (e) {\n component = element;\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 return h(component, props, () => {\n return Arr.each(setup.content, (value, key) => this.ctor('renderSetup')(value, key));\n });\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 buttonType: {\n default()\n {\n return 'button';\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() }</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 } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSelect',\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 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 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 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 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 ) {\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 || ! this.$refs.scrollbar ) {\n return;\n }\n\n this.$refs.scrollbar.scrollIntoView(\n `[data-option=\"${selected._.uid}\"]`);\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 target = Arr.find(this.elements, { \n tempValue: value\n });\n\n if ( ! target ) {\n return;\n }\n\n this.$refs.scrollbar.scrollIntoView(\n `[data-option=\"${target._.uid}\"]`, 150);\n }\n\n },\n\n beforeMount()\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\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.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.disabled ) {\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.disabled,\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.disabled,\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 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 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.disabled,\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 ( 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.disabled ) {\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 this.NSelect.addOption(this);\n },\n\n beforeUnmount()\n {\n this.NSelect.removeOption(this);\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() }\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 return {\n tempValue: Now.make(this.modelValue),\n }\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 },\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}>\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 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}>\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 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}>\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 class=\"n-timepicker-panel__panel\">\n <div class=\"n-timepicker-panel__wrap\">\n { Arr.each(this.secondsGrid, this.ctor('renderSecondItem')) }\n </div>\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 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-tags-item--color-' + this.color,\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 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 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.load = 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 ) {\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 ( offsetHeight === 0 && this.overflowX ) {\n // outerHeight -= 15;\n // }\n\n let innerHeight = this.$refs.content\n .scrollHeight || 0;\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 ) {\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 ( offsetWidth === 0 && this.overflowY ) {\n // outerWidth -= 15;\n // }\n\n let innerWidth = this.$refs.content\n .scrollWidth || 0;\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 ) {\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.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 },\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 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.disabled;\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.disabled,\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.disabled ) {\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 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 watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = Num.float(value);\n }\n }\n\n },\n\n data()\n {\n return {\n focus: false, tempValue: Num.float(this.modelValue),\n }\n },\n\n methods: {\n\n clear()\n {\n this.$emit('update:modelValue', this.clearValue);\n },\n\n getDisplayValue()\n {\n if ( Any.isNull(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 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.disabled ||\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.disabled ||\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 disabled: this.disabled,\n placeholder: this.placeholder,\n onKeydown: this.onKeydown,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n });\n\n if ( this.modelValue !== null ) {\n props.value = this.getDisplayValue();\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.disabled ) {\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.disabled ) {\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 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 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.disabled ) {\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.disabled ) {\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.disabled ) {\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 },\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.size} type={this.type} link={true} onClick={this.abort}>\n { this.abortText }\n </NButton>\n <NButton size={this.size} 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 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\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.disabled ) {\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.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-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.disabled\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.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 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, \n tempLimit: this.limit,\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 this.$emit('update:limit', this.tempLimit = value);\n\n if ( this.pages < this.tempPage ) {\n this.$emit('update:page', this.tempPage = 1);\n }\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 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","total","Math","ceil","floor","targetTop","scrollTo","x","clearState","delay","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","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","tooltipWindow","focusInput","$input","childs","click","gotoInput","keys","changeTab","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","propAwait","getState","propExists","exists","solveInput","$scope","$model","$global","toPropKey","splits","lcfirst","toEventKey","cb","solveContext","getProp","getInput","setInput","renderSetup","alias","defaultsBind","binds","events","updateKey","element","NConfig","NConfigNext","square","buttonType","nativeType","innerHtml","Button","ButtonGroup","clearValue","multiple","clearable","placeholder","collapseText","allowCreate","optionsDisabled","custom","tempClear","searched","NSelect","searchOptions","scrollToClosest","clear","addOption","removeOption","resetInput","onFocusInput","onInputInput","onKeydownInput","createOrToggle","selectPrev","selectNext","searchRegex","RegExp","toggleOption","denyUpdate","getOptionLabel","tempLabel","newIndex","scrollToCurrent","createOption","renderLabelClear","renderLabelAngle","renderLabelItem","renderLabelCollapse","firstHtml","renderLabelItems","renderMultiple","isEmptyValue","isNumber","onFocus","onInput","inputHtml","renderSingle","modelLabel","renderDisplay","displayHtml","emptyHtml","renderPopover","onClose","renderOptions","valueProp","labelProp","toggleItem","isMultipleActive","isSingleActive","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","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","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","onScrollTo","scrollLeft","onScrollIntoView","outerHeight","outerWidth","offsetLeft","$dom","offsetWidth","adaptScrollHeight","barHeight","max","maxHeight","heightRatio","vbar","hasVtrack","adaptScrollPosition","adaptScrollWidth","scrollWidth","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","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","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\n\n //console.log(this.$options, ctor);\n\n // console.log(ctor);\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)\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)\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 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 > chunks.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\n let totalHeight = this.items.length / this.state.grid *\n this.itemHeight;\n\n if ( this.threshold && this.items.length ) {\n style.height = Math.ceil(totalHeight) + '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 } 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 props: {\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 },\n\n methods: {\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 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 return <div class={classList}>\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 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\n };\n },\n\n watch: {\n\n modelValue: function (value) {\n if ( value !== this.tempValue ) {\n this.tempValue = 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, $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, $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, $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, $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 element = alias.replace(/:.*?$/, '');\n\n let component = null;\n\n try {\n component = resolveComponent(element);\n } catch (e) {\n component = element;\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 return h(component, props, () => {\n return Arr.each(setup.content, (value, key) => this.ctor('renderSetup')(value, key));\n });\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 buttonType: {\n default()\n {\n return 'button';\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() }</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 } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSelect',\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 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 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 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 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 ) {\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 || ! this.$refs.scrollbar ) {\n return;\n }\n\n this.$refs.scrollbar.scrollIntoView(\n `[data-option=\"${selected._.uid}\"]`);\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 target = Arr.find(this.elements, { \n tempValue: value\n });\n\n if ( ! target ) {\n return;\n }\n\n this.$refs.scrollbar.scrollIntoView(\n `[data-option=\"${target._.uid}\"]`, 150);\n }\n\n },\n\n beforeMount()\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\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.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.disabled ) {\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.disabled,\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.disabled,\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 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 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.disabled,\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 ( 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.disabled ) {\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 this.NSelect.addOption(this);\n },\n\n beforeUnmount()\n {\n this.NSelect.removeOption(this);\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() }\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 return {\n tempValue: Now.make(this.modelValue),\n }\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 },\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}>\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 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}>\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 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}>\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 class=\"n-timepicker-panel__panel\">\n <div class=\"n-timepicker-panel__wrap\">\n { Arr.each(this.secondsGrid, this.ctor('renderSecondItem')) }\n </div>\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 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-tags-item--color-' + this.color,\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 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 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.load = 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 ) {\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 ( offsetHeight === 0 && this.overflowX ) {\n // outerHeight -= 15;\n // }\n\n let innerHeight = this.$refs.content\n .scrollHeight || 0;\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 ) {\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 ( offsetWidth === 0 && this.overflowY ) {\n // outerWidth -= 15;\n // }\n\n let innerWidth = this.$refs.content\n .scrollWidth || 0;\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 ) {\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.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 },\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 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.disabled;\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.disabled,\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.disabled ) {\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 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 watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = Num.float(value);\n }\n }\n\n },\n\n data()\n {\n return {\n focus: false, tempValue: Num.float(this.modelValue),\n }\n },\n\n methods: {\n\n clear()\n {\n this.$emit('update:modelValue', this.clearValue);\n },\n\n getDisplayValue()\n {\n if ( Any.isNull(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 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.disabled ||\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.disabled ||\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 disabled: this.disabled,\n placeholder: this.placeholder,\n onKeydown: this.onKeydown,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n });\n\n if ( this.modelValue !== null ) {\n props.value = this.getDisplayValue();\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.disabled ) {\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.disabled ) {\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 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 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.disabled ) {\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.disabled ) {\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.disabled ) {\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 },\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.size} type={this.type} link={true} onClick={this.abort}>\n { this.abortText }\n </NButton>\n <NButton size={this.size} 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 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\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.disabled ) {\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.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-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.disabled\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.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 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, \n tempLimit: this.limit,\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 this.$emit('update:limit', this.tempLimit = value);\n\n if ( this.pages < this.tempPage ) {\n this.$emit('update:page', this.tempPage = 1);\n }\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 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":""}