UNPKG

zmp-vue

Version:

Build full featured iOS & Android apps using ZMP & Vue

164 lines (144 loc) 4.74 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _vue = require("vue"); var _utils = require("../shared/utils"); var _mixins = require("../shared/mixins"); var _zmp = require("../shared/zmp"); function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var _hoisted_1 = { class: "text-editor-content", contenteditable: "" }; function render(_ctx, _cache) { return (0, _vue.openBlock)(), (0, _vue.createBlock)("div", { ref: "elRef", class: _ctx.classes }, [(0, _vue.renderSlot)(_ctx.$slots, "root-start"), (0, _vue.createVNode)("div", _hoisted_1, [(0, _vue.renderSlot)(_ctx.$slots, "default")]), (0, _vue.renderSlot)(_ctx.$slots, "root-end"), (0, _vue.renderSlot)(_ctx.$slots, "root")], 2); } var _default = { name: 'zmp-text-editor', render: render, props: _extends({ mode: { type: String, default: undefined }, value: { type: String, default: undefined }, buttons: Array, customButtons: Object, dividers: { type: Boolean, default: undefined }, imageUrlText: { type: String, default: undefined }, linkUrlText: { type: String, default: undefined }, placeholder: { type: String, default: undefined }, clearFormattingOnPaste: { type: Boolean, default: undefined }, resizable: { type: Boolean, default: false } }, _mixins.colorProps), emits: ['texteditor:change', 'texteditor:input', 'texteditor:focus', 'texteditor:blur', 'texteditor:buttonclick', 'texteditor:keyboardopen', 'texteditor:keyboardclose', 'texteditor:popoveropen', 'texteditor:popoverclose', 'texteditorChange', 'texteditorInput', 'texteditorFocus', 'texteditorBlur'], setup: function setup(props, _ref) { var emit = _ref.emit; var zmpTextEditor = null; var elRef = (0, _vue.ref)(null); var onChange = function onChange(editor, editorValue) { emit('texteditor:change', editorValue); emit('texteditorChange', editorValue); }; var onInput = function onInput(editor, editorValue) { emit('texteditor:input', editorValue); emit('texteditorInput', editorValue); }; var onFocus = function onFocus() { emit('texteditor:focus'); emit('texteditorFocus'); }; var onBlur = function onBlur() { emit('texteditor:blur'); emit('texteditorBlur'); }; var onButtonClick = function onButtonClick(editor, button) { emit('texteditor:buttonclick', button); }; var onKeyboardOpen = function onKeyboardOpen() { emit('texteditor:keyboardopen'); }; var onKeyboardClose = function onKeyboardClose() { emit('texteditor:keyboardclose'); }; var onPopoverOpen = function onPopoverOpen() { emit('texteditor:popoveropen'); }; var onPopoverClose = function onPopoverClose() { emit('texteditor:popoverclose'); }; (0, _vue.watch)(function () { return props.value; }, function (newValue) { if (zmpTextEditor) { zmpTextEditor.setValue(newValue); } }); (0, _vue.onMounted)(function () { var params = (0, _utils.noUndefinedProps)({ el: elRef.value, mode: props.mode, value: props.value, buttons: props.buttons, customButtons: props.customButtons, dividers: props.dividers, imageUrlText: props.imageUrlText, linkUrlText: props.linkUrlText, placeholder: props.placeholder, clearFormattingOnPaste: props.clearFormattingOnPaste, on: { change: onChange, input: onInput, focus: onFocus, blur: onBlur, buttonClick: onButtonClick, keyboardOpen: onKeyboardOpen, keyboardClose: onKeyboardClose, popoverOpen: onPopoverOpen, popoverClose: onPopoverClose } }); (0, _zmp.zmpready)(function () { zmpTextEditor = _zmp.zmp.textEditor.create(params); }); }); (0, _vue.onBeforeUnmount)(function () { if (zmpTextEditor && zmpTextEditor.destroy) { zmpTextEditor.destroy(); } zmpTextEditor = null; }); var classes = (0, _vue.computed)(function () { return (0, _utils.classNames)('text-editor', props.resizable && 'text-editor-resizable', (0, _mixins.colorClasses)(props)); }); return { elRef: elRef, classes: classes }; } }; exports.default = _default;