maplibre-preview 1.3.7 → 1.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1e8b7e6d3882215e2027f65d54d9e06c580674d09e11c7099a8713de14979100
4
- data.tar.gz: 74975af297edce53fe68f87621be8104936f17969afbed60a241065f46e6c702
3
+ metadata.gz: 576fc35a947103556613fb983552a7fea7045b5109762b666ff4541dc08a3fb1
4
+ data.tar.gz: 91d004357c42439be1206b8d732834f5ed4b176ca88d2461c1a243a53c2a2564
5
5
  SHA512:
6
- metadata.gz: 6735dbe8cce4882f933922a6f4cf9a5ce6de961e128e21f671f21f2b38067f0fb2aef5507e404c8aba7fab8fb6e8db9b3925edd618a1c399d37893b4465f458d
7
- data.tar.gz: f667f936f515cbd8390abd5dadbcebfdf61a29572feed3496361a08d941f32a6d0acf6f75949c9bff537f56213d60172baebd0537f1687eee63ed2de96e8c45f
6
+ metadata.gz: be4c9c01fa9268120f9faa29001b571774dcadc03d190c3bf619753c06a62cd76da891d89c44f9a23eb7255863ac24c98778c9a7cbb6bc7cee86705451ada748
7
+ data.tar.gz: a0ca0a43e7fe67801a51e730303559eb6af9718e15d145bdd14a3d77e0e22f6eed48ab355203cb6088462954ac57d47d2dcd1de121d2fa96ee76acf38b3fbc6e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.3.9] - 2025-11-19
4
+
5
+ ### Changed
6
+ - **Version info display** - removed service name, kept only version number
7
+ - **Version info styling** - repositioned to bottom-right corner with gray background, compact padding, subtle colors
8
+
9
+ ### Added
10
+ - **Collapsible layer controls panel** - added collapse/expand button with arrow icon for layer controls panel
11
+
3
12
  ## [1.3.7] - 2025-10-29
4
13
 
5
14
  ### Added
@@ -1,3 +1,3 @@
1
1
  module MapLibrePreview
2
- VERSION = '1.3.7'
2
+ VERSION = '1.3.9'
3
3
  end
@@ -154,11 +154,36 @@ html
154
154
  | }
155
155
  | .controls a { color: #6897bb; text-decoration: none; margin-right: 15px; }
156
156
  | .controls a:hover { text-decoration: underline; }
157
- | .layer-controls {
157
+ | .layer-controls-wrapper {
158
158
  | position: absolute; top: 50%; left: 10px; transform: translateY(-50%); z-index: 1000;
159
- | background: rgba(60, 63, 65, 0.95); border: 1px solid #555555; padding: 15px;
159
+ | display: flex; align-items: center; gap: 0;
160
+ | }
161
+ | .layer-controls {
162
+ | background: rgba(60, 63, 65, 0.95); border: 1px solid #555555; border-right: none; padding: 15px;
160
163
  | border-radius: 4px; color: #a9b7c6; display: flex; flex-direction: column; gap: 6px;
161
- | max-width: 300px; max-height: 80vh;
164
+ | max-width: 300px; max-height: 80vh; transition: max-width 0.2s;
165
+ | overflow: hidden; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); order: 1;
166
+ | }
167
+ | .layer-controls.collapsed {
168
+ | max-width: 0; padding: 15px 0; border: none; opacity: 0; pointer-events: none;
169
+ | }
170
+ | .layer-controls-toggle {
171
+ | background: rgba(60, 63, 65, 0.95); border: 1px solid #555555;
172
+ | border-left: none; border-radius: 0 4px 4px 0; padding: 8px 4px;
173
+ | color: #a9b7c6; cursor: pointer; display: flex; align-items: center; justify-content: center;
174
+ | width: 18px; height: auto; min-height: 60px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); order: 2;
175
+ | }
176
+ | .layer-controls-toggle:hover {
177
+ | background: rgba(75, 77, 79, 0.95); color: #ffc66d; border-color: #666666;
178
+ | }
179
+ | .layer-controls-wrapper.collapsed .layer-controls-toggle {
180
+ | order: 0; border-left: 1px solid #555555; border-right: 1px solid #555555; border-radius: 4px;
181
+ | }
182
+ | .layer-controls-wrapper.collapsed .toggle-icon {
183
+ | transform: rotate(180deg);
184
+ | }
185
+ | .toggle-icon {
186
+ | font-size: 12px; font-weight: bold; transition: transform 0.2s;
162
187
  | }
