@kizmann/nano-ui 0.6.6 → 0.6.11

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/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/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"],"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","NDragCounter","$el","Dom","make","classList","appendTo","document","body","event","count","html","Locale","choice","dataTransfer","setData","setDragImage","global","DragCounter","NDragIndicator","parent","safezone","el","strategy","rect","getBoundingClientRect","clientY","y","height","find","hasClass","Arr","has","show","hide","offsetTop","style","top","css","Obj","map","item","remove","NDraghandler","rootNode","frame","DragIndicator","on","onDragenterRoot","onDragoverRoot","onDragleaveRoot","onDragendRoot","onDragdropRoot","Event","bindDragstart","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","push","childNodes","unbindNode","$handle","handle","onDragstartNode","onDragenterNode","onDragoverNode","onDragleaveNode","onDragendNode","onDragdropNode","transformDrop","insertNode","moveNodesRoot","moveNodesInto","moveNodesBefore","moveNodesAfter","sources","set","prop","filter","childProp","disableMove","targetRoute","join","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","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","keyMods","onDblclick","renderElement","renderSpacer","draggable","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","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","setValue","NInfo","vals","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","tempClear","searched","NSelect","searchOptions","scrollToClosest","clear","addOption","removeOption","resetInput","onFocusInput","onInputInput","onKeydownInput","createOrToggle","selectPrev","selectNext","searchRegex","RegExp","toggleOption","getOptionLabel","tempLabel","newIndex","scrollToCurrent","createOption","created","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","updated","renderHeaderIndicator","transform","renderHeader","tabs","preload","keep","_key","renderHeaderIcon","renderHeaderLabel","Tabs","TabsItem","NCollapse","showTab","hideTab","toggleTab","NCollapseItem","renderHeaderAngle","angle","Collapse","CollapseItem","tempExt","ImageCache","resolveLoad","loaded","reader","FileReader","onload","readAsDataURL","Preview","PreviewPlain","PreviewImage","PreviewVideo","lat","lng","zoom","NMap","callbacks","tempMap","Map","callback","getMap","onMount","tempMarker","importMarkerPosition","marker","setPosition","updateMarkerPosition","getPosition","initializeMarker","innerHTML","createMarker","addListener","debounce","setMarkerByAddress","address","then","focusMarkers","Notify","MapMarker","Notification","duration","iconPrimary","iconSecondary","iconSuccess","iconWarning","iconDanger","iconInfo","onclick","getIcon","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","adaptHeight","child","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","update","title","closable","renderClose","startRefreshTimeout","NModal","eventClick","eventKeydown","openModal","force","closeModal","stopRefreshTimeout","attr","backdrop","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","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","abs","renderPages","renderSlot","view","className","Paginator","clearableIcon","buttonText","openContext","updateFile","files","clearFile","renderButton","renderHidden","File"],"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\nclass NDragCounter {\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 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}\n\nglobal.DragCounter = new NDragCounter;\n\nclass NDragIndicator {\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 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 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 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\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 this.rootNode.$emit('move', sources, \n Obj.get(target, 'uid'), strategy);\n\n this.rootNode.$emit('moveraw', this.cacheNodes, \n 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 = [target.value.route, \n this.rootNode.childProp].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 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 = [route, index, \n this.rootNode.childProp].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 30;\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 500 / 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 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 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 this.timer = setTimeout(() => {\n this.NDraggable.drag.bindNode(this);\n }, 50);\n\n this.init = true;\n }, 10);\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 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.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.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 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 this.timer = setTimeout(() => {\n this.NDraggable.drag.bindNode(this);\n }, 50);\n\n this.init = true;\n }, 10);\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.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.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 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 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('./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('./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\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\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 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, 5);\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: Obj.clone(this.tempFilter), 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 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 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 return (\n <div class={classList}>\n <NScrollbar relative={this.relative}>\n { this.ctor('renderBody')() }\n </NScrollbar>\n { 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\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 this.NForm.addItem(this);\n },\n\n mounted()\n {\n this.NForm.$watch('errors', this.gotoInput,\n { deep: true });\n },\n\n beforeUnmount()\n {\n this.NForm.removeItem(this);\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 ( ! 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 || this.NForm.size;\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.has(sources, value);\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, 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.has(sources, prop) ) {\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 ( ! 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(key) ) {\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)] = 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 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()\n {\n this.tempValue = this.modelValue;\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 if ( this.tempValue === tempValue ) {\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 created()\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\n beforeMount()\n {\n this.searchOptions();\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 ( 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.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 { Arr, Obj, Str, Now, Any, UUID } 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 'Select date';\n },\n type: [String]\n },\n\n placeholderArrive: {\n default()\n {\n return 'Start date';\n },\n type: [String]\n },\n\n placeholderDepart: {\n default()\n {\n return 'End date';\n },\n type: [String]\n },\n\n range: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n rangeSeparator: {\n default()\n {\n return '-';\n },\n type: [String]\n },\n\n monthPanels: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n boundary: {\n default()\n {\n return null;\n }\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return 'YYYY-MM-DD';\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\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.trans(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.trans(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.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-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 value: {\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.value),\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,\n elements: [],\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 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 } 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\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 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'] = () => {\n this.showTab(this.name);\n };\n\n return (\n <div 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 renderBody = Arr.has(this.NCollapse.tempValue, this.name);\n\n if ( ! Arr.has(this.NCollapse.tempValue, this.name) && this.keep ) {\n renderBody = this.init;\n }\n\n if ( ! Arr.has(this.NCollapse.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 style = {};\n\n if ( ! Arr.has(this.NCollapse.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 { 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 return this.tempSrc.replace(/^.*?\\.([^.?]+)(\\?.*?)?$/, '$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>\n { slots }\n </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 } 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 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 { 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 30;\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 let height = Dom.find(this.$refs.content)\n .child().height();\n\n let window = Dom.find(this.$el)\n .innerHeight();\n\n if ( height === this.passedHeight ) {\n return;\n }\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\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 clearInterval(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.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.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 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, 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"],"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/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/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"],"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","NDragCounter","$el","Dom","make","classList","appendTo","document","body","event","count","html","Locale","choice","dataTransfer","setData","setDragImage","global","DragCounter","NDragIndicator","parent","safezone","el","strategy","rect","getBoundingClientRect","clientY","y","height","find","hasClass","Arr","has","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","push","childNodes","unbindNode","$handle","handle","onDragstartNode","onDragenterNode","onDragoverNode","onDragleaveNode","onDragendNode","onDragdropNode","transformDrop","insertNode","moveNodesRoot","moveNodesInto","moveNodesBefore","moveNodesAfter","sources","set","prop","filter","childProp","disableMove","targetRoute","join","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","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","keyMods","onDblclick","renderElement","renderSpacer","draggable","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","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","setValue","NInfo","vals","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","tempClear","searched","NSelect","searchOptions","scrollToClosest","clear","addOption","removeOption","resetInput","onFocusInput","onInputInput","onKeydownInput","createOrToggle","selectPrev","selectNext","searchRegex","RegExp","toggleOption","getOptionLabel","tempLabel","newIndex","scrollToCurrent","createOption","created","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","updated","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","Map","callback","getMap","onMount","tempMarker","importMarkerPosition","marker","setPosition","updateMarkerPosition","getPosition","initializeMarker","innerHTML","createMarker","addListener","debounce","setMarkerByAddress","address","then","focusMarkers","Notify","MapMarker","Notification","duration","iconPrimary","iconSecondary","iconSuccess","iconWarning","iconDanger","iconInfo","onclick","getIcon","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","adaptHeight","child","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","update","title","closable","renderClose","startRefreshTimeout","NModal","eventClick","eventKeydown","openModal","force","closeModal","stopRefreshTimeout","attr","backdrop","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","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","abs","renderPages","renderSlot","view","className","Paginator","clearableIcon","buttonText","openContext","updateFile","files","clearFile","renderButton","renderHidden","File"],"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\nclass NDragCounter {\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 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}\n\nglobal.DragCounter = new NDragCounter;\n\nclass NDragIndicator {\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 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 this.rootNode.$emit('move', sources,\n Obj.get(target, 'uid'), strategy);\n\n this.rootNode.$emit('moveraw', this.cacheNodes,\n 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 = [target.value.route,\n this.rootNode.childProp].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 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 = [route, index,\n this.rootNode.childProp].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 30;\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 500 / 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 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 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 this.timer = setTimeout(() => {\n this.NDraggable.drag.bindNode(this);\n }, 50);\n\n this.init = true;\n }, 10);\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 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.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.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 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 this.timer = setTimeout(() => {\n this.NDraggable.drag.bindNode(this);\n }, 50);\n\n this.init = true;\n }, 10);\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.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.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 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 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('./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('./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\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\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 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, 5);\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: Obj.clone(this.tempFilter), 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 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 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 return (\n <div class={classList}>\n <NScrollbar relative={this.relative}>\n { this.ctor('renderBody')() }\n </NScrollbar>\n { 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\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 this.NForm.addItem(this);\n },\n\n mounted()\n {\n this.NForm.$watch('errors', this.gotoInput,\n { deep: true });\n },\n\n beforeUnmount()\n {\n this.NForm.removeItem(this);\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 ( ! 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 || this.NForm.size;\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)] = 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 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()\n {\n this.tempValue = this.modelValue;\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 if ( this.tempValue === tempValue ) {\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 created()\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\n beforeMount()\n {\n this.searchOptions();\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 ( 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.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 { 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 return this.tempSrc.replace(/^.*?\\.([^.?]+)(\\?.*?)?$/, '$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>\n { slots }\n </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 } 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 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 { 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 30;\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 let height = Dom.find(this.$refs.content)\n .child().height();\n\n let window = Dom.find(this.$el)\n .innerHeight();\n\n if ( height === this.passedHeight ) {\n return;\n }\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\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 clearInterval(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.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.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 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, 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"],"sourceRoot":""}