aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/css/dumbymap.css77
-rw-r--r--src/dumbymap.mjs6
2 files changed, 48 insertions, 35 deletions
diff --git a/src/css/dumbymap.css b/src/css/dumbymap.css
index 40397c1..005a8f9 100644
--- a/src/css/dumbymap.css
+++ b/src/css/dumbymap.css
@@ -65,6 +65,12 @@
65 } 65 }
66} 66}
67 67
68.dumby-block {
69 border-left: #f0f0f0 0.5em solid;
70 padding-left: 0.5em;
71 margin-left: -0.5em;
72 margin-bottom: 3rem;
73}
68 74
69.DumbyMap { 75.DumbyMap {
70 position: relative; 76 position: relative;
@@ -101,12 +107,6 @@
101 overflow-y: scroll; 107 overflow-y: scroll;
102 width: 100%; 108 width: 100%;
103 109
104 .dumby-block {
105 border-left: #f0f0f0 0.5em solid;
106 padding-left: 0.5em;
107 margin-left: -0.5em;
108 }
109
110 pre { 110 pre {
111 width: 100%; 111 width: 100%;
112 112
@@ -189,58 +189,65 @@
189 189
190.draggable-block { 190.draggable-block {
191 background-color: white; 191 background-color: white;
192 margin-bottom: 3rem;
193 font-size: 12px; 192 font-size: 12px;
194 pointer-events: auto; 193 pointer-events: auto;
195 box-sizing: content-box; 194 box-sizing: content-box;
196 position: absolute; 195 position: absolute;
197 width: fit-content; 196 width: fit-content;
198 max-height: 50vh;
199 max-width: 25vw;
200 overflow: scroll;
201 border: solid gray; 197 border: solid gray;
202 border-radius: 0.5rem; 198 border-radius: 0.5rem;
203 padding-top: 0.5rem; 199 overflow: clip;
204 padding-bottom: 0;
205 resize: both;
206
207 &[style*="height"],
208 &[style*="width"] {
209 max-height: unset;
210 max-width: unset;
211 }
212 200
213 .dumby-block { 201 .dumby-block {
214 border: none; 202 border: none;
215 padding: 0; 203 resize: both;
216 } 204 padding-inline: 1em;
205 margin: 0;
206 overflow: scroll;
207 max-height: 50vh;
208 max-width: 25vw;
209 position: relative;
217 210
218 .map-container { 211 /* allow random width/height after resize */
219 min-width: 200px; 212 &[style*="height"],
220 } 213 &[style*="width"] {
214 max-height: unset;
215 max-width: unset;
216 }
221 217
222 > :not(.draggable) { 218 /* gray out top of content, make draggable part easy to be seen */
223 margin-inline: 0.5rem; 219 &::before {
220 display: block;
221 position: sticky;
222 top: 0;
223 content: '';
224 width: 100%;
225 height: 1.5rem;
226 background: linear-gradient(0deg, rgb(255 255 255 / 0%), rgb(255 255 255 / 100%) 60%);
227 }
228
229 .map-container {
230 min-width: 200px;
231 }
224 } 232 }
225 233
226 .draggable { 234 .draggable {
227 display: block; 235 display: block;
236 position: absolute;
237 width: 100%;
228 top: 0; 238 top: 0;
229 left: 0; 239 left: 0;
230 position: sticky; 240 font-size: 1.1rem;
231 background: linear-gradient(0deg, rgb(255 255 255 / 0%), rgb(255 255 255 / 100%) 60%); 241 z-index: 1;
232 margin-bottom: -18px; 242
233 transform: translate(0, -16px);
234 width: 100%;
235 padding-inline: 0;
236 padding-bottom: 2em;
237 text-align: center; 243 text-align: center;
238 z-index: 9999; 244
239 transition: all 0.3s ease-in-out; 245 transition: all 0.3s ease-in-out;
246 transform: translate(0, -0.6rem);
240 247
241 &:hover { 248 &:hover {
242 background: #e1e1e1; 249 background: #e1e1e1;
243 padding-block: 1em 0.5em; 250 transform: unset;
244 251
245 & ~ * { 252 & ~ * {
246 opacity: 0.7; 253 opacity: 0.7;
diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs
index bdb7ee8..f8ce1d7 100644
--- a/src/dumbymap.mjs
+++ b/src/dumbymap.mjs
@@ -231,6 +231,7 @@ export const generateMaps = async (container, callback) => {
231 const draggableContainer = block.closest('.draggable-block') 231 const draggableContainer = block.closest('.draggable-block')
232 if (!draggableContainer) return 232 if (!draggableContainer) return
233 htmlHolder.appendChild(block) 233 htmlHolder.appendChild(block)
234 block.removeAttribute('style')
234 draggableContainer.draggableInstance.remove() 235 draggableContainer.draggableInstance.remove()
235 draggableContainer.remove() 236 draggableContainer.remove()
236 } 237 }
@@ -377,6 +378,11 @@ export const generateMaps = async (container, callback) => {
377 y += 200 378 y += 200
378 x = x % window.innerWidth 379 x = x % window.innerWidth
379 } 380 }
381
382 const resizeObserver = new ResizeObserver(() => {
383 c.draggableInstance.position();
384 }).observe(c);
385 onRemove(c, () => resizeObserver.disconnect())
380 }) 386 })
381 } else { 387 } else {
382 dumbyBlocks.forEach(resumeFromDraggableContainer) 388 dumbyBlocks.forEach(resumeFromDraggableContainer)