Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/landing/node/ |
Upload File : |
;(function() { "use strict"; BX.namespace("BX.Landing"); var data = BX.Landing.Utils.data; /** * @extends {BX.Landing.Block.Node} * @param options * @constructor */ BX.Landing.Block.Node.Embed = function(options) { BX.Landing.Block.Node.apply(this, arguments); this.type = 'embed'; this.attribute = ['data-src', 'data-source', 'data-preview']; this.onAttributeChangeHandler = options.onAttributeChange || (function() {}); this.lastValue = this.getValue(); this.nodeContainer = this.node.closest(BX.Landing.Block.Node.Embed.CONTAINER_SELECTOR); }; BX.Landing.Block.Node.Embed.CONTAINER_SELECTOR = '.embed-responsive'; BX.Landing.Block.Node.Embed.RATIO_CLASSES = [ 'embed-responsive-16by9', 'embed-responsive-9by16', 'embed-responsive-4by3', 'embed-responsive-3by4', 'embed-responsive-21by9', 'embed-responsive-9by21', 'embed-responsive-1by1', ]; BX.Landing.Block.Node.Embed.DEFAULT_RATIO_V = 'embed-responsive-9by16'; BX.Landing.Block.Node.Embed.DEFAULT_RATIO_H = 'embed-responsive-16by9'; BX.Landing.Block.Node.Embed.prototype = { constructor: BX.Landing.Block.Node.Embed, __proto__: BX.Landing.Block.Node.prototype, onChange: function(preventHistory) { this.lastValue = this.getValue(); this.onAttributeChangeHandler(this); this.onChangeHandler(this, preventHistory); }, isChanged: function() { return JSON.stringify(this.getValue()) !== JSON.stringify(this.lastValue); }, getValue: function() { const ratio = this.nodeContainer ? BX.Landing.Block.Node.Embed.RATIO_CLASSES.find(item => this.nodeContainer.classList.contains(item)) : '' ; return { src: this.node.src ? this.node.src : data(this.node, "data-src"), source: data(this.node, "data-source"), preview: data(this.node, "data-preview"), ratio: ratio || '', }; }, /** * Sets node value * @abstract * @param {*} value * @param {?boolean} [preventSave = false] * @param {?boolean} [preventHistory = false] * @return void */ setValue: function(value, preventSave, preventHistory) { // if iframe or preview-div if (this.node.src) { this.node.src = value.src; } else { data(this.node, "data-src", value.src) } data(this.node, "data-source", value.source); if (value.preview) { data(this.node, "data-preview", value.preview); this.node.style.backgroundImage = "url(\""+value.preview+"\")"; } else { data(this.node, "data-preview", null); this.node.style.backgroundImage = ""; } if ( value.src && value.ratio && this.lastValue.src !== value.src && BX.Landing.Block.Node.Embed.RATIO_CLASSES.indexOf(value.ratio) !== -1 && this.nodeContainer ) { BX.Landing.Block.Node.Embed.RATIO_CLASSES.forEach(ratioClass => { (value.ratio === ratioClass) ? BX.Dom.addClass(this.nodeContainer, ratioClass) : BX.Dom.removeClass(this.nodeContainer, ratioClass) ; }); } if (this.isChanged()) { if (!preventHistory) { BX.Landing.History.getInstance().push(); } this.onChange(preventHistory); } }, getField: function() { const fieldData = { title: this.manifest.name, selector: this.selector, content: this.getValue() }; if (BX.Dom.hasClass(this.node.parentNode, 'bg-video__inner')) { return new BX.Landing.UI.Field.EmbedBg(fieldData); } return new BX.Landing.UI.Field.Embed(fieldData); } }; })();