@kizmann/nano-ui 0.7.3 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://Nano/webpack/universalModuleDefinition","webpack://Nano/webpack/bootstrap","webpack://Nano/external {\"root\":\"pi\",\"commonjs2\":\"@kizmann/pico-js\",\"commonjs\":\"@kizmann/pico-js\",\"amd\":\"@kizmann/pico-js\"}","webpack://Nano/external {\"root\":\"Vue\",\"commonjs2\":\"vue\",\"commonjs\":\"vue\",\"amd\":\"vue\"}","webpack://Nano/(webpack)/buildin/global.js","webpack://Nano/./src/draggable/src/draghandler/draghandler.js","webpack://Nano/./src/mixins/src/ctor.js","webpack://Nano/./src/virtualscroller/src/virtualscroller/virtualscroller.beta.js","webpack://Nano/./src/draggable/src/draglist/draglist.js","webpack://Nano/./src/draggable/src/draglist-item/draglist-item.js","webpack://Nano/./src/draggable/src/draggrid/draggrid.js","webpack://Nano/./src/draggable/src/draggrid-item/draggrid-item.js","webpack://Nano/./src/preview/src/preview/preview.js","webpack://Nano/./src/preview/src/preview-video/preview-video.js","webpack://Nano/./src/mixins/src/cmer.js","webpack://Nano/./src/mixins/src/cslo.js","webpack://Nano/./src/index.js","webpack://Nano/./src/virtualscroller/index.js","webpack://Nano/./src/draggable/index.js","webpack://Nano/./src/table/src/table/table.js","webpack://Nano/./src/table/src/table-column/table-column.js","webpack://Nano/./src/table/src/table-cell/table-cell.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-string.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-boolean.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-datetime.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-option.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-image.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-matrix.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-select.js","webpack://Nano/./src/table/src/table-filter/table-filter.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-string.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-boolean.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-datetime.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-option.js","webpack://Nano/./src/table/index.js","webpack://Nano/./src/info/src/info/info.js","webpack://Nano/./src/info/src/info-column/info-column.js","webpack://Nano/./src/info/src/info-field/info-field.js","webpack://Nano/./src/info/src/info-field/types/info-field-string.js","webpack://Nano/./src/info/src/info-field/types/info-field-boolean.js","webpack://Nano/./src/info/src/info-field/types/info-field-datetime.js","webpack://Nano/./src/info/src/info-field/types/info-field-option.js","webpack://Nano/./src/info/src/info-field/types/info-field-image.js","webpack://Nano/./src/info/index.js","webpack://Nano/./src/popover/src/popover/popover.js","webpack://Nano/./src/popover/src/popover-group/popover-group.js","webpack://Nano/./src/popover/src/popover-option/popover-option.js","webpack://Nano/./src/popover/index.js","webpack://Nano/./src/form/src/form/form.js","webpack://Nano/./src/form/src/form-group/form-group.js","webpack://Nano/./src/form/src/form-item/form-item.js","webpack://Nano/./src/form/index.js","webpack://Nano/./src/config/src/config/config.js","webpack://Nano/./src/config/src/config/config-next.js","webpack://Nano/./src/config/index.js","webpack://Nano/./src/button/src/button/button.js","webpack://Nano/./src/button/src/button-group/button-group.js","webpack://Nano/./src/button/index.js","webpack://Nano/./src/select/src/select/select.js","webpack://Nano/./src/select/src/select-option/select-option.js","webpack://Nano/./src/select/index.js","webpack://Nano/./src/checkbox/src/checkbox/checkbox.js","webpack://Nano/./src/checkbox/src/checkbox-group/checkbox-group.js","webpack://Nano/./src/checkbox/index.js","webpack://Nano/./src/radio/src/radio/radio.js","webpack://Nano/./src/radio/src/radio-group/radio-group.js","webpack://Nano/./src/radio/index.js","webpack://Nano/./src/cascader/src/cascader-panel/cascader-panel.js","webpack://Nano/./src/cascader/src/cascader/cascader.js","webpack://Nano/./src/cascader/index.js","webpack://Nano/./src/datepicker/src/datepicker-panel/datepicker-panel.js","webpack://Nano/./src/datepicker/src/datepicker/datepicker.js","webpack://Nano/./src/datepicker/index.js","webpack://Nano/./src/timepicker/src/timepicker-panel/timepicker-panel.js","webpack://Nano/./src/timepicker/src/timepicker/timepicker.js","webpack://Nano/./src/timepicker/index.js","webpack://Nano/./src/tabs/src/tabs/tabs.js","webpack://Nano/./src/tabs/src/tabs-item/tabs-item.js","webpack://Nano/./src/tabs/index.js","webpack://Nano/./src/collapse/src/collapse/collapse.js","webpack://Nano/./src/collapse/src/collapse-item/collapse-item.js","webpack://Nano/./src/collapse/index.js","webpack://Nano/./src/preview/src/preview-plain/preview-plain.js","webpack://Nano/./src/preview/src/preview-image/preview-image.js","webpack://Nano/./src/preview/index.js","webpack://Nano/./src/map/src/map/map.js","webpack://Nano/./src/map/src/map-marker/map-marker.js","webpack://Nano/./src/map/index.js","webpack://Nano/./src/alert/src/alert/alert.js","webpack://Nano/./src/alert/index.js","webpack://Nano/./src/notification/src/notification/notification.js","webpack://Nano/./src/notification/index.js","webpack://Nano/./src/empty/src/empty-icon/empty-icon.js","webpack://Nano/./src/empty/index.js","webpack://Nano/./src/scrollbar/src/scrollbar/scrollbar.next.js","webpack://Nano/./src/scrollbar/index.js","webpack://Nano/./src/loader/src/loader/loader.js","webpack://Nano/./src/loader/index.js","webpack://Nano/./src/resizer/src/resizer/resizer.js","webpack://Nano/./src/resizer/index.js","webpack://Nano/./src/modal/src/modal/modal.js","webpack://Nano/./src/modal/index.js","webpack://Nano/./src/input/src/input/input.js","webpack://Nano/./src/input/index.js","webpack://Nano/./src/input-number/src/input-number/input-number.js","webpack://Nano/./src/input-number/index.js","webpack://Nano/./src/textarea/src/textarea/textarea.js","webpack://Nano/./src/textarea/index.js","webpack://Nano/./src/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","global","dragMods","NDragCounter","$el","Dom","make","classList","appendTo","document","body","event","count","update","html","Locale","choice","dataTransfer","setData","setDragImage","keyMods","Arr","has","push","attr","join","DragCounter","NDragIndicator","parent","safezone","el","strategy","rect","getBoundingClientRect","clientY","y","height","find","hasClass","show","hide","offsetTop","style","top","css","Obj","map","item","remove","NDraghandler","rootNode","frame","DragIndicator","DragCache","bindDragstart","on","onDragenterRoot","onDragoverRoot","onDragleaveRoot","onDragendRoot","onDragdropRoot","Event","uid","bindDragend","bindDragdrop","off","unbind","preventDefault","target","closest","cacheNodes","length","frames","Date","now","allowDrop","Any","isFunction","rainbow","each","node","addClass","removeClass","fire","moveNodes","group","cache","allowGroups","JSON","parse","stringify","dragcount","dropNodes","tempSelected","$emit","removeNode","clone","items","unlinkNodes","removeNodes","isSelected","id","virtuals","uniqueProp","route","clientHeight","resolve","targetNode","isInSelf","cascade","childNodes","unbindNode","$handle","handle","onDragstartNode","onDragenterNode","onDragoverNode","onDragleaveNode","onDragendNode","onDragdropNode","transformDrop","insertNode","moveNodesRoot","moveNodesInto","moveNodesBefore","moveNodesAfter","sources","eventName","set","prop","filter","childProp","disableMove","targetRoute","children","replace","index","splice","except","UUID","props","reduce","merge","reduceItem","Num","depth","cascades","unique","tempCascade","virtual","last","isEmpty","childRoute","ctor","fallback","$options","split","args","apply","DEBUG_NVSCROLL","inject","NDraggable","default","undefined","model","itemHeight","itemWidth","renderNode","deathzone","type","Number","overflowY","Boolean","overflowX","offsetY","offsetX","threshold","framerate","useKeys","data","state","start","end","grid","buffer","width","load","watch","updateRender","beforeMount","scrollTop","mounted","bindAdaptScroll","beforeUnmount","unbindAdaptScroll","methods","refreshScroll","setInterval","onScrollupdate","clearInterval","isIndexRendered","scrollIntoView","$refs","scrollbar","scrollToIndex","selector","total","Math","ceil","floor","targetTop","scrollTo","x","clearState","delay","content","async","refreshDriver","offset","offsetHeight","inner","scrollHeight","onSizechange","queue","timer","clearTimeout","to","setTimeout","bufferItems","round","startItem","endItem","isEqual","renderItem","passed","topOffset","renderFunction","$slots","renderRows","slice","renderGridRows","counter","chunk","renderGrid","chunks","renderItems","empty","render","totalHeight","DEBUG_NDLIST","size","String","current","selected","expanded","Array","lazyload","showEmptyIcon","itemOffset","scrollTopOnChange","renderCurrent","renderHandle","renderSelect","renderExpand","allowSelect","allowDrag","keyEvents","highlightTimeout","provide","visible","highlight","firstSelected","tempCurrent","tempExpanded","drag","virtualscroller","bindRoot","$watch","watchSelected","deep","refreshVirtuals","unbindRoot","filterVirtuals","findVirtual","console","log","contains","getIndex","findIndex","getCurrentIndex","isDraggable","canDrag","isHighlight","highlightNode","refresh","recursive","add","$nextTick","scrollToHighlight","first","isCurrent","setCurrent","setRawCurrent","setNextCurrent","setPrevCurrent","reset","syncCurrent","isDisabled","canSelect","hasChildren","getChildren","isExpanded","expandItem","toggle","expandCurrent","isTotalSelected","isInterSelected","selectItem","selectAll","indexies","unselectAll","bindKeydown","onKeydown","unbindKeydown","which","stopPropagation","renderEmpty","trans","only","$props","onMouseenter","onMouseleave","NDraggableItem","required","computed","touch","navigator","msMaxTouchPoints","mousedown","mousemove","mouseup","init","bindNode","copy","copyNode","onClick","onDblclick","renderElement","renderSpacer","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","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","denyUpdate","getOptionLabel","tempLabel","newIndex","scrollToCurrent","createOption","renderLabelClear","renderLabelAngle","renderLabelItem","renderLabelCollapse","firstHtml","renderLabelItems","renderMultiple","isEmptyValue","isNumber","onFocus","onInput","inputHtml","renderSingle","modelLabel","renderDisplay","displayHtml","emptyHtml","renderPopover","onClose","renderOptions","inheritAttrs","valueProp","labelProp","toggleItem","isMultipleActive","isSingleActive","Select","SelectOption","NCheckboxGroup","tempComputed","globalChecked","tempChecked","tempIntermediate","globalIntermediate","tempDisabled","globalDisabled","addCheckbox","removeCheckbox","check","checkCheckbox","uncheck","uncheckCheckbox","eventShiftClick","shiftCheckbox","eventLocalClick","shiftKey","toggleCheckbox","eventGlobalClick","toggleAll","updateFromGroup","renderCheckbox","interHtml","checkHtml","checkbox","emit","checkboxes","uncheckAll","checkAll","Checkbox","CheckboxGroup","NRadioGroup","addRadio","removeRadio","checkRadio","renderRadio","radio","NRadio","hover","disabledProp","tempHover","clearCascader","hoverItem","onSelect","updateHover","clickTimer","lastclick","hoverTimer","fireSelectItem","onMousemove","renderCascade","renderList","onCascaderInput","onCascaderHover","onPopoverInput","itemLabel","CascaderPanel","Cascader","arrive","clearArrive","depart","clearDepart","minDate","maxDate","range","monthPanels","format","weekdays","months","yearsGrid","tempCache","getYears","monthsGrid","getMonths","Now","tempArrive","tempDepart","tempView","tempRanger","cacheArrive","cacheDepart","gotoDate","gotoMonth","gotoYear","patchDate","patchMonth","printRange","patchYear","patchRange","renderToolbarPrev","renderToolbarNext","renderToolbarMonth","monthsHtml","month","addMonths","renderToolbarYear","yearsHtml","year","renderToolbar","prev","next","renderDateItem","equalDate","valid","isNotBeforeMin","after","isNotAfterMax","before","renderRangeDateItem","viewMode","isTempValid","between","arriveFirst","renderDate","legendHtml","day","bodyHtml","getDatesGrid","panelHtml","prevMonth","nextMonth","renderMonthItem","equal","renderMonth","prevYear","nextYear","renderYearItem","renderYear","prevDecade","nextDecade","placeholderArrive","placeholderDepart","rangeSeparator","boundary","displayFormat","clearDatepicker","clearRangeDatepicker","clearSingleDatepicker","onValueInput","moment","isValid","date","onArriveInput","onDepartInput","onDatepickerInput","onDatepickerDepart","onDatepickerArrive","initialDate","renderRange","arriveProps","departProps","DatepickerPanel","Datepicker","hoursInterval","minutesInterval","secondsInterval","hoursGrid","getHours","minutesGrid","getMinutes","secondsGrid","getSeconds","eventSelect","renderHourItem","hour","renderHourPanel","renderMinuteItem","minute","renderMinutePanel","renderSecondItem","second","renderSecondPanel","clearTimepicker","onTimepickerInput","renderPanel","TimepickerPanel","Timepicker","addTab","tab","$forceUpdate","removeTab","getTab","updateEvent","currentTab","sorted","repeatNext","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","AlertFrame","iconPrimary","iconSecondary","iconSuccess","iconWarning","iconDanger","iconInfo","Alert","backdrop","onclick","getIcon","alert","Notification","duration","wrapper","getWrapper","notifications","Notifcation","EmptyIcon","NScrollbar","fixture","allowNative","wrapClass","native","adaptScrollBehavior","bindAdaptHeight","bindAdaptWidth","passive","onUpdate","onScroll","passedHeight","passedWidth","unbindAdaptHeight","unbindAdaptWidth","onScrollTo","scrollLeft","onScrollIntoView","outerHeight","outerWidth","offsetLeft","$dom","offsetWidth","adaptScrollHeight","barHeight","max","maxHeight","heightRatio","vbar","hasVtrack","adaptScrollPosition","adaptScrollWidth","scrollWidth","barWidth","widthRatio","hbar","hasHtrack","vbarTop","hbarLeft","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","title","closable","renderClose","startRefreshTimeout","NModal","eventClick","eventKeydown","openModal","force","closeModal","stopRefreshTimeout","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\nglobal.dragMods = [];\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 // Update dragover color/type\n this.update();\n\n this.$el.html(\n `<span>${Locale.choice(':count Item|:count Items', count)}</span>`\n );\n\n // Fix data transfer\n event.dataTransfer.setData('text/plain', '');\n\n if ( typeof event.dataTransfer.setDragImage !== 'function' ) {\n return;\n }\n\n // Set finally the drop image\n event.dataTransfer.setDragImage(this.$el.get(0), 0, 0);\n }\n\n update()\n {\n global.dragMods = global.keyMods;\n\n let classList = [\n 'n-draggable__counter'\n ];\n\n if ( Arr.has(global.dragMods, 18) ) {\n classList.push('n-modify--alt');\n }\n\n if ( Arr.has(global.dragMods, 17) ) {\n classList.push('n-modify--ctrl');\n }\n\n if ( Arr.has(global.dragMods, 91) ) {\n classList.push('n-modify--meta');\n }\n\n this.$el.attr('class', classList.join(' '));\n }\n\n}\n\nglobal.DragCounter = new NDragCounter;\n\nclass NDragIndicator {\n\n $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 let eventName = 'move';\n\n if ( Arr.has(global.dragMods, 18) ) {\n eventName = 'moveAlt';\n }\n\n if ( Arr.has(global.dragMods, 17) ) {\n eventName = 'moveCtrl';\n }\n\n if ( Arr.has(global.dragMods, 91) ) {\n eventName = 'moveMeta';\n }\n\n this.rootNode.$emit(eventName, sources,\n Obj.get(target, 'uid'), strategy);\n\n this.rootNode.$emit(eventName + 'Raw',\n this.cacheNodes, target, strategy);\n\n this.rootNode.$emit('update:selected',\n this.rootNode.tempSelected);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n unlinkNodes(clone)\n {\n Arr.each(this.dropNodes, (node) => {\n Obj.set(clone, node.value.route, null);\n });\n }\n\n removeNodes(clone, prop = 'items')\n {\n clone[prop] = Arr.filter(clone[prop], (node) => {\n return !! node;\n });\n\n Arr.map(clone[prop], (node) => {\n\n if ( ! node[this.rootNode.childProp] ) {\n return node;\n }\n\n return this.removeNodes(node,\n this.rootNode.childProp);\n });\n\n return clone;\n }\n\n moveNodesRoot(clone)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n Arr.each(this.cacheNodes, (node) => {\n clone.items.push(node.item);\n });\n\n return clone;\n }\n\n moveNodesInto(clone, target)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n let targetRoute = [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('./alert/index').default(App);\n require('./notification/index').default(App);\n require('./empty/index').default(App);\n require('./config/index').default(App); //!complex 17.1\n require('./scrollbar/index').default(App);\n require('./virtualscroller/index').default(App);\n require('./draggable/index').default(App);\n require('./loader/index').default(App);\n require('./resizer/index').default(App);\n require('./popover/index').default(App);\n require('./modal/index').default(App);\n require('./button/index').default(App);\n require('./input/index').default(App);\n require('./input-number/index').default(App);\n require('./textarea/index').default(App);\n require('./select/index').default(App);\n require('./checkbox/index').default(App);\n require('./radio/index').default(App);\n require('./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\nDom.find(document).on('dragstart', (event) => {\n Arr.add(global.keyMods, event.which);\n});\n\nDom.find(document).on('dragend', (event) => {\n global.keyMods = [];\n});\n\nif ( typeof global.nano === 'undefined' ) {\n global.nano = Nano;\n}\n\nexport default Nano;\n","import Virtualscroller from './src/virtualscroller/virtualscroller.beta';\n\nexport default function (App) {\n App.component(Virtualscroller.name, Virtualscroller);\n}","import Draglist from './src/draglist/draglist';\nimport DraglistItem from './src/draglist-item/draglist-item';\nimport Draggrid from './src/draggrid/draggrid';\nimport DraggridItem from './src/draggrid-item/draggrid-item';\n\nexport default function (App) {\n App.component(Draglist.name, Draglist);\n App.component(DraglistItem.name, DraglistItem);\n App.component(Draggrid.name, Draggrid);\n App.component(DraggridItem.name, DraggridItem);\n}","import { Any, Arr, Obj, Dom, Event, UUID } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NTable',\n\n provide()\n {\n return {\n NTable: this\n };\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n 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(value)\n {\n if ( ! this.multiple && Any.isArray(value) ) {\n value = null;\n }\n\n if ( this.multiple && ! Any.isArray(value) ) {\n value = [];\n }\n\n this.tempValue = value;\n },\n\n search()\n {\n this.searchOptions();\n },\n\n focus()\n {\n this.$nextTick(this.scrollToClosest);\n },\n\n },\n\n methods: {\n\n clear(event = null)\n {\n if ( event ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.focusInput();\n\n this.$emit('update:modelValue', \n this.tempValue = Arr.clone(this.tempClear));\n },\n\n addOption(option)\n {\n Arr.add(this.elements, option, \n { tempValue: option.tempValue });\n },\n\n removeOption(option)\n {\n Arr.remove(this.elements, \n { tempValue: option.tempValue });\n },\n\n resetInput()\n {\n this.index = -1;\n this.search = '';\n },\n\n focusInput(event = null)\n {\n if ( event ) {\n event.preventDefault();\n }\n\n this.$refs.input.focus();\n },\n\n onFocusInput()\n {\n if ( ! this.focus ) {\n this.$refs.popover.open();\n }\n \n clearInterval(this.refresh);\n },\n\n onInputInput(event)\n {\n this.search = event.target.value;\n },\n\n onKeydownInput(event)\n {\n if ( ! this.focus ) {\n return this.onFocusInput();\n }\n\n if ( event.which === 13 ) {\n this.createOrToggle();\n }\n\n if ( event.which === 38 ) {\n this.selectPrev();\n }\n\n if ( event.which === 40 ) {\n this.selectNext();\n }\n },\n\n searchOptions()\n {\n this.index = -1;\n\n if ( Any.isEmpty(this.search) ) {\n return this.searched = this.elements;\n }\n\n let searchRegex = new RegExp(this.search, 'i');\n\n let searched = Arr.filter(this.elements, (option) => {\n return option.label.match(searchRegex);\n });\n\n this.searched = searched;\n },\n\n toggleOption(value, event = null)\n {\n if ( Any.isEmpty(value) ) {\n return;\n }\n\n if ( event ) {\n event.preventDefault();\n }\n\n let tempValue = this.tempValue;\n\n if ( this.multiple ) {\n this.focusInput();\n }\n\n if ( ! this.multiple ) {\n tempValue = value;\n }\n\n if ( this.multiple ) {\n Arr.toggle(tempValue, value);\n }\n\n this.$refs.popover.close();\n\n let denyUpdate = this.tempValue === tempValue;\n\n if ( this.multiple && ! Any.isArray(this.modelValue) ) {\n denyUpdate = false;\n }\n\n if ( ! this.multiple && Any.isArray(this.modelValue) ) {\n denyUpdate = false;\n }\n\n if ( denyUpdate ) {\n return;\n }\n\n this.$emit('update:modelValue',\n this.tempValue = tempValue);\n },\n\n getOptionLabel(value)\n {\n let option = Arr.find(this.elements, \n { tempValue: value });\n\n if ( ! option && this.allowCreate ) {\n return value;\n }\n\n if ( ! option && ! this.allowCreate ) {\n return this.trans(this.undefinedText);\n }\n\n return option.tempLabel;\n },\n\n selectPrev()\n {\n let newIndex = this.index - 1;\n\n if ( newIndex < 0 ) {\n newIndex = this.searched.length - 1;\n }\n\n this.index = newIndex;\n\n this.scrollToCurrent();\n },\n\n selectNext()\n {\n let newIndex = this.index + 1;\n\n if ( newIndex > this.searched.length - 1 ) {\n newIndex = 0;\n }\n\n this.index = newIndex;\n\n this.scrollToCurrent();\n },\n\n createOrToggle()\n {\n if ( this.allowCreate && this.search ) {\n return this.createOption();\n }\n \n let selected = Arr.get(this.searched, \n this.index);\n\n if ( this.searched.length === 1 ) {\n selected = Arr.first(this.searched);\n }\n\n if ( ! selected || selected.disabled ) {\n return;\n }\n\n this.toggleOption(selected.tempValue);\n },\n\n createOption()\n {\n this.toggleOption(this.search);\n\n this.search = '';\n },\n\n scrollToCurrent()\n {\n if ( ! this.focus ) {\n return;\n }\n\n let selected = Arr.get(this.searched, \n this.index);\n\n if ( ! selected || ! this.$refs.scrollbar ) {\n return;\n }\n\n this.$refs.scrollbar.scrollIntoView(\n `[data-option=\"${selected._.uid}\"]`);\n },\n\n scrollToClosest()\n {\n if ( ! this.focus ) {\n return;\n }\n\n let value = this.tempValue;\n\n if ( Any.isArray(this.tempValue) ) {\n value = Arr.first(this.tempValue);\n }\n\n if ( ! value ) {\n return;\n }\n\n let target = Arr.find(this.elements, { \n tempValue: value\n });\n\n if ( ! target ) {\n return;\n }\n\n this.$refs.scrollbar.scrollIntoView(\n `[data-option=\"${target._.uid}\"]`, 150);\n }\n\n },\n\n beforeMount()\n {\n if ( this.multiple && ! Any.isArray(this.tempValue) ) {\n this.tempValue = [];\n }\n\n if ( this.multiple && ! Any.isArray(this.clearValue) ) {\n this.tempClear = [];\n }\n\n this.searchOptions();\n },\n\n\n renderLabelClear()\n {\n if ( ! this.clearable || Any.isEmpty(this.tempValue) ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clear;\n }\n\n return (\n <div class=\"n-select__clear\" {...props}>\n <i class={nano.Icons.times}></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-select__angle\">\n <i class={nano.Icons.angleDown}></i>\n </div>\n );\n },\n\n renderLabelItem(value)\n {\n let classList = [\n 'n-select__item'\n ];\n\n let props = {\n class: nano.Icons.times,\n };\n\n if ( ! this.disabled ) {\n props.onMousedown = (event) => this.toggleOption(value, event);\n }\n\n let labelHtml = (\n <span>{ this.getOptionLabel(value) }</span>\n );\n\n return (\n <div class={classList}>\n { [labelHtml, <i {...props}></i>] }\n </div>\n );\n },\n\n renderLabelCollapse()\n {\n let first = Arr.first(this.tempValue);\n\n if ( ! first ) {\n return null;\n }\n\n let firstHtml = this.ctor('renderLabelItem')(first);\n\n if ( this.tempValue.length === 1 ) {\n return firstHtml;\n }\n\n let count = this.tempValue.length - 1;\n\n let collapseHtml = (\n <div class=\"n-select__item\">\n <span>{ this.choice(this.collapseText, count) }</span>\n </div>\n );\n\n return [\n firstHtml, collapseHtml\n ];\n },\n\n renderLabelItems()\n {\n if ( ! Any.isArray(this.tempValue) ) {\n return null;\n }\n\n if ( this.collapse ) {\n return this.ctor('renderLabelCollapse')();\n }\n\n return Arr.each(this.tempValue, (value) => {\n return this.ctor('renderLabelItem')(value);\n });\n },\n\n renderMultiple()\n {\n let isEmptyValue = Any.isEmpty(this.tempValue) &&\n ! Any.isNumber(this.tempValue);\n\n let props = {\n value: this.search,\n placeholder: this.placeholder,\n disabled: this.disabled,\n onFocus: this.onFocusInput,\n onInput: this.onInputInput,\n onKeydown: this.onKeydownInput\n };\n\n if ( ! this.focus ) {\n props.value = null;\n }\n\n if ( ! isEmptyValue ) {\n props.placeholder = null;\n }\n\n let inputHtml = (\n <div class=\"n-select__input\">\n <input ref=\"input\" {...props} />\n </div>\n );\n\n return [\n this.ctor('renderLabelClear')(), \n (\n <div class=\"n-select__items\">\n { [this.ctor('renderLabelItems')(), inputHtml] }\n </div>\n ), \n this.ctor('renderLabelAngle')()\n ];\n },\n\n renderSingle()\n {\n let isEmptyValue = Any.isEmpty(this.tempValue) &&\n ! Any.isNumber(this.tempValue);\n\n let modelLabel = this.getOptionLabel(\n this.tempValue);\n \n if ( isEmptyValue ) {\n modelLabel = null;\n }\n\n let props = {\n value: this.search,\n placeholder: this.placeholder,\n disabled: this.disabled,\n onFocus: this.onFocusInput,\n onInput: this.onInputInput,\n onKeydown: this.onKeydownInput\n };\n\n if ( ! this.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 { Any, Str, Obj, Dom } from \"@kizmann/pico-js\";\n\nclass AlertFrame {\n\n el = null;\n\n text = '';\n\n icon = '';\n\n type = '';\n\n options = {\n iconPrimary: nano.Icons.info,\n iconSecondary: nano.Icons.info,\n iconSuccess: nano.Icons.success,\n iconWarning: nano.Icons.warning,\n iconDanger: nano.Icons.danger,\n iconInfo: nano.Icons.info\n };\n\n constructor(text, type = 'primary', options = {})\n {\n this.text = text;\n this.type = type;\n\n this.options = Obj.assign(this.options, options);\n\n this.render();\n }\n\n getIcon()\n {\n return Obj.get(this.options,\n 'icon' + Str.ucfirst(this.type));\n }\n\n append(el = document.body)\n {\n this.el.appendTo(el);\n\n Dom.find(document.body).on('keydown', (event) => {\n if ( event.which === 27 ) {\n this.remove();\n }\n }, 'n-alert');\n\n setTimeout(() => this.el.addClass('n-active'), 100);\n }\n\n remove()\n {\n Dom.find(document.body).off('keydown', null, 'n-alert');\n\n this.el.get(0).remove();\n }\n\n render()\n {\n let classList = [\n 'n-alert-frame',\n 'n-alert-frame--' + this.type,\n 'n-alert-frame--' + Alert.size\n ];\n\n this.el = Dom.make('div', {\n classList: classList.join(' ')\n });\n\n let backdrop = Dom.make('div', {\n classList: 'n-alert-backdrop', onclick: () => this.remove()\n });\n\n backdrop.onClick = () => {\n this.remove();\n };\n\n backdrop.appendTo(this.el);\n\n let frame = Dom.make('div', {\n classList: 'n-alert'\n });\n\n frame.appendTo(this.el);\n\n let icon = Dom.make('div', {\n classList: 'n-alert__icon'\n });\n\n icon.appendTo(frame);\n\n let iconSpan = Dom.make('span', {\n classList: this.getIcon()\n });\n\n iconSpan.appendTo(icon);\n\n let text = Dom.make('div', {\n classList: 'n-alert__text'\n });\n\n text.html(this.text).appendTo(frame);\n }\n\n}\n\nexport default class Alert {\n\n static alias = 'Alert';\n\n static size = nano.Settings.notifySize;\n\n static alert = null;\n\n static handle(...args)\n {\n if ( ! Any.isEmpty(Alert.alert) ) {\n Alert.alert.remove();\n }\n\n Alert.alert = new AlertFrame(...args);\n\n Alert.alert.append();\n\n return Alert;\n }\n\n}\n","import Alert from './src/alert/alert';\n\nexport default function (App) {\n App.config.globalProperties[Alert.alias] = window[Alert.alias] = Alert.handle;\n}\n","import { UUID, Str, Obj, Dom } from \"@kizmann/pico-js\";\n\nclass Notification {\n\n el = null;\n\n text = '';\n\n icon = '';\n\n type = '';\n\n options = {\n duration: 4500,\n iconPrimary: nano.Icons.info,\n iconSecondary: nano.Icons.info,\n iconSuccess: nano.Icons.success,\n iconWarning: nano.Icons.warning,\n iconDanger: nano.Icons.danger,\n iconInfo: nano.Icons.info\n };\n\n constructor(text, type = 'primary', options = {})\n {\n this.text = text;\n this.type = type;\n\n this.options = Obj.assign(this.options, options);\n\n this.render();\n }\n\n getIcon()\n {\n return Obj.get(this.options,\n 'icon' + Str.ucfirst(this.type));\n }\n\n append(el = document.body)\n {\n this.el.appendTo(el);\n\n setTimeout(() => this.el.addClass('n-active'), 100);\n\n return this;\n }\n\n remove()\n {\n this.el.get(0).remove();\n\n return this;\n }\n\n render()\n {\n let classList = [\n 'n-notification',\n 'n-notification--' + this.type\n ];\n\n this.el = Dom.make('div', {\n classList: classList.join(' '), onclick: () => this.remove()\n });\n \n\n let icon = Dom.make('div', {\n classList: 'n-notification__icon'\n });\n\n icon.appendTo(this.el);\n\n let iconSpan = Dom.make('span', {\n classList: this.getIcon()\n });\n\n iconSpan.appendTo(icon);\n\n let text = Dom.make('div', {\n classList: 'n-notification__text'\n });\n\n text.html(this.text).appendTo(this.el);\n }\n\n}\n\nexport default class Notify {\n\n static alias = 'Notify';\n\n static size = nano.Settings.notifySize;\n\n static position = nano.Settings.notifyPosition;\n\n static notifications = {};\n\n static handle(...args)\n {\n let uid = Notify.create(undefined, ...args);\n\n let wrapper = Notify.getWrapper();\n\n // Append element to dom\n Notify.notifications[uid].append(wrapper);\n\n // Queue remove\n setTimeout(() => Notify.remove(uid),\n Notify.notifications[uid].options.duration);\n\n return uid;\n }\n\n static create(uid = UUID(), ...args)\n {\n Notify.notifications[uid] = new Notification(...args);\n\n return uid;\n }\n\n static remove(uid)\n {\n if ( Notify.notifications[uid] === undefined ) {\n return;\n }\n\n // Remove dom element\n Notify.notifications[uid].remove();\n\n // Remove from list\n delete Notify.notifications[uid];\n }\n\n static getWrapper()\n {\n if ( ! window.zIndex ) {\n window.zIndex = 9000;\n }\n\n let style = {\n 'z-index': window.zIndex + 100\n };\n\n let classList = [\n 'n-notification-frame',\n 'n-notification-frame--' + this.size,\n 'n-notification-frame--' + this.position\n ];\n\n if ( Dom.find('.n-notification-frame').empty() === true ) {\n Dom.make('div', { classList: classList.join(' ') }).appendTo(document.body);\n }\n\n Dom.find('.n-notification-frame').css(style);\n\n return Dom.find('.n-notification-frame');\n }\n\n}\n","import Notifcation from './src/notification/notification';\n\nexport default function (App) {\n App.config.globalProperties[Notifcation.alias] = window[Notifcation.alias] = Notifcation.handle;\n}\n","export default {\n\n name: 'NEmptyIcon',\n\n props: {\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-empty-icon',\n 'n-empty-icon--' + this.size,\n 'n-empty-icon--' + this.type\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n <div class=\"n-empty-icon__frame\">\n { /* Icon */ }\n </div>\n <div class=\"n-empty-icon__text\">\n { this.$slots.default && this.$slots.default() }\n </div>\n </div>\n );\n }\n\n}\n","import EmptyIcon from './src/empty-icon/empty-icon';\n\nexport default function (App) {\n App.component(EmptyIcon.name, EmptyIcon);\n}\n","import { Arr, Obj, Dom, Any, Str, Event } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NScrollbar',\n\n provide()\n {\n return {\n NScrollbar: this\n };\n },\n\n props: {\n\n options: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n relative: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n fixture: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n allowNative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n framerate: {\n default()\n {\n return 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 if ( value < this.min ) {\n value = this.min;\n }\n\n if ( value > this.max ) {\n value = this.max;\n }\n\n this.$emit('update:modelValue',\n this.tempValue = Num.float(value));\n\n event.target.value = this.getDisplayValue();\n }\n\n },\n\n renderPrev()\n {\n let disabled = this.disabled ||\n this.tempValue <= this.min;\n\n let props = {\n type: 'input-number',\n size: this.size,\n icon: 'fa fa-minus',\n square: true,\n disabled: disabled,\n onMousedown: this.onPrevDown,\n };\n\n return (<NButton {...props} />);\n },\n\n renderNext()\n {\n let disabled = this.disabled ||\n this.tempValue >= this.max;\n\n let props = {\n type: 'input-number',\n size: this.size,\n icon: 'fa fa-plus',\n square: true,\n disabled: disabled,\n onMousedown: this.onNextDown,\n };\n\n return (<NButton {...props} />);\n },\n\n renderInput()\n {\n let props = Obj.except(this.$attrs,\n ['class', 'style']);\n\n Obj.assign(props, {\n disabled: this.disabled,\n placeholder: this.placeholder,\n onKeydown: this.onKeydown,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n });\n\n if ( this.modelValue !== null ) {\n props.value = this.getDisplayValue();\n }\n\n return h('input', props);\n },\n\n renderClear()\n {\n if ( ! this.clearable || Any.isEmpty(this.tempValue) ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clear;\n }\n\n return (\n <div class=\"n-input-number__clear\" {...props}>\n <i class={nano.Icons.times}></i>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-input-number',\n 'n-input-number--' + this.type,\n 'n-input-number--' + this.size,\n ];\n\n if ( Any.isEmpty(this.modelValue) ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderPrev')() }\n { this.ctor('renderInput')() }\n { this.ctor('renderClear')() }\n { this.ctor('renderNext')() }\n </div>\n );\n }\n\n}","import InputNumber from \"./src/input-number/input-number\";\n\nexport default function (App) {\n App.component(InputNumber.name, InputNumber);\n}","import { h } from \"vue\";\nimport {Obj, Any, UUID} from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTextarea',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n placeholder: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n autoRows: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n maxRows: {\n default()\n {\n return 12;\n },\n type: [Number]\n },\n\n minRows: {\n default()\n {\n return 4;\n },\n type: [Number]\n },\n\n maxLength: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n methods: {\n\n eventInput(event)\n {\n this.$emit('update:modelValue', \n this.tempValue = event.target.value);\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue || ''\n };\n },\n\n renderInput()\n {\n let props = Obj.except(this.$attrs, ['class', 'style']);\n\n Obj.assign(props, {\n value: this.tempValue,\n rows: this.minRows,\n disabled: this.disabled,\n placeholder: this.placeholder,\n onInput: this.eventInput,\n });\n\n if ( this.maxLength !== 0 ) {\n props.maxLength = this.maxLength;\n }\n\n let currentRows = (this.tempValue.match(/\\n/g) || []).length + 1;\n\n if ( this.autoRows && props.rows < currentRows ) {\n props.rows = currentRows <= this.maxRows ? currentRows : this.maxRows;\n }\n\n return h('textarea', props);\n },\n\n render()\n {\n let classList = [\n 'n-textarea',\n 'n-textarea--' + this.size,\n 'n-textarea--' + this.type,\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = Obj.only(this.$attrs, ['style'], {\n class: this.cmer(classList)\n });\n\n return h('div', props, [this.ctor('renderInput')()]);\n }\n\n}\n","import Textarea from './src/textarea/textarea';\n\nexport default function (App) {\n App.component(Textarea.name, Textarea);\n}","import { Obj, 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/alert/src/alert/alert.js","webpack://Nano/./src/alert/index.js","webpack://Nano/./src/notification/src/notification/notification.js","webpack://Nano/./src/notification/index.js","webpack://Nano/./src/empty/src/empty-icon/empty-icon.js","webpack://Nano/./src/empty/index.js","webpack://Nano/./src/scrollbar/src/scrollbar/scrollbar.next.js","webpack://Nano/./src/scrollbar/index.js","webpack://Nano/./src/loader/src/loader/loader.js","webpack://Nano/./src/loader/index.js","webpack://Nano/./src/resizer/src/resizer/resizer.js","webpack://Nano/./src/resizer/index.js","webpack://Nano/./src/modal/src/modal/modal.js","webpack://Nano/./src/modal/index.js","webpack://Nano/./src/input/src/input/input.js","webpack://Nano/./src/input/index.js","webpack://Nano/./src/input-number/src/input-number/input-number.js","webpack://Nano/./src/input-number/index.js","webpack://Nano/./src/textarea/src/textarea/textarea.js","webpack://Nano/./src/textarea/index.js","webpack://Nano/./src/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","global","dragMods","NDragCounter","$el","Dom","make","classList","appendTo","document","body","event","count","update","html","Locale","choice","dataTransfer","setData","setDragImage","keyMods","Arr","has","push","attr","join","DragCounter","NDragIndicator","parent","safezone","el","strategy","rect","getBoundingClientRect","clientY","y","height","find","hasClass","show","hide","offsetTop","style","top","css","Obj","map","item","remove","NDraghandler","rootNode","frame","DragIndicator","DragCache","bindDragstart","on","onDragenterRoot","onDragoverRoot","onDragleaveRoot","onDragendRoot","onDragdropRoot","Event","uid","bindDragend","bindDragdrop","off","unbind","preventDefault","target","closest","cacheNodes","length","frames","Date","now","allowDrop","Any","isFunction","rainbow","each","node","addClass","removeClass","fire","moveNodes","group","cache","allowGroups","JSON","parse","stringify","dragcount","dropNodes","tempSelected","$emit","removeNode","clone","items","unlinkNodes","removeNodes","isSelected","id","virtuals","uniqueProp","route","clientHeight","resolve","targetNode","isInSelf","cascade","childNodes","unbindNode","$handle","handle","onDragstartNode","onDragenterNode","onDragoverNode","onDragleaveNode","onDragendNode","onDragdropNode","transformDrop","insertNode","moveNodesRoot","moveNodesInto","moveNodesBefore","moveNodesAfter","sources","eventName","set","prop","filter","childProp","disableMove","targetRoute","children","replace","index","splice","except","UUID","props","reduce","merge","reduceItem","Num","depth","cascades","unique","tempCascade","virtual","last","isEmpty","childRoute","ctor","fallback","$options","split","args","apply","DEBUG_NVSCROLL","inject","NDraggable","default","undefined","model","itemHeight","itemWidth","renderNode","deathzone","type","Number","overflowY","Boolean","overflowX","offsetY","offsetX","threshold","framerate","useKeys","data","state","start","end","grid","buffer","width","load","watch","updateRender","beforeMount","scrollTop","mounted","bindAdaptScroll","beforeUnmount","unbindAdaptScroll","methods","refreshScroll","setInterval","onScrollupdate","clearInterval","isIndexRendered","scrollIntoView","$refs","scrollbar","scrollToIndex","selector","total","Math","ceil","floor","targetTop","scrollTo","x","clearState","delay","content","async","refreshDriver","offset","offsetHeight","inner","scrollHeight","onSizechange","queue","timer","clearTimeout","to","setTimeout","bufferItems","round","startItem","endItem","isEqual","renderItem","passed","topOffset","renderFunction","$slots","renderRows","slice","renderGridRows","counter","chunk","renderGrid","chunks","renderItems","empty","render","totalHeight","DEBUG_NDLIST","size","String","current","selected","expanded","Array","lazyload","showEmptyIcon","itemOffset","scrollTopOnChange","renderCurrent","renderHandle","renderSelect","renderExpand","allowSelect","allowDrag","keyEvents","highlightTimeout","provide","visible","highlight","firstSelected","tempCurrent","tempExpanded","drag","virtualscroller","bindRoot","$watch","watchSelected","deep","refreshVirtuals","unbindRoot","filterVirtuals","findVirtual","console","log","contains","getIndex","findIndex","getCurrentIndex","isDraggable","canDrag","isHighlight","highlightNode","refresh","recursive","add","$nextTick","scrollToHighlight","first","isCurrent","setCurrent","setRawCurrent","setNextCurrent","setPrevCurrent","reset","syncCurrent","isDisabled","canSelect","hasChildren","getChildren","isExpanded","expandItem","toggle","expandCurrent","isTotalSelected","isInterSelected","selectItem","selectAll","indexies","unselectAll","bindKeydown","onKeydown","unbindKeydown","which","stopPropagation","renderEmpty","trans","only","$props","onMouseenter","onMouseleave","NDraggableItem","required","computed","touch","navigator","msMaxTouchPoints","mousedown","mousemove","mouseup","init","bindNode","copy","copyNode","onClick","onDblclick","renderElement","renderSpacer","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","custom","tempClear","searched","NSelect","searchOptions","scrollToClosest","clear","addOption","removeOption","resetInput","onFocusInput","onInputInput","onKeydownInput","createOrToggle","selectPrev","selectNext","searchRegex","RegExp","toggleOption","denyUpdate","getOptionLabel","tempLabel","newIndex","scrollToCurrent","createOption","renderLabelClear","renderLabelAngle","renderLabelItem","renderLabelCollapse","firstHtml","renderLabelItems","renderMultiple","isEmptyValue","isNumber","onFocus","onInput","inputHtml","renderSingle","modelLabel","renderDisplay","displayHtml","emptyHtml","renderPopover","onClose","renderOptions","inheritAttrs","valueProp","labelProp","toggleItem","isMultipleActive","isSingleActive","Select","SelectOption","NCheckboxGroup","tempComputed","globalChecked","tempChecked","tempIntermediate","globalIntermediate","tempDisabled","globalDisabled","addCheckbox","removeCheckbox","check","checkCheckbox","uncheck","uncheckCheckbox","eventShiftClick","shiftCheckbox","eventLocalClick","shiftKey","toggleCheckbox","eventGlobalClick","toggleAll","updateFromGroup","renderCheckbox","interHtml","checkHtml","checkbox","emit","checkboxes","uncheckAll","checkAll","Checkbox","CheckboxGroup","NRadioGroup","addRadio","removeRadio","checkRadio","renderRadio","radio","NRadio","hover","disabledProp","tempHover","clearCascader","hoverItem","onSelect","updateHover","clickTimer","lastclick","hoverTimer","fireSelectItem","onMousemove","renderCascade","renderList","onCascaderInput","onCascaderHover","onPopoverInput","itemLabel","CascaderPanel","Cascader","arrive","clearArrive","depart","clearDepart","minDate","maxDate","range","monthPanels","format","weekdays","months","yearsGrid","tempCache","getYears","monthsGrid","getMonths","Now","tempArrive","tempDepart","tempView","tempRanger","cacheArrive","cacheDepart","gotoDate","gotoMonth","gotoYear","patchDate","patchMonth","printRange","patchYear","patchRange","renderToolbarPrev","renderToolbarNext","renderToolbarMonth","monthsHtml","month","addMonths","renderToolbarYear","yearsHtml","year","renderToolbar","prev","next","renderDateItem","equalDate","valid","isNotBeforeMin","after","isNotAfterMax","before","renderRangeDateItem","viewMode","isTempValid","between","arriveFirst","renderDate","legendHtml","day","bodyHtml","getDatesGrid","panelHtml","prevMonth","nextMonth","renderMonthItem","equal","renderMonth","prevYear","nextYear","renderYearItem","renderYear","prevDecade","nextDecade","placeholderArrive","placeholderDepart","rangeSeparator","boundary","displayFormat","clearDatepicker","clearRangeDatepicker","clearSingleDatepicker","onValueInput","moment","isValid","date","onArriveInput","onDepartInput","onDatepickerInput","onDatepickerDepart","onDatepickerArrive","initialDate","renderRange","arriveProps","departProps","DatepickerPanel","Datepicker","hoursInterval","minutesInterval","secondsInterval","hoursGrid","getHours","minutesGrid","getMinutes","secondsGrid","getSeconds","eventSelect","renderHourItem","hour","renderHourPanel","renderMinuteItem","minute","renderMinutePanel","renderSecondItem","second","renderSecondPanel","clearTimepicker","onTimepickerInput","renderPanel","TimepickerPanel","Timepicker","addTab","tab","$forceUpdate","removeTab","getTab","updateEvent","currentTab","sorted","repeatNext","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","AlertFrame","iconPrimary","iconSecondary","iconSuccess","iconWarning","iconDanger","iconInfo","Alert","backdrop","onclick","getIcon","alert","Notification","duration","wrapper","getWrapper","notifications","Notifcation","EmptyIcon","NScrollbar","fixture","allowNative","wrapClass","native","adaptScrollBehavior","bindAdaptHeight","bindAdaptWidth","passive","onUpdate","onScroll","passedHeight","passedWidth","unbindAdaptHeight","unbindAdaptWidth","onScrollTo","scrollLeft","onScrollIntoView","outerHeight","outerWidth","offsetLeft","$dom","offsetWidth","adaptScrollHeight","barHeight","max","maxHeight","heightRatio","vbar","hasVtrack","adaptScrollPosition","adaptScrollWidth","scrollWidth","barWidth","widthRatio","hbar","hasHtrack","vbarTop","hbarLeft","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","title","closable","renderClose","startRefreshTimeout","NModal","eventClick","eventKeydown","openModal","force","closeModal","stopRefreshTimeout","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\nglobal.dragMods = [];\n\nclass NDragCounter\n{\n\n $el = null;\n\n constructor()\n {\n this.$el = Dom.make('div', {\n classList: ['n-draggable__counter']\n });\n\n this.$el.appendTo(document.body);\n }\n\n get(event, count)\n {\n // Update dragover color/type\n this.update();\n\n this.$el.html(\n `<span>${Locale.choice(':count Item|:count Items', count)}</span>`\n );\n\n // Fix data transfer\n event.dataTransfer.setData('text/plain', '');\n\n if ( typeof event.dataTransfer.setDragImage !== 'function' ) {\n return;\n }\n\n // Set finally the drop image\n event.dataTransfer.setDragImage(this.$el.get(0), 0, 0);\n }\n\n update()\n {\n global.dragMods = global.keyMods;\n\n let classList = [\n 'n-draggable__counter'\n ];\n\n if ( Arr.has(global.dragMods, 18) ) {\n classList.push('n-modify--alt');\n }\n\n if ( Arr.has(global.dragMods, 17) ) {\n classList.push('n-modify--ctrl');\n }\n\n if ( Arr.has(global.dragMods, 91) ) {\n classList.push('n-modify--meta');\n }\n\n this.$el.attr('class', classList.join(' '));\n }\n\n}\n\nglobal.DragCounter = new NDragCounter;\n\nclass NDragIndicator\n{\n\n $el = null;\n\n parent = null;\n\n constructor(parent)\n {\n this.$el = Dom.make('div', {\n classList: ['n-draggable__indicator']\n });\n\n this.$el.appendTo(this.parent = parent);\n }\n\n resolve(event, safezone, el, strategy = 'inner')\n {\n let rect = el.getBoundingClientRect();\n\n if ( event.clientY < rect.y + safezone ) {\n strategy = 'before';\n }\n\n if ( event.clientY > rect.y + rect.height - safezone ) {\n strategy = 'after';\n }\n\n if ( Dom.find(el).hasClass('n-expanded') ) {\n strategy = strategy === 'after' ? 'inner' : strategy;\n }\n\n Arr.has(['before', 'after'], strategy) ?\n this.show(el, strategy) : this.hide();\n\n\n return strategy;\n }\n\n show(el, strategy)\n {\n let offsetTop = Dom.find(el).offsetTop(this.parent);\n\n let style = {\n top: offsetTop || 1\n };\n\n if ( strategy === 'after' ) {\n style.top = offsetTop + Dom.find(el).height();\n }\n\n this.$el.css(Obj.map(style, (item) => item + 'px'));\n }\n\n hide()\n {\n this.$el.css(null);\n }\n\n destroy()\n {\n this.$el.get(0).remove();\n }\n\n}\n\nclass NDraghandler\n{\n\n uid = null;\n\n rootNode = null;\n childNodes = {};\n\n dropNodes = [];\n cacheNodes = [];\n\n strategy = 'nodrop';\n frames = 0;\n timeout = 0;\n dragcount = {};\n\n constructor(rootNode)\n {\n this.rootNode = rootNode;\n }\n\n bindRoot(frame = null)\n {\n this.DragIndicator = new NDragIndicator(frame || this.rootNode.$el);\n\n if ( global.DragCache ) {\n this.bindDragstart.call(this, ...global.DragCache);\n }\n\n Dom.find(this.rootNode.$el).on('dragenter', (event) => {\n this.onDragenterRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragover', (event) => {\n this.onDragoverRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragleave', (event) => {\n this.onDragleaveRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragend', (event) => {\n this.onDragendRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('drop', (event) => {\n this.onDragdropRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragdrop', (event) => {\n this.onDragdropRoot(event);\n });\n\n Event.bind('NDrag:start', this.bindDragstart.bind(this),\n this.rootNode.uid);\n\n Event.bind('NDrag:end', this.bindDragend.bind(this),\n this.rootNode.uid);\n\n Event.bind('NDrag:drop', this.bindDragdrop.bind(this),\n this.rootNode.uid);\n }\n\n unbindRoot()\n {\n let events = [\n 'dragstart',\n 'dragenter',\n 'dragover',\n 'dragleave',\n 'dragend',\n 'drop',\n 'dragdrop',\n ];\n\n Dom.find(this.rootNode.$el).off(events);\n\n Event.unbind('NDrag:start', this.rootNode.uid);\n Event.unbind('NDrag:end', this.rootNode.uid);\n Event.unbind('NDrag:drop', this.rootNode.uid);\n }\n\n onDragenterRoot(event)\n {\n event.preventDefault();\n }\n\n onDragoverRoot(event)\n {\n let isNode = Dom.find(event.target)\n .closest('.n-draglist-item');\n\n if ( isNode || !this.cacheNodes.length ) {\n return;\n }\n\n event.preventDefault();\n\n if ( this.frames && Date.now() - this.frames < 135 ) {\n return;\n }\n\n let allowDrop = this.rootNode.allowDrop;\n\n if ( !Any.isFunction(allowDrop) ) {\n allowDrop = () => this.rootNode.allowDrop;\n }\n\n let rainbow = Arr.each(this.cacheNodes, (node) => {\n return !!allowDrop(node, null, this.strategy);\n });\n\n this.strategy = 'root';\n\n if ( Arr.has(rainbow, false) ) {\n this.strategy = 'nodrop';\n }\n\n this.DragIndicator.hide();\n\n if ( this.strategy !== 'nodrop' ) {\n Dom.find(this.rootNode.$el).addClass('n-dragover');\n } else {\n Dom.find(this.rootNode.$el).removeClass('n-dragover');\n }\n\n if ( this.strategy === 'nodrop' ) {\n Dom.find(this.rootNode.$el).addClass('n-nodrop');\n } else {\n Dom.find(this.rootNode.$el).removeClass('n-nodrop');\n }\n\n this.frames = Date.now();\n }\n\n onDragleaveRoot(event)\n {\n Dom.find(this.rootNode.$el)\n .removeClass('n-dragover n-nodrop');\n }\n\n onDragendRoot(event)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n Dom.find(this.rootNode.$el)\n .removeClass('n-dragover n-nodrop');\n\n if ( this.strategy !== 'root' ) {\n return;\n }\n\n Event.fire('NDrag:end');\n }\n\n onDragdropRoot(event)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n Dom.find(this.rootNode.$el)\n .removeClass('n-dragover n-nodrop');\n\n if ( this.strategy !== 'root' ) {\n return;\n }\n\n event.preventDefault();\n\n this.moveNodes(null, this.strategy);\n\n Event.fire('NDrag:drop');\n }\n\n bindDragstart(group, cache)\n {\n if ( Arr.has(this.rootNode.allowGroups, group) ) {\n this.cacheNodes = JSON.parse(JSON.stringify(cache));\n }\n }\n\n bindDragend()\n {\n this.dragcount = {};\n\n this.cacheNodes = this.dropNodes = [];\n }\n\n bindDragdrop(...args)\n {\n if ( !this.dropNodes.length ) {\n return;\n }\n\n this.rootNode.tempSelected = [];\n\n this.rootNode.$emit('update:selected',\n this.rootNode.tempSelected);\n\n if ( !this.rootNode.removeNode ) {\n return;\n }\n\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n this.unlinkNodes(clone);\n this.removeNodes(clone);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n onDragstartNode(event, node)\n {\n if ( !this.rootNode.isSelected(node) ) {\n this.rootNode.$emit('update:selected',\n this.rootNode.tempSelected = [node.uid]);\n }\n\n let cache = Arr.each(this.rootNode.tempSelected, (id) => {\n return Arr.find(this.rootNode.virtuals, { [this.rootNode.uniqueProp]: id });\n });\n\n global.DragCounter.get(event, cache.length);\n\n Arr.map(cache, (value) => {\n return { value, item: Obj.get(this.rootNode, value.route) };\n });\n\n Event.fire('NDrag:start', this.rootNode.group,\n this.dropNodes = cache);\n\n global.DragCache = [\n this.rootNode.group, this.dropNodes\n ];\n\n this.dragcount[node.uid] = 0;\n }\n\n onDragenterNode(event, node)\n {\n event.preventDefault();\n\n if ( !this.dragcount[node.uid] ) {\n this.dragcount[node.uid] = 0;\n }\n\n this.dragcount[node.uid] ++;\n }\n\n onDragoverNode(event, node)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n event.preventDefault();\n\n if ( this.frames && Date.now() - this.frames < 45 ) {\n return;\n }\n\n let safezone = this.rootNode\n .safezone(node.$el.clientHeight);\n\n this.strategy = this.DragIndicator\n .resolve(event, safezone, node.$el);\n\n let targetNode = {\n value: node.value, item: node.item\n };\n\n let allowDrop = this.rootNode.allowDrop;\n\n if ( !Any.isFunction(allowDrop) ) {\n allowDrop = () => this.rootNode.allowDrop;\n }\n\n let rainbow = Arr.each(this.cacheNodes, (node) => {\n return !!allowDrop(node, targetNode, this.strategy);\n });\n\n let isInSelf = Arr.has(node.value.cascade,\n this.rootNode.tempSelected);\n\n rainbow.push(!isInSelf);\n\n if ( Arr.has(rainbow, false) ) {\n this.strategy = 'nodrop';\n }\n\n if ( this.strategy === 'nodrop' ) {\n this.DragIndicator.hide();\n }\n\n if ( this.strategy !== 'nodrop' ) {\n Dom.find(node.$el).addClass('n-dragover');\n Dom.find(node.$el).removeClass('n-nodrop');\n }\n\n if ( this.strategy === 'nodrop' ) {\n Dom.find(node.$el).removeClass('n-dragover');\n Dom.find(node.$el).addClass('n-nodrop');\n }\n\n this.frames = Date.now();\n }\n\n onDragleaveNode(event, node)\n {\n this.dragcount[node.uid] --;\n\n if ( this.dragcount[node.uid] !== 0 ) {\n return;\n }\n\n Dom.find(node.$el).removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n }\n\n onDragendNode(event, node)\n {\n Dom.find(node.$el).removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n\n Event.fire('NDrag:end');\n\n global.DragCache = null;\n }\n\n onDragdropNode(event, node)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n Dom.find(node.$el).removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n\n if ( this.strategy === 'nodrop' ) {\n return;\n }\n\n event.preventDefault();\n\n this.moveNodes(node, this.strategy);\n\n Event.fire('NDrag:drop');\n }\n\n bindNode(node)\n {\n if ( this.childNodes[node.uid] ) {\n this.unbindNode(node);\n }\n\n let $handle = Dom.find(node.$el);\n\n if ( this.rootNode.handle ) {\n $handle = $handle.find('[draggable]');\n }\n\n let $el = Dom.find(node.$el);\n\n $handle.on('dragstart', (event) => {\n this.onDragstartNode(event, node);\n });\n\n $el.on('dragenter', (event) => {\n this.onDragenterNode(event, node);\n });\n\n $el.on('dragover', (event) => {\n this.onDragoverNode(event, node);\n });\n\n $el.on('dragleave', (event) => {\n this.onDragleaveNode(event, node);\n });\n\n $el.on('dragend', (event) => {\n this.onDragendNode(event, node);\n });\n\n $el.on('drop', (event) => {\n this.onDragdropNode(event, node);\n });\n\n $el.on('dragdrop', (event) => {\n this.onDragdropNode(event, node);\n });\n\n this.childNodes[node.uid] = node;\n }\n\n unbindNode(node)\n {\n let $handle = Dom.find(node.$el);\n\n if ( this.rootNode.handle ) {\n $handle = $handle.find('[draggable]');\n }\n\n $handle.off('dragstart');\n\n let $el = Dom.find(node.$el);\n\n $el.off([\n 'dragenter',\n 'dragover',\n 'dragleave',\n 'dragend',\n 'drop',\n 'dragdrop',\n ]);\n\n $el.removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n\n delete this.childNodes[node.uid];\n }\n\n moveNodes(target, strategy)\n {\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n if ( this.rootNode.removeNode ) {\n this.unlinkNodes(clone);\n }\n\n if ( !this.dropNodes.length ) {\n Arr.each(this.cacheNodes, (value, key) => {\n this.cacheNodes[key]['item'] = this.rootNode.transformDrop(value.item);\n });\n }\n\n if ( this.rootNode.insertNode && strategy === 'root' ) {\n clone = this.moveNodesRoot(clone, target);\n }\n\n if ( this.rootNode.insertNode && strategy === 'inner' ) {\n clone = this.moveNodesInto(clone, target);\n }\n\n if ( this.rootNode.insertNode && strategy === 'before' ) {\n clone = this.moveNodesBefore(clone, target);\n }\n\n if ( this.rootNode.insertNode && strategy === 'after' ) {\n clone = this.moveNodesAfter(clone, target);\n }\n\n if ( this.rootNode.removeNode ) {\n clone = this.removeNodes(clone);\n }\n\n let sources = Arr.each(this.cacheNodes, (node) => {\n return node.item[this.rootNode.uniqueProp];\n });\n\n this.dropNodes = this.rootNode.tempSelected = [];\n\n let eventName = 'move';\n\n if ( Arr.has(global.dragMods, 18) ) {\n eventName = 'moveAlt';\n }\n\n if ( Arr.has(global.dragMods, 17) ) {\n eventName = 'moveCtrl';\n }\n\n if ( Arr.has(global.dragMods, 91) ) {\n eventName = 'moveMeta';\n }\n\n this.rootNode.$emit(eventName, sources,\n Obj.get(target, 'uid'), strategy);\n\n this.rootNode.$emit(eventName + 'Raw',\n this.cacheNodes, target, strategy);\n\n this.rootNode.$emit('update:selected',\n this.rootNode.tempSelected);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n unlinkNodes(clone)\n {\n Arr.each(this.dropNodes, (node) => {\n Obj.set(clone, node.value.route, null);\n });\n }\n\n removeNodes(clone, prop = 'items')\n {\n clone[prop] = Arr.filter(clone[prop], (node) => {\n return !!node;\n });\n\n Arr.map(clone[prop], (node) => {\n\n if ( !node[this.rootNode.childProp] ) {\n return node;\n }\n\n return this.removeNodes(node,\n this.rootNode.childProp);\n });\n\n return clone;\n }\n\n moveNodesRoot(clone)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n Arr.each(this.cacheNodes, (node) => {\n clone.items.push(node.item);\n });\n\n return clone;\n }\n\n moveNodesInto(clone, target)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n let targetRoute = [\n target.value.route,\n this.rootNode.childProp\n ].join('.');\n\n let children = Obj.get(clone,\n targetRoute, []);\n\n Arr.each(this.cacheNodes, (node) => {\n children.push(node.item);\n });\n\n Obj.set(clone, targetRoute, children);\n\n return clone;\n }\n\n moveNodesBefore(clone, target)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n let targetRoute = target.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n Arr.each(this.cacheNodes, (node, index) => {\n items.splice(target.value.index + index, 0, node.item);\n });\n\n Obj.set(clone, targetRoute, items);\n\n return clone;\n }\n\n moveNodesAfter(clone, target)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n let targetRoute = target.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n Arr.each(this.cacheNodes, (node, index) => {\n items.splice(target.value.index + index + 1, 0, node.item);\n });\n\n Obj.set(clone, targetRoute, items);\n\n return clone;\n }\n\n copyNode(node)\n {\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n let targetRoute = node.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n let target = Obj.except(node.item, [], {\n [this.rootNode.uniqueProp]: UUID()\n });\n\n items.splice(node.value.index + 1,\n 0, target);\n\n Obj.set(clone, targetRoute, items);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n removeNode(node)\n {\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n let targetRoute = node.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n items.splice(node.value.index, 1);\n\n Obj.set(clone, targetRoute, items);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n reduce(items, ...props)\n {\n return Arr.reduce(items, (merge, item, index) =>\n this.reduceItem(merge, item, Num.int(index), ...props), []);\n }\n\n reduceItem(merge, item, index, depth = 0, route = 'items', cascades = [])\n {\n // Get a unique id\n let unique = Obj.get(item,\n this.rootNode.uniqueProp, UUID());\n\n // Add unique to cascader\n let tempCascade = Arr.merge(cascades,\n [unique]);\n\n let virtual = {\n index: index,\n depth: depth,\n route: [route, index].join('.'),\n parent: Arr.last(cascades),\n cascade: tempCascade,\n };\n\n virtual[this.rootNode.uniqueProp] = unique;\n\n let children = Obj.get(item,\n this.rootNode.childProp, []);\n\n if ( Any.isEmpty(children) ) {\n return Arr.merge(merge, [virtual]);\n }\n\n let childRoute = [\n route, index,\n this.rootNode.childProp\n ].join('.');\n\n let props = [\n depth + 1, childRoute, tempCascade\n ]\n\n return Arr.merge(merge, [virtual],\n this.reduce(children, ...props));\n }\n\n}\n\nexport default NDraghandler;","import { Arr, Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n ctor(key, fallback = null)\n {\n let ctor = Obj.get(this.$options, key.split('.'), -1);\n\n\n\n //console.log(this.$options, ctor);\n\n // console.log(ctor);\n\n // if ( ctor === -1 ) {\n // ctor = Obj.get(this.$vnode.componentOptions.Ctor,\n // Arr.merge(['options'], key.split('.')), -1);\n // }\n\n if ( ctor === -1 ) {\n ctor = fallback;\n }\n\n if ( typeof ctor !== 'function' ) {\n return ctor;\n }\n\n return (...args) => ctor.apply(this, args);\n }\n\n}\n","import { Arr, Obj, Any, Dom } from \"@kizmann/pico-js\";\n\nglobal.DEBUG_NVSCROLL = false;\n\nexport default {\n\n name: 'NVirtualscroller',\n\n inject: {\n\n NDraggable: {\n default: undefined\n }\n\n },\n\n model: {\n prop: 'items'\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n }\n },\n\n itemHeight: {\n default()\n {\n return 34;\n }\n },\n\n itemWidth: {\n default()\n {\n return 0;\n }\n },\n\n renderNode: {\n default()\n {\n return null;\n }\n },\n\n deathzone: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n threshold: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n framerate: {\n default()\n {\n return 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('./alert/index').default(App);\n require('./notification/index').default(App);\n require('./empty/index').default(App);\n require('./config/index').default(App); //!complex 17.1\n require('./scrollbar/index').default(App);\n require('./virtualscroller/index').default(App);\n require('./draggable/index').default(App);\n require('./loader/index').default(App);\n require('./resizer/index').default(App);\n require('./popover/index').default(App);\n require('./modal/index').default(App);\n require('./button/index').default(App);\n require('./input/index').default(App);\n require('./input-number/index').default(App);\n require('./textarea/index').default(App);\n require('./select/index').default(App);\n require('./checkbox/index').default(App);\n require('./radio/index').default(App);\n require('./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\nDom.find(document).on('dragstart', (event) => {\n Arr.add(global.keyMods, event.which);\n});\n\nDom.find(document).on('dragend', (event) => {\n global.keyMods = [];\n});\n\nif ( typeof global.nano === 'undefined' ) {\n global.nano = Nano;\n}\n\nexport default Nano;\n","import Virtualscroller from './src/virtualscroller/virtualscroller.beta';\n\nexport default function (App) {\n App.component(Virtualscroller.name, Virtualscroller);\n}","import Draglist from './src/draglist/draglist';\nimport DraglistItem from './src/draglist-item/draglist-item';\nimport Draggrid from './src/draggrid/draggrid';\nimport DraggridItem from './src/draggrid-item/draggrid-item';\n\nexport default function (App) {\n App.component(Draglist.name, Draglist);\n App.component(DraglistItem.name, DraglistItem);\n App.component(Draggrid.name, Draggrid);\n App.component(DraggridItem.name, DraggridItem);\n}","import { Any, Arr, Obj, Dom, Event, UUID } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NTable',\n\n provide()\n {\n return {\n NTable: this\n };\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n 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 computed: {\n\n empty()\n {\n return Any.isEmpty(this.tempValue);\n },\n\n custom()\n {\n let result = Arr.filter(this.elements, (element) => {\n\n if ( Any.isArray(this.tempValue) ) {\n return Arr.has(this.tempValue, element.value);\n }\n\n return element.value === this.tempValue;\n });\n\n return result.length === 0;\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n tempClear: this.clearValue,\n focus: false,\n search: '',\n index: -1,\n elements: [],\n searched: []\n };\n },\n\n provide()\n {\n return {\n NSelect: this\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( ! this.multiple && Any.isArray(value) ) {\n value = null;\n }\n\n if ( this.multiple && ! Any.isArray(value) ) {\n value = [];\n }\n\n this.tempValue = value;\n },\n\n search()\n {\n this.searchOptions();\n },\n\n focus()\n {\n this.$nextTick(this.scrollToClosest);\n },\n\n },\n\n methods: {\n\n clear(event = null)\n {\n if ( event ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.focusInput();\n\n this.$emit('update:modelValue', \n this.tempValue = Arr.clone(this.tempClear));\n },\n\n addOption(option)\n {\n Arr.add(this.elements, option, \n { tempValue: option.tempValue });\n },\n\n removeOption(option)\n {\n Arr.remove(this.elements, \n { tempValue: option.tempValue });\n },\n\n resetInput()\n {\n this.index = -1;\n this.search = '';\n },\n\n focusInput(event = null)\n {\n if ( event ) {\n event.preventDefault();\n }\n\n this.$refs.input.focus();\n },\n\n onFocusInput()\n {\n if ( ! this.focus ) {\n this.$refs.popover.open();\n }\n \n clearInterval(this.refresh);\n },\n\n onInputInput(event)\n {\n this.search = event.target.value;\n },\n\n onKeydownInput(event)\n {\n if ( ! this.focus ) {\n return this.onFocusInput();\n }\n\n if ( event.which === 13 ) {\n this.createOrToggle();\n }\n\n if ( event.which === 38 ) {\n this.selectPrev();\n }\n\n if ( event.which === 40 ) {\n this.selectNext();\n }\n },\n\n searchOptions()\n {\n this.index = -1;\n\n if ( Any.isEmpty(this.search) ) {\n return this.searched = this.elements;\n }\n\n let searchRegex = new RegExp(this.search, 'i');\n\n let searched = Arr.filter(this.elements, (option) => {\n return option.label.match(searchRegex);\n });\n\n this.searched = searched;\n },\n\n toggleOption(value, event = null)\n {\n if ( Any.isEmpty(value) ) {\n return;\n }\n\n if ( event ) {\n event.preventDefault();\n }\n\n let tempValue = this.tempValue;\n\n if ( this.multiple ) {\n this.focusInput();\n }\n\n if ( ! this.multiple ) {\n tempValue = value;\n }\n\n if ( this.multiple ) {\n Arr.toggle(tempValue, value);\n }\n\n this.$refs.popover.close();\n\n let denyUpdate = this.tempValue === tempValue;\n\n if ( this.multiple && ! Any.isArray(this.modelValue) ) {\n denyUpdate = false;\n }\n\n if ( ! this.multiple && Any.isArray(this.modelValue) ) {\n denyUpdate = false;\n }\n\n if ( denyUpdate ) {\n return;\n }\n\n this.$emit('update:modelValue',\n this.tempValue = tempValue);\n },\n\n getOptionLabel(value)\n {\n let option = Arr.find(this.elements, \n { tempValue: value });\n\n if ( ! option && this.allowCreate ) {\n return value;\n }\n\n if ( ! option && ! this.allowCreate ) {\n return this.trans(this.undefinedText);\n }\n\n return option.tempLabel;\n },\n\n selectPrev()\n {\n let newIndex = this.index - 1;\n\n if ( newIndex < 0 ) {\n newIndex = this.searched.length - 1;\n }\n\n this.index = newIndex;\n\n this.scrollToCurrent();\n },\n\n selectNext()\n {\n let newIndex = this.index + 1;\n\n if ( newIndex > this.searched.length - 1 ) {\n newIndex = 0;\n }\n\n this.index = newIndex;\n\n this.scrollToCurrent();\n },\n\n createOrToggle()\n {\n if ( this.allowCreate && this.search ) {\n return this.createOption();\n }\n \n let selected = Arr.get(this.searched, \n this.index);\n\n if ( this.searched.length === 1 ) {\n selected = Arr.first(this.searched);\n }\n\n if ( ! selected || selected.disabled ) {\n return;\n }\n\n this.toggleOption(selected.tempValue);\n },\n\n createOption()\n {\n this.toggleOption(this.search);\n\n this.search = '';\n },\n\n scrollToCurrent()\n {\n if ( ! this.focus ) {\n return;\n }\n\n let selected = Arr.get(this.searched, \n this.index);\n\n if ( ! selected || ! this.$refs.scrollbar ) {\n return;\n }\n\n this.$refs.scrollbar.scrollIntoView(\n `[data-option=\"${selected._.uid}\"]`);\n },\n\n scrollToClosest()\n {\n if ( ! this.focus ) {\n return;\n }\n\n let value = this.tempValue;\n\n if ( Any.isArray(this.tempValue) ) {\n value = Arr.first(this.tempValue);\n }\n\n if ( ! value ) {\n return;\n }\n\n let target = Arr.find(this.elements, { \n tempValue: value\n });\n\n if ( ! target ) {\n return;\n }\n\n this.$refs.scrollbar.scrollIntoView(\n `[data-option=\"${target._.uid}\"]`, 150);\n }\n\n },\n\n beforeMount()\n {\n if ( this.multiple && ! Any.isArray(this.tempValue) ) {\n this.tempValue = [];\n }\n\n if ( this.multiple && ! Any.isArray(this.clearValue) ) {\n this.tempClear = [];\n }\n\n this.searchOptions();\n },\n\n\n renderLabelClear()\n {\n if ( ! this.clearable || Any.isEmpty(this.tempValue) ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clear;\n }\n\n return (\n <div class=\"n-select__clear\" {...props}>\n <i class={nano.Icons.times}></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-select__angle\">\n <i class={nano.Icons.angleDown}></i>\n </div>\n );\n },\n\n renderLabelItem(value)\n {\n let classList = [\n 'n-select__item'\n ];\n\n let props = {\n class: nano.Icons.times,\n };\n\n if ( ! this.disabled ) {\n props.onMousedown = (event) => this.toggleOption(value, event);\n }\n\n let labelHtml = (\n <span>{ this.getOptionLabel(value) }</span>\n );\n\n return (\n <div class={classList}>\n { [labelHtml, <i {...props}></i>] }\n </div>\n );\n },\n\n renderLabelCollapse()\n {\n let first = Arr.first(this.tempValue);\n\n if ( ! first ) {\n return null;\n }\n\n let firstHtml = this.ctor('renderLabelItem')(first);\n\n if ( this.tempValue.length === 1 ) {\n return firstHtml;\n }\n\n let count = this.tempValue.length - 1;\n\n let collapseHtml = (\n <div class=\"n-select__item\">\n <span>{ this.choice(this.collapseText, count) }</span>\n </div>\n );\n\n return [\n firstHtml, collapseHtml\n ];\n },\n\n renderLabelItems()\n {\n if ( ! Any.isArray(this.tempValue) ) {\n return null;\n }\n\n if ( this.collapse ) {\n return this.ctor('renderLabelCollapse')();\n }\n\n return Arr.each(this.tempValue, (value) => {\n return this.ctor('renderLabelItem')(value);\n });\n },\n\n renderMultiple()\n {\n let isEmptyValue = Any.isEmpty(this.tempValue) &&\n ! Any.isNumber(this.tempValue);\n\n let props = {\n value: this.search,\n placeholder: this.placeholder,\n disabled: this.disabled,\n onFocus: this.onFocusInput,\n onInput: this.onInputInput,\n onKeydown: this.onKeydownInput\n };\n\n if ( ! this.focus ) {\n props.value = null;\n }\n\n if ( ! isEmptyValue ) {\n props.placeholder = null;\n }\n\n let inputHtml = (\n <div class=\"n-select__input\">\n <input ref=\"input\" {...props} />\n </div>\n );\n\n return [\n this.ctor('renderLabelClear')(), \n (\n <div class=\"n-select__items\">\n { [this.ctor('renderLabelItems')(), inputHtml] }\n </div>\n ), \n this.ctor('renderLabelAngle')()\n ];\n },\n\n renderSingle()\n {\n let isEmptyValue = Any.isEmpty(this.tempValue) &&\n ! Any.isNumber(this.tempValue);\n\n let modelLabel = this.getOptionLabel(\n this.tempValue);\n \n if ( isEmptyValue ) {\n modelLabel = null;\n }\n\n let props = {\n value: this.search,\n placeholder: this.placeholder,\n disabled: this.disabled,\n onFocus: this.onFocusInput,\n onInput: this.onInputInput,\n onKeydown: this.onKeydownInput\n };\n\n if ( ! this.search && this.custom ) {\n props.value = this.tempValue;\n }\n\n if ( ! this.focus ) {\n props.value = modelLabel;\n }\n\n if ( ! isEmptyValue ) {\n props.placeholder = modelLabel;\n }\n\n return [\n this.ctor('renderLabelClear')(), \n (\n <div class=\"n-select__input\">\n <input ref=\"input\" {...props} />\n </div>\n ), \n this.ctor('renderLabelAngle')()\n ];\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-select__display'\n ];\n\n if ( this.multiple ) {\n classList.push('n-multiple');\n }\n\n let displayHtml = this.ctor('renderSingle');\n\n if ( this.multiple ) {\n displayHtml = this.ctor('renderMultiple');\n }\n\n return (\n <div class={classList}>{ displayHtml() }</div>\n );\n },\n\n renderItems()\n {\n let emptyHtml = (\n <div class=\"n-select__empty\">\n <NEmptyIcon>{ this.trans(this.emptyText) }</NEmptyIcon>\n </div>\n );\n \n if ( ! this.searched.length ) {\n return emptyHtml;\n }\n\n let options = Obj.each(this.searched, (option, index) => {\n return option.ctor('renderOption')(index);\n });\n\n let props = {\n relative: true, size: this.size\n }\n\n return (\n <NScrollbar ref=\"scrollbar\" class=\"n-select__body\" {...props}>\n { Obj.values(options) }\n </NScrollbar>\n );\n },\n\n renderPopover()\n {\n let props = {\n class: 'n-popover--select',\n trigger: 'click',\n width: -1,\n listen: true,\n size: this.size,\n scrollClose: true,\n disabled: this.disabled,\n onClose: this.resetInput\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n { { raw: this.ctor('renderItems') } }\n </NPopover>\n );\n },\n\n renderOptions()\n {\n if ( Any.isEmpty(this.options) ) {\n return this.$slots.default && this.$slots.default();\n }\n\n let optionRender = ($value, $index) => {\n\n let props = {\n label: Obj.get({ $value, $index }, this.optionsLabel, null),\n value: Obj.get({ $value, $index }, this.optionsValue, null),\n };\n\n return (<NSelectOption {...props}></NSelectOption>);\n };\n\n return Obj.values(Obj.each(this.options, optionRender));\n },\n\n render()\n {\n let classList = [\n 'n-select',\n 'n-select--' + this.type,\n 'n-select--' + this.size,\n ];\n\n let isEmptyValue = Any.isEmpty(this.tempValue) &&\n ! Any.isNumber(this.tempValue);\n\n if ( isEmptyValue ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList} onClick={this.focusInput}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n { this.ctor('renderOptions')() }\n </div>\n );\n }\n\n}\n","import { Num, Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSelectOption',\n\n inheritAttrs: false,\n\n inject: {\n\n NSelect: {\n default: undefined\n }\n\n },\n\n props: {\n\n value: {\n default()\n {\n return '';\n }\n },\n\n label: {\n default()\n {\n return null;\n }\n },\n\n valueProp: {\n default()\n {\n return null;\n }\n },\n\n labelProp: {\n default()\n {\n return null;\n }\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n computed: {\n\n tempValue()\n {\n if ( Any.isEmpty(this.valueProp) ) {\n return this.value;\n }\n\n return Obj.get(this.value, this.valueProp);\n },\n\n tempLabel()\n {\n if ( Any.isEmpty(this.labelProp) ) {\n return this.label;\n }\n\n return Obj.get(this.value, this.labelProp);\n }\n\n },\n\n mounted()\n {\n this.NSelect.addOption(this);\n },\n\n beforeUnmount()\n {\n this.NSelect.removeOption(this);\n },\n\n methods: {\n\n toggleItem(event) \n {\n event.preventDefault();\n\n if ( event.which !== 1 ) {\n return;\n }\n\n if ( this.disabled ) {\n return;\n }\n\n this.NSelect.toggleOption(this.tempValue, \n event);\n },\n\n },\n\n renderOption(index)\n {\n\n let classList = [];\n\n let isMultipleActive = this.NSelect.multiple && \n Arr.has(this.NSelect.tempValue, this.tempValue);\n\n if ( isMultipleActive ) {\n classList.push('n-active');\n }\n\n let isSingleActive = ! this.NSelect.multiple && \n this.NSelect.tempValue === this.tempValue;\n\n if ( isSingleActive ) {\n classList.push('n-active');\n }\n\n if ( this.NSelect.index === Num.int(index) ) {\n classList.push('n-focus');\n }\n\n let props = {\n 'disabled': this.disabled,\n 'onMousedown': this.toggleItem,\n 'type': this.NSelect.type,\n 'clickClose': ! this.NSelect.multiple,\n };\n\n if ( isSingleActive || isMultipleActive ) {\n props.icon = nano.Icons.checked;\n }\n\n // Required for scrolldown\n props['data-option'] = this._.uid;\n\n return (\n <NPopoverOption class={classList} {...props}>\n { this.$slots.default && this.$slots.default() || this.tempLabel }\n </NPopoverOption>\n );\n },\n\n render()\n {\n return null;\n }\n\n}\n","import Vue from \"vue\";\n\nimport Select from './src/select/select';\nimport SelectOption from './src/select-option/select-option';\n\nexport default function (App) {\n App.component(Select.name, Select);\n App.component(SelectOption.name, SelectOption);\n}\n","import { Arr, Obj, Any, UUID } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCheckbox',\n\n inject: {\n\n NCheckboxGroup: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n value: {\n default()\n {\n return null;\n }\n },\n\n allowUncheck: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n intermediate: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n global: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n },\n\n computed: {\n\n tempComputed()\n {\n return ! this.global ? this.tempChecked :\n this.NCheckboxGroup.globalChecked;\n },\n\n tempIntermediate()\n {\n return ! this.global ? this.intermediate :\n this.NCheckboxGroup.globalIntermediate;\n },\n\n tempDisabled()\n {\n return ! this.global ? this.disabled :\n this.NCheckboxGroup.globalDisabled;\n }\n\n },\n\n data()\n {\n return {\n uid: UUID(), tempChecked: this.modelValue\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempChecked ) {\n this.tempChecked = value;\n }\n }\n\n },\n\n beforeMount()\n {\n if ( this.NCheckboxGroup ) {\n this.tempChecked = this.NCheckboxGroup.isChecked(this.value);\n }\n },\n\n mounted()\n {\n if ( ! this.NCheckboxGroup || this.global ) {\n return;\n }\n\n this.NCheckboxGroup.addCheckbox(this);\n },\n\n beforeUnmount()\n {\n if ( this.NCheckboxGroup && ! this.global ) {\n this.NCheckboxGroup.removeCheckbox(this);\n }\n },\n\n methods: {\n\n toggle()\n {\n this.$emit('update:modelValue', this.tempChecked = ! this.tempChecked);\n },\n\n check()\n {\n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.checkCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = true);\n },\n\n uncheck()\n {\n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.uncheckCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = false);\n },\n\n eventShiftClick()\n {\n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.shiftCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = true);\n },\n\n eventLocalClick(event)\n {\n let canClick = ! this.tempDisabled || (this.allowUncheck &&\n this.tempChecked);\n\n if ( ! canClick ) {\n return;\n }\n\n event.preventDefault();\n\n if ( event.shiftKey ) {\n return this.eventShiftClick();\n }\n \n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.toggleCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = ! this.tempChecked);\n },\n\n eventGlobalClick()\n {\n let canClick = ! this.tempDisabled || (this.allowUncheck &&\n this.tempChecked);\n\n if ( ! canClick ) {\n return;\n }\n\n this.NCheckboxGroup.toggleAll();\n },\n\n updateFromGroup()\n {\n let checked = this.NCheckboxGroup.isChecked(this.value);\n\n if ( this.tempChecked === checked ) {\n return;\n }\n \n this.$emit('update:modelValue', this.tempChecked = checked);\n }\n\n },\n\n renderCheckbox()\n {\n let interHtml = this.$slots.intermediate &&\n this.$slots.intermediate();\n\n if ( ! interHtml ) {\n interHtml = (<i class={nano.Icons.intermediate}></i>);\n }\n\n let checkHtml = this.$slots.checked &&\n this.$slots.checked();\n\n if ( ! checkHtml ) {\n checkHtml = (<i class={nano.Icons.checked}></i>);\n }\n\n return (\n <div class=\"n-checkbox__checkbox\">\n { this.tempIntermediate ? interHtml : checkHtml }\n </div>\n );\n },\n\n renderLabel()\n {\n if ( ! this.cslo('default') && ! this.cslo('label') ) {\n return null;\n }\n\n return (\n <div class=\"n-checkbox__label\">\n { this.$slots.default() || this.$slots.label() }\n </div>\n );\n },\n\n render()\n {\n let size = this.size;\n\n if ( this.NCheckboxGroup ) {\n size = this.NCheckboxGroup.size;\n }\n\n let classList = [\n 'n-checkbox',\n 'n-checkbox--' + size,\n 'n-checkbox--' + this.type,\n ];\n\n if ( this.allowUncheck ) {\n classList.push('n-uncheck');\n }\n\n if ( this.tempComputed ) {\n classList.push('n-checked');\n }\n\n if ( this.tempIntermediate ) {\n classList.push('n-intermediate');\n }\n\n if ( this.tempDisabled ) {\n classList.push('n-disabled');\n }\n\n if ( this.tempComputed && this.allowUncheck ) {\n Arr.remove(classList, 'n-disabled');\n }\n\n let props = Obj.clone(this.$attrs);\n\n if ( this.global ) {\n props.onMousedown = this.eventGlobalClick;\n }\n\n if ( ! this.global ) {\n props.onMousedown = this.eventLocalClick;\n }\n\n return (\n <div class={classList} {...props}>\n { [this.ctor('renderCheckbox')(), this.ctor('renderLabel')()] }\n </div>\n );\n }\n\n}\n","import { Arr, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCheckboxGroup',\n\n provide()\n {\n return {\n NCheckboxGroup: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'horizontal';\n },\n type: [String]\n }\n\n },\n\n computed: {\n\n globalChecked()\n {\n let checked = Arr.filter(this.elements, (checkbox) => {\n return checkbox.tempChecked;\n });\n\n return checked.length === this.elements.length &&\n this.elements.length !== 0;\n },\n\n globalIntermediate()\n {\n let checked = this.elements.filter((checkbox) => {\n return checkbox.tempChecked;\n });\n\n return checked.length !== this.elements.length &&\n checked.length !== 0 ;\n },\n\n globalDisabled()\n {\n return this.elements.length === 0;\n },\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n index: -1,\n elements: []\n }\n },\n\n watch: {\n\n value()\n {\n if ( this.tempValue = this.modelValue ) {\n this.tempValue = this.modelValue;\n }\n \n },\n\n },\n\n methods: {\n\n addCheckbox(checkbox)\n {\n this.index = -1;\n\n Arr.add(this.elements, checkbox, {\n uid: checkbox.uid\n });\n\n this.elements = Arr.sort(this.elements, 'sort');\n },\n\n removeCheckbox(checkbox)\n {\n this.index = -1;\n \n Arr.remove(this.elements, {\n uid: checkbox.uid\n });\n },\n\n toggleCheckbox(checkbox, emit = true)\n {\n let index = Arr.findIndex(this.elements, {\n uid: checkbox.uid\n });\n\n if ( ! checkbox.tempChecked ) {\n this.index = index;\n }\n\n Arr.toggle(this.tempValue, checkbox.value);\n\n if ( ! emit ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n checkCheckbox(checkbox, emit = true)\n {\n Arr.add(this.tempValue, checkbox.value);\n\n if ( ! emit ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n uncheckCheckbox(checkbox, emit = true)\n {\n Arr.remove(this.tempValue, checkbox.value);\n\n if ( ! emit ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n shiftCheckbox(checkbox)\n {\n if ( this.index === -1 ) {\n return this.toggleCheckbox(checkbox, false);\n }\n\n let index = Arr.findIndex(this.elements, {\n uid: checkbox.uid\n });\n\n let checkboxes = this.elements.slice(this.index, index + 1);\n\n if ( index < this.index ) {\n checkboxes = this.elements.slice(index, this.index + 1);\n }\n\n this.index = -1;\n\n Arr.each(checkboxes, (checkbox) => {\n this.checkCheckbox(checkbox, false);\n });\n\n Arr.each(checkboxes, (checkbox) => {\n checkbox.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n toggleAll()\n {\n this.globalChecked ? this.uncheckAll() : this.checkAll();\n },\n\n checkAll()\n {\n Arr.each(this.elements, (checkbox) => {\n this.checkCheckbox(checkbox, false);\n });\n\n Arr.each(this.elements, (checkbox) => {\n checkbox.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n uncheckAll()\n {\n Arr.each(this.elements, (checkbox) => {\n this.uncheckCheckbox(checkbox, false);\n });\n\n Arr.each(this.elements, (checkbox) => {\n checkbox.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n isChecked(value)\n {\n return Arr.has(this.tempValue, value);\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-checkbox-group',\n 'n-checkbox-group--' + this.size,\n 'n-checkbox-group--' + this.align,\n ];\n\n return (\n <div class={classList}>\n {this.$slots.default()}\n </div>\n );\n }\n\n}\n","import Vue from \"vue\";\n\nimport Checkbox from './src/checkbox/checkbox';\nimport CheckboxGroup from './src/checkbox-group/checkbox-group';\n\nexport default function (App) {\n App.component(Checkbox.name, Checkbox);\n App.component(CheckboxGroup.name, CheckboxGroup);\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NRadio',\n\n model: {\n prop: 'checked'\n },\n\n inject: {\n\n NRadioGroup: {\n default: undefined\n }\n\n },\n\n props: {\n\n value: {\n default()\n {\n return null;\n }\n },\n\n checked: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n },\n\n computed: {\n\n uid()\n {\n return this._.uid;\n }\n\n },\n\n data()\n {\n return {\n tempChecked: this.checked\n };\n },\n\n watch: {\n\n checked()\n {\n if ( this.checked !== this.tempChecked ) {\n this.tempChecked = this.checked;\n }\n }\n\n },\n\n beforeMount()\n {\n if ( this.NRadioGroup ) {\n this.tempChecked = this.NRadioGroup.isChecked(this.value);\n }\n },\n\n mounted()\n {\n if ( this.NRadioGroup ) {\n this.NRadioGroup.addRadio(this);\n }\n },\n\n beforeUnmount()\n {\n if ( this.NRadioGroup ) {\n this.NRadioGroup.removeRadio(this);\n }\n },\n\n methods: {\n\n check()\n {\n if ( this.NRadioGroup ) {\n this.NRadioGroup.checkRadio(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = true);\n },\n\n updateFromGroup()\n {\n let checked = this.NRadioGroup.isChecked(this.value);\n\n if ( this.tempChecked === checked ) {\n return;\n }\n \n this.$emit('update:modelValue', this.tempChecked = checked);\n }\n\n },\n\n renderRadio()\n {\n return (\n <div class=\"n-radio__radio\">\n <span></span>\n </div>\n );\n },\n\n renderLabel()\n {\n if ( ! this.$slots.default && ! this.$slots.label ) {\n return null;\n }\n\n return (\n <div class=\"n-radio__label\">\n { this.$slots.default() || this.$slots.label() }\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-radio',\n 'n-radio--' + this.size,\n 'n-radio--' + this.type,\n ];\n\n if ( this.tempChecked ) {\n classList.push('n-checked');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = Obj.clone(this.$attrs);\n\n if ( ! this.disabled ) {\n props.onMousedown = this.check;\n }\n\n return (\n <div class={classList} {...props}>\n { this.ctor('renderRadio')() }\n { this.ctor('renderLabel')() }\n </div>\n );\n }\n\n}\n","import { Arr, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NRadioGroup',\n\n provide()\n {\n return {\n NRadioGroup: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'horizontal';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n elements: []\n }\n },\n\n watch: {\n\n modelValue()\n {\n if ( this.modelValue !== this.tempValue ) {\n this.tempValue = this.modelValue;\n }\n },\n\n },\n\n methods: {\n\n addRadio(radio)\n {\n Arr.add(this.elements, radio, {\n uid: radio.uid\n });\n },\n\n removeRadio(radio)\n {\n Arr.remove(this.elements, {\n uid: radio.uid\n });\n },\n\n checkRadio(radio)\n {\n this.tempValue = radio.value;\n \n Arr.each(this.elements, (radio) => {\n radio.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n isChecked(value)\n {\n return this.tempValue === value;\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-radio-group',\n 'n-radio-group--' + this.size,\n 'n-radio-group--' + this.align,\n ];\n\n return (\n <div class={classList}>\n { this.$slots.default() }\n </div>\n );\n }\n\n}\n","import NRadio from './src/radio/radio';\nimport NRadioGroup from './src/radio-group/radio-group';\n\nexport default function (App) {\n App.component(NRadio.name, NRadio);\n App.component(NRadioGroup.name, NRadioGroup);\n}\n","import { Arr, Obj, Any, Str } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCascaderPanel',\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n clearValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n hover: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n trigger: {\n default()\n {\n return 'hover';\n },\n type: [String]\n },\n\n labelProp: {\n default()\n {\n return 'label';\n },\n type: [String]\n },\n\n valueProp: {\n default()\n {\n return 'value';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n disabledProp: {\n default()\n {\n return 'disabled';\n },\n type: [String]\n },\n\n },\n\n computed: {\n\n touch() {\n return !! ('ontouchstart' in window || \n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n tempHover: this.hover,\n };\n },\n\n watch: {\n\n modelValue(value) {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n hover(value) {\n if ( value !== this.tempHover ) {\n this.tempHover = value;\n }\n }\n\n },\n\n methods: {\n\n clearCascader()\n {\n this.$emit('update:modelValue', this.tempHover = \n this.tempValue = this.clearValue);\n },\n\n onHover(cascade)\n {\n return (event) => this.hoverItem(cascade, event)\n },\n\n onSelect(cascade)\n {\n return (event) => this.selectItem(cascade, event)\n },\n\n hoverItem(cascade, event = null)\n {\n // Hover intend emulation\n clearTimeout(this.delay);\n\n let updateHover = () => {\n this.$emit('update:hover', \n this.tempHover = cascade);\n };\n\n this.delay = setTimeout(updateHover, 130);\n },\n\n selectItem(cascade, event = null)\n {\n clearTimeout(this.clickTimer);\n\n if ( ! this.lastclick ) {\n this.lastclick = 0;\n }\n\n this.lastclick++;\n\n let trigger = this.touch ? 'click' : \n this.trigger ;\n \n this.clickTimer = setTimeout(() => \n this.lastclick = 0, 240);\n\n this.hoverTimer = setTimeout(() => \n this.hoverItem(cascade), 240);\n\n if ( this.lastclick === 1 && trigger === 'click' ) {\n return this.hoverItem(cascade, event);\n }\n\n if ( event ) {\n event.preventDefault();\n }\n\n this.clickTimer = setTimeout(() => \n this.fireSelectItem(cascade), 50);\n },\n\n fireSelectItem(cascade)\n {\n clearTimeout(this.hoverTimer);\n\n this.lastclick = 0;\n\n this.$emit('update:modelValue', \n this.tempValue = cascade);\n }\n\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-cascader-panel',\n 'n-cascader-panel--' + this.size\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderLabel')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n )\n },\n\n renderOption(item, cascade = [])\n {\n let value = Obj.get(item, this.valueProp);\n\n let classList = [\n 'n-popover-option'\n ];\n\n if ( Arr.has(this.tempValue, item[this.valueProp]) ) {\n classList.push('n-active');\n }\n\n let disabled = Obj.get(item, this.disabledProp, false);\n\n if ( disabled ) {\n classList.push('n-disabled');\n }\n\n let props = {\n size: this.size,\n type: this.type,\n clickClose: false\n };\n\n if ( Arr.last(this.tempValue) === value ) {\n props.icon = nano.Icons.checked;\n }\n\n let tempCascade = Arr.merge(Arr.clone(cascade), [value]);\n\n if ( this.trigger === 'hover' ) {\n props.onMousemove = Any.framerate(this.onHover(tempCascade), 30);\n }\n\n props['on' + Str.ucfirst(this.mousedown)] = this.onSelect(tempCascade);\n\n let children = Obj.get(item, this.childProp);\n\n if ( ! props.icon && ! Any.isEmpty(children) ) {\n props.icon = nano.Icons.angleRight;\n }\n\n return (\n <NPopoverOption class={classList} {...props}>\n { Obj.get(item, this.labelProp) }\n </NPopoverOption>\n );\n },\n\n renderOptions(items, cascade = [])\n {\n if ( Any.isEmpty(items) ) {\n return null;\n }\n\n return (\n <div class=\"n-cascader-panel__items\">\n <NScrollbar relative={true}>\n {\n Arr.each(items, (item) => {\n return this.ctor('renderOption')(item, cascade);\n })\n }\n </NScrollbar>\n </div>\n )\n },\n\n renderCascade()\n {\n let renderList = [\n this.ctor('renderOptions')(this.options)\n ];\n\n let items = this.options, cascade = [];\n\n Arr.each(this.tempHover, (value) => {\n\n if ( ! items ) {\n return;\n }\n\n cascade.push(value);\n\n let item = Arr.find(items, {\n [this.valueProp]: value\n });\n\n items = Obj.get(item, this.childProp);\n\n let options = this.ctor('renderOptions')\n (items, cascade);\n\n renderList.push(options);\n });\n\n return renderList;\n },\n\n render()\n {\n let classList = [\n 'n-cascader-panel',\n 'n-cascader-panel--' + this.size\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>{ this.ctor('renderCascade')() }</div>\n );\n }\n\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCascader',\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n clearValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n current: {\n default()\n {\n return null;\n }\n },\n\n placeholder: {\n default()\n {\n return 'Please select';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n trigger: {\n default()\n {\n return 'hover';\n },\n type: [String]\n },\n\n labelProp: {\n default()\n {\n return 'label';\n },\n type: [String]\n },\n\n valueProp: {\n default()\n {\n return 'value';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n disabledProp: {\n default()\n {\n return 'disabled';\n },\n type: [String]\n },\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n tempHover: this.modelValue,\n focus: false,\n };\n },\n\n methods: {\n\n clearCascader()\n {\n this.focus = true;\n\n this.$emit('update:modelValue', \n this.tempValue = this.tempHover = this.clearValue);\n },\n\n onCascaderInput(value)\n {\n this.focus = false;\n\n this.$emit('update:modelValue', \n this.tempValue = value);\n },\n\n onCascaderHover(value)\n {\n this.$emit('update:hover', \n this.tempHover = value);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n },\n\n watch: {\n\n modelValue(value) {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n renderLabelClear()\n {\n if ( ! this.clearable || Any.isEmpty(this.tempValue) ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearCascader;\n }\n\n return (\n <div class=\"n-cascader__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-cascader__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderLabelItems()\n {\n let items = this.options, renderList = [];\n\n if ( Any.isEmpty(this.tempValue) ) {\n return (\n <div class=\"n-cascader__placeholder\">\n { this.trans(this.placeholder) }\n </div>\n );\n }\n\n Arr.each(this.tempValue, (value) => {\n\n if ( ! items ) {\n return;\n }\n\n let item = Arr.find(items, {\n [this.valueProp]: value\n });\n\n items = Obj.get(item, this.childProp);\n\n let itemLabel = (\n <div class=\"n-cascader__item\">\n <span>{ Obj.get(item, this.labelProp) }</span>\n </div>\n );\n\n renderList.push(itemLabel);\n });\n\n return (\n <div class=\"n-cascader__items\">\n { renderList }\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-cascader__display'\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderLabelItems')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderItems()\n {\n let props = Obj.except(this.$props, ['modelValue'], {\n hover: this.tempHover,\n modelValue: this.tempValue,\n });\n\n props['onUpdate:hover'] = this.onCascaderHover;\n props['onUpdate:modelValue'] = this.onCascaderInput;\n\n return (\n <NCascaderPanel class=\"n-cascader__body\" {...props}></NCascaderPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled,\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n { { raw: this.ctor('renderItems') } }\n </NPopover>\n );\n },\n\n render()\n {\n let classList = [\n 'n-cascader',\n 'n-cascader--' + this.type,\n 'n-cascader--' + this.size,\n ];\n\n if ( Any.isEmpty(this.tempValue) ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import CascaderPanel from './src/cascader-panel/cascader-panel';\nimport Cascader from './src/cascader/cascader';\n\nexport default function (App) {\n App.component(CascaderPanel.name, CascaderPanel);\n App.component(Cascader.name, Cascader);\n}","import { Arr, Str, Now, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDatepickerPanel',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n arrive: {\n default()\n {\n return null;\n }\n },\n\n clearArrive: {\n default()\n {\n return null;\n }\n },\n\n depart: {\n default()\n {\n return null;\n }\n },\n\n clearDepart: {\n default()\n {\n return null;\n }\n },\n\n minDate: {\n default()\n {\n return null;\n }\n },\n\n maxDate: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n range: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n monthPanels: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n weekdays: {\n default()\n {\n return [\n 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su',\n ];\n },\n type: [Array]\n },\n\n months: {\n default()\n {\n return [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', \n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',\n ]\n },\n type: [Array]\n }\n\n },\n\n computed: {\n\n yearsGrid()\n {\n return this.tempCache.getYears();\n },\n\n monthsGrid()\n {\n return this.tempCache.getMonths();\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n },\n\n arrive(value)\n {\n if ( value !== this.tempArrive.format(this.format) ) {\n this.tempArrive = Now.make(value);\n }\n },\n\n depart(value)\n {\n if ( value !== this.tempDepart.format(this.format) ) {\n this.tempDepart = Now.make(value);\n }\n },\n\n },\n\n data()\n {\n return {\n tempView: 'date',\n tempRanger: null,\n cacheArrive: null,\n cacheDepart: null,\n tempValue: Now.make(this.modelValue, this.format),\n tempCache: Now.make(this.modelValue, this.format),\n tempArrive: Now.make(this.arrive),\n tempDepart: Now.make(this.depart),\n }\n },\n\n methods: {\n\n gotoDate()\n {\n this.tempView = 'date';\n },\n\n gotoMonth()\n {\n this.tempView = 'month';\n },\n\n gotoYear()\n {\n this.tempView = 'year';\n },\n\n patchDate(now)\n {\n if ( Any.isString(now) ) {\n now = Now.make(now);\n }\n\n // Copy now to cache\n this.tempCache = now.clone();\n\n // Copy now to value\n this.tempValue = now.clone();\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n patchMonth(now)\n {\n if ( Any.isString(now) ) {\n now = Now.make(now);\n }\n\n this.tempCache = now.clone();\n\n this.gotoDate();\n },\n\n printRange(now)\n {\n this.tempRanger = now.clone();\n },\n\n patchYear(now)\n {\n if ( Any.isString(now) ) {\n now = Now.make(now);\n }\n\n this.tempCache = now.clone();\n\n this.gotoMonth();\n },\n\n patchRange(now)\n {\n if ( this.cacheArrive && ! this.cacheDepart ) {\n this.cacheDepart = now.clone();\n }\n\n if ( ! this.cacheArrive && ! this.cacheDepart ) {\n this.cacheArrive = now.clone();\n }\n\n if ( ! this.cacheArrive || ! this.cacheDepart ) {\n return;\n }\n\n this.tempArrive = this.cacheArrive.clone();\n this.tempDepart = this.cacheDepart.clone();\n\n this.$emit('update:arrive', \n this.tempArrive.format(this.format));\n\n this.$emit('update:depart', \n this.tempDepart.format(this.format));\n\n this.cacheArrive = null;\n this.cacheDepart = null;\n\n this.$emit('rangeSelected', [\n this.tempArrive.format(this.format),\n this.tempDepart.format(this.format)\n ]);\n },\n\n },\n\n renderToolbarPrev(closure)\n {\n let props = {\n type: this.type,\n link: true,\n icon: nano.Icons.angleLeft,\n onClick: closure\n };\n\n return (<NButton {...props}></NButton>);\n },\n\n renderToolbarNext(closure)\n {\n let props = {\n type: this.type,\n link: true,\n icon: nano.Icons.angleRight,\n onClick: closure\n };\n\n return (<NButton {...props}></NButton>);\n },\n\n renderToolbarMonth()\n {\n let props = {\n onClick: this.gotoMonth\n };\n\n let monthsHtml = [\n this.months[this.tempCache.month()]\n ];\n\n let month = this.tempCache.clone()\n .addMonths(this.monthPanels - 1);\n\n if ( month.month() !== this.tempCache.month() ) {\n monthsHtml.push(this.months[month.month()]);\n }\n\n return (\n <span class=\"n-datepicker-panel__month\" {...props}>\n { monthsHtml.join(' - ') }\n </span>\n );\n },\n\n renderToolbarYear()\n {\n let props = {\n onClick: this.gotoYear\n };\n\n let yearsHtml = [\n this.tempCache.year()\n ];\n\n let month = this.tempCache.clone()\n .addMonths(this.monthPanels - 1);\n\n if ( month.year() !== this.tempCache.year() ) {\n yearsHtml.push(month.year());\n }\n\n return (\n <span class=\"n-datepicker-panel__year\" {...props}>\n { yearsHtml.join(' - ') }\n </span>\n );\n },\n\n renderToolbar({ prev, next })\n {\n return (\n <div class=\"n-datepicker-panel__toolbar\">\n <div class=\"n-datepicker-panel__display\">\n { this.ctor('renderToolbarMonth')() }\n { this.ctor('renderToolbarYear')() }\n </div>\n <div class=\"n-datepicker-panel__prev\">\n { this.ctor('renderToolbarPrev')(prev) }\n </div>\n <div class=\"n-datepicker-panel__next\">\n { this.ctor('renderToolbarNext')(next) }\n </div>\n </div>\n );\n },\n\n renderDateItem(now, month)\n {\n let classList = [\n 'n-datepicker-panel__day'\n ];\n\n if ( now.equalDate() ) {\n classList.push('n-today');\n }\n\n let isSelected = this.tempValue.valid() && \n now.equalDate(this.tempValue);\n\n if ( isSelected ) {\n classList.push('n-selected');\n }\n\n if ( now.month() === month.month() ) {\n classList.push('n-current');\n }\n\n let isNotBeforeMin = ! this.minDate || \n now.after(this.minDate) || now.equalDate(this.minDate);\n\n let isNotAfterMax = ! this.maxDate || \n now.before(this.maxDate) || now.equalDate(this.maxDate);\n\n if ( ! isNotBeforeMin || ! isNotAfterMax ) {\n classList.push('n-disabled');\n }\n\n let props = {};\n\n if ( isNotBeforeMin && isNotAfterMax ) {\n props.onClick = () => this.patchDate(now);\n }\n\n return (\n <div class={classList} {...props}>\n <span>{ now.format('DD') }</span>\n </div>\n );\n },\n\n renderRangeDateItem(now, month)\n {\n let classList = [\n 'n-datepicker-panel__day'\n ];\n\n if ( now.equalDate('now') ) {\n classList.push('n-today');\n }\n\n if ( now.month() === month.month() ) {\n classList.push('n-current');\n }\n\n let viewMode = 0;\n\n if ( !! this.cacheArrive ) {\n viewMode++;\n }\n\n if ( !! this.cacheDepart ) {\n viewMode++;\n }\n\n let isTempValid = this.tempArrive.valid() && \n this.tempDepart.valid();\n\n if ( viewMode === 0 && isTempValid ) {\n\n if ( now.between(this.tempArrive, this.tempDepart) ) {\n classList.push('n-between');\n classList.push('n-selected');\n }\n\n let arriveFirst = this.tempArrive.before(this.tempDepart);\n\n if ( now.equalDate(this.tempArrive) ) {\n classList.push(arriveFirst ? 'n-arrive' : 'n-depart');\n classList.push('n-selected');\n }\n\n if ( now.equalDate(this.tempDepart) ) {\n classList.push(arriveFirst ? 'n-depart' : 'n-arrive');\n classList.push('n-selected');\n }\n\n }\n\n if ( viewMode === 1 && this.cacheArrive ) {\n\n if ( now.between(this.cacheArrive, this.tempRanger) ) {\n classList.push('n-between');\n }\n\n let arriveFirst = this.cacheArrive.before(this.tempRanger);\n\n if ( now.equalDate(this.cacheArrive) ) {\n classList.push(arriveFirst ? 'n-arrive' : 'n-depart');\n }\n\n if ( now.equalDate(this.tempRanger) ) {\n classList.push(arriveFirst ? 'n-depart' : 'n-arrive');\n }\n\n }\n\n let isNotBeforeMin = ! this.minDate || \n now.after(this.minDate) || now.equalDate(this.minDate);\n\n let isNotAfterMax = ! this.maxDate || \n now.before(this.maxDate) || now.equalDate(this.maxDate);\n\n if ( ! isNotBeforeMin || ! isNotAfterMax ) {\n classList.push('n-disabled');\n }\n\n let props = {\n onMouseenter: () => this.printRange(now)\n };\n\n if ( isNotBeforeMin && isNotAfterMax ) {\n props.onClick = () => this.patchRange(now);\n }\n\n return (\n <div class={classList} {...props}>\n <span>{ now.format('DD') }</span>\n </div>\n );\n },\n\n renderDate()\n {\n let prev = () => {\n this.tempCache = this.tempCache.prevMonth();\n };\n let next = () => {\n this.tempCache = this.tempCache.nextMonth();\n };\n\n let legendHtml = (\n Arr.each(this.weekdays, (day) => {\n return (\n <div class=\"n-datepicker-panel__day\">\n <span>{ this.trans(day) }</span>\n </div>\n );\n })\n );\n\n let renderItem = this.ctor('renderDateItem');\n\n if ( this.range ) {\n renderItem = this.ctor('renderRangeDateItem');\n }\n\n let bodyHtml = (month) => (\n Arr.each(Arr.chunk(month.getDatesGrid(), 7), (chunks) => {\n return (\n <div class=\"n-datepicker-panel__week\">\n { Arr.each(chunks, (chunk) => renderItem(chunk, month)) }\n </div>\n );\n })\n );\n\n let panelHtml = (\n Arr.each(Arr.make(this.monthPanels), (offset) => {\n\n let month = this.tempCache.clone()\n .addMonths(offset - 1);\n\n return (\n <div class=\"n-datepicker-panel__panel\">\n <div class=\"n-datepicker-panel__legend\">\n { legendHtml }\n </div>\n <div class=\"n-datepicker-panel__body\">\n { bodyHtml(month) }\n </div>\n </div>\n );\n })\n );\n\n return (\n <div class=\"n-datepicker-panel__dateview\">\n <div class=\"n-datepicker-panel__header\">\n { this.ctor('renderToolbar')({ prev, next }) }\n </div>\n <div class=\"n-datepicker-panel__panels\">\n { panelHtml }\n </div>\n </div>\n );\n },\n\n renderMonthItem(now)\n {\n let classList = [\n 'n-datepicker-panel__month'\n ];\n\n if ( now.equal(this.tempCache, 'YYYYMM') ) {\n classList.push('n-selected');\n }\n\n if ( now.month() === Now.make('now').month() ) {\n classList.push('n-current');\n }\n\n let props = {\n onClick: () => this.patchMonth(now)\n };\n\n return (\n <div class={classList} {...props}>\n <span>{ this.trans(this.months[now.month()]) }</span>\n </div>\n )\n },\n\n renderMonth()\n {\n let prev = () => {\n this.tempCache = this.tempCache.prevYear();\n };\n\n let next = () => {\n this.tempCache = this.tempCache.nextYear();\n };\n\n return (\n <div class=\"n-datepicker-panel__monthview\">\n <div class=\"n-datepicker-panel__header\">\n { this.ctor('renderToolbar')({ prev, next }) }\n </div>\n <div class=\"n-datepicker-panel__body\">\n <div class=\"n-datepicker-panel__year\">\n { Arr.each(this.monthsGrid, this.ctor('renderMonthItem')) }\n </div>\n </div>\n <div class=\"n-datepicker-panel__footer\">\n <NButton size={this.type} size={this.size} link={true} onClick={this.gotoDate}>\n { this.trans('Go back') }\n </NButton>\n </div>\n </div>\n );\n },\n\n renderYearItem(now)\n {\n let classList = [\n 'n-datepicker-panel__year'\n ];\n\n if ( now.equal(this.tempCache, 'YYYY') ) {\n classList.push('n-selected');\n }\n\n if ( now.year() === Now.make('now').year() ) {\n classList.push('n-current');\n }\n\n let props = {\n onClick: () => this.patchYear(now)\n };\n\n return (\n <div class={classList} {...props}>\n <span>{ now.year() }</span>\n </div>\n )\n },\n\n renderYear()\n {\n let prev = () => {\n this.tempCache = this.tempCache.prevDecade();\n };\n\n let next = () => {\n this.tempCache = this.tempCache.nextDecade();\n };\n\n return (\n <div class=\"n-datepicker-panel__yearview\">\n <div class=\"n-datepicker-panel__header\">\n { this.ctor('renderToolbar')({ prev, next }) }\n </div>\n <div class=\"n-datepicker-panel__body\">\n <div class=\"n-datepicker-panel__decade\">\n { Arr.each(this.yearsGrid, this.ctor('renderYearItem')) }\n </div>\n </div>\n <div class=\"n-datepicker-panel__footer\">\n <NButton size={this.type} size={this.size} link={true} onClick={this.gotoDate}>\n { this.trans('Go back') }\n </NButton>\n </div>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-datepicker-panel',\n 'n-datepicker-panel--' + this.size,\n 'n-datepicker-panel--' + this.type\n ]\n\n return (\n <div class={classList}>\n { this.ctor('render' + Str.ucfirst(this.tempView))() }\n </div>\n );\n }\n\n}","import { Obj, Now, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDatepicker',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n arrive: {\n default()\n {\n return null;\n }\n },\n\n clearArrive: {\n default()\n {\n return null;\n }\n },\n\n depart: {\n default()\n {\n return null;\n }\n },\n\n clearDepart: {\n default()\n {\n return null;\n }\n },\n\n minDate: {\n default()\n {\n return null;\n }\n },\n\n maxDate: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n placeholder: {\n default()\n {\n return Locale.trans('Select date');\n },\n type: [String]\n },\n\n placeholderArrive: {\n default()\n {\n return Locale.trans('Start date');\n },\n type: [String]\n },\n\n placeholderDepart: {\n default()\n {\n return Locale.trans('End date');\n },\n type: [String]\n },\n\n range: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n rangeSeparator: {\n default()\n {\n return '-';\n },\n type: [String]\n },\n\n monthPanels: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n boundary: {\n default()\n {\n return null;\n }\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return Locale.trans('YYYY-MM-DD HH:mm:ss');\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return Locale.trans('YYYY-MM-DD');\n },\n type: [String]\n },\n\n weekdays: {\n default()\n {\n return [\n Locale.trans('Mo'),\n Locale.trans('Tu'),\n Locale.trans('We'),\n Locale.trans('Th'),\n Locale.trans('Fr'),\n Locale.trans('Sa'),\n Locale.trans('Su'),\n ];\n },\n type: [Array]\n },\n\n months: {\n default()\n {\n return [\n Locale.trans('Jan'),\n Locale.trans('Feb'),\n Locale.trans('Mar'),\n Locale.trans('Apr'),\n Locale.trans('May'),\n Locale.trans('Jun'),\n Locale.trans('Jul'),\n Locale.trans('Aug'),\n Locale.trans('Sep'),\n Locale.trans('Oct'),\n Locale.trans('Nov'),\n Locale.trans('Dec'),\n ];\n },\n type: [Array]\n }\n\n },\n\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n },\n\n arrive(value)\n {\n if ( value !== this.tempArrive.format(this.format) ) {\n this.tempArrive = Now.make(value);\n }\n },\n\n depart(value)\n {\n if ( value !== this.tempDepart.format(this.format) ) {\n this.tempDepart = Now.make(value);\n }\n },\n\n },\n\n data()\n {\n return {\n focus: false,\n tempValue: Now.make(this.modelValue, this.format),\n tempArrive: Now.make(this.arrive, this.format),\n tempDepart: Now.make(this.depart, this.format),\n };\n },\n\n methods: {\n\n clearDatepicker()\n {\n this.range ? this.clearRangeDatepicker() :\n this.clearSingleDatepicker();\n },\n\n clearSingleDatepicker()\n {\n this.tempValue = Now.make(this.clearValue, \n this.format);\n\n this.$emit('update:modelValue', this.clearValue);\n },\n\n\n clearRangeDatepicker()\n {\n this.tempArrive = Now.make(this.clearArrive, \n this.format);\n\n this.$emit('update:arrive', this.clearValue);\n\n this.tempDepart = Now.make(this.clearDepart, \n this.format);\n\n this.$emit('update:depart', this.clearDepart);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n onValueInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n });\n\n this.tempValue = Now.make(moment);\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n onArriveInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n });\n\n this.tempArrive = Now.make(moment);\n\n this.$emit('update:arrive', \n this.tempArrive.format(this.format));\n },\n\n onDepartInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n });\n\n this.tempDepart = Now.make(moment);\n\n this.$emit('update:depart', \n this.tempDepart.format(this.format));\n },\n\n onDatepickerInput(value)\n {\n this.focus = false;\n\n this.tempValue = Now.make(value, \n this.format);\n\n this.$emit('update:modelValue', value);\n },\n\n onDatepickerDepart(value)\n {\n this.focus = false;\n\n this.tempDepart = Now.make(value, \n this.format);\n\n this.$emit('update:depart', value);\n },\n\n onDatepickerArrive(value)\n {\n this.focus = false;\n\n this.tempArrive = Now.make(value, \n this.format);\n\n this.$emit('update:arrive', value);\n },\n\n },\n\n\n renderLabelClear()\n {\n let isEmpty = ! this.tempArrive.initialDate &&\n ! this.tempDepart.initialDate;\n\n if ( ! this.range ) {\n isEmpty = ! this.tempValue.initialDate;\n }\n\n if ( ! this.clearable || isEmpty ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearDatepicker;\n }\n\n return (\n <div class=\"n-datepicker__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-datepicker__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderRange()\n {\n let arriveProps = {\n value: '',\n disabled: this.disabled,\n placeholder: this.placeholderArrive,\n onInput: this.onArriveInput,\n };\n\n if ( this.tempArrive.valid() ) {\n arriveProps.value = this.tempArrive.format(\n this.displayFormat, true);\n }\n\n let departProps = {\n value: '',\n disabled: this.disabled,\n placeholder: this.placeholderDepart,\n onInput: this.onDepartInput,\n };\n\n if ( this.tempDepart.valid() ) {\n departProps.value = this.tempDepart.format(\n this.displayFormat, true);\n }\n\n return [\n (\n <div class=\"n-datepicker__input\">\n <input {...arriveProps}/>\n </div>\n ),\n (\n <div class=\"n-datepicker__seperator\">\n <span>{ this.rangeSeparator }</span>\n </div>\n ),\n (\n <div class=\"n-datepicker__input\">\n <input {...departProps}/>\n </div>\n )\n ];\n },\n\n renderSingle()\n {\n let props = {\n value: '',\n disabled: this.disabled,\n placeholder: this.placeholder,\n onInput: this.onValueInput,\n };\n\n if ( this.tempValue.valid() ) {\n props.value = this.tempValue.format(\n this.displayFormat, true);\n }\n\n return (\n <div class=\"n-datepicker__input\">\n <input {...props}/>\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-datepicker__display'\n ];\n\n if ( this.range ) {\n classList.push('n-range');\n }\n\n let displayHtml = this.ctor('renderSingle');\n\n if ( this.range ) {\n displayHtml = this.ctor('renderRange');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { displayHtml() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderItems()\n {\n \n let props = Obj.except(this.$props, ['modelValue'], {\n arrive: this.tempArrive.format(this.format) || null,\n depart: this.tempDepart.format(this.format) || null,\n modelValue: this.tempValue.format(this.format) || null,\n });\n\n props['onUpdate:arrive'] = this.onDatepickerArrive;\n props['onUpdate:depart'] = this.onDatepickerDepart;\n props['onUpdate:modelValue'] = this.onDatepickerInput;\n\n return (\n <NDatepickerPanel class=\"n-datepicker__body\" {...props}></NDatepickerPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n { { raw: this.ctor('renderItems') } }\n </NPopover>\n );\n },\n\n render()\n {\n let classList = [\n 'n-datepicker',\n 'n-datepicker--' + this.type,\n 'n-datepicker--' + this.size,\n ];\n\n let isEmpty = ! this.tempArrive.initialDate &&\n ! this.tempDepart.initialDate;\n\n if ( ! this.range ) {\n isEmpty = ! this.tempValue.initialDate;\n }\n\n if ( isEmpty ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import DatepickerPanel from \"./src/datepicker-panel/datepicker-panel\";\nimport Datepicker from \"./src/datepicker/datepicker\";\n\nexport default function (App) {\n App.component(DatepickerPanel.name, DatepickerPanel);\n App.component(Datepicker.name, Datepicker);\n}","import { Arr, Obj, Now, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTimepickerPanel',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n placeholder: {\n default()\n {\n return 'Select time';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n }\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return 'HH:mm:ss';\n },\n type: [String]\n },\n\n hoursInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n minutesInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n secondsInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n }\n\n },\n\n computed: {\n\n hoursGrid()\n {\n return this.tempValue.getHours(this.hoursInterval);\n },\n\n minutesGrid()\n {\n return this.tempValue.getMinutes(this.minutesInterval);\n },\n\n secondsGrid()\n {\n return this.tempValue.getSeconds(this.secondsInterval);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n }\n\n },\n\n data()\n {\n return {\n tempValue: Now.make(this.modelValue),\n }\n },\n\n methods: {\n\n eventSelect(now)\n {\n this.$emit('update:modelValue', \n (this.tempValue = now.clone()).format(this.format));\n },\n\n },\n\n renderToolbar()\n {\n return (\n <div class=\"n-timepicker-panel__toolbar\">\n <div class=\"n-timepicker-panel-display\">\n <span class=\"n-timepicker-panel__time\">\n { this.tempValue.format(this.displayFormat) || this.placeholder }\n </span>\n </div>\n </div>\n )\n },\n\n renderHourItem(now)\n {\n let classList = [\n 'n-timepicker-panel__item'\n ];\n\n if ( this.tempValue.valid() && now.hour() === this.tempValue.hour() ) {\n classList.push('n-selected');\n }\n\n let props = {\n onMousedown: () => this.eventSelect(now)\n };\n\n return (\n <div class={classList} {...props}>\n <span>{ now.format('HH') }</span>\n </div>\n );\n },\n\n renderHourPanel()\n {\n if ( ! this.displayFormat.match('HH') ) {\n return null;\n }\n\n return (\n <NScrollbar class=\"n-timepicker-panel__panel\" wrapClass=\"n-timepicker-panel__wrap\">\n { Arr.each(this.hoursGrid, this.ctor('renderHourItem')) }\n </NScrollbar>\n );\n },\n\n renderMinuteItem(now)\n {\n let classList = [\n 'n-timepicker-panel__item'\n ];\n\n if ( this.tempValue.valid() && now.minute() === this.tempValue.minute() ) {\n classList.push('n-selected');\n }\n\n let props = {\n onMousedown: () => this.eventSelect(now)\n };\n\n return (\n <div class={classList} {...props}>\n <span>{ now.format('mm') }</span>\n </div>\n );\n },\n\n renderMinutePanel()\n {\n if ( ! this.displayFormat.match('mm') ) {\n return null;\n }\n\n return (\n <NScrollbar class=\"n-timepicker-panel__panel\" wrapClass=\"n-timepicker-panel__wrap\">\n { Arr.each(this.minutesGrid, this.ctor('renderMinuteItem')) }\n </NScrollbar>\n );\n },\n\n renderSecondItem(now)\n {\n let classList = [\n 'n-timepicker-panel__item'\n ];\n\n if ( this.tempValue.valid() && now.second() === this.tempValue.second() ) {\n classList.push('n-selected');\n }\n\n let props = {\n onMousedown: () => this.eventSelect(now)\n };\n\n return (\n <div class={classList} {...props}>\n <span>{ now.format('ss') }</span>\n </div>\n );\n },\n\n renderSecondPanel()\n {\n if ( ! this.displayFormat.match('ss') ) {\n return null;\n }\n\n return (\n <NScrollbar class=\"n-timepicker-panel__panel\">\n <div class=\"n-timepicker-panel__wrap\">\n { Arr.each(this.secondsGrid, this.ctor('renderSecondItem')) }\n </div>\n </NScrollbar>\n );\n },\n\n render()\n {\n let classList = [\n 'n-timepicker-panel',\n 'n-timepicker-panel--' + this.size,\n 'n-timepicker-panel--' + this.type,\n ];\n\n if ( this.disabled ){\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n <div class=\"n-timepicker-panel__header\">\n {this.ctor('renderToolbar')()}\n </div>\n <div class=\"n-timepicker-panel__body\">\n { this.ctor('renderHourPanel')() }\n { this.ctor('renderMinutePanel')() }\n { this.ctor('renderSecondPanel')() }\n </div>\n </div>\n );\n }\n\n}","import { Arr, Obj, Now, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTimepicker',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n placeholder: {\n default()\n {\n return 'Select time';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return 'HH:mm:ss';\n },\n type: [String]\n },\n\n hoursInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n minutesInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n secondsInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n }\n\n },\n\n computed: {\n\n hoursGrid()\n {\n return this.tempValue.getHours(this.hoursInterval);\n },\n\n minutesGrid()\n {\n return this.tempValue.getMinutes(this.minutesInterval);\n },\n\n secondsGrid()\n {\n return this.tempValue.getSeconds(this.secondsInterval);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n }\n\n },\n\n data()\n {\n return {\n focus: false,\n tempValue: Now.make(this.modelValue),\n }\n },\n\n methods: {\n\n clearTimepicker()\n {\n this.tempValue = Now.make(this.clearValue, \n this.format);\n\n this.$emit('update:modelValue', this.clearValue);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n onValueInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n hour: value.moment.hour(), \n minute: value.moment.minute(), \n second: value.moment.second(),\n });\n\n this.tempValue = Now.make(moment);\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n onTimepickerInput(value)\n {\n this.tempValue = Now.make(value, \n this.format);\n\n this.$emit('update:modelValue', value);\n },\n\n },\n\n renderLabelClear()\n {\n if ( ! this.clearable || ! this.tempValue.valid() ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearTimepicker;\n }\n\n return (\n <div class=\"n-timepicker__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-timepicker__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderSingle()\n {\n let props = {\n value: '',\n disabled: this.disabled,\n placeholder: this.trans(this.placeholder),\n onInput: this.onValueInput,\n };\n\n if ( this.tempValue.valid() ) {\n props.value = this.tempValue.format(\n this.displayFormat, true);\n }\n\n return (\n <div class=\"n-timepicker__input\">\n <input {...props}/>\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-timepicker__display'\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderSingle')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderPanel()\n {\n \n let props = Obj.except(this.$props, ['modelValue'], {\n modelValue: this.tempValue.format(this.format) || null,\n });\n\n props['onUpdate:modelValue'] = this.onTimepickerInput;\n\n return (\n <NTimepickerPanel class=\"n-timepicker__body\" {...props}></NTimepickerPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n { { raw: this.ctor('renderPanel') } }\n </NPopover>\n );\n },\n\n render()\n {\n let classList = [\n 'n-timepicker',\n 'n-timepicker--' + this.type,\n 'n-timepicker--' + this.size,\n ];\n\n if ( ! this.tempValue.valid() ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import TimepickerPanel from \"./src/timepicker-panel/timepicker-panel\";\nimport Timepicker from \"./src/timepicker/timepicker\";\n\nexport default function (App) {\n App.component(TimepickerPanel.name, TimepickerPanel);\n App.component(Timepicker.name, Timepicker);\n}","import { Arr, Dom, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTabs',\n\n provide()\n {\n return {\n NTabs: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n relative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n init: false,\n elements: [], \n width: 0, \n offset: 0, \n tempValue: this.modelValue\n };\n },\n\n methods: {\n\n addTab(tab)\n {\n Arr.add(this.elements, tab, \n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n removeTab(tab)\n {\n Arr.remove(this.elements, \n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n getTab(updateEvent = true)\n {\n let currentTab = Arr.find(this.elements, {\n name: this.modelValue\n });\n\n let sorted = Arr.sort(this.elements, 'sort');\n\n if ( ! currentTab ) {\n currentTab = Arr.first(sorted);\n }\n\n let repeatNext = () => this.getTab(updateEvent);\n\n if ( ! currentTab ) {\n return Any.delay(repeatNext, 250);\n }\n\n if ( currentTab.name === this.tempValue || ! updateEvent ) {\n return;\n }\n\n this.$emit('update:modelValue', \n this.tempValue = currentTab.name);\n },\n\n changeTab(value)\n {\n if ( this.tempValue === value ) {\n return;\n }\n\n this.$emit('update:modelValue', \n this.tempValue = value);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n mounted()\n {\n this.init = true;\n this.getTab(false);\n },\n\n updated()\n {\n let width = Dom.find(this.$el).find('.n-active')\n .width();\n\n this.width = width < 0 ? 0 : width;\n\n let offset = Dom.find(this.$el).find('.n-active')\n .offset('left', this.$el);\n\n this.offset = offset < 0 ? 0 : offset;\n },\n\n renderHeaderIndicator()\n {\n let transform = `scaleX(${this.width / 100}) ` + \n `translateX(${this.offset / (this.width / 100)}px)`;\n\n return (\n <div class=\"n-tabs__indicator\" style={{ transform }}>\n { /* Indicator bar */ }\n </div>\n );\n },\n\n renderHeader()\n {\n if ( this.elements.length <= 1 ) {\n return null;\n }\n\n // FIXME: As soon vue doesnt bug\n let sorted = Arr.sort(this.elements, 'sort');\n \n let tabs = Arr.each(Arr.make(sorted.length), (tab, index) => {\n return sorted[index].ctor('renderHeader')();\n });\n\n return (\n <div class=\"n-tabs__header\">\n {[tabs, this.ctor('renderHeaderIndicator')()]}\n </div>\n );\n },\n\n renderBody()\n {\n return (\n <div class=\"n-tabs__body\">\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-tabs', \n 'n-tabs--' + this.size, \n 'n-tabs--' + this.type\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderHeader')() }\n { this.ctor('renderBody')() }\n </div>\n );\n }\n}\n","import { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NTabsItem',\n\n inject: {\n\n NTabs: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return {\n NTabsItem: this\n };\n },\n\n props: {\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n name: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n sort: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n relative: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n preload: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n keep: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n\n },\n\n methods: {\n\n changeTab()\n {\n this.NTabs.changeTab(this.name);\n }\n\n },\n\n data()\n {\n return {\n _key: null, init: false\n }\n },\n\n beforeMount()\n {\n this.NTabs.addTab(this);\n },\n\n beforeUnmount()\n {\n this.NTabs.removeTab(this);\n },\n\n renderHeaderIcon()\n {\n if ( ! this.$slots.icon && ! this.icon ) {\n return null;\n }\n\n return (\n <div class=\"n-tabs__tab-icon\">\n { this.$slots.icon && this.$slots.icon() || <i class={this.icon}></i> }\n </div>\n );\n },\n\n renderHeaderLabel()\n {\n return (\n <div class=\"n-tabs__tab-label\">\n { this.$slots.label && this.$slots.label () || <span>{this.label}</span> }\n </div>\n );\n },\n\n renderHeader()\n {\n let classList = [\n 'n-tabs__tab'\n ];\n\n if ( this.NTabs.tempValue === this.name ) {\n classList.push('n-active');\n }\n\n let props = {\n onClick: () => this.changeTab(this.name)\n };\n\n return (\n <div class={classList} {...props}>\n { this.ctor('renderHeaderIcon')() }\n { this.ctor('renderHeaderLabel')() }\n </div>\n );\n },\n\n render()\n {\n let renderBody = this.NTabs.tempValue === this.name;\n\n if ( this.NTabs.tempValue !== this.name && this.keep ) {\n renderBody = this.init;\n }\n\n if ( this.NTabs.tempValue !== this.name && this.preload ) {\n renderBody = true;\n }\n\n if ( ! renderBody ) {\n return null;\n }\n\n this.init = true;\n\n let classList = [\n 'n-tabs-item'\n ];\n\n let style = {};\n\n if ( this.NTabs.tempValue !== this.name ) {\n style.display = 'none';\n }\n\n if ( this.$slots.raw ) {\n return this.$slots.raw({ style });\n }\n\n let element = 'div';\n\n if ( ! this.relative && ! this.NTabs.relative ) {\n element = resolveComponent('NScrollbar');\n }\n\n return h(element, { class: classList, style }, this.$slots);\n }\n}\n","import Tabs from './src/tabs/tabs';\nimport TabsItem from './src/tabs-item/tabs-item';\n\nexport default function (App) {\n App.component(Tabs.name, Tabs);\n App.component(TabsItem.name, TabsItem);\n}","import { Arr, Dom, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCollapse',\n\n provide()\n {\n return {\n NCollapse: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n relative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n init: false, elements: [], tempValue: this.modelValue\n };\n },\n\n methods: {\n\n addTab(tab)\n {\n Arr.add(this.elements, tab,\n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n removeTab(tab)\n {\n Arr.remove(this.elements,\n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n showTab(value)\n {\n if ( Arr.has(this.tempValue, value) ) {\n return;\n }\n\n Arr.add(this.tempValue, value);\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n hideTab(value)\n {\n if ( ! Arr.has(this.tempValue, value) ) {\n return;\n }\n\n Arr.remove(this.tempValue, value);\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n toggleTab(value)\n {\n Arr.toggle(this.tempValue, value);\n\n this.$emit('update:modelValue', this.tempValue);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n mounted()\n {\n this.init = true;\n },\n\n render()\n {\n let classList = [\n 'n-collapse',\n 'n-collapse--' + this.size,\n 'n-collapse--' + this.type\n ];\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n}\n","import { Arr, Any, Dom } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NCollapseItem',\n\n inject: {\n\n NCollapse: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return {\n NCollapseItem: this\n };\n },\n\n props: {\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n name: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n sort: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n relative: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n preload: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n keep: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n methods: {\n\n showTab()\n {\n this.NCollapse.showTab(this.name);\n },\n\n hideTab()\n {\n this.NCollapse.hideTab(this.name);\n },\n\n toggleTab()\n {\n this.NCollapse.toggleTab(this.name);\n }\n\n },\n\n data()\n {\n return {\n _key: null, init: false, dragger: 0\n }\n },\n\n beforeMount()\n {\n this.NCollapse.addTab(this);\n },\n\n beforeUnmount()\n {\n this.NCollapse.removeTab(this);\n },\n\n renderHeaderIcon()\n {\n if ( !this.$slots.icon && !this.icon ) {\n return null;\n }\n\n return (\n <div class=\"n-collapse__header-icon\">\n {this.$slots.icon && this.$slots.icon() || <i class={this.icon}></i>}\n </div>\n );\n },\n\n renderHeaderLabel()\n {\n return (\n <div class=\"n-collapse__header-label\">\n {this.$slots.label && this.$slots.label() || <span>{this.label}</span>}\n </div>\n );\n },\n\n renderHeaderAngle()\n {\n return (\n <div class=\"n-collapse__header-angle\">\n {this.$slots.angle && this.$slots.angle() || <i class={nano.Icons.angleRight}></i>}\n </div>\n );\n },\n\n renderHeader()\n {\n if ( !this.label && !this.$slots.label ) {\n return null;\n }\n\n let classList = [\n 'n-collapse__header'\n ];\n\n if ( Arr.has(this.NCollapse.tempValue, this.name) ) {\n classList.push('n-active');\n }\n\n let props = {\n onClick: () => this.toggleTab(this.name)\n };\n\n props['onDragenter'] = (event) => {\n\n this.dragger++;\n\n if ( this.dragger !== 1 ) {\n return;\n }\n\n this.showDelay = setTimeout(() => {\n this.showTab(this.name);\n }, 350);\n };\n\n props['onDragleave'] = (event) => {\n\n this.dragger--;\n\n if ( this.dragger !== 0 ) {\n return;\n }\n\n clearTimeout(this.showDelay);\n };\n\n return (\n <div ref=\"header\" class={classList} {...props}>\n {this.ctor('renderHeaderIcon')()}\n {this.ctor('renderHeaderLabel')()}\n {this.ctor('renderHeaderAngle')()}\n </div>\n );\n },\n\n renderBody()\n {\n let classList = [\n 'n-collapse__body'\n ];\n\n let tempValue = Arr.clone(this.NCollapse.tempValue);\n\n if ( !this.label && !this.$slots.label ) {\n tempValue.push(this.name);\n }\n\n let renderBody = Arr.has(tempValue, this.name);\n\n if ( !Arr.has(tempValue, this.name) && this.keep ) {\n renderBody = this.init;\n }\n\n if ( !Arr.has(tempValue, this.name) && this.preload ) {\n renderBody = true;\n }\n\n if ( !renderBody && this.label ) {\n return null;\n }\n\n this.init = true;\n\n let style = {};\n\n if ( !Arr.has(tempValue, this.name) ) {\n style.display = 'none';\n }\n\n let element = 'div';\n\n if ( !this.relative && !this.NCollapse.relative ) {\n element = resolveComponent('NScrollbar');\n }\n\n return h(element, { class: classList, style, }, this.$slots);\n },\n\n render()\n {\n return [\n this.ctor('renderHeader')(), this.ctor('renderBody')()\n ];\n }\n}\n","import Collapse from './src/collapse/collapse';\nimport CollapseItem from './src/collapse-item/collapse-item';\n\nexport default function (App) {\n App.component(Collapse.name, Collapse);\n App.component(CollapseItem.name, CollapseItem);\n}","import { 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 { Any, Str, Obj, Dom } from \"@kizmann/pico-js\";\n\nclass AlertFrame {\n\n el = null;\n\n text = '';\n\n icon = '';\n\n type = '';\n\n options = {\n iconPrimary: nano.Icons.info,\n iconSecondary: nano.Icons.info,\n iconSuccess: nano.Icons.success,\n iconWarning: nano.Icons.warning,\n iconDanger: nano.Icons.danger,\n iconInfo: nano.Icons.info\n };\n\n constructor(text, type = 'primary', options = {})\n {\n this.text = text;\n this.type = type;\n\n this.options = Obj.assign(this.options, options);\n\n this.render();\n }\n\n getIcon()\n {\n return Obj.get(this.options,\n 'icon' + Str.ucfirst(this.type));\n }\n\n append(el = document.body)\n {\n this.el.appendTo(el);\n\n Dom.find(document.body).on('keydown', (event) => {\n if ( event.which === 27 ) {\n this.remove();\n }\n }, 'n-alert');\n\n setTimeout(() => this.el.addClass('n-active'), 100);\n }\n\n remove()\n {\n Dom.find(document.body).off('keydown', null, 'n-alert');\n\n this.el.get(0).remove();\n }\n\n render()\n {\n let classList = [\n 'n-alert-frame',\n 'n-alert-frame--' + this.type,\n 'n-alert-frame--' + Alert.size\n ];\n\n this.el = Dom.make('div', {\n classList: classList.join(' ')\n });\n\n let backdrop = Dom.make('div', {\n classList: 'n-alert-backdrop', onclick: () => this.remove()\n });\n\n backdrop.onClick = () => {\n this.remove();\n };\n\n backdrop.appendTo(this.el);\n\n let frame = Dom.make('div', {\n classList: 'n-alert'\n });\n\n frame.appendTo(this.el);\n\n let icon = Dom.make('div', {\n classList: 'n-alert__icon'\n });\n\n icon.appendTo(frame);\n\n let iconSpan = Dom.make('span', {\n classList: this.getIcon()\n });\n\n iconSpan.appendTo(icon);\n\n let text = Dom.make('div', {\n classList: 'n-alert__text'\n });\n\n text.html(this.text).appendTo(frame);\n }\n\n}\n\nexport default class Alert {\n\n static alias = 'Alert';\n\n static size = nano.Settings.notifySize;\n\n static alert = null;\n\n static handle(...args)\n {\n if ( ! Any.isEmpty(Alert.alert) ) {\n Alert.alert.remove();\n }\n\n Alert.alert = new AlertFrame(...args);\n\n Alert.alert.append();\n\n return Alert;\n }\n\n}\n","import Alert from './src/alert/alert';\n\nexport default function (App) {\n App.config.globalProperties[Alert.alias] = window[Alert.alias] = Alert.handle;\n}\n","import { UUID, Str, Obj, Dom } from \"@kizmann/pico-js\";\n\nclass Notification {\n\n el = null;\n\n text = '';\n\n icon = '';\n\n type = '';\n\n options = {\n duration: 4500,\n iconPrimary: nano.Icons.info,\n iconSecondary: nano.Icons.info,\n iconSuccess: nano.Icons.success,\n iconWarning: nano.Icons.warning,\n iconDanger: nano.Icons.danger,\n iconInfo: nano.Icons.info\n };\n\n constructor(text, type = 'primary', options = {})\n {\n this.text = text;\n this.type = type;\n\n this.options = Obj.assign(this.options, options);\n\n this.render();\n }\n\n getIcon()\n {\n return Obj.get(this.options,\n 'icon' + Str.ucfirst(this.type));\n }\n\n append(el = document.body)\n {\n this.el.appendTo(el);\n\n setTimeout(() => this.el.addClass('n-active'), 100);\n\n return this;\n }\n\n remove()\n {\n this.el.get(0).remove();\n\n return this;\n }\n\n render()\n {\n let classList = [\n 'n-notification',\n 'n-notification--' + this.type\n ];\n\n this.el = Dom.make('div', {\n classList: classList.join(' '), onclick: () => this.remove()\n });\n \n\n let icon = Dom.make('div', {\n classList: 'n-notification__icon'\n });\n\n icon.appendTo(this.el);\n\n let iconSpan = Dom.make('span', {\n classList: this.getIcon()\n });\n\n iconSpan.appendTo(icon);\n\n let text = Dom.make('div', {\n classList: 'n-notification__text'\n });\n\n text.html(this.text).appendTo(this.el);\n }\n\n}\n\nexport default class Notify {\n\n static alias = 'Notify';\n\n static size = nano.Settings.notifySize;\n\n static position = nano.Settings.notifyPosition;\n\n static notifications = {};\n\n static handle(...args)\n {\n let uid = Notify.create(undefined, ...args);\n\n let wrapper = Notify.getWrapper();\n\n // Append element to dom\n Notify.notifications[uid].append(wrapper);\n\n // Queue remove\n setTimeout(() => Notify.remove(uid),\n Notify.notifications[uid].options.duration);\n\n return uid;\n }\n\n static create(uid = UUID(), ...args)\n {\n Notify.notifications[uid] = new Notification(...args);\n\n return uid;\n }\n\n static remove(uid)\n {\n if ( Notify.notifications[uid] === undefined ) {\n return;\n }\n\n // Remove dom element\n Notify.notifications[uid].remove();\n\n // Remove from list\n delete Notify.notifications[uid];\n }\n\n static getWrapper()\n {\n if ( ! window.zIndex ) {\n window.zIndex = 9000;\n }\n\n let style = {\n 'z-index': window.zIndex + 100\n };\n\n let classList = [\n 'n-notification-frame',\n 'n-notification-frame--' + this.size,\n 'n-notification-frame--' + this.position\n ];\n\n if ( Dom.find('.n-notification-frame').empty() === true ) {\n Dom.make('div', { classList: classList.join(' ') }).appendTo(document.body);\n }\n\n Dom.find('.n-notification-frame').css(style);\n\n return Dom.find('.n-notification-frame');\n }\n\n}\n","import Notifcation from './src/notification/notification';\n\nexport default function (App) {\n App.config.globalProperties[Notifcation.alias] = window[Notifcation.alias] = Notifcation.handle;\n}\n","export default {\n\n name: 'NEmptyIcon',\n\n props: {\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-empty-icon',\n 'n-empty-icon--' + this.size,\n 'n-empty-icon--' + this.type\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n <div class=\"n-empty-icon__frame\">\n { /* Icon */ }\n </div>\n <div class=\"n-empty-icon__text\">\n { this.$slots.default && this.$slots.default() }\n </div>\n </div>\n );\n }\n\n}\n","import EmptyIcon from './src/empty-icon/empty-icon';\n\nexport default function (App) {\n App.component(EmptyIcon.name, EmptyIcon);\n}\n","import { Arr, Obj, Dom, Any, Str, Event } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NScrollbar',\n\n provide()\n {\n return {\n NScrollbar: this\n };\n },\n\n props: {\n\n options: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n relative: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n fixture: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n allowNative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n framerate: {\n default()\n {\n return 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 if ( value < this.min ) {\n value = this.min;\n }\n\n if ( value > this.max ) {\n value = this.max;\n }\n\n this.$emit('update:modelValue',\n this.tempValue = Num.float(value));\n\n event.target.value = this.getDisplayValue();\n }\n\n },\n\n renderPrev()\n {\n let disabled = this.disabled ||\n this.tempValue <= this.min;\n\n let props = {\n type: 'input-number',\n size: this.size,\n icon: 'fa fa-minus',\n square: true,\n disabled: disabled,\n onMousedown: this.onPrevDown,\n };\n\n return (<NButton {...props} />);\n },\n\n renderNext()\n {\n let disabled = this.disabled ||\n this.tempValue >= this.max;\n\n let props = {\n type: 'input-number',\n size: this.size,\n icon: 'fa fa-plus',\n square: true,\n disabled: disabled,\n onMousedown: this.onNextDown,\n };\n\n return (<NButton {...props} />);\n },\n\n renderInput()\n {\n let props = Obj.except(this.$attrs,\n ['class', 'style']);\n\n Obj.assign(props, {\n disabled: this.disabled,\n placeholder: this.placeholder,\n onKeydown: this.onKeydown,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n });\n\n if ( this.modelValue !== null ) {\n props.value = this.getDisplayValue();\n }\n\n return h('input', props);\n },\n\n renderClear()\n {\n if ( ! this.clearable || Any.isEmpty(this.tempValue) ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clear;\n }\n\n return (\n <div class=\"n-input-number__clear\" {...props}>\n <i class={nano.Icons.times}></i>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-input-number',\n 'n-input-number--' + this.type,\n 'n-input-number--' + this.size,\n ];\n\n if ( Any.isEmpty(this.modelValue) ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderPrev')() }\n { this.ctor('renderInput')() }\n { this.ctor('renderClear')() }\n { this.ctor('renderNext')() }\n </div>\n );\n }\n\n}","import InputNumber from \"./src/input-number/input-number\";\n\nexport default function (App) {\n App.component(InputNumber.name, InputNumber);\n}","import { h } from \"vue\";\nimport {Obj, Any, UUID} from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTextarea',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n placeholder: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n autoRows: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n maxRows: {\n default()\n {\n return 12;\n },\n type: [Number]\n },\n\n minRows: {\n default()\n {\n return 4;\n },\n type: [Number]\n },\n\n maxLength: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n methods: {\n\n eventInput(event)\n {\n this.$emit('update:modelValue', \n this.tempValue = event.target.value);\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue || ''\n };\n },\n\n renderInput()\n {\n let props = Obj.except(this.$attrs, ['class', 'style']);\n\n Obj.assign(props, {\n value: this.tempValue,\n rows: this.minRows,\n disabled: this.disabled,\n placeholder: this.placeholder,\n onInput: this.eventInput,\n });\n\n if ( this.maxLength !== 0 ) {\n props.maxLength = this.maxLength;\n }\n\n let currentRows = (this.tempValue.match(/\\n/g) || []).length + 1;\n\n if ( this.autoRows && props.rows < currentRows ) {\n props.rows = currentRows <= this.maxRows ? currentRows : this.maxRows;\n }\n\n return h('textarea', props);\n },\n\n render()\n {\n let classList = [\n 'n-textarea',\n 'n-textarea--' + this.size,\n 'n-textarea--' + this.type,\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = Obj.only(this.$attrs, ['style'], {\n class: this.cmer(classList)\n });\n\n return h('div', props, [this.ctor('renderInput')()]);\n }\n\n}\n","import Textarea from './src/textarea/textarea';\n\nexport default function (App) {\n App.component(Textarea.name, Textarea);\n}","import { Obj, 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":""}