UNPKG

vue-hooks-env

Version:

TypeScript and TSX Env for Vue Composition Api

75 lines (74 loc) 2.62 kB
"use strict"; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.HC = void 0; var composition_api_1 = require("@vue/composition-api"); var guid = 1; function HC(setup, props, name) { if (props === void 0) { props = []; } if (name === void 0) { name = 'HookComponent'; } var realSetup = function (props, ctx) { var map = {}; var cache = {}; var update = function () { Object.keys(map).forEach(function (key) { if (cache[key] !== ctx.refs[key]) { var v = cache[key] = ctx.refs[key]; var ref = map[key]; if (typeof ref === 'function') { ref(v); } else if (ref != null) { ref.value = v; } } }); }; composition_api_1.onMounted(update); composition_api_1.onUpdated(update); return setup(props, { attrs: ctx.attrs, listeners: ctx.listeners, slots: ctx.slots, bindRefKey: function (ref) { var key = 'hc-ref-' + guid++; map[key] = ref; return key; }, renderSlot: function (key, fallback) { var _a; var args = []; for (var _i = 2; _i < arguments.length; _i++) { args[_i - 2] = arguments[_i]; } if (ctx.slots[key]) { return (_a = ctx.slots)[key].apply(_a, args); } return fallback == null ? [] : Array.isArray(fallback) ? fallback : [fallback]; }, emit: function (event) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var key = event; var ev = key.charAt(2).toLowerCase() + key.slice(3); ctx.emit.apply(ctx, __spreadArrays([ev], args)); } }); }; var options = { props: props, setup: realSetup, name: name, inheritAttrs: false }; return options; } exports.HC = HC;