Compare commits
9 Commits
e01cb2ce6f
...
v1.13.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
066ddb240d
|
|||
|
df336b87ac
|
|||
|
dbf71e366a
|
|||
|
6a83003acb
|
|||
|
bcc7c2a011
|
|||
|
19f04efecb
|
|||
|
c79bbaa41a
|
|||
|
b07640375a
|
|||
|
ffcb8219b0
|
@@ -12,6 +12,7 @@ import home from 'feather-icons/dist/icons/home.svg?raw';
|
||||
import instagram from 'feather-icons/dist/icons/instagram.svg?raw';
|
||||
import logIn from 'feather-icons/dist/icons/log-in.svg?raw';
|
||||
import logOut from 'feather-icons/dist/icons/log-out.svg?raw';
|
||||
import mail from 'feather-icons/dist/icons/mail.svg?raw';
|
||||
import map from 'feather-icons/dist/icons/map.svg?raw';
|
||||
import mapPin from 'feather-icons/dist/icons/map-pin.svg?raw';
|
||||
import menu from 'feather-icons/dist/icons/menu.svg?raw';
|
||||
@@ -39,6 +40,7 @@ const ICONS = {
|
||||
instagram,
|
||||
'log-in': logIn,
|
||||
'log-out': logOut,
|
||||
mail,
|
||||
map,
|
||||
'map-pin': mapPin,
|
||||
menu,
|
||||
|
||||
@@ -530,13 +530,22 @@ export default class MapComponent extends Component {
|
||||
padding: padding,
|
||||
duration: 1000,
|
||||
easing: (t) => t * (2 - t),
|
||||
maxZoom: currentZoom,
|
||||
maxZoom: Math.max(currentZoom, 18),
|
||||
});
|
||||
}
|
||||
|
||||
handlePinVisibility(coords) {
|
||||
if (!this.mapInstance) return;
|
||||
|
||||
const view = this.mapInstance.getView();
|
||||
const currentZoom = view.getZoom();
|
||||
|
||||
// If too far out (e.g. world view), zoom in to neighborhood level (16)
|
||||
if (currentZoom < 16) {
|
||||
this.animateToSmartCenter(coords, 16);
|
||||
return;
|
||||
}
|
||||
|
||||
const pixel = this.mapInstance.getPixelFromCoordinate(coords);
|
||||
const size = this.mapInstance.getSize();
|
||||
|
||||
@@ -555,12 +564,17 @@ export default class MapComponent extends Component {
|
||||
}
|
||||
}
|
||||
|
||||
animateToSmartCenter(coords) {
|
||||
animateToSmartCenter(coords, zoom = null) {
|
||||
if (!this.mapInstance) return;
|
||||
|
||||
const size = this.mapInstance.getSize();
|
||||
const view = this.mapInstance.getView();
|
||||
const resolution = view.getResolution();
|
||||
let resolution = view.getResolution();
|
||||
|
||||
if (zoom !== null) {
|
||||
resolution = view.getResolutionForZoom(zoom);
|
||||
}
|
||||
|
||||
let targetCenter = coords;
|
||||
|
||||
// Check if mobile (width <= 768px matches CSS)
|
||||
@@ -582,11 +596,17 @@ export default class MapComponent extends Component {
|
||||
targetCenter = [coords[0], coords[1] - offsetMapUnits];
|
||||
}
|
||||
|
||||
view.animate({
|
||||
const animationOptions = {
|
||||
center: targetCenter,
|
||||
duration: 1000,
|
||||
easing: (t) => t * (2 - t), // Ease-out
|
||||
});
|
||||
};
|
||||
|
||||
if (zoom !== null) {
|
||||
animationOptions.zoom = zoom;
|
||||
}
|
||||
|
||||
view.animate(animationOptions);
|
||||
}
|
||||
|
||||
panIfObscured(coords) {
|
||||
|
||||
@@ -111,6 +111,12 @@ export default class PlaceDetails extends Component {
|
||||
);
|
||||
}
|
||||
|
||||
if (type === 'email') {
|
||||
return htmlSafe(
|
||||
parts.map((p) => `<a href="mailto:${p}">${p}</a>`).join('<br>')
|
||||
);
|
||||
}
|
||||
|
||||
if (type === 'url') {
|
||||
return htmlSafe(
|
||||
parts
|
||||
@@ -132,6 +138,11 @@ export default class PlaceDetails extends Component {
|
||||
return this.formatMultiLine(val, 'phone');
|
||||
}
|
||||
|
||||
get email() {
|
||||
const val = this.tags.email || this.tags['contact:email'];
|
||||
return this.formatMultiLine(val, 'email');
|
||||
}
|
||||
|
||||
get website() {
|
||||
const val =
|
||||
this.place.url || this.tags.website || this.tags['contact:website'];
|
||||
@@ -301,6 +312,15 @@ export default class PlaceDetails extends Component {
|
||||
</p>
|
||||
{{/if}}
|
||||
|
||||
{{#if this.email}}
|
||||
<p class="content-with-icon">
|
||||
<Icon @name="mail" @title="Email" />
|
||||
<span>
|
||||
{{this.email}}
|
||||
</span>
|
||||
</p>
|
||||
{{/if}}
|
||||
|
||||
{{#if this.facebook}}
|
||||
<p class="content-with-icon">
|
||||
<Icon @name="facebook" @title="Facebook" />
|
||||
|
||||
@@ -203,6 +203,7 @@ body {
|
||||
box-shadow: 2px 0 5px rgb(0 0 0 / 10%);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden; /* Ensure flex children are contained */
|
||||
}
|
||||
|
||||
.settings-pane.sidebar {
|
||||
@@ -239,7 +240,11 @@ body {
|
||||
.sidebar-content {
|
||||
padding: 1rem;
|
||||
overflow-y: auto;
|
||||
flex: 1; /* Take up remaining vertical space */
|
||||
-webkit-overflow-scrolling: touch;
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
touch-action: pan-y;
|
||||
overscroll-behavior: contain;
|
||||
}
|
||||
|
||||
.edit-form {
|
||||
@@ -427,6 +432,10 @@ body {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.place-details {
|
||||
padding-bottom: 2rem;
|
||||
}
|
||||
|
||||
.place-details h3 {
|
||||
font-size: 1.2rem;
|
||||
margin-top: 0;
|
||||
@@ -768,7 +777,6 @@ button.create-place {
|
||||
|
||||
.sidebar-content {
|
||||
overflow-y: auto;
|
||||
overscroll-behavior: contain; /* Prevent scroll chaining */
|
||||
|
||||
/* Ensure content doesn't get hidden behind bottom safe areas on mobile */
|
||||
padding-bottom: env(safe-area-inset-bottom, 20px);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "marco",
|
||||
"version": "1.12.3",
|
||||
"version": "1.13.2",
|
||||
"private": true,
|
||||
"description": "Unhosted maps app",
|
||||
"repository": {
|
||||
|
||||
File diff suppressed because one or more lines are too long
1
release/assets/main-DAo4Q0R2.css
Normal file
1
release/assets/main-DAo4Q0R2.css
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -39,8 +39,8 @@
|
||||
<meta name="msapplication-TileColor" content="#F6E9A6">
|
||||
<meta name="msapplication-TileImage" content="/icons/icon-144.png">
|
||||
|
||||
<script type="module" crossorigin src="/assets/main-dKBF4UHr.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/main-DoLYcE7E.css">
|
||||
<script type="module" crossorigin src="/assets/main-CHoCxxBl.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/main-DAo4Q0R2.css">
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
|
||||
@@ -3,9 +3,9 @@ import { extensions, ember } from '@embroider/vite';
|
||||
import { babel } from '@rollup/plugin-babel';
|
||||
|
||||
export default defineConfig({
|
||||
// server: {
|
||||
// host: '0.0.0.0'
|
||||
// },
|
||||
server: {
|
||||
host: '0.0.0.0'
|
||||
},
|
||||
plugins: [
|
||||
ember(),
|
||||
// extra plugins here
|
||||
|
||||
Reference in New Issue
Block a user