{"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","min-height","max-height","autofocus","lang","air-mode","toolbar","Array","toolbar-image","toolbar-link","toolbar-table","toolbar-air","blockquote-breaking-level","style-tags","font-names","font-names-ignore-check","font-size-units","line-heights","placeholder","dialogs-in-body","dialogs-fade","disable-drop","disable-shortcuts","disable-tab","disable-spellcheck","disable-grammar","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","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 }\r\n\r\n this.initEditor();\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 },\r\n\r\n setValue: function(value) {\r\n if (this.editor) {\r\n if (!value) {\r\n this.editor.empty();\r\n } else {\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"]}