@bagelink/vue 0.0.869 → 0.0.875

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.
package/dist/style.css CHANGED
@@ -1188,83 +1188,6 @@ p {
1188
1188
  display: block;
1189
1189
  border-radius: var(--input-border-radius);
1190
1190
  }
1191
- .resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.8);color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}
1192
-
1193
- .selectinput[data-v-4d1e8e98] {
1194
- width: 100%;
1195
- }
1196
- .selectinput-option[data-v-4d1e8e98] {
1197
- padding: 6px 12px;
1198
- cursor: pointer;
1199
- border-radius: 5px;
1200
- transition: all 0.2s;
1201
- display: grid;
1202
- grid-template-columns:1fr;
1203
- justify-content: space-between;
1204
- width: 100%;
1205
- font-size: var(--input-font-size);
1206
- margin-block: 0.15rem;
1207
- }
1208
- .selectinput-option .bgl_icon-font[data-v-4d1e8e98]{
1209
- line-height: normal;
1210
- }
1211
- .selectinput-options.multiselect .selectinput-option[data-v-4d1e8e98] {
1212
- grid-template-columns: 10px 1fr;
1213
- }
1214
- .selectinput-options[data-v-4d1e8e98] {
1215
- max-height: 300px;
1216
- overflow-y: auto;
1217
- }
1218
- .selectinput-option[data-v-4d1e8e98]:hover {
1219
- background: var(--bgl-gray-20);
1220
- }
1221
- .isEmpty p[data-v-4d1e8e98] {
1222
- opacity: 0.3;
1223
- }
1224
- .selected[data-v-4d1e8e98]{
1225
- /* background: var(--bgl-primary-tint); */
1226
- background: var(--bgl-selected);
1227
- }
1228
-
1229
- .bagel-input label {
1230
- font-size: var(--label-font-size);
1231
- }
1232
- .selectinput-btn {
1233
- display: flex;
1234
- justify-content: space-between;
1235
- align-items: center;
1236
- height: var(--input-height);
1237
- border-radius: var(--input-border-radius);
1238
- border: none;
1239
- background: var(--input-bg);
1240
- padding: 0.7rem;
1241
- color: var(--input-color);
1242
- width: 100%;
1243
- font-family: inherit;
1244
- font-size: var(--input-font-size);
1245
- }
1246
- .selectinput-btn p{
1247
- white-space: nowrap;
1248
- overflow: hidden;
1249
- text-overflow: ellipsis;
1250
- }
1251
- .selectinput-btn:disabled {
1252
- color: var(--input-disabled-color);
1253
- background-color: transparent;
1254
- }
1255
- .selectinput-btn:focus {
1256
- outline: none;
1257
- box-shadow: inset 0 0 10px #00000012;
1258
- }
1259
- .v-popper__arrow-container {
1260
- display: none;
1261
- }
1262
- .v-popper--theme-dropdown .v-popper__inner {
1263
- border: none;
1264
- /* background: transparent; if anyone is changing this please talk to me first*/
1265
- border-radius: var(--card-border-radius);
1266
- /* color: var(--input-color); */
1267
- }
1268
1191
 
1269
1192
  @font-face {
1270
1193
  font-family: 'FontWithASyntaxHighlighter';
@@ -1388,6 +1311,83 @@ p {
1388
1311
  border-top: 1px solid #ccc;
1389
1312
  }
1390
1313
  } */
