UNPKG

vuikit

Version:

A responsive Vue UI library for web site interfaces based on UIkit

86 lines (81 loc) 3.34 kB
/** * Vuikit 0.8.10 * (c) 2018 Miljan Aleksic * @license MIT **/ /* Substantial part of the code is adapted from UIkit, Copyright (c) 2013-2018 YOOtheme GmbH, getuikit.com */ import { get } from './misc'; import { assign } from './lang'; function findParent (instance) { return findParents(instance).pop() } function findParents (instance) { var parents = []; var name = instance.$options.name; var parent = instance.$parent; while (parent) { if (parent.$options.name === name) { parents.unshift(parent); } parent = parent.$parent; } return parents } function findChilds (instance) { var name = instance.$options.name; var childs = instance.$children .filter(function (child) { return child.$options.name === name; }); childs.forEach(function (child) { childs = childs.concat( findChilds(child)); }); return childs } function resolveSlots (children) { return filterOutTextNodes(children).reduce(function (slots, n) { var name = get(n, 'data.slot', 'default'); slots[name] = slots[name] || []; if (n.tag === 'template') { slots[name].push.apply(slots[name], n.children || []); } else { slots[name].push(n); } return slots }, {}) } function apply (instance, fn) { if (!instance || !instance._isVue) { return } fn(instance); instance.$children.forEach(function (child) { return apply(child, fn); }); } function filterOutTextNodes (nodes) { return nodes.filter(function (n) { return n.tag || isAsyncPlaceholder(n); }) } function isAsyncPlaceholder (node) { return node.isComment && node.asyncFactory } function extractProps () { var args = [], len = arguments.length; while ( len-- ) args[ len ] = arguments[ len ]; var props = {}; for (var i = 0; i < args.length; i++) { var def = args[i]; if (def !== null) { def.mixins && def.mixins.forEach(function (mixin) { assign(props, mixin.props || {}); }); def.extends && assign(props, extractProps(def.extends)); def.props && assign(props, def.props); } } return props } function mergeData () { var arguments$1 = arguments; for(var e,a,s={},t=arguments.length;t--;){ for(var r=0,c=Object.keys(arguments[t]);r<c.length;r++){ switch(e=c[r]){case"class":case"style":case"directives":Array.isArray(s[e])||(s[e]=[]), s[e]=s[e].concat(arguments$1[t][e]);break;case"staticClass":if(!arguments$1[t][e]){ break; }void 0===s[e]&&(s[e]=""), s[e]&&(s[e]+=" "), s[e]+=arguments$1[t][e].trim();break;case"on":case"nativeOn":s[e]||(s[e]={});for(var o=0,n=Object.keys(arguments[t][e]);o<n.length;o++){ a=n[o], s[e][a]?s[e][a]=[].concat(s[e][a],arguments$1[t][e][a]):s[e][a]=arguments$1[t][e][a]; }break;case"attrs":case"props":case"domProps":case"scopedSlots":case"staticStyle":case"hook":case"transition":s[e]||(s[e]={}), s[e]=__assign({},arguments$1[t][e],s[e]);break;case"slot":case"key":case"ref":case"tag":case"show":case"keepAlive":default:s[e]||(s[e]=arguments$1[t][e]);} } }return s}var __assign=Object.assign||function(e){ var arguments$1 = arguments; for(var a,s=1,t=arguments.length;s<t;s++){a=arguments$1[s];for(var r in a){ Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r]); }}return e }; export { findParent, findParents, findChilds, resolveSlots, apply, filterOutTextNodes, isAsyncPlaceholder, extractProps, mergeData };