diff options
| author | Julien Legros <jle@odoo.com> | 2016-01-25 11:26:27 +0100 |
|---|---|---|
| committer | Julien Legros <jle@odoo.com> | 2016-01-25 11:26:27 +0100 |
| commit | e5e7c4c1217c04d93820cf6007fd8ceed30d0cfa (patch) | |
| tree | 0c475b2aa9f8f1b92f1550466cc189f1ba36230b /addons/web_editor | |
| parent | 85b39df834c8689fd22e1a56d780af703a61909d (diff) | |
| parent | 6872aae8ef9c1a1fc6a8283aa9d12ce3a6859157 (diff) | |
[MERGE] forward port of branch 9.0 up to 6872aae
Diffstat (limited to 'addons/web_editor')
| -rw-r--r-- | addons/web_editor/i18n/de.po | 25 | ||||
| -rw-r--r-- | addons/web_editor/i18n/es_MX.po | 12 | ||||
| -rw-r--r-- | addons/web_editor/i18n/it.po | 32 | ||||
| -rw-r--r-- | addons/web_editor/i18n/nb.po | 4 | ||||
| -rw-r--r-- | addons/web_editor/i18n/ru.po | 25 | ||||
| -rw-r--r-- | addons/web_editor/static/lib/summernote/src/js/module/Clipboard.js | 14 | ||||
| -rw-r--r-- | addons/web_editor/static/src/js/backend.js | 21 | ||||
| -rw-r--r-- | addons/web_editor/static/src/js/summernote.js | 37 | ||||
| -rw-r--r-- | addons/web_editor/static/src/js/tour.rte.js | 2 | ||||
| -rw-r--r-- | addons/web_editor/static/src/js/transcoder.js | 2 |
10 files changed, 99 insertions, 75 deletions
diff --git a/addons/web_editor/i18n/de.po b/addons/web_editor/i18n/de.po index e455cab1c0b..430dd4f1161 100644 --- a/addons/web_editor/i18n/de.po +++ b/addons/web_editor/i18n/de.po @@ -5,13 +5,14 @@ # Translators: # Henry Mineehen <info@mineehen.de>, 2015 # Ralf Hilgenstock <rh@dialoge.info>, 2016 +# Wolfgang Taferner, 2016 msgid "" msgstr "" "Project-Id-Version: Odoo 9.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-09-29 10:26+0000\n" -"PO-Revision-Date: 2016-01-15 04:14+0000\n" -"Last-Translator: Ralf Hilgenstock <rh@dialoge.info>\n" +"PO-Revision-Date: 2016-01-20 13:06+0000\n" +"Last-Translator: Wolfgang Taferner\n" "Language-Team: German (http://www.transifex.com/odoo/odoo-9/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -72,21 +73,21 @@ msgstr "Bild-URL hinzufügen" #: code:addons/web_editor/static/src/js/rte.summernote.js:761 #, python-format msgid "Align center" -msgstr "" +msgstr "Zentriert" #. module: web_editor #. openerp-web #: code:addons/web_editor/static/src/js/rte.summernote.js:760 #, python-format msgid "Align left" -msgstr "" +msgstr "Links ausrichten" #. module: web_editor #. openerp-web #: code:addons/web_editor/static/src/js/rte.summernote.js:762 #, python-format msgid "Align right" -msgstr "" +msgstr "Rechtsbündig" #. module: web_editor #. openerp-web @@ -395,42 +396,42 @@ msgstr "HTTP Routing" #: code:addons/web_editor/static/src/js/rte.summernote.js:740 #, python-format msgid "Header 1" -msgstr "" +msgstr "Überschrift 1" #. module: web_editor #. openerp-web #: code:addons/web_editor/static/src/js/rte.summernote.js:741 #, python-format msgid "Header 2" -msgstr "" +msgstr "Überschrift 2" #. module: web_editor #. openerp-web #: code:addons/web_editor/static/src/js/rte.summernote.js:742 #, python-format msgid "Header 3" -msgstr "" +msgstr "Überschrift 3" #. module: web_editor #. openerp-web #: code:addons/web_editor/static/src/js/rte.summernote.js:743 #, python-format msgid "Header 4" -msgstr "" +msgstr "Überschrift 4" #. module: web_editor #. openerp-web #: code:addons/web_editor/static/src/js/rte.summernote.js:744 #, python-format msgid "Header 5" -msgstr "" +msgstr "Überschrift 5" #. module: web_editor #. openerp-web #: code:addons/web_editor/static/src/js/rte.summernote.js:745 #, python-format msgid "Header 6" -msgstr "" +msgstr "Überschrift 6" #. module: web_editor #. openerp-web @@ -1055,7 +1056,7 @@ msgstr "Rückgangig" #: code:addons/web_editor/static/src/js/rte.summernote.js:716 #, python-format msgid "Unlink" -msgstr "" +msgstr "Löschen" #. module: web_editor #. openerp-web diff --git a/addons/web_editor/i18n/es_MX.po b/addons/web_editor/i18n/es_MX.po index 9dd487777a5..2db7c1a1cf8 100644 --- a/addons/web_editor/i18n/es_MX.po +++ b/addons/web_editor/i18n/es_MX.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Odoo 9.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-09-29 10:26+0000\n" -"PO-Revision-Date: 2016-01-14 23:40+0000\n" +"PO-Revision-Date: 2016-01-20 17:35+0000\n" "Last-Translator: David Hernandez <davidhernandez.ctam@gmail.com>\n" "Language-Team: Spanish (Mexico) (http://www.transifex.com/odoo/odoo-9/language/es_MX/)\n" "MIME-Version: 1.0\n" @@ -28,14 +28,14 @@ msgstr "" #: code:addons/web_editor/static/src/js/rte.summernote.js:727 #, python-format msgid "(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)" -msgstr "" +msgstr "(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)" #. module: web_editor #. openerp-web #: code:addons/web_editor/static/src/xml/editor.xml:235 #, python-format msgid "(Youtube, Vimeo, Dailymotion)" -msgstr "" +msgstr "(Youtube, Vimeo, Dailymotion)" #. module: web_editor #: model:ir.ui.view,arch_db:web_editor.snippets @@ -118,7 +118,7 @@ msgstr "" #: code:addons/web_editor/static/src/xml/editor.xml:271 #, python-format msgid "Autoplay" -msgstr "" +msgstr "Auto-reproducción" #. module: web_editor #. openerp-web @@ -201,7 +201,7 @@ msgstr "" #: code:addons/web_editor/static/src/xml/editor.xml:315 #, python-format msgid "Color Style" -msgstr "" +msgstr "Estilo de color" #. module: web_editor #: model:ir.model.fields,field_description:web_editor.field_web_editor_converter_test_sub_create_uid @@ -218,7 +218,7 @@ msgstr "Creado en" #: code:addons/web_editor/static/src/xml/snippets.xml:35 #, python-format msgid "Customize" -msgstr "" +msgstr "Personalizar" #. module: web_editor #. openerp-web diff --git a/addons/web_editor/i18n/it.po b/addons/web_editor/i18n/it.po index cc9f7b785d6..26868cfa6d8 100644 --- a/addons/web_editor/i18n/it.po +++ b/addons/web_editor/i18n/it.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Odoo 9.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-09-29 10:26+0000\n" -"PO-Revision-Date: 2016-01-10 23:43+0000\n" +"PO-Revision-Date: 2016-01-15 14:21+0000\n" "Last-Translator: Riccardo Di Maio <riccardodimaio11@gmail.com>\n" "Language-Team: Italian (http://www.transifex.com/odoo/odoo-9/language/it/)\n" "MIME-Version: 1.0\n" @@ -1180,77 +1180,77 @@ msgstr "ir.qweb" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field msgid "ir.qweb.field" -msgstr "" +msgstr "ir.qweb.field" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field_contact msgid "ir.qweb.field.contact" -msgstr "" +msgstr "ir.qweb.field.contact" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field_date msgid "ir.qweb.field.date" -msgstr "" +msgstr "ir.qweb.field.date" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field_datetime msgid "ir.qweb.field.datetime" -msgstr "" +msgstr "ir.qweb.field.datetime" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field_duration msgid "ir.qweb.field.duration" -msgstr "" +msgstr "ir.qweb.field.duration" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field_float msgid "ir.qweb.field.float" -msgstr "" +msgstr "ir.qweb.field.float" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field_html msgid "ir.qweb.field.html" -msgstr "" +msgstr "ir.qweb.field.html" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field_image msgid "ir.qweb.field.image" -msgstr "" +msgstr "ir.qweb.field.image" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field_integer msgid "ir.qweb.field.integer" -msgstr "" +msgstr "ir.qweb.field.integer" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field_many2one msgid "ir.qweb.field.many2one" -msgstr "" +msgstr "ir.qweb.field.many2one" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field_monetary msgid "ir.qweb.field.monetary" -msgstr "" +msgstr "ir.qweb.field.monetary" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field_qweb msgid "ir.qweb.field.qweb" -msgstr "" +msgstr "ir.qweb.field.qweb" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field_relative msgid "ir.qweb.field.relative" -msgstr "" +msgstr "ir.qweb.field.relative" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field_selection msgid "ir.qweb.field.selection" -msgstr "" +msgstr "ir.qweb.field.selection" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_qweb_field_text msgid "ir.qweb.field.text" -msgstr "" +msgstr "ir.qweb.field.text" #. module: web_editor #: model:ir.model,name:web_editor.model_ir_translation diff --git a/addons/web_editor/i18n/nb.po b/addons/web_editor/i18n/nb.po index e3fe841c265..fd2771625a2 100644 --- a/addons/web_editor/i18n/nb.po +++ b/addons/web_editor/i18n/nb.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Odoo 9.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-09-29 10:26+0000\n" -"PO-Revision-Date: 2015-10-20 13:10+0000\n" +"PO-Revision-Date: 2016-01-15 07:59+0000\n" "Last-Translator: Martin Trigaux\n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/odoo/odoo-9/language/nb/)\n" "MIME-Version: 1.0\n" @@ -549,7 +549,7 @@ msgstr "Stor" #. module: web_editor #: model:ir.model.fields,field_description:web_editor.field_web_editor_converter_test_sub___last_update msgid "Last Modified on" -msgstr "" +msgstr "Sist oppdatert " #. module: web_editor #: model:ir.model.fields,field_description:web_editor.field_web_editor_converter_test_sub_write_uid diff --git a/addons/web_editor/i18n/ru.po b/addons/web_editor/i18n/ru.po index 8d928f9866a..4639039689b 100644 --- a/addons/web_editor/i18n/ru.po +++ b/addons/web_editor/i18n/ru.po @@ -4,13 +4,14 @@ # # Translators: # Amaro Vita <vita.amaro@gmail.com>, 2015 +# Gennady Marchenko <gennadym@gmail.com>, 2016 msgid "" msgstr "" "Project-Id-Version: Odoo 9.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-09-29 10:26+0000\n" -"PO-Revision-Date: 2015-10-20 07:59+0000\n" -"Last-Translator: Amaro Vita <vita.amaro@gmail.com>\n" +"PO-Revision-Date: 2016-01-19 19:13+0000\n" +"Last-Translator: Gennady Marchenko <gennadym@gmail.com>\n" "Language-Team: Russian (http://www.transifex.com/odoo/odoo-9/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,7 +29,7 @@ msgstr "<!DOCTYPE html>" #: code:addons/web_editor/static/src/js/rte.summernote.js:727 #, python-format msgid "(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)" -msgstr "" +msgstr "(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)" #. module: web_editor #. openerp-web @@ -43,7 +44,7 @@ msgid "" "<span class=\"fa-stack\">\n" " <i class=\"fa fa-th-large fa-stack-1x\"/>\n" " </span> First Panel" -msgstr "" +msgstr "<span class=\"fa-stack\">\n <i class=\"fa fa-th-large fa-stack-1x\"/>\n </span> Первая панель" #. module: web_editor #. openerp-web @@ -340,35 +341,35 @@ msgstr "Очень маленький" #: code:addons/web_editor/static/src/js/rte.summernote.js:705 #, python-format msgid "Float Left" -msgstr "" +msgstr "Выровнять влево" #. module: web_editor #. openerp-web #: code:addons/web_editor/static/src/js/rte.summernote.js:707 #, python-format msgid "Float None" -msgstr "" +msgstr "Не выравнивать" #. module: web_editor #. openerp-web #: code:addons/web_editor/static/src/js/rte.summernote.js:706 #, python-format msgid "Float Right" -msgstr "" +msgstr "Выровнять вправо" #. module: web_editor #. openerp-web #: code:addons/web_editor/static/src/js/rte.summernote.js:696 #, python-format msgid "Font Family" -msgstr "" +msgstr "Тип шрифта" #. module: web_editor #. openerp-web #: code:addons/web_editor/static/src/js/rte.summernote.js:697 #, python-format msgid "Font Size" -msgstr "" +msgstr "Размер шрифта" #. module: web_editor #. openerp-web @@ -998,14 +999,14 @@ msgstr "Изображение не может быть удалено, пото #: code:addons/web_editor/static/src/js/translator.js:148 #, python-format msgid "This document is not saved!" -msgstr "" +msgstr "Этот документ не сохранен!" #. module: web_editor #. openerp-web #: code:addons/web_editor/static/src/xml/editor.xml:203 #, python-format msgid "Title:" -msgstr "" +msgstr "Заголовок:" #. module: web_editor #. openerp-web @@ -1026,7 +1027,7 @@ msgstr "" #: code:addons/web_editor/static/src/js/rte.summernote.js:770 #, python-format msgid "Transparent" -msgstr "" +msgstr "Прозрачный" #. module: web_editor #. openerp-web diff --git a/addons/web_editor/static/lib/summernote/src/js/module/Clipboard.js b/addons/web_editor/static/lib/summernote/src/js/module/Clipboard.js index 1d5a99b31f5..8b42726ff7a 100644 --- a/addons/web_editor/static/lib/summernote/src/js/module/Clipboard.js +++ b/addons/web_editor/static/lib/summernote/src/js/module/Clipboard.js @@ -150,12 +150,26 @@ define([ $(this).replaceWith($(this).contents()); }); $node.find('span + span').each(function () { + + if (dom.isText(this.previousSibling)) { + if (dom.isVisibleText(this.previousSibling)) { + return; + } else { // keep space between 2 tags, but can merge the both tags + $(this).prev().append(this.previousSibling); + } + } if ($(this).attr('class') === $(this).prev().attr('class') && $(this).attr('style') === $(this).prev().attr('style')) { $(this).prev().append($(this).contents()); $(this).remove(); } }); + // remove empty table row and td + var $tdr; + while(($tdr = $node.find('tr:empty, td:empty, th:empty, tbody:empty, t-head:empty, table:empty')) && $tdr.length) { + $tdr.remove(); + } + /* reset architecture HTML node and add <p> tag */ diff --git a/addons/web_editor/static/src/js/backend.js b/addons/web_editor/static/src/js/backend.js index 6fe895b154b..becd0fe4769 100644 --- a/addons/web_editor/static/src/js/backend.js +++ b/addons/web_editor/static/src/js/backend.js @@ -65,12 +65,17 @@ var FieldTextHtmlSimple = widget.extend({ this.$content = $(); if (this.get("effective_readonly")) { - this.$textarea.hide().after('<iframe class="o_readonly"/>'); - setTimeout(function () { - self.$content = $("body", self.$('iframe').contents()[0]); - self.$content.html(self.text_to_html(self.get('value'))); - self.resize(); - }); + if (this.options['style-inline']) { + this.$textarea.hide().after('<iframe class="o_readonly"/>'); + setTimeout(function () { + self.$content = $("body", self.$('iframe').contents()[0]); + self.$content.html(self.text_to_html(self.get('value'))); + self.resize(); + }); + } else { + this.$content = $('<div class="note-editable o_readonly"/>'); + this.$textarea.hide().after(this.$content); + } } else { this.$textarea.summernote(this._config()); @@ -119,10 +124,10 @@ var FieldTextHtmlSimple = widget.extend({ return this.$content.focusInEnd(); } catch (e) { return this.$content.focus(); - }; + } }, resize: function() { - this.$('iframe').css('height', '0px').css('height', Math.max(180, Math.min(this.$content[0] ? this.$content[0].scrollHeight : 0, 500)) + 'px'); + this.$('iframe').css('height', '0px').css('height', Math.max(30, Math.min(this.$content[0] ? this.$content[0].scrollHeight : 0, 500)) + 'px'); }, render_value: function() { var value = this.get('value'); diff --git a/addons/web_editor/static/src/js/summernote.js b/addons/web_editor/static/src/js/summernote.js index 6ed7be2039f..e31faaab601 100644 --- a/addons/web_editor/static/src/js/summernote.js +++ b/addons/web_editor/static/src/js/summernote.js @@ -558,13 +558,15 @@ dom.removeBetween = function (sc, so, ec, eo, towrite) { }; }; dom.indent = function (node) { - var margin = parseFloat(node.style.marginLeft || 0)+1.5; - node.style.marginLeft = margin + "em"; + var style = dom.isCell(node) ? 'paddingLeft' : 'marginLeft'; + var margin = parseFloat(node.style[style] || 0)+1.5; + node.style[style] = margin + "em"; return margin; }; dom.outdent = function (node) { - var margin = parseFloat(node.style.marginLeft || 0)-1.5; - node.style.marginLeft = margin > 0 ? margin + "em" : ""; + var style = dom.isCell(node) ? 'paddingLeft' : 'marginLeft'; + var margin = parseFloat(node.style[style] || 0)-1.5; + node.style[style] = margin > 0 ? margin + "em" : ""; return margin; }; dom.scrollIntoViewIfNeeded = function (node) { @@ -950,9 +952,10 @@ $.summernote.pluginEvents.tab = function (event, editor, layoutInfo, outdent) { $editable.data('NoteHistory').recordUndo($editable, 'tab'); var r = range.create(); var outdent = outdent || false; + event.preventDefault(); - if (r && r.isCollapsed()) { - if (r.isOnCell() && r.isOnCellFirst()) { + if (r && (dom.ancestor(r.sc, dom.isCell) || dom.ancestor(r.ec, dom.isCell))) { + if (r.isCollapsed() && r.isOnCell() && r.isOnCellFirst()) { var td = dom.ancestor(r.sc, dom.isCell); if (!outdent && !dom.nextElementSibling(td) && !dom.nextElementSibling(td.parentNode)) { var last = dom.lastChild(td); @@ -963,10 +966,10 @@ $.summernote.pluginEvents.tab = function (event, editor, layoutInfo, outdent) { } else { editor.table.tab(r, outdent); } - event.preventDefault(); - return false; + } else { + $.summernote.pluginEvents.indent(event, editor, layoutInfo, outdent); } - + } else if (r && r.isCollapsed()) { if (!r.sc.textContent.slice(0,r.so).match(/\S/) && r.isOnList()) { if (outdent) { $.summernote.pluginEvents.outdent(event, editor, layoutInfo); @@ -993,11 +996,8 @@ $.summernote.pluginEvents.tab = function (event, editor, layoutInfo, outdent) { next.textContent = next.textContent.replace(/^(\u00A0)+/g, ''); range.create(r.sc, r.sc.textContent.length, r.sc, r.sc.textContent.length).select(); } - event.preventDefault(); - return false; } } - event.preventDefault(); return false; }; $.summernote.pluginEvents.untab = function (event, editor, layoutInfo) { @@ -1724,7 +1724,7 @@ $.summernote.pluginEvents.indent = function (event, editor, layoutInfo, outdent) dom.merge(parent, start, 0, end, 1, null, true); } function indentOther (p, start, end) { - if (p === start || $.contains(p, start)) { + if (p === start || $.contains(p, start) || $.contains(start, p)) { flag = true; } if (flag) { @@ -1734,7 +1734,7 @@ $.summernote.pluginEvents.indent = function (event, editor, layoutInfo, outdent) dom.indent(p); } } - if (p === end || $.contains(p, end)) { + if (p === end || $.contains(p, end) || $.contains(end, p)) { flag = false; } } @@ -1743,15 +1743,18 @@ $.summernote.pluginEvents.indent = function (event, editor, layoutInfo, outdent) var $dom = $(ancestor); if (!dom.isList(ancestor)) { - $dom = $(ancestor).children(); + $dom = $(dom.node(ancestor)).children(); } if (!$dom.length) { - $dom = $(dom.ancestor(r.sc, dom.isList)); + $dom = $(dom.ancestor(r.sc, dom.isList) || dom.ancestor(r.sc, dom.isCell)); if (!$dom.length) { $dom = $(r.sc).closest(options.styleTags.join(',')); } } + // if select tr, take the first td + $dom = $dom.map(function () { return this.tagName === "TR" ? dom.firstElementChild(this) : this; }); + $dom.each(function () { if (flag || $.contains(this, r.sc)) { if (dom.isList(this)) { @@ -1760,7 +1763,7 @@ $.summernote.pluginEvents.indent = function (event, editor, layoutInfo, outdent) } else { indentUL(this, r.sc, r.ec); } - } else if (isFormatNode(this)) { + } else if (isFormatNode(this) || dom.ancestor(this, dom.isCell)) { indentOther(this, r.sc, r.ec); } } diff --git a/addons/web_editor/static/src/js/tour.rte.js b/addons/web_editor/static/src/js/tour.rte.js index 5205e60eef8..8c3c494a73f 100644 --- a/addons/web_editor/static/src/js/tour.rte.js +++ b/addons/web_editor/static/src/js/tour.rte.js @@ -20,7 +20,7 @@ Tour.register({ id: 'rte', name: "Test RTE", mode: 'test', - path: '/web_editor/field/html?callback=FieldTextHtml_0&enable_editor=1&datarecord=%7B%7D', + path: '/web_editor/field/html?debug&callback=FieldTextHtml_0&enable_editor=1&datarecord=%7B%7D', steps: [ { title: "Change html for this test", diff --git a/addons/web_editor/static/src/js/transcoder.js b/addons/web_editor/static/src/js/transcoder.js index 5e699367dc2..20779bf19aa 100644 --- a/addons/web_editor/static/src/js/transcoder.js +++ b/addons/web_editor/static/src/js/transcoder.js @@ -84,7 +84,7 @@ var getMatchedCSSRules = function (a) { var style = {}; _.each(css, function (v,k) { _.each(v[1], function (v,k) { - if (k.indexOf('-webkit') === -1 && (!style[k] || style[k].indexOf('important') === -1 || v.indexOf('important') !== -1)) { + if (v && k.indexOf('-webkit') === -1 && (!style[k] || style[k].indexOf('important') === -1 || v.indexOf('important') !== -1)) { style[k] = v; } }); |