1314
+ .resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.8);color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}
1315
+
1316
+ .selectinput[data-v-4d1e8e98] {
1317
+ width: 100%;
1318
+ }
1319
+ .selectinput-option[data-v-4d1e8e98] {
1320
+ padding: 6px 12px;
1321
+ cursor: pointer;
1322
+ border-radius: 5px;
1323
+ transition: all 0.2s;
1324
+ display: grid;
1325
+ grid-template-columns:1fr;
1326
+ justify-content: space-between;
1327
+ width: 100%;
1328
+ font-size: var(--input-font-size);
1329
+ margin-block: 0.15rem;
1330
+ }
1331
+ .selectinput-option .bgl_icon-font[data-v-4d1e8e98]{
1332
+ line-height: normal;
1333
+ }
1334
+ .selectinput-options.multiselect .selectinput-option[data-v-4d1e8e98] {
1335
+ grid-template-columns: 10px 1fr;
1336
+ }
1337
+ .selectinput-options[data-v-4d1e8e98] {
1338
+ max-height: 300px;
1339
+ overflow-y: auto;
1340
+ }
1341
+ .selectinput-option[data-v-4d1e8e98]:hover {
1342
+ background: var(--bgl-gray-20);
1343
+ }
1344
+ .isEmpty p[data-v-4d1e8e98] {
1345
+ opacity: 0.3;
1346
+ }
1347
+ .selected[data-v-4d1e8e98]{
1348
+ /* background: var(--bgl-primary-tint); */
1349
+ background: var(--bgl-selected);
1350
+ }
1351
+
1352
+ .bagel-input label {
1353
+ font-size: var(--label-font-size);
1354
+ }
1355
+ .selectinput-btn {
1356
+ display: flex;
1357
+ justify-content: space-between;
1358
+ align-items: center;
1359
+ height: var(--input-height);
1360
+ border-radius: var(--input-border-radius);
1361
+ border: none;
1362
+ background: var(--input-bg);
1363
+ padding: 0.7rem;
1364
+ color: var(--input-color);
1365
+ width: 100%;
1366
+ font-family: inherit;
1367
+ font-size: var(--input-font-size);
1368
+ }
1369
+ .selectinput-btn p{
1370
+ white-space: nowrap;
1371
+ overflow: hidden;
1372
+ text-overflow: ellipsis;
1373
+ }
1374
+ .selectinput-btn:disabled {
1375
+ color: var(--input-disabled-color);
1376
+ background-color: transparent;
1377
+ }
1378
+ .selectinput-btn:focus {
1379
+ outline: none;
1380
+ box-shadow: inset 0 0 10px #00000012;
1381
+ }
1382
+ .v-popper__arrow-container {
1383
+ display: none;
1384
+ }
1385
+ .v-popper--theme-dropdown .v-popper__inner {
1386
+ border: none;
1387
+ /* background: transparent; if anyone is changing this please talk to me first*/
1388
+ border-radius: var(--card-border-radius);
1389
+ /* color: var(--input-color); */
1390
+ }
1391
1391
 
1392
1392
  .bgl_input .canvas {
1393
1393
  width: 100%;
@@ -1601,58 +1601,58 @@ p {
1601
1601
  font-size: var(--label-font-size);
1602
1602
  }
1603
1603
 
1604
- .bagel-input textarea[data-v-e5ae4283] {
1604
+ .bagel-input textarea[data-v-63ff8c9c] {
1605
1605
  min-height: unset;
1606
1606
  font-size: var(--input-font-size);
1607
1607
  }
1608
- .bagel-input.text-input textarea[data-v-e5ae4283] {
1608
+ .bagel-input.text-input textarea[data-v-63ff8c9c] {
1609
1609
  resize: none;
1610
1610
  }
1611
- .code textarea[data-v-e5ae4283] {
1611
+ .code textarea[data-v-63ff8c9c] {
1612
1612
  font-family: 'Inconsolata', monospace;
1613
1613
  background: var(--bgl-code-bg) !important;
1614
1614
  color: var(--bgl-light-text) !important;
1615
1615
  }
1616
- .code textarea[data-v-e5ae4283]::placeholder {
1616
+ .code textarea[data-v-63ff8c9c]::placeholder {
1617
1617
  color: var(--bgl-light-text) !important;
1618
1618
  opacity: 0.3;
1619
1619
  }
1620
- .bagel-input.small[data-v-e5ae4283] {
1620
+ .bagel-input.small[data-v-63ff8c9c] {
1621
1621
  margin-bottom: 0;
1622
1622
  height: 30px;
1623
1623
  }
1624
- .bagel-input.dense label[data-v-e5ae4283] {
1624
+ .bagel-input.dense label[data-v-63ff8c9c] {
1625
1625
  display: flex;
1626
1626
  align-items: center;
1627
1627
  gap: 0.5rem;
1628
1628
  }
1629
- .bagel-input input[data-v-e5ae4283]:disabled {
1629
+ .bagel-input input[data-v-63ff8c9c]:disabled {
1630
1630
  background: #f5f5f5;
1631
1631
  }
1632
- .bagel-input label[data-v-e5ae4283] {
1632
+ .bagel-input label[data-v-63ff8c9c] {
1633
1633
  font-size: var(--label-font-size);
1634
1634
  }
1635
- .textInputIconWrap .bgl_icon-font[data-v-e5ae4283] {
1635
+ .textInputIconWrap .bgl_icon-font[data-v-63ff8c9c] {
1636
1636
  color: var(--input-color);
1637
1637
  position: absolute;
1638
1638
  inset-inline-end:calc(var(--input-height) / 3 - 0.25rem);
1639
1639
  margin-top: calc(var(--input-height) / 2 + 0.1rem);
1640
1640
  line-height: 0;
1641
1641
  }
1642
- .textInputIconWrap input[data-v-e5ae4283]{
1642
+ .textInputIconWrap input[data-v-63ff8c9c]{
1643
1643
  padding-inline-end: calc(var(--input-height) / 3 + 1.5rem);
1644
1644
  }
1645
- .txtInputIconStart .iconStart[data-v-e5ae4283] {
1645
+ .txtInputIconStart .iconStart[data-v-63ff8c9c] {
1646
1646
  color: var(--input-color);
1647
1647
  position: absolute;
1648
1648
  inset-inline-start:calc(var(--input-height) / 3 - 0.25rem);
1649
1649
  margin-top: calc(var(--input-height) / 2 + 0.1rem);
1650
1650
  line-height: 0;
1651
1651
  }
1652
- .txtInputIconStart input[data-v-e5ae4283], .txtInputIconStart textarea[data-v-e5ae4283]{
1652
+ .txtInputIconStart input[data-v-63ff8c9c], .txtInputIconStart textarea[data-v-63ff8c9c]{
1653
1653
  padding-inline-start: calc(var(--input-height) / 3 + 1.5rem);
1654
1654
  }
1655
- .bagel-input.small textarea[data-v-e5ae4283] {
1655
+ .bagel-input.small textarea[data-v-63ff8c9c] {
1656
1656
  height: 30px;
1657
1657
  }
1658
1658
 
@@ -1733,7 +1733,7 @@ p {
1733
1733
  gap: 0;
1734
1734
  }
1735
1735
 
1736
- .bgl_bottombar[data-v-557bcad0] {
1736
+ .bgl_bottombar[data-v-ee7b8f1a] {
1737
1737
  background-color: var(--bgl-primary);
1738
1738
  color: var(--bgl-light-text);
1739
1739
  grid-template-columns: repeat(auto-fill, var(--bgl_bottombar-btn-width));
@@ -1742,16 +1742,16 @@ p {
1742
1742
  padding: 0;
1743
1743
  --bgl_bottombar-btn-width: 62px;
1744
1744
  }
1745
- .bgl_bottombar[data-v-557bcad0]>* {
1745
+ .bgl_bottombar[data-v-ee7b8f1a]>* {
1746
1746
  width: var(--bgl_bottombar-btn-width);
1747
1747
  }
1748
- .bgl_bottombar[data-v-557bcad0]::-webkit-scrollbar {
1748
+ .bgl_bottombar[data-v-ee7b8f1a]::-webkit-scrollbar {
1749
1749
  display: none;
1750
1750
  }
1751
- .bgl_bottombar .nav-button[data-v-557bcad0] {
1751
+ .bgl_bottombar .nav-button[data-v-ee7b8f1a] {
1752
1752
  border-radius: var(--card-border-radius);
1753
1753
  }
1754
- .bgl_bottombar .router-link-active[data-v-557bcad0] {
1754
+ .bgl_bottombar .router-link-active[data-v-ee7b8f1a] {
1755
1755
  background: var(--bgl-popup-bg);
1756
1756
  color: var(--bgl-primary) !important;
1757
1757
  }
@@ -2667,10 +2667,12 @@ svg.leaflet-image-layer.leaflet-interactive path {
2667
2667
  height: 100%;
2668
2668
  border-radius: var(--input-border-radius);
2669
2669
  position: relative;
2670
- background: var(--bgl-bg)
2670
+ background: var(--bgl-bg);
2671
+ direction: ltr;
2671
2672
  }
2672
2673
  .leaflet-map::after {
2673
2674
  content: "";
2675
+ pointer-events: none;
2674
2676
  position: absolute;
2675
2677
  inset: 0;
2676
2678
  box-shadow: inset 0 0 10px #00000012;
@@ -2683,7 +2685,7 @@ svg.leaflet-image-layer.leaflet-interactive path {
2683
2685
  display: none;
2684
2686
  }
2685
2687
  .leaflet-pane.leaflet-marker-pane img {
2686
- filter: drop-shadow(0px 8px 3px rgba(0, 0, 0, 0.2));
2688
+ /* filter: drop-shadow(0px 8px 3px rgba(0, 0, 0, 0.2)); */
2687
2689
  }
2688
2690
  .leaflet-touch .leaflet-control-zoom-in,
2689
2691
  .leaflet-touch .leaflet-control-zoom-out {
@@ -2719,6 +2721,9 @@ svg.leaflet-image-layer.leaflet-interactive path {
2719
2721
  .leaflet-bar a:focus {
2720
2722
  filter: var(--bgl-active-filter);
2721
2723
  }
2724
+ .leaflet-marker-icon {
2725
+ cursor: pointer;
2726
+ }
2722
2727
  .bg-dark {
2723
2728
  position: fixed;
2724
2729
  top: 0;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/vue",
3
3
  "type": "module",
4
- "version": "0.0.869",
4
+ "version": "0.0.875",
5
5
  "description": "Bagel core sdk packages",
6
6
  "author": {
7
7
  "name": "Neveh Allon",
@@ -5,9 +5,13 @@ import { onMounted, watch } from 'vue'
5
5
  import './leaflet/leaflet.css'
6
6
 
7
7
  type MapMarker = {
8
- lat: number
9
- lon: number
10
- } | [number, number]
8
+ lat: number | string
9
+ lng: number | string
10
+ tooltip?: string
11
+ popup?: string
12
+ title?: string
13
+ [key: string]: any
14
+ } | [(number | string), (number | string), string?]
11
15
 
12
16
  const props = withDefaults(
13
17
  defineProps<{
@@ -20,19 +24,20 @@ const props = withDefaults(
20
24
  }>(),
21
25
  {
22
26
  center: () => [31.7683, 35.2137],
23
- zoom: 13,
27
+ zoom: 15,
24
28
  height: 400,
25
29
  zoomControl: true,
26
30
  markerIcon: '',
27
31
  }
28
32
  )
29
33
 
34
+ const emit = defineEmits(['select'])
30
35
  let L = $ref<any>()
31
36
  let map = $ref<Map>()
32
37
  const _markers = $ref<Marker[]>([])
33
38
  const id = $ref(Math.random().toString(36).slice(2, 10))
34
39
 
35
- const defaultMarkerSVG = '<svg id="eCJDQPwuXje1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 36 36" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" project-id="ac827abc0a8c4922b76bac4df7bd7646" export-id="2cc86932ccbc4825a31fd063b3e75478" cached="false"><style><![CDATA[#eCJDQPwuXje3_ts {animation: eCJDQPwuXje3_ts__ts 3000ms linear infinite normal forwards}@keyframes eCJDQPwuXje3_ts__ts { 0% {transform: translate(18px,18px) scale(1,1)} 3.333333% {transform: translate(18px,18px) scale(1,1);animation-timing-function: cubic-bezier(0.42,0,0.58,1)} 100% {transform: translate(18px,18px) scale(1.8,1.8)}} #eCJDQPwuXje3 {animation: eCJDQPwuXje3_c_o 3000ms linear infinite normal forwards}@keyframes eCJDQPwuXje3_c_o { 0% {opacity: 0} 3.333333% {opacity: 1;animation-timing-function: cubic-bezier(0.42,0,0.58,1)} 100% {opacity: 0}}]]></style><ellipse rx="10.049312" ry="10.049312" transform="translate(18 18)" fill="#2e5bff" stroke-width="0"/><g id="eCJDQPwuXje3_ts" transform="translate(18,18) scale(1,1)"><ellipse id="eCJDQPwuXje3" rx="10.049312" ry="10.049312" transform="translate(0,0)" opacity="0" fill="#2e5bff" stroke-width="0"/></g></svg>'
40
+ const defaultMarkerSVG = '<svg width="28" height="38" viewBox="0 0 28 38" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.2263 37.7955C17.0897 37.7955 19.4109 37.0138 19.4109 36.0496C19.4109 35.0854 17.0897 34.3037 14.2263 34.3037C11.363 34.3037 9.04175 35.0854 9.04175 36.0496C9.04175 37.0138 11.363 37.7955 14.2263 37.7955Z" fill="black" fill-opacity="0.1"/><path d="M14.2265 0.549591C21.2842 0.549591 27.0131 6.23786 27.0787 13.28V13.4024C27.0787 19.3328 24.4759 24.4306 21.5627 28.2764C18.6511 32.12 15.4577 34.6754 14.3457 35.5097C14.2748 35.5629 14.1778 35.5629 14.1068 35.5097C12.9947 34.675 9.80135 32.1197 6.88984 28.2762C3.97665 24.4304 1.37378 19.3328 1.37378 13.4024C1.37378 6.30387 7.12806 0.549591 14.2265 0.549591Z" fill="#ED1b3E" stroke="#ED6C6F"/><path d="M14.2263 21.6185C18.7639 21.6185 22.4424 17.94 22.4424 13.4024C22.4424 8.86477 18.7639 5.18631 14.2263 5.18631C9.68872 5.18631 6.01025 8.86477 6.01025 13.4024C6.01025 17.94 9.68872 21.6185 14.2263 21.6185Z" fill="white"/></svg>'
36
41
  const leafletScriptUrl = 'https://unpkg.com/leaflet@1.9.4/dist/leaflet.js'
37
42
 
38
43
  async function loadGlobalL() {
@@ -49,37 +54,57 @@ async function initializeMap() {
49
54
  zoom: props.zoom,
50
55
  zoomControl: props.zoomControl,
51
56
  })
52
- L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 18 }).addTo(map)
57
+
58
+ L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 18, }).addTo(map)
53
59
  }
54
60
  }
55
61
 
56
- function addMarker(L: any, latlng: LatLngExpression) {
62
+ async function addMarker(marker: MapMarker) {
57
63
  const iconSVG = props.markerIcon || defaultMarkerSVG
58
- const customIcon = L?.icon({
64
+ const icon = L?.icon({
59
65
  iconUrl: `data:image/svg+xml;utf8,${encodeURIComponent(iconSVG)}`,
60
66
  iconSize: [32, 32],
61
67
  })
68
+ const latlng = latLangFromMarker(marker)
69
+ const title = Array.isArray(marker) ? marker[2] : marker.title ?? marker.tooltip
70
+ const tooltip = Array.isArray(marker) ? marker[2] : marker.tooltip
71
+ const m = L?.marker(latlng, { title, icon, interactive: true }).addTo(map as Map) as Marker
72
+ if (tooltip) m.bindTooltip(tooltip, { direction: 'top' }) // Use `bindPopup` if you want a click-to-show label
73
+ m.on('click', () => { emit('select', marker) })
62
74
 
63
- const marker = L?.marker(latlng, { icon: customIcon }).addTo(map as Map)
64
- _markers.push(marker)
75
+ _markers.push(m)
65
76
  }
66
77
 
67
78
  function fitMarkers(L: any) {
68
79
  if (_markers.length > 0) {
69
- map?.fitBounds(L.featureGroup(_markers as unknown as Layer[]).getBounds())
80
+ const latLngs = _markers.map(marker => marker.getLatLng())
81
+ const bounds = L.latLngBounds(latLngs)
82
+ const center = bounds.getCenter()
83
+ map?.setView(center, props.zoom)
84
+ map?.fitBounds(bounds, {
85
+ animate: true,
86
+ padding: [20, 20], // Adjust padding as needed
87
+ })
70
88
  }
71
89
  }
72
90
 
91
+ function latLangFromMarker(marker: MapMarker): LatLngExpression {
92
+ const [lat, lng] = (Array.isArray(marker)
93
+ ? [marker[0], marker[1]]
94
+ : [marker.lat, marker.lng])
95
+ return { lat: +lat, lng: +lng }
96
+ }
97
+
73
98
  async function watchMarkers(markers?: MapMarker[]) {
74
99
  if (!L) L = await loadGlobalL()
75
100
  _markers.forEach(marker => marker.remove())
76
101
  if (!markers) return
102
+
77
103
  for (const marker of markers) {
78
- const [lat, lon] = Array.isArray(marker) ? marker : [marker.lat, marker.lon]
79
- if (!map) initializeMap()
80
- addMarker(L, [lat, lon])
81
- fitMarkers(L)
104
+ if (!map) await initializeMap()
105
+ addMarker(marker)
82
106
  }
107
+ fitMarkers(L)
83
108
  }
84
109
 
85
110
  watch(() => props.markers, watchMarkers, { immediate: true })
@@ -89,7 +114,7 @@ onMounted(initializeMap)
89
114
  </script>
90
115
 
91
116
  <template>
92
- <div :id="id" class="leaflet-map" :style="{ height: `${props.height || 400}px` }" />
117
+ <div :id="id" class="leaflet-map" :style="{ height: `${props.height || 400}px` }" dir="ltr" />
93
118
  </template>
94
119
 
95
120
  <style>
@@ -97,11 +122,13 @@ onMounted(initializeMap)
97
122
  height: 100%;
98
123
  border-radius: var(--input-border-radius);
99
124
  position: relative;
100
- background: var(--bgl-bg)
125
+ background: var(--bgl-bg);
126
+ direction: ltr;
101
127
  }
102
128
 
103
129
  .leaflet-map::after {
104
130
  content: "";
131
+ pointer-events: none;
105
132
  position: absolute;
106
133
  inset: 0;
107
134
  box-shadow: inset 0 0 10px #00000012;
@@ -117,7 +144,7 @@ onMounted(initializeMap)
117
144
  }
118
145
 
119
146
  .leaflet-pane.leaflet-marker-pane img {
120
- filter: drop-shadow(0px 8px 3px rgba(0, 0, 0, 0.2));
147
+ /* filter: drop-shadow(0px 8px 3px rgba(0, 0, 0, 0.2)); */
121
148
  }
122
149
 
123
150
  .leaflet-touch .leaflet-control-zoom-in,
@@ -160,4 +187,8 @@ onMounted(initializeMap)
160
187
  .leaflet-bar a:focus {
161
188
  filter: var(--bgl-active-filter);
162
189
  }
190
+
191
+ .leaflet-marker-icon {
192
+ cursor: pointer;
193
+ }
163
194
  </style>
@@ -1,7 +1,6 @@
1
1
  <script lang="ts" setup>
2
2
  import type { ToolbarConfig, ToolbarConfigOption } from './richtext-types'
3
3
  import { Btn, type MaterialIcons } from '@bagelink/vue'
4
- import SelectInput from '../SelectInput.vue'
5
4
 
6
5
  defineProps<{ config: ToolbarConfig }>()
7
6
  const emit = defineEmits(['action'])
@@ -27,7 +27,7 @@ const props = withDefaults(
27
27
  multiline?: boolean
28
28
  autoheight?: boolean
29
29
  code?: boolean
30
- lines?: number
30
+ lines?: number | string
31
31
  autocomplete?: AutoFillField
32
32
  autofocus?: boolean
33
33
  debounceDelay?: number
@@ -26,6 +26,7 @@ defineProps<{
26
26
  {{ nav.label }}
27
27
  </p>
28
28
  </Btn>
29
+ <slot name="end" />
29
30
  </Card>
30
31
  </template>
31
32