odoo.define('website_twitter.editor', function (require) { 'use strict'; var core = require('web.core'); var dom = require('web.dom'); var sOptions = require('web_editor.snippets.options'); var _t = core._t; sOptions.registry.twitter = sOptions.Class.extend({ /** * @override */ start: function () { var self = this; var $configuration = dom.renderButton({ attrs: { class: 'btn-primary d-none', contenteditable: 'false', }, text: _t("Reload"), }); $configuration.appendTo(document.body).on('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); self._rpc({route: '/website_twitter/reload'}); }); this.$target.on('mouseover.website_twitter', function () { var $selected = $(this); var position = $selected.offset(); $configuration.removeClass('d-none').offset({ top: $selected.outerHeight() / 2 + position.top - $configuration.outerHeight() / 2, left: $selected.outerWidth() / 2 + position.left - $configuration.outerWidth() / 2, }); }).on('mouseleave.website_twitter', function (e) { var current = document.elementFromPoint(e.clientX, e.clientY); if (current === $configuration[0]) { return; } $configuration.addClass('d-none'); }); this.$target.on('click.website_twitter', '.lnk_configure', function (e) { window.location = e.currentTarget.href; }); this.trigger_up('widgets_stop_request', { $target: this.$target, }); return this._super.apply(this, arguments); }, /** * @override */ cleanForSave: function () { this.$target.find('.twitter_timeline').empty(); }, /** * @override */ destroy: function () { this._super.apply(this, arguments); this.$target.off('.website_twitter'); }, }); });