From 7845cdf22e6d065a6e0d766114c0e96833353858 Mon Sep 17 00:00:00 2001 From: "a.sola" Date: Tue, 5 Jun 2018 11:58:26 +0200 Subject: [PATCH 1/5] Fix: multilayer clip. --- index.js | 14 ++++++++------ leaflet-side-by-side.js | 22 ++++++++++++---------- leaflet-side-by-side.min.js | 2 +- package.json | 2 +- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/index.js b/index.js index 919a859..8d7e7e7 100644 --- a/index.js +++ b/index.js @@ -129,12 +129,14 @@ L.Control.SideBySide = L.Control.extend({ this.fire('dividermove', {x: dividerX}) var clipLeft = 'rect(' + [nw.y, clipX, se.y, nw.x].join('px,') + 'px)' var clipRight = 'rect(' + [nw.y, se.x, se.y, clipX].join('px,') + 'px)' - if (this._leftLayer) { - this._leftLayer.getContainer().style.clip = clipLeft - } - if (this._rightLayer) { - this._rightLayer.getContainer().style.clip = clipRight - } + + this._leftLayers.forEach(function (layer) { + layer.getContainer().style.clip = clipLeft + }) + + this._rightLayers.forEach(function (layer) { + layer.getContainer().style.clip = clipRight + }) }, _updateLayers: function () { diff --git a/leaflet-side-by-side.js b/leaflet-side-by-side.js index 2346119..efac8ae 100644 --- a/leaflet-side-by-side.js +++ b/leaflet-side-by-side.js @@ -131,12 +131,14 @@ L.Control.SideBySide = L.Control.extend({ this.fire('dividermove', {x: dividerX}) var clipLeft = 'rect(' + [nw.y, clipX, se.y, nw.x].join('px,') + 'px)' var clipRight = 'rect(' + [nw.y, se.x, se.y, clipX].join('px,') + 'px)' - if (this._leftLayer) { - this._leftLayer.getContainer().style.clip = clipLeft - } - if (this._rightLayer) { - this._rightLayer.getContainer().style.clip = clipRight - } + + this._leftLayers.forEach(function (layer) { + layer.getContainer().style.clip = clipLeft + }) + + this._rightLayers.forEach(function (layer) { + layer.getContainer().style.clip = clipRight + }) }, _updateLayers: function () { @@ -202,8 +204,8 @@ module.exports = L.Control.SideBySide }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"./layout.css":2,"./range.css":4}],2:[function(require,module,exports){ var inject = require('./node_modules/cssify'); -var css = ".leaflet-sbs-range {\r\n position: absolute;\r\n top: 50%;\r\n width: 100%;\r\n z-index: 999;\r\n}\r\n.leaflet-sbs-divider {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 50%;\r\n margin-left: -2px;\r\n width: 4px;\r\n background-color: #fff;\r\n pointer-events: none;\r\n z-index: 999;\r\n}\r\n"; -inject(css, undefined, '_i6aomd'); +var css = ".leaflet-sbs-range {\n position: absolute;\n top: 50%;\n width: 100%;\n z-index: 999;\n}\n.leaflet-sbs-divider {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 50%;\n margin-left: -2px;\n width: 4px;\n background-color: #fff;\n pointer-events: none;\n z-index: 999;\n}\n"; +inject(css, undefined, '_x3rtbf'); module.exports = css; },{"./node_modules/cssify":3}],3:[function(require,module,exports){ @@ -263,8 +265,8 @@ module.exports.byUrl = function (url) { },{}],4:[function(require,module,exports){ var inject = require('./node_modules/cssify'); -var css = ".leaflet-sbs-range {\r\n -webkit-appearance: none;\r\n display: inline-block!important;\r\n vertical-align: middle;\r\n height: 0;\r\n padding: 0;\r\n margin: 0;\r\n border: 0;\r\n background: rgba(0, 0, 0, 0.25);\r\n min-width: 100px;\r\n cursor: pointer;\r\n pointer-events: none;\r\n z-index: 999;\r\n}\r\n.leaflet-sbs-range::-ms-fill-upper {\r\n background: transparent;\r\n}\r\n.leaflet-sbs-range::-ms-fill-lower {\r\n background: rgba(255, 255, 255, 0.25);\r\n}\r\n/* Browser thingies */\r\n\r\n.leaflet-sbs-range::-moz-range-track {\r\n opacity: 0;\r\n}\r\n.leaflet-sbs-range::-ms-track {\r\n opacity: 0;\r\n}\r\n.leaflet-sbs-range::-ms-tooltip {\r\n display: none;\r\n}\r\n/* For whatever reason, these need to be defined\r\n * on their own so dont group them */\r\n\r\n.leaflet-sbs-range::-webkit-slider-thumb {\r\n -webkit-appearance: none;\r\n margin: 0;\r\n padding: 0;\r\n background: #fff;\r\n height: 40px;\r\n width: 40px;\r\n border-radius: 20px;\r\n cursor: ew-resize;\r\n pointer-events: auto;\r\n border: 1px solid #ddd;\r\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAABlBMVEV9fX3///+Kct39AAAAAnRSTlP/AOW3MEoAAAA9SURBVFjD7dehDQAwDANBZ/+l2wmKoiqR7pHRcaeaCxAIBAL/g7k9JxAIBAKBQCAQCAQC14H+MhAIBE4CD3fOFvGVBzhZAAAAAElFTkSuQmCC\");\r\n background-position: 50% 50%;\r\n background-repeat: no-repeat;\r\n background-size: 40px 40px;\r\n}\r\n.leaflet-sbs-range::-ms-thumb {\r\n margin: 0;\r\n padding: 0;\r\n background: #fff;\r\n height: 40px;\r\n width: 40px;\r\n border-radius: 20px;\r\n cursor: ew-resize;\r\n pointer-events: auto;\r\n border: 1px solid #ddd;\r\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAABlBMVEV9fX3///+Kct39AAAAAnRSTlP/AOW3MEoAAAA9SURBVFjD7dehDQAwDANBZ/+l2wmKoiqR7pHRcaeaCxAIBAL/g7k9JxAIBAKBQCAQCAQC14H+MhAIBE4CD3fOFvGVBzhZAAAAAElFTkSuQmCC\");\r\n background-position: 50% 50%;\r\n background-repeat: no-repeat;\r\n background-size: 40px 40px;\r\n}\r\n.leaflet-sbs-range::-moz-range-thumb {\r\n padding: 0;\r\n right: 0 ;\r\n background: #fff;\r\n height: 40px;\r\n width: 40px;\r\n border-radius: 20px;\r\n cursor: ew-resize;\r\n pointer-events: auto;\r\n border: 1px solid #ddd;\r\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAABlBMVEV9fX3///+Kct39AAAAAnRSTlP/AOW3MEoAAAA9SURBVFjD7dehDQAwDANBZ/+l2wmKoiqR7pHRcaeaCxAIBAL/g7k9JxAIBAKBQCAQCAQC14H+MhAIBE4CD3fOFvGVBzhZAAAAAElFTkSuQmCC\");\r\n background-position: 50% 50%;\r\n background-repeat: no-repeat;\r\n background-size: 40px 40px;\r\n}\r\n.leaflet-sbs-range:disabled::-moz-range-thumb {\r\n cursor: default;\r\n}\r\n.leaflet-sbs-range:disabled::-ms-thumb {\r\n cursor: default;\r\n}\r\n.leaflet-sbs-range:disabled::-webkit-slider-thumb {\r\n cursor: default;\r\n}\r\n.leaflet-sbs-range:disabled {\r\n cursor: default;\r\n}\r\n.leaflet-sbs-range:focus {\r\n outline: none!important;\r\n}\r\n.leaflet-sbs-range::-moz-focus-outer {\r\n border: 0;\r\n}\r\n\r\n"; -inject(css, undefined, '_1tlt668'); +var css = ".leaflet-sbs-range {\n -webkit-appearance: none;\n display: inline-block!important;\n vertical-align: middle;\n height: 0;\n padding: 0;\n margin: 0;\n border: 0;\n background: rgba(0, 0, 0, 0.25);\n min-width: 100px;\n cursor: pointer;\n pointer-events: none;\n z-index: 999;\n}\n.leaflet-sbs-range::-ms-fill-upper {\n background: transparent;\n}\n.leaflet-sbs-range::-ms-fill-lower {\n background: rgba(255, 255, 255, 0.25);\n}\n/* Browser thingies */\n\n.leaflet-sbs-range::-moz-range-track {\n opacity: 0;\n}\n.leaflet-sbs-range::-ms-track {\n opacity: 0;\n}\n.leaflet-sbs-range::-ms-tooltip {\n display: none;\n}\n/* For whatever reason, these need to be defined\n * on their own so dont group them */\n\n.leaflet-sbs-range::-webkit-slider-thumb {\n -webkit-appearance: none;\n margin: 0;\n padding: 0;\n background: #fff;\n height: 40px;\n width: 40px;\n border-radius: 20px;\n cursor: ew-resize;\n pointer-events: auto;\n border: 1px solid #ddd;\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAABlBMVEV9fX3///+Kct39AAAAAnRSTlP/AOW3MEoAAAA9SURBVFjD7dehDQAwDANBZ/+l2wmKoiqR7pHRcaeaCxAIBAL/g7k9JxAIBAKBQCAQCAQC14H+MhAIBE4CD3fOFvGVBzhZAAAAAElFTkSuQmCC\");\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: 40px 40px;\n}\n.leaflet-sbs-range::-ms-thumb {\n margin: 0;\n padding: 0;\n background: #fff;\n height: 40px;\n width: 40px;\n border-radius: 20px;\n cursor: ew-resize;\n pointer-events: auto;\n border: 1px solid #ddd;\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAABlBMVEV9fX3///+Kct39AAAAAnRSTlP/AOW3MEoAAAA9SURBVFjD7dehDQAwDANBZ/+l2wmKoiqR7pHRcaeaCxAIBAL/g7k9JxAIBAKBQCAQCAQC14H+MhAIBE4CD3fOFvGVBzhZAAAAAElFTkSuQmCC\");\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: 40px 40px;\n}\n.leaflet-sbs-range::-moz-range-thumb {\n padding: 0;\n right: 0 ;\n background: #fff;\n height: 40px;\n width: 40px;\n border-radius: 20px;\n cursor: ew-resize;\n pointer-events: auto;\n border: 1px solid #ddd;\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAABlBMVEV9fX3///+Kct39AAAAAnRSTlP/AOW3MEoAAAA9SURBVFjD7dehDQAwDANBZ/+l2wmKoiqR7pHRcaeaCxAIBAL/g7k9JxAIBAKBQCAQCAQC14H+MhAIBE4CD3fOFvGVBzhZAAAAAElFTkSuQmCC\");\n background-position: 50% 50%;\n background-repeat: no-repeat;\n background-size: 40px 40px;\n}\n.leaflet-sbs-range:disabled::-moz-range-thumb {\n cursor: default;\n}\n.leaflet-sbs-range:disabled::-ms-thumb {\n cursor: default;\n}\n.leaflet-sbs-range:disabled::-webkit-slider-thumb {\n cursor: default;\n}\n.leaflet-sbs-range:disabled {\n cursor: default;\n}\n.leaflet-sbs-range:focus {\n outline: none!important;\n}\n.leaflet-sbs-range::-moz-focus-outer {\n border: 0;\n}\n\n"; +inject(css, undefined, '_l4jn3i'); module.exports = css; },{"./node_modules/cssify":3}]},{},[1]); diff --git a/leaflet-side-by-side.min.js b/leaflet-side-by-side.min.js index bdc2de3..4bcdb4c 100644 --- a/leaflet-side-by-side.min.js +++ b/leaflet-side-by-side.min.js @@ -1 +1 @@ -!function a(s,o,d){function l(r,e){if(!o[r]){if(!s[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(h)return h(r,!0);var n=new Error("Cannot find module '"+r+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[r]={exports:{}};s[r][0].call(i.exports,function(e){return l(s[r][1][e]||e)},i,i.exports,a,s,o,d)}return o[r].exports}for(var h="function"==typeof require&&require,e=0;e Date: Tue, 5 Jun 2018 12:38:44 +0200 Subject: [PATCH 2/5] Fix: multilayer clip. --- index.js | 16 +++++++++------- leaflet-side-by-side.js | 16 +++++++++------- leaflet-side-by-side.min.js | 2 +- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/index.js b/index.js index 8d7e7e7..9c3352c 100644 --- a/index.js +++ b/index.js @@ -118,6 +118,13 @@ L.Control.SideBySide = L.Control.extend({ return this }, + _updateLayerClip: function (clip, layer) { + var container = layer.getContainer() + if (container !== null) { + container.style.clip = clip + } + }, + _updateClip: function () { var map = this._map var nw = map.containerPointToLayerPoint([0, 0]) @@ -130,13 +137,8 @@ L.Control.SideBySide = L.Control.extend({ var clipLeft = 'rect(' + [nw.y, clipX, se.y, nw.x].join('px,') + 'px)' var clipRight = 'rect(' + [nw.y, se.x, se.y, clipX].join('px,') + 'px)' - this._leftLayers.forEach(function (layer) { - layer.getContainer().style.clip = clipLeft - }) - - this._rightLayers.forEach(function (layer) { - layer.getContainer().style.clip = clipRight - }) + this._leftLayers.forEach(this._updateLayerClip.bind(this, clipLeft)) + this._rightLayers.forEach(this._updateLayerClip.bind(this, clipRight)) }, _updateLayers: function () { diff --git a/leaflet-side-by-side.js b/leaflet-side-by-side.js index efac8ae..39b6807 100644 --- a/leaflet-side-by-side.js +++ b/leaflet-side-by-side.js @@ -120,6 +120,13 @@ L.Control.SideBySide = L.Control.extend({ return this }, + _updateLayerClip: function (clip, layer) { + var container = layer.getContainer() + if (container !== null) { + container.style.clip = clip + } + }, + _updateClip: function () { var map = this._map var nw = map.containerPointToLayerPoint([0, 0]) @@ -132,13 +139,8 @@ L.Control.SideBySide = L.Control.extend({ var clipLeft = 'rect(' + [nw.y, clipX, se.y, nw.x].join('px,') + 'px)' var clipRight = 'rect(' + [nw.y, se.x, se.y, clipX].join('px,') + 'px)' - this._leftLayers.forEach(function (layer) { - layer.getContainer().style.clip = clipLeft - }) - - this._rightLayers.forEach(function (layer) { - layer.getContainer().style.clip = clipRight - }) + this._leftLayers.forEach(this._updateLayerClip.bind(this, clipLeft)) + this._rightLayers.forEach(this._updateLayerClip.bind(this, clipRight)) }, _updateLayers: function () { diff --git a/leaflet-side-by-side.min.js b/leaflet-side-by-side.min.js index 4bcdb4c..7f959ef 100644 --- a/leaflet-side-by-side.min.js +++ b/leaflet-side-by-side.min.js @@ -1 +1 @@ -!function a(s,o,d){function l(t,e){if(!o[t]){if(!s[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(h)return h(t,!0);var i=new Error("Cannot find module '"+t+"'");throw i.code="MODULE_NOT_FOUND",i}var r=o[t]={exports:{}};s[t][0].call(r.exports,function(e){return l(s[t][1][e]||e)},r,r.exports,a,s,o,d)}return o[t].exports}for(var h="function"==typeof require&&require,e=0;e Date: Tue, 5 Jun 2018 12:43:51 +0200 Subject: [PATCH 3/5] Fix: multilayer clip. --- index.js | 2 +- leaflet-side-by-side.js | 2 +- leaflet-side-by-side.min.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 9c3352c..75904a6 100644 --- a/index.js +++ b/index.js @@ -120,7 +120,7 @@ L.Control.SideBySide = L.Control.extend({ _updateLayerClip: function (clip, layer) { var container = layer.getContainer() - if (container !== null) { + if (container !== null && container !== undefined) { container.style.clip = clip } }, diff --git a/leaflet-side-by-side.js b/leaflet-side-by-side.js index 39b6807..9498922 100644 --- a/leaflet-side-by-side.js +++ b/leaflet-side-by-side.js @@ -122,7 +122,7 @@ L.Control.SideBySide = L.Control.extend({ _updateLayerClip: function (clip, layer) { var container = layer.getContainer() - if (container !== null) { + if (container !== null && container !== undefined) { container.style.clip = clip } }, diff --git a/leaflet-side-by-side.min.js b/leaflet-side-by-side.min.js index 7f959ef..e9db206 100644 --- a/leaflet-side-by-side.min.js +++ b/leaflet-side-by-side.min.js @@ -1 +1 @@ -!function a(s,o,d){function l(t,e){if(!o[t]){if(!s[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(h)return h(t,!0);var i=new Error("Cannot find module '"+t+"'");throw i.code="MODULE_NOT_FOUND",i}var r=o[t]={exports:{}};s[t][0].call(r.exports,function(e){return l(s[t][1][e]||e)},r,r.exports,a,s,o,d)}return o[t].exports}for(var h="function"==typeof require&&require,e=0;e Date: Tue, 5 Jun 2018 13:07:33 +0200 Subject: [PATCH 4/5] Stop propagation of the divider range click event. --- index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/index.js b/index.js index 75904a6..d92773d 100644 --- a/index.js +++ b/index.js @@ -77,6 +77,7 @@ L.Control.SideBySide = L.Control.extend({ this._divider = L.DomUtil.create('div', 'leaflet-sbs-divider', container) var range = this._range = L.DomUtil.create('input', 'leaflet-sbs-range', container) + range.addEventListener('click', function (e) { e.stopPropagation() }) range.type = 'range' range.min = 0 range.max = 1 From f970e526fd70ac8e772e3f1bf6a057f04feff0d9 Mon Sep 17 00:00:00 2001 From: "a.sola" Date: Tue, 5 Jun 2018 13:12:05 +0200 Subject: [PATCH 5/5] Run build. --- leaflet-side-by-side.js | 1 + leaflet-side-by-side.min.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/leaflet-side-by-side.js b/leaflet-side-by-side.js index 9498922..c4c6440 100644 --- a/leaflet-side-by-side.js +++ b/leaflet-side-by-side.js @@ -79,6 +79,7 @@ L.Control.SideBySide = L.Control.extend({ this._divider = L.DomUtil.create('div', 'leaflet-sbs-divider', container) var range = this._range = L.DomUtil.create('input', 'leaflet-sbs-range', container) + range.addEventListener('click', function (e) { e.stopPropagation() }) range.type = 'range' range.min = 0 range.max = 1 diff --git a/leaflet-side-by-side.min.js b/leaflet-side-by-side.min.js index e9db206..8f516c7 100644 --- a/leaflet-side-by-side.min.js +++ b/leaflet-side-by-side.min.js @@ -1 +1 @@ -!function a(s,o,d){function l(t,e){if(!o[t]){if(!s[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(h)return h(t,!0);var i=new Error("Cannot find module '"+t+"'");throw i.code="MODULE_NOT_FOUND",i}var r=o[t]={exports:{}};s[t][0].call(r.exports,function(e){return l(s[t][1][e]||e)},r,r.exports,a,s,o,d)}return o[t].exports}for(var h="function"==typeof require&&require,e=0;e