ssr.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.install = exports.quillEditor = exports.Quill = undefined;
  6. var _quill = require('quill');
  7. var _quill2 = _interopRequireDefault(_quill);
  8. var _objectAssign = require('object-assign');
  9. var _objectAssign2 = _interopRequireDefault(_objectAssign);
  10. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  11. var quillDirective = function quillDirective(globalOptions) {
  12. var getInstanceName = function getInstanceName(el, binding, vnode) {
  13. var instanceName = null;
  14. if (binding.arg) {
  15. instanceName = binding.arg;
  16. } else if (vnode.data.attrs && (vnode.data.attrs.instanceName || vnode.data.attrs['instance-name'])) {
  17. instanceName = vnode.data.attrs.instanceName || vnode.data.attrs['instance-name'];
  18. } else if (el.id) {
  19. instanceName = el.id;
  20. }
  21. return instanceName || 'quill';
  22. };
  23. return {
  24. inserted: function inserted(el, binding, vnode) {
  25. var self = vnode.context;
  26. var options = binding.value || {};
  27. var instanceName = getInstanceName(el, binding, vnode);
  28. var quill = self[instanceName];
  29. var eventEmit = function eventEmit(vnode, name, data) {
  30. var handlers = vnode.data && vnode.data.on || vnode.componentOptions && vnode.componentOptions.listeners;
  31. if (handlers && handlers[name]) handlers[name].fns(data);
  32. };
  33. if (!quill) {
  34. var quillOptions = (0, _objectAssign2.default)({}, {
  35. theme: 'snow',
  36. boundary: document.body,
  37. modules: {
  38. toolbar: [['bold', 'italic', 'underline', 'strike'], ['blockquote', 'code-block'], [{ 'header': 1 }, { 'header': 2 }], [{ 'list': 'ordered' }, { 'list': 'bullet' }], [{ 'script': 'sub' }, { 'script': 'super' }], [{ 'indent': '-1' }, { 'indent': '+1' }], [{ 'direction': 'rtl' }], [{ 'size': ['small', false, 'large', 'huge'] }], [{ 'header': [1, 2, 3, 4, 5, 6, false] }], [{ 'color': [] }, { 'background': [] }], [{ 'font': [] }], [{ 'align': [] }], ['clean'], ['link', 'image', 'video']]
  39. },
  40. placeholder: 'Insert text here ...',
  41. readOnly: false
  42. }, globalOptions, options);
  43. quill = self[instanceName] = new _quill2.default(el, quillOptions);
  44. var model = vnode.data.model;
  45. var _value = vnode.data.attrs ? vnode.data.attrs.value : null;
  46. var _content = vnode.data.attrs ? vnode.data.attrs.content : null;
  47. var disabled = vnode.data.attrs ? vnode.data.attrs.disabled : null;
  48. var content = model ? model.value : _value || _content;
  49. if (content) {
  50. quill.pasteHTML(content);
  51. }
  52. if (disabled) {
  53. quill.enable(false);
  54. }
  55. quill.on('selection-change', function (range) {
  56. if (!range) {
  57. eventEmit(vnode, 'blur', quill);
  58. } else {
  59. eventEmit(vnode, 'focus', quill);
  60. }
  61. });
  62. quill.on('text-change', function (delta, oldDelta, source) {
  63. var html = el.children[0].innerHTML;
  64. var text = quill.getText();
  65. if (html === '<p><br></p>') {
  66. html = '';
  67. quill.root.innerHTML = html;
  68. }
  69. if (model) {
  70. model.callback(html);
  71. }
  72. eventEmit(vnode, 'input', html);
  73. eventEmit(vnode, 'change', { text: text, html: html, quill: quill });
  74. });
  75. eventEmit(vnode, 'ready', quill);
  76. }
  77. },
  78. componentUpdated: function componentUpdated(el, binding, vnode) {
  79. var self = vnode.context;
  80. var instanceName = getInstanceName(el, binding, vnode);
  81. var options = binding.value || {};
  82. var quill = self[instanceName];
  83. if (quill) {
  84. var model = vnode.data.model;
  85. var _value = vnode.data.attrs ? vnode.data.attrs.value : null;
  86. var _content = vnode.data.attrs ? vnode.data.attrs.content : null;
  87. var disabled = vnode.data.attrs ? vnode.data.attrs.disabled : null;
  88. var content = model ? model.value : _value || _content;
  89. var newData = content;
  90. var oldData = el.children[0].innerHTML;
  91. quill.enable(!disabled);
  92. if (newData) {
  93. if (newData != oldData) {
  94. var range = quill.getSelection();
  95. quill.root.innerHTML = newData;
  96. setTimeout(function () {
  97. quill.setSelection(range);
  98. });
  99. }
  100. } else {
  101. quill.setText('');
  102. }
  103. }
  104. },
  105. unbind: function unbind(el, binding, vnode) {
  106. if (vnode.context[binding.arg]) {
  107. vnode.context[binding.arg] = null;
  108. delete vnode.context[binding.arg];
  109. }
  110. }
  111. };
  112. };
  113. var quillEditor = quillDirective({});
  114. var install = function install(Vue) {
  115. var globalOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  116. Vue.directive('quill', quillDirective(globalOptions));
  117. };
  118. var VueQuillEditor = { Quill: _quill2.default, quillEditor: quillEditor, install: install };
  119. exports.default = VueQuillEditor;
  120. exports.Quill = _quill2.default;
  121. exports.quillEditor = quillEditor;
  122. exports.install = install;