163
188
  | .mode-switcher {
164
189
  | display: flex; gap: 2px; margin-bottom: 10px; background: #3c3f41;
@@ -325,23 +350,19 @@ html
325
350
  | .profile-tooltip-circle { fill: #ff0000; r: 4; }
326
351
  | .profile-tooltip-text { text-anchor: middle; fill: #ff0000; font-size: 14px; }
327
352
  | .version-info {
328
- | position: fixed; bottom: 10px; right: 10px; z-index: 1000;
329
- | color: #a9b7c6; font-size: 13px; line-height: 1.3;
330
- | text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
331
- | user-select: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none;
332
- | }
333
- | .version-info-title {
334
- | color: #ffc66d; font-weight: bold;
335
- | font-size: 12px;
353
+ | position: fixed; bottom: 0; right: 0; z-index: 1000;
354
+ | background: rgba(60, 63, 65, 0.85); border: none; border-radius: 4px 0 0 0;
355
+ | padding: 4px 8px; backdrop-filter: blur(5px);
356
+ | line-height: 1.2; user-select: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none;
336
357
  | }
337
358
  | .version-info-version {
338
- | color: #6897bb; font-family: 'Courier New', monospace; text-decoration: none;
359
+ | color: #808080; font-family: 'Courier New', monospace; text-decoration: none;
339
360
  | transition: color 0.2s ease;
340
- | font-size: 13px;
361
+ | font-size: 11px;
341
362
  | user-select: auto; -webkit-user-select: auto; -moz-user-select: auto; -ms-user-select: auto;
342
363
  | }
343
364
  | .version-info-version:hover {
344
- | color: #7aa8cc; text-decoration: underline;
365
+ | color: #a9b7c6; text-decoration: none;
345
366
  | }
346
367
  body
347
368
  .container
@@ -10,33 +10,35 @@ ruby:
10
10
  .progress-fill
11
11
 
12
12
  - if style_name || external_style_url || options[:style_url]
13
- .layer-controls
14
- .mode-switcher
15
- button.mode-button.active id="mode-filters" onclick="switchMode(this, 'filters')" Filters
16
- button.mode-button id="mode-layers" onclick="switchMode(this, 'layers')" Layers
17
- button.control-button onclick="toggleHoverMode()" id="hover-mode-btn" Hover Mode
18
- button.control-button onclick="toggleProfileMode()" id="profile-mode-btn" style="display: none;" Elevation Profile
19
- button.control-button onclick="toggleAntialias()" id="antialias-btn" Antialias
20
-
21
- #filters-panel.control-panel.active
22
- .control-panel-header
23
- button.control-button onclick="toggleAllFilters()" Toggle All Filters
24
- button.control-button onclick="toggleBasemap()" Show/Hide Basemap
25
- .control-panel-content
26
- #filter-buttons
27
-
28
- #layers-panel.control-panel
29
- .control-panel-header
30
- button.control-button onclick="toggleAllLayers()" Toggle All Layers
31
- button.control-button onclick="toggleBasemap()" Show/Hide Basemap
32
- .control-panel-content
33
- #layer-buttons
13
+ .layer-controls-wrapper
14
+ .layer-controls id="layer-controls"
15
+ .mode-switcher
16
+ button.mode-button.active id="mode-filters" onclick="switchMode(this, 'filters')" Filters
17
+ button.mode-button id="mode-layers" onclick="switchMode(this, 'layers')" Layers
18
+ button.control-button onclick="toggleHoverMode()" id="hover-mode-btn" Hover Mode
19
+ button.control-button onclick="toggleProfileMode()" id="profile-mode-btn" style="display: none;" Elevation Profile
20
+ button.control-button onclick="toggleAntialias()" id="antialias-btn" Antialias
21
+
22
+ #filters-panel.control-panel.active
23
+ .control-panel-header
24
+ button.control-button onclick="toggleAllFilters()" Toggle All Filters
25
+ button.control-button onclick="toggleBasemap()" Show/Hide Basemap
26
+ .control-panel-content
27
+ #filter-buttons
28
+
29
+ #layers-panel.control-panel
30
+ .control-panel-header
31
+ button.control-button onclick="toggleAllLayers()" Toggle All Layers
32
+ button.control-button onclick="toggleBasemap()" Show/Hide Basemap
33
+ .control-panel-content
34
+ #layer-buttons
35
+ button.layer-controls-toggle id="layer-controls-toggle" onclick="toggleLayerControls()" title="Collapse/Expand Panel"
36
+ span.toggle-icon ▶
34
37
 
35
38
  #map-container
36
39
  #map.map-layer data-style-url="#{style_url}"
37
40
 
38
41
  #version-info.version-info
39
- span.version-info-title MapLibre Preview
40
42
  a.version-info-version href="https://github.com/artyomb/maplibre-preview" target="_blank" v#{MapLibrePreview::VERSION}
41
43
 
42
44
  #performance-panel.performance-overlay
@@ -855,6 +857,18 @@ javascript:
855
857
  btn.className = `control-button ${antialiasEnabled ? 'active' : 'inactive'}`;
856
858
  };
857
859
 
860
+ let layerControlsCollapsed = false;
861
+
862
+ const toggleLayerControls = () => {
863
+ const wrapper = document.querySelector('.layer-controls-wrapper');
864
+ const controls = document.getElementById('layer-controls');
865
+ if (!wrapper || !controls) return;
866
+
867
+ layerControlsCollapsed = !layerControlsCollapsed;
868
+ controls.classList.toggle('collapsed', layerControlsCollapsed);
869
+ wrapper.classList.toggle('collapsed', layerControlsCollapsed);
870
+ };
871
+
858
872
  window.switchMode = switchMode;
859
873
  window.toggleBasemap = toggleBasemap;
860
874
  window.toggleHoverMode = toggleHoverMode;
@@ -863,6 +877,7 @@ javascript:
863
877
  window.togglePerformancePanel = togglePerformancePanel;
864
878
  window.toggleProfileMode = toggleProfileMode;
865
879
  window.toggleAntialias = toggleAntialias;
880
+ window.toggleLayerControls = toggleLayerControls;
866
881
  window.hideProfile = hideProfile;
867
882
 
868
883
  initializeMap();
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maplibre-preview
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.7
4
+ version: 1.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Ludov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-10-29 00:00:00.000000000 Z
11
+ date: 2025-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack