line_push/node_modules/vue-client-only/dist/vue-client-only.common.js
2022-07-18 02:50:52 +00:00

52 lines
1.2 KiB
JavaScript

/*!
* vue-client-only v0.0.0-semantic-release
* (c) 2021-present egoist <0x142857@gmail.com>
* Released under the MIT License.
*/
'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)
}
};
module.exports = index;