UNPKG

uplot-vue

Version:

Vue.js wrapper for uPlot that allows you to work with charts declaratively inside your favorite framework

313 lines (278 loc) 10.4 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("vue"), require("uplot")); else if(typeof define === 'function' && define.amd) define(["vue", "uplot"], factory); else if(typeof exports === 'object') exports["UplotVue"] = factory(require("vue"), require("uplot")); else root["UplotVue"] = factory(root["Vue"], root["uPlot"]); })(this, (__WEBPACK_EXTERNAL_MODULE_vue__, __WEBPACK_EXTERNAL_MODULE_uplot__) => { return /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ "./common/index.ts": /*!*************************!*\ !*** ./common/index.ts ***! \*************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "dataMatch": () => (/* binding */ dataMatch), /* harmony export */ "optionsUpdateState": () => (/* binding */ optionsUpdateState) /* harmony export */ }); var __rest = undefined && undefined.__rest || function (s, e) { var t = {}; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; } if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is if (!Object.is) { // eslint-disable-next-line Object.defineProperty(Object, "is", { value: function value(x, y) { return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y; } }); } var optionsUpdateState = function optionsUpdateState(_lhs, _rhs) { var lhsWidth = _lhs.width, lhsHeight = _lhs.height, lhs = __rest(_lhs, ["width", "height"]); var rhsWidth = _rhs.width, rhsHeight = _rhs.height, rhs = __rest(_rhs, ["width", "height"]); var state = 'keep'; if (lhsHeight !== rhsHeight || lhsWidth !== rhsWidth) { state = 'update'; } if (Object.keys(lhs).length !== Object.keys(rhs).length) { return 'create'; } for (var _i = 0, _Object$keys = Object.keys(lhs); _i < _Object$keys.length; _i++) { var k = _Object$keys[_i]; if (!Object.is(lhs[k], rhs[k])) { state = 'create'; break; } } return state; }; var dataMatch = function dataMatch(lhs, rhs) { if (lhs.length !== rhs.length) { return false; } return lhs.every(function (lhsOneSeries, seriesIdx) { var rhsOneSeries = rhs[seriesIdx]; if (lhsOneSeries.length !== rhsOneSeries.length) { return false; } return lhsOneSeries.every(function (value, valueIdx) { return value === rhsOneSeries[valueIdx]; }); }); }; /***/ }), /***/ "uplot": /*!**************************************************************************************!*\ !*** external {"amd":"uplot","commonjs":"uplot","commonjs2":"uplot","root":"uPlot"} ***! \**************************************************************************************/ /***/ ((module) => { module.exports = __WEBPACK_EXTERNAL_MODULE_uplot__; /***/ }), /***/ "vue": /*!******************************************************************************!*\ !*** external {"amd":"vue","commonjs":"vue","commonjs2":"vue","root":"Vue"} ***! \******************************************************************************/ /***/ ((module) => { module.exports = __WEBPACK_EXTERNAL_MODULE_vue__; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = (module) => { /******/ var getter = module && module.__esModule ? /******/ () => (module['default']) : /******/ () => (module); /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. (() => { /*!**************************!*\ !*** ./vue/uplot-vue.js ***! \**************************/ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "vue"); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var uplot__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! uplot */ "uplot"); /* harmony import */ var uplot__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(uplot__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var uplot_wrappers_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! uplot-wrappers-common */ "./common/index.ts"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent ? vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent : function (v) { return v; })({ name: 'UplotVue', props: { options: { type: Object, required: true }, data: { type: Array, required: true }, target: { validator: function validator(target) { return target == null || target instanceof HTMLElement || typeof target === 'function'; }, "default": undefined, required: false }, resetScales: { type: Boolean, required: false, "default": true }, "class": { type: String, required: false } }, data: function data() { // eslint-disable-next-line return { _chart: null }; }, watch: { options: function options(_options, prevOptions) { var optionsState = (0,uplot_wrappers_common__WEBPACK_IMPORTED_MODULE_2__.optionsUpdateState)(prevOptions, _options); if (!this._chart || optionsState === 'create') { this._destroy(); this._create(); } else if (optionsState === 'update') { this._chart.setSize({ width: _options.width, height: _options.height }); } }, target: function target() { this._destroy(); this._create(); }, data: function data(_data, prevData) { if (!this._chart) { this._create(); } else if (!(0,uplot_wrappers_common__WEBPACK_IMPORTED_MODULE_2__.dataMatch)(prevData, _data)) { if (this.$props.resetScales) { this._chart.setData(_data); } else { this._chart.setData(_data, false); this._chart.redraw(); } } } }, mounted: function mounted() { this._create(); }, beforeUnmount: function beforeUnmount() { this._destroy(); }, beforeDestroy: function beforeDestroy() { this._destroy(); }, methods: { _destroy: function _destroy() { if (this._chart) { this.$emit('delete', this._chart); this._chart.destroy(); this._chart = null; } }, _create: function _create() { this._chart = new (uplot__WEBPACK_IMPORTED_MODULE_1___default())(this.$props.options, this.$props.data, this.$props.target || this.$refs.targetRef); this.$emit('create', this._chart); } }, render: function render(h) { return this.$props.target ? null : (vue__WEBPACK_IMPORTED_MODULE_0__.createVNode ? vue__WEBPACK_IMPORTED_MODULE_0__.createVNode : h)('div', { ref: 'targetRef', "class": this.$props["class"] }); } })); })(); __webpack_exports__ = __webpack_exports__["default"]; /******/ return __webpack_exports__; /******/ })() ; }); //# sourceMappingURL=uplot-vue.js.map