line_push/node_modules/vue-client-only/dist/vue-client-only.js
2022-07-17 13:16:16 +08:00

58 lines
1.4 KiB
JavaScript

/*!
* vue-client-only v2.0.0
* (c) 2019-present egoist <0x142857@gmail.com>
* Released under the MIT License.
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global.ClientOnly = factory());
}(this, (function () { 'use strict';
var index = {
name: 'ClientOnly',
functional: true,
props: {
placeholder: String,
placeholderTag: {
type: String,
default: 'div'
}
},
render: function render(h, ref) {
var parent = ref.parent;
var slots = ref.slots;
var props = ref.props;
var ref$1 = slots();
var defaultSlot = ref$1.default; if ( defaultSlot === void 0 ) defaultSlot = [];
var placeholderSlot = ref$1.placeholder;
if (parent._isMounted) {
return defaultSlot
}
parent.$once('hook:mounted', function () {
parent.$forceUpdate();
});
if (props.placeholderTag && (props.placeholder || placeholderSlot)) {
return h(
props.placeholderTag,
{
class: ['client-only-placeholder']
},
props.placeholder || placeholderSlot
)
}
// Return a placeholder element for each child in the default slot
// Or if no children return a single placeholder
return defaultSlot.length > 0 ? defaultSlot.map(function () { return h(false); }) : h(false)
}
};
return index;
})));