{"version":3,"sources":["components/summernote.js"],"names":["dmx","Component","constructor","node","parent","this","onBlur","bind","onChange","onEnter","onFocus","onInit","onMediaDelete","setValue","config","popover","$","summernote","options","callbacks","plugins","buttons","BaseComponent","call","initialData","disabled","value","attributes","type","String","default","Boolean","Object","height","Number","autofocus","lang","toolbar","Array","placeholder","methods","disable","editor","invoke","set","empty","enable","insertText","str","pasteHTML","redo","reset","undo","status","message","layoutInfo","find","html","info","success","warning","danger","action","arg","events","blur","Event","change","changed","enter","focus","init","input","updated","buttonclick","mediadelete","orgValue","code","dispatchEvent","self","nextTick","target","src","attr","toCamelCase","replace","a","b","toUpperCase","$parseAttributes","prototype","dom","getAttributes","forEach","name","$addBinding","argument","extend","icon","context","ui","button","contents","tooltip","click","parse","render","$node","mounted","tagName","trim","innerHTML","indexOf","update","props","equal","destroy","isDelayed","initEditor","oldValue","data","updating","isUpdated","beforeDestroy","clone","minHeight","maxHeight","airMode","dialogsInBody","dialogsFade","disableDragAndDrop","shortcuts","tabDisable","spellCheck","disableGrammar","blockquoteBreakingLevel","isArray","filter","group","length","image","link","table","air","styleTags","fontNames","fontNamesIgnoreCheck","fontSizeUnits","lineHeights","console","error","statusbar","remove","hasAttribute","getAttribute"],"mappings":"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","file":"../dmxSummernote/dmxSummernote.js","sourcesContent":["dmx.Component('summernote', {\r\n\r\n constructor: function(node, parent) {\r\n this.onBlur = this.onBlur.bind(this);\r\n this.onChange = this.onChange.bind(this);\r\n this.onEnter = this.onEnter.bind(this);\r\n this.onFocus = this.onFocus.bind(this);\r\n this.onInit = this.onInit.bind(this);\r\n this.onMediaDelete = this.onMediaDelete.bind(this);\r\n this.setValue = this.setValue.bind(this);\r\n\r\n this.config = {\r\n popover: $.summernote.options.popover\r\n };\r\n\r\n this.callbacks = { callbacks: {\r\n onBlur: this.onBlur,\r\n onChange: this.onChange,\r\n onEnter: this.onEnter,\r\n onFocus: this.onFocus,\r\n onInit: this.onInit,\r\n onMediaDelete: this.onMediaDelete,\r\n }};\r\n\r\n this.plugins = {};\r\n this.buttons = { buttons: {}};\r\n \r\n dmx.BaseComponent.call(this, node, parent);\r\n },\r\n\r\n initialData: {\r\n disabled: false,\r\n value: '',\r\n },\r\n\r\n attributes: {\r\n 'value': {\r\n type: String,\r\n default: ''\r\n },\r\n\r\n 'disabled': {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n 'config': {\r\n type: Object,\r\n default: {}\r\n },\r\n\r\n 'height': {\r\n type: Number,\r\n default: null\r\n },\r\n\r\n 'min-height': {\r\n type: Number,\r\n default: null\r\n },\r\n\r\n 'max-height': {\r\n type: Number,\r\n default: null\r\n },\r\n\r\n 'autofocus': {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n 'lang': {\r\n type: String,\r\n default: 'en-US'\r\n },\r\n\r\n 'air-mode': {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n 'toolbar': {\r\n type: Array,\r\n default: null // use default from summernote (https://summernote.org/deep-dive/#custom-toolbar-popover)\r\n },\r\n\r\n 'toolbar-image': {\r\n type: Array,\r\n default: null // use default from summernote (popover:{image:[...]})\r\n },\r\n\r\n 'toolbar-link': {\r\n type: Array,\r\n default: null // use default from summernote (popover:{link:[...]})\r\n },\r\n\r\n 'toolbar-table': {\r\n type: Array,\r\n default: null // use default from summernote (popover:{table:[...]})\r\n },\r\n\r\n 'toolbar-air': {\r\n type: Array,\r\n default: null // use default from summernote (popover:{air:[...]})\r\n },\r\n\r\n 'blockquote-breaking-level': { // https://summernote.org/deep-dive/#blockquote-breaking-level\r\n type: Number,\r\n default: 2\r\n },\r\n\r\n 'style-tags': { // https://summernote.org/deep-dive/#custom-styles\r\n type: Array,\r\n default: null\r\n },\r\n\r\n 'font-names': { // https://summernote.org/deep-dive/#custom-fontnames\r\n type: Array,\r\n default: null\r\n },\r\n\r\n 'font-names-ignore-check': { // https://summernote.org/deep-dive/#custom-fontnames\r\n type: Array,\r\n default: null\r\n },\r\n\r\n 'font-size-units': { // https://summernote.org/deep-dive/#custom-font-size-units\r\n type: Array,\r\n default: null\r\n },\r\n\r\n 'line-heights': { // https://summernote.org/deep-dive/#custom-line-heights\r\n type: Array,\r\n default: null\r\n },\r\n\r\n 'placeholder': {\r\n type: String,\r\n default: null\r\n },\r\n\r\n 'dialogs-in-body': {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n 'dialogs-fade': {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n 'disable-drop': {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n 'disable-shortcuts': {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n 'disable-tab': {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n 'disable-spellcheck': {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n 'disable-grammar': {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n methods: {\r\n disable: function() {\r\n this.editor.invoke('disable');\r\n this.set('disabled', true);\r\n },\r\n\r\n empty: function() {\r\n this.editor.invoke('empty');\r\n },\r\n \r\n enable: function() {\r\n this.editor.invoke('enable');\r\n this.set('disabled', false);\r\n },\r\n\r\n insertText: function(str) {\r\n this.editor.invoke('insertText', str);\r\n },\r\n\r\n pasteHTML: function(str) {\r\n this.editor.invoke('pasteHTML', str);\r\n },\r\n\r\n redo: function() {\r\n this.editor.invoke('redo');\r\n },\r\n\r\n reset: function() {\r\n this.editor.invoke('reset');\r\n },\r\n\r\n setValue: function(value) {\r\n this.setValue(value);\r\n },\r\n\r\n undo: function() {\r\n this.editor.invoke('undo');\r\n },\r\n\r\n status: function(message) {\r\n this.editor.layoutInfo.editor.find('.note-status-output').html(message);\r\n },\r\n\r\n info: function(message) {\r\n this.editor.layoutInfo.editor.find('.note-status-output').html('
' + message + '
');\r\n },\r\n\r\n success: function(message) {\r\n this.editor.layoutInfo.editor.find('.note-status-output').html('
' + message + '
');\r\n },\r\n\r\n warning: function(message) {\r\n this.editor.layoutInfo.editor.find('.note-status-output').html('
' + message + '
');\r\n },\r\n\r\n danger: function(message) {\r\n this.editor.layoutInfo.editor.find('.note-status-output').html('
' + message + '
');\r\n },\r\n\r\n invoke: function(action, arg) {\r\n this.editor.invoke(action, arg);\r\n },\r\n },\r\n\r\n events: {\r\n blur: Event,\r\n change: Event,\r\n changed: Event,\r\n enter: Event,\r\n focus: Event,\r\n init: Event,\r\n input: Event,\r\n updated: Event,\r\n buttonclick: Event,\r\n mediadelete: Event\r\n },\r\n\r\n onBlur: function() {\r\n if (this.orgValue != this.editor.code()) {\r\n this.dispatchEvent('change');\r\n var self = this;\r\n dmx.nextTick(function() {\r\n self.dispatchEvent('changed');\r\n });\r\n }\r\n this.dispatchEvent('blur');\r\n },\r\n\r\n onChange: function() {\r\n this.updated();\r\n this.dispatchEvent('input');\r\n },\r\n\r\n onEnter: function() {\r\n this.dispatchEvent('enter');\r\n },\r\n\r\n onFocus: function() {\r\n this.orgValue = this.editor.code();\r\n this.dispatchEvent('focus');\r\n },\r\n\r\n onInit: function() {\r\n this.dispatchEvent('init');\r\n },\r\n\r\n onMediaDelete: function(target) {\r\n var src = $(target[0]).attr('src');\r\n this.dispatchEvent('mediadelete', null, { src: src });\r\n },\r\n\r\n toCamelCase: function(str) {\r\n return str.replace(/-(\\w)/g, function(a, b) {\r\n return b.toUpperCase();\r\n });\r\n },\r\n\r\n $parseAttributes: function(node) {\r\n var self = this;\r\n\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n\r\n dmx.dom.getAttributes(node).forEach(function(attr) {\r\n if (attr.name == 'plugin') {\r\n self.$addBinding(attr.value, function(value) {\r\n if (value) {\r\n self.plugins[this.toCamelCase(attr.argument)] = $.extend({}, $.summernote.options[attr.argument], value);\r\n } else {\r\n delete self.plugins[attr.argument];\r\n }\r\n\r\n self.plugins.updated = true;\r\n });\r\n }\r\n\r\n if (attr.name == 'button') {\r\n self.$addBinding(attr.value, function(value) {\r\n if (value && value.icon) {\r\n var name = this.toCamelCase(attr.argument);\r\n\r\n self.buttons.buttons[name] = function(context) {\r\n var ui = $.summernote.ui;\r\n\r\n var button = ui.button({\r\n contents: '',\r\n tooltip: value.tooltip || '',\r\n click: function() {\r\n if (typeof value.click == 'string') {\r\n dmx.parse(value.click, self);\r\n }\r\n\r\n self.dispatchEvent('buttonclick', null, {\r\n editor: self.name,\r\n button: name\r\n });\r\n }\r\n });\r\n\r\n return button.render();\r\n };\r\n\r\n self.buttons.updated = true;\r\n }\r\n });\r\n }\r\n });\r\n },\r\n\r\n render: function(node) {\r\n this.$node = node;\r\n },\r\n\r\n mounted: function() {\r\n var value = this.$node.tagName == 'TEXTAREA' ? this.$node.value.trim() : this.$node.innerHTML.trim();\r\n\r\n if (value.indexOf('{{') !== -1) {\r\n this.$addBinding(value, this.setValue);\r\n }\r\n\r\n this.update({});\r\n },\r\n\r\n update: function(props) {\r\n if (this.plugins.updated || this.buttons.updated || !dmx.equal(props, this.props)) {\r\n delete this.plugins.updated;\r\n delete this.buttons.updated;\r\n\r\n if (props.value != this.props.value) {\r\n this.setValue(this.props.value);\r\n }\r\n\r\n if (this.editor) {\r\n this.editor.destroy();\r\n this.editor = null;\r\n }\r\n\r\n if (!this.isDelayed) {\r\n this.isDelayed = true;\r\n dmx.nextTick(function() {\r\n this.isDelayed = false;\r\n this.initEditor();\r\n }, this);\r\n }\r\n }\r\n },\r\n\r\n updated: function() {\r\n var oldValue = this.data.value;\r\n\r\n if (this.editor) {\r\n if ($(this.$node).summernote('isEmpty')) {\r\n this.set('value', '');\r\n } else {\r\n this.set('value', this.editor.code());\r\n }\r\n } else {\r\n var value = this.$node.tagName == 'TEXTAREA' ? this.$node.value.trim() : this.$node.innerHTML.trim();\r\n this.set('value', value);\r\n }\r\n\r\n if (!this.updating && oldValue != this.data.value) {\r\n this.isUpdated = true;\r\n dmx.nextTick(function() {\r\n this.isUpdated = false;\r\n this.dispatchEvent('updated');\r\n }, this);\r\n }\r\n },\r\n\r\n beforeDestroy: function() {\r\n this.editor.destroy();\r\n this.editor = null;\r\n },\r\n\r\n setValue: function(value) {\r\n if (this.editor) {\r\n this.editor.reset();\r\n if (value) {\r\n this.editor.code(value);\r\n }\r\n } else if (this.$node.tagName == 'TEXTAREA') {\r\n this.$node.value = value;\r\n } else {\r\n this.$node.innerHTML = value;\r\n }\r\n\r\n this.updated();\r\n },\r\n\r\n initEditor: function() {\r\n var config = dmx.clone(this.config);\r\n\r\n config.height = this.props['height'];\r\n config.minHeight = this.props['min-height'];\r\n config.maxHeight = this.props['max-height'];\r\n config.focus = this.props['autofocus'];\r\n config.lang = this.props['lang'];\r\n config.airMode = this.props['air-mode'];\r\n config.placeholder = this.props['placeholder'];\r\n config.dialogsInBody = this.props['dialogs-in-body'];\r\n config.dialogsFade = this.props['dialogs-fade'];\r\n config.disableDragAndDrop = this.props['disable-drop'];\r\n config.shortcuts = !this.props['disable-shortcuts'];\r\n config.tabDisable = this.props['disable-tab'];\r\n config.spellCheck = !this.props['disable-spellcheck'];\r\n config.disableGrammar = this.props['disable-grammar'];\r\n config.blockquoteBreakingLevel = this.props['blockquote-breaking-level'];\r\n\r\n if (Array.isArray(this.props['toolbar'])) {\r\n // extra filter for empty group generated in Wappler\r\n config.toolbar = this.props['toolbar'].filter(function(group) { return group.length; });\r\n }\r\n\r\n if (Array.isArray(this.props['toolbar-image'])) {\r\n config.popover = config.popover || {};\r\n config.popover.image = this.props['toolbar-image'].filter(function(group) { return group.length; });\r\n }\r\n\r\n if (Array.isArray(this.props['toolbar-link'])) {\r\n config.popover = config.popover || {};\r\n config.popover.link = this.props['toolbar-link'].filter(function(group) { return group.length; });\r\n }\r\n\r\n if (Array.isArray(this.props['toolbar-table'])) {\r\n config.popover = config.popover || {};\r\n config.popover.table = this.props['toolbar-table'].filter(function(group) { return group.length; });\r\n }\r\n\r\n if (Array.isArray(this.props['toolbar-air'])) {\r\n config.popover = config.popover || {};\r\n config.popover.air = this.props['toolbar-air'].filter(function(group) { return group.length; });\r\n }\r\n\r\n if (Array.isArray(this.props['style-tags'])) {\r\n config.styleTags = this.props['style-tags'];\r\n }\r\n\r\n if (Array.isArray(this.props['font-names'])) {\r\n config.fontNames = this.props['font-names'];\r\n }\r\n\r\n if (Array.isArray(this.props['font-names-ignore-check'])) {\r\n config.fontNamesIgnoreCheck = this.props['font-names-ignore-check'];\r\n }\r\n\r\n if (Array.isArray(this.props['font-size-units'])) {\r\n config.fontSizeUnits = this.props['font-size-units'];\r\n }\r\n\r\n if (Array.isArray(this.props['line-heights'])) {\r\n config.lineHeights = this.props['line-heights'];\r\n }\r\n\r\n if (!$.summernote.lang[config.lang]) {\r\n console.error('Summernote \"' + config.lang + '\" lang file must be included.')\r\n }\r\n\r\n $.extend(true, config, this.props.config, this.plugins, this.buttons, this.callbacks);\r\n\r\n $(this.$node).summernote(config);\r\n \r\n this.editor = $(this.$node).data('summernote');\r\n\r\n this.editor.layoutInfo.statusbar.find('.note-status-output').remove();\r\n\r\n if (this.props.disabled) {\r\n this.editor.disable();\r\n this.set('disabled', true);\r\n }\r\n\r\n if (this.$node.hasAttribute('dmxDomId')) {\r\n this.editor.layoutInfo.editor.attr('dmxDomId', this.$node.getAttribute('dmxDomId'));\r\n }\r\n },\r\n\r\n\r\n\r\n});\r\n"]}