@kizmann/nano-ui 0.7.25 → 0.7.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/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/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/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","transformDrop","insertNode","moveNodesRoot","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","undefined","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","visible","highlight","firstSelected","tempCurrent","tempExpanded","drag","virtualscroller","bindRoot","$watch","watchSelected","deep","refreshVirtuals","unbindRoot","filterVirtuals","findVirtual","console","log","contains","getIndex","findIndex","getCurrentIndex","isDraggable","canDrag","isHighlight","highlightNode","refresh","recursive","add","$nextTick","scrollToHighlight","first","isCurrent","setCurrent","setRawCurrent","setNextCurrent","setPrevCurrent","reset","syncCurrent","isDisabled","canSelect","hasChildren","getChildren","isExpanded","expandItem","toggle","expandCurrent","isTotalSelected","isInterSelected","selectItem","selectAll","indexies","unselectAll","bindKeydown","onKeydown","unbindKeydown","which","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","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","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","source","result","keyCode","header","viewBody","isNull","tempSize","focus","icon","imagePosition","clickClose","renderImage","renderIcon","renderContent","Popover","PopoverGroup","PopoverOption","form","errors","forceChange","forceErrors","onSubmit","addItem","removeItem","setForm","veForm","md5","setErrors","veErrors","NForm","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","val","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","inheritAttrs","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","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","NCollapse","showTab","hideTab","toggleTab","NCollapseItem","dragger","renderHeaderAngle","angle","showDelay","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","timeout","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","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 = 14);\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 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 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 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 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 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 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('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 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 === 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 { 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'); 18.1\n require('./transfer/index').default(App);\n require('./form/index').default(App); // check\n require('./tabs/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 // SX only ez 17.1\n // require('./file-list/index'); // SX only 17.1\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';\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}","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={140}>\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(() => this.$refs.scrollbar.adaptHeight(), 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\";\n\nexport default {\n\n name: 'NForm',\n\n model: {\n prop: 'form'\n },\n\n props: {\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 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 methods: {\n\n onSubmit(event)\n {\n if ( this.prevent ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.$emit('submit', event);\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 setForm(form)\n {\n let veForm = Obj.clone(form);\n\n if ( Any.md5(veForm) !== Any.md5(this.veForm) || this.forceChange ) {\n this.$emit('change');\n }\n\n this.veForm = veForm;\n },\n\n setErrors(errors)\n {\n let veErrors = Obj.clone(errors);\n\n if ( Any.md5(veErrors) !== Any.md5(this.veErrors) || this.forceErrors ) {\n this.$emit('errors');\n }\n\n this.veErrors = veErrors;\n }\n\n },\n\n data()\n {\n return {\n uid: UUID(),\n elements: []\n };\n },\n\n provide()\n {\n return {\n NForm: this\n };\n },\n\n mounted()\n {\n // this.$watch('form', () => this.setForm(this.form),\n // { deep: true });\n\n // this.$watch('errors', () => this.setErrors(this.errors),\n // { deep: true });\n\n // let ident = {\n // _uid: this.uid\n // };\n\n // if ( this.propagation ) {\n // return;\n // }\n\n // Dom.find(this.$el).on('submit',\n // this.onSubmit, this._.uid);\n },\n\n beforeUnmount()\n {\n // let ident = {\n // _uid: this.uid\n // };\n\n // if ( this.propagation ) {\n // return;\n // }\n\n // Dom.find(this.$el).off('submit',\n // null, this._.uid);\n },\n\n render()\n {\n let classList = [\n 'n-form',\n 'n-form--' + this.align,\n ];\n\n return (\n <form class={classList} onSubmit={this.onSubmit}>\n { this.$slots.default && this.$slots.default() }\n </form>\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 return Obj.get(sources, value);\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 ( Obj.get(sources, prop, undefined) === undefined ) {\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 props.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.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 value()\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 props['on' + Str.ucfirst(this.mousedown)] = this.onSelect(tempCascade);\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 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 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 // 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 Locale.trans('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 } 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 '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: '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 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\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 this.$refs.content.scrollTop = y;\n this.$refs.content.scrollLeft = x;\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 ) {\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 300;\n },\n type: [Number]\n },\n\n debounce: {\n default()\n {\n return 300;\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 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 false;\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 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 this.iconDisabled;\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 });\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 { 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.value\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 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: Any.isEmpty(this.tempValue)\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 ) {\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/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/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/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","transformDrop","insertNode","moveNodesRoot","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","undefined","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","_uid","watchModifierUp","virtualscroller","bindRoot","$watch","watchSelected","deep","refreshVirtuals","unbindRoot","filterVirtuals","add","which","findVirtual","console","log","contains","getIndex","findIndex","getCurrentIndex","isDraggable","canDrag","isHighlight","highlightNode","refresh","recursive","$nextTick","scrollToHighlight","first","isCurrent","setCurrent","setRawCurrent","setNextCurrent","setPrevCurrent","reset","syncCurrent","isDisabled","canSelect","hasChildren","getChildren","isExpanded","expandItem","toggle","expandCurrent","isTotalSelected","isInterSelected","toggleSingleNode","toggleRangeNode","indexies","reversed","selectItem","selectAll","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","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","NTable","sortProp","sortDir","closeFilterOnEnter","elements","tempVisible","tempVisibleProps","tempSortProp","tempSortDir","tempFilter","tempFilterProps","makeVisibleProps","detectVisible","addColumn","column","removeColumn","getColumnIndex","getColumnVisiblity","getColumnSorted","getColumnFilter","filterProp","getColumnFiltered","detectVisibity","intersect","extract","onResize","sortByColumn","dir","replaceFilter","search","filters","resetFilter","refreshCurrent","modelValue","disabled","renderBody","columns","values","renderContext","label","renderHead","defaultRender","draggableHtml","tooltip","align","sort","breakpoint","previewProp","matrix","matrixProp","options","optionsValue","optionsLabel","fluid","fixedWidth","minWidth","maxWidth","emptyText","undefinedText","trueText","falseText","datetimeFormat","allowUncheck","matrixValues","NTableColumn","tempWidth","changedStates","sortDirection","flexBasis","onMousedown","renderHeadLabel","labelHtml","renderHeadSort","renderHeadFilter","angleHtml","resolveComponent","h","class","input","setFirstState","firstState","extends","TableCell","convertString","convertBoolean","convertDatetime","renderOption","$value","$index","option","toggleMatrix","toggleSelect","itemList","currentMatrix","combine","finder","isChecked","canReset","canApply","getFilterClone","mountFilter","_","getFilterProp","getDefaultFilter","applyFilter","clearFilter","popover","close","renderForm","renderApply","link","renderReset","renderFooter","trigger","footer","TableFilter","operator","li","nl","eq","ne","1","0","lt","gt","in","ni","Table","TableColumn","TableCellString","TableCellBoolean","TableCellDatetime","TableCellOption","TableCellImage","TableCellMatrix","TableCellSelect","TableFilterString","TableFilterBoolean","TableFilterDatetime","TableFilterOption","syncEvent","relative","tempValue","bindSyncEvent","unbindSyncEvent","updated","adaptHeight","setValue","NInfo","vals","infoHtml","renderLabel","InfoField","Info","InfoColumn","InfoFieldString","InfoFieldBoolean","InfoFieldDatetime","InfoFieldOption","InfoFieldImage","NPopover","listen","position","scrollClose","multiClose","clientX","prevent","refreshVisible","previous","append","onHover","onContext","onExit","onCloseEvent","active","open","pause","unpause","stopRefreshInterval","startRefreshInterval","passedOffset","updatePosition","isSameOffset","isSameSize","passedSize","getTargetHorizontal","targetRect","left","windowRect","posY","posX","center","inverse","broken","innerHeight","innerWidth","clientWidth","getTargetVertical","getTargetOffset","scroll","zIndex","isScrollClose","source","result","keyCode","header","viewBody","isNull","tempSize","focus","icon","imagePosition","clickClose","renderImage","renderIcon","renderContent","Popover","PopoverGroup","PopoverOption","form","errors","forceChange","forceErrors","onSubmit","addItem","removeItem","setForm","veForm","md5","setErrors","veErrors","NForm","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","val","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","inheritAttrs","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","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","NCollapse","showTab","hideTab","toggleTab","NCollapseItem","dragger","renderHeaderAngle","angle","showDelay","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","timeout","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","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 = 14);\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 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 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 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('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 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.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 { 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'); 18.1\n require('./transfer/index').default(App);\n require('./form/index').default(App); // check\n require('./tabs/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 // SX only ez 17.1\n // require('./file-list/index'); // SX only 17.1\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';\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}","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={140}>\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(() => this.$refs.scrollbar.adaptHeight(), 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\";\n\nexport default {\n\n name: 'NForm',\n\n model: {\n prop: 'form'\n },\n\n props: {\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 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 methods: {\n\n onSubmit(event)\n {\n if ( this.prevent ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.$emit('submit', event);\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 setForm(form)\n {\n let veForm = Obj.clone(form);\n\n if ( Any.md5(veForm) !== Any.md5(this.veForm) || this.forceChange ) {\n this.$emit('change');\n }\n\n this.veForm = veForm;\n },\n\n setErrors(errors)\n {\n let veErrors = Obj.clone(errors);\n\n if ( Any.md5(veErrors) !== Any.md5(this.veErrors) || this.forceErrors ) {\n this.$emit('errors');\n }\n\n this.veErrors = veErrors;\n }\n\n },\n\n data()\n {\n return {\n uid: UUID(),\n elements: []\n };\n },\n\n provide()\n {\n return {\n NForm: this\n };\n },\n\n mounted()\n {\n // this.$watch('form', () => this.setForm(this.form),\n // { deep: true });\n\n // this.$watch('errors', () => this.setErrors(this.errors),\n // { deep: true });\n\n // let ident = {\n // _uid: this.uid\n // };\n\n // if ( this.propagation ) {\n // return;\n // }\n\n // Dom.find(this.$el).on('submit',\n // this.onSubmit, this._.uid);\n },\n\n beforeUnmount()\n {\n // let ident = {\n // _uid: this.uid\n // };\n\n // if ( this.propagation ) {\n // return;\n // }\n\n // Dom.find(this.$el).off('submit',\n // null, this._.uid);\n },\n\n render()\n {\n let classList = [\n 'n-form',\n 'n-form--' + this.align,\n ];\n\n return (\n <form class={classList} onSubmit={this.onSubmit}>\n { this.$slots.default && this.$slots.default() }\n </form>\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 return Obj.get(sources, value);\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 ( Obj.get(sources, prop, undefined) === undefined ) {\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 props.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.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 value()\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 props['on' + Str.ucfirst(this.mousedown)] = this.onSelect(tempCascade);\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 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 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 // 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 Locale.trans('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 } 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 '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: '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 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\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 this.$refs.content.scrollTop = y;\n this.$refs.content.scrollLeft = x;\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 ) {\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 300;\n },\n type: [Number]\n },\n\n debounce: {\n default()\n {\n return 300;\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 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 false;\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 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 this.iconDisabled;\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 });\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 { 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.value\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 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: Any.isEmpty(this.tempValue)\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 ) {\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":""}