@fieldia/map 0.15.0 → 0.17.0

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.
Files changed (118) hide show
  1. package/README.md +79 -11
  2. package/package.json +4 -4
  3. package/src/index.d.mts +2 -1
  4. package/src/index.d.ts +2 -1
  5. package/src/index.js +3 -1
  6. package/src/index.js.map +1 -1
  7. package/src/index.mjs +1 -0
  8. package/src/index.mjs.map +1 -1
  9. package/src/lib/answers.d.mts +17 -0
  10. package/src/lib/answers.d.ts +17 -0
  11. package/src/lib/answers.js +27 -0
  12. package/src/lib/answers.js.map +1 -0
  13. package/src/lib/answers.mjs +21 -0
  14. package/src/lib/answers.mjs.map +1 -0
  15. package/src/lib/area.js +2 -1
  16. package/src/lib/area.js.map +1 -1
  17. package/src/lib/area.mjs +3 -2
  18. package/src/lib/area.mjs.map +1 -1
  19. package/src/lib/card.d.mts +10 -2
  20. package/src/lib/card.d.ts +10 -2
  21. package/src/lib/card.js +13 -4
  22. package/src/lib/card.js.map +1 -1
  23. package/src/lib/card.mjs +13 -4
  24. package/src/lib/card.mjs.map +1 -1
  25. package/src/lib/form-map.d.mts +18 -0
  26. package/src/lib/form-map.d.ts +18 -0
  27. package/src/lib/form-map.js +586 -0
  28. package/src/lib/form-map.js.map +1 -0
  29. package/src/lib/form-map.mjs +583 -0
  30. package/src/lib/form-map.mjs.map +1 -0
  31. package/src/lib/heat.d.mts +25 -0
  32. package/src/lib/heat.d.ts +25 -0
  33. package/src/lib/heat.js +111 -0
  34. package/src/lib/heat.js.map +1 -0
  35. package/src/lib/heat.mjs +108 -0
  36. package/src/lib/heat.mjs.map +1 -0
  37. package/src/lib/labels.d.mts +33 -0
  38. package/src/lib/labels.d.ts +33 -0
  39. package/src/lib/labels.js +60 -1
  40. package/src/lib/labels.js.map +1 -1
  41. package/src/lib/labels.mjs +58 -0
  42. package/src/lib/labels.mjs.map +1 -1
  43. package/src/lib/list-view.js +168 -70
  44. package/src/lib/list-view.js.map +1 -1
  45. package/src/lib/list-view.mjs +162 -64
  46. package/src/lib/list-view.mjs.map +1 -1
  47. package/src/lib/map-core.d.mts +8 -0
  48. package/src/lib/map-core.d.ts +8 -0
  49. package/src/lib/map-core.js +57 -4
  50. package/src/lib/map-core.js.map +1 -1
  51. package/src/lib/map-core.mjs +56 -4
  52. package/src/lib/map-core.mjs.map +1 -1
  53. package/src/lib/marks.d.mts +34 -0
  54. package/src/lib/marks.d.ts +34 -0
  55. package/src/lib/marks.js +56 -0
  56. package/src/lib/marks.js.map +1 -0
  57. package/src/lib/marks.mjs +49 -0
  58. package/src/lib/marks.mjs.map +1 -0
  59. package/src/lib/measure.d.mts +15 -0
  60. package/src/lib/measure.d.ts +15 -0
  61. package/src/lib/measure.js +157 -0
  62. package/src/lib/measure.js.map +1 -0
  63. package/src/lib/measure.mjs +153 -0
  64. package/src/lib/measure.mjs.map +1 -0
  65. package/src/lib/pins.d.mts +2 -0
  66. package/src/lib/pins.d.ts +2 -0
  67. package/src/lib/pins.js +5 -1
  68. package/src/lib/pins.js.map +1 -1
  69. package/src/lib/pins.mjs +3 -1
  70. package/src/lib/pins.mjs.map +1 -1
  71. package/src/lib/place.js +3 -1
  72. package/src/lib/place.js.map +1 -1
  73. package/src/lib/place.mjs +4 -2
  74. package/src/lib/place.mjs.map +1 -1
  75. package/src/lib/providers.d.mts +43 -3
  76. package/src/lib/providers.d.ts +43 -3
  77. package/src/lib/providers.js +76 -67
  78. package/src/lib/providers.js.map +1 -1
  79. package/src/lib/providers.mjs +24 -15
  80. package/src/lib/providers.mjs.map +1 -1
  81. package/src/lib/reach.d.mts +25 -0
  82. package/src/lib/reach.d.ts +25 -0
  83. package/src/lib/reach.js +158 -0
  84. package/src/lib/reach.js.map +1 -0
  85. package/src/lib/reach.mjs +153 -0
  86. package/src/lib/reach.mjs.map +1 -0
  87. package/src/lib/regions.d.mts +137 -0
  88. package/src/lib/regions.d.ts +137 -0
  89. package/src/lib/regions.js +456 -0
  90. package/src/lib/regions.js.map +1 -0
  91. package/src/lib/regions.mjs +445 -0
  92. package/src/lib/regions.mjs.map +1 -0
  93. package/src/lib/route-line.d.mts +34 -0
  94. package/src/lib/route-line.d.ts +34 -0
  95. package/src/lib/route-line.js +53 -0
  96. package/src/lib/route-line.js.map +1 -0
  97. package/src/lib/route-line.mjs +47 -0
  98. package/src/lib/route-line.mjs.map +1 -0
  99. package/src/lib/routes.d.mts +40 -0
  100. package/src/lib/routes.d.ts +40 -0
  101. package/src/lib/routes.js +149 -0
  102. package/src/lib/routes.js.map +1 -0
  103. package/src/lib/routes.mjs +140 -0
  104. package/src/lib/routes.mjs.map +1 -0
  105. package/src/lib/settings.d.mts +13 -3
  106. package/src/lib/settings.d.ts +13 -3
  107. package/src/lib/styles.d.mts +10 -2
  108. package/src/lib/styles.d.ts +10 -2
  109. package/src/lib/styles.js +52 -3
  110. package/src/lib/styles.js.map +1 -1
  111. package/src/lib/styles.mjs +50 -2
  112. package/src/lib/styles.mjs.map +1 -1
  113. package/src/lib/tools.d.mts +27 -0
  114. package/src/lib/tools.d.ts +27 -0
  115. package/src/lib/tools.js +84 -0
  116. package/src/lib/tools.js.map +1 -0
  117. package/src/lib/tools.mjs +81 -0
  118. package/src/lib/tools.mjs.map +1 -0
@@ -0,0 +1,81 @@
1
+ /**
2
+ * The tools under a map's zoom, those its page asks for: the satellite's
3
+ * images (no button where the provider has none), full screen (filling the
4
+ * window where the browser refuses the screen, as a frame may), and measuring
5
+ * a way (its drawing asked for as the tools come, so a key pressed straight
6
+ * after its press is not lost). Loaded with the first map that has any.
7
+ */
8
+ export function wireTools(options) {
9
+ const { tools, box, map, labels, locale, document: doc } = options;
10
+ const element = box.element;
11
+ if (tools.has('satellite')) {
12
+ const button = box.tool(labels.satellite, '<circle cx="12" cy="12" r="3"/><path d="M5 5l3 3M16 16l3 3M19 5l-3 3M8 16l-3 3"/><rect x="3" y="3" width="18" height="18" rx="3" stroke-dasharray="2 3"/>');
13
+ // A provider with no such images: no such button.
14
+ button.hidden = true;
15
+ void options.provider.tiles('satellite', locale).then((spec) => (button.hidden = !spec), () => (button.hidden = true));
16
+ let on = false;
17
+ button.addEventListener('click', () => {
18
+ on = !on;
19
+ button.setAttribute('aria-pressed', String(on));
20
+ options.satellite(on);
21
+ });
22
+ }
23
+ if (tools.has('fullscreen')) {
24
+ const button = box.tool(labels.fullScreen, '<path d="M4 9V4h5M15 4h5v5M20 15v5h-5M9 20H4v-5"/>');
25
+ const mark = (on) => {
26
+ element.toggleAttribute('data-full', on);
27
+ button.setAttribute('aria-pressed', String(on));
28
+ button.setAttribute('aria-label', on ? labels.leaveFullScreen : labels.fullScreen);
29
+ button.title = button.getAttribute('aria-label') ?? '';
30
+ setTimeout(() => map.invalidateSize({ pan: false }), 50);
31
+ };
32
+ // Where the browser refuses the screen (a frame that may not), the map fills the window instead.
33
+ const fill = (on) => {
34
+ element.classList.toggle('fd-map-fixed', on);
35
+ mark(on);
36
+ };
37
+ const change = () => mark(doc.fullscreenElement === element);
38
+ doc.addEventListener('fullscreenchange', change);
39
+ options.cleanup(() => doc.removeEventListener('fullscreenchange', change));
40
+ button.addEventListener('click', () => {
41
+ if (element.hasAttribute('data-full')) {
42
+ if (doc.fullscreenElement === element)
43
+ void doc.exitFullscreen();
44
+ else
45
+ fill(false);
46
+ }
47
+ else if (element.requestFullscreen)
48
+ element.requestFullscreen().catch(() => fill(true));
49
+ else
50
+ fill(true);
51
+ });
52
+ element.addEventListener('keydown', (event) => {
53
+ if (event.key === 'Escape' && element.classList.contains('fd-map-fixed'))
54
+ fill(false);
55
+ });
56
+ }
57
+ if (tools.has('measure')) {
58
+ const button = box.tool(labels.measure, '<path d="M3 17L17 3l4 4L7 21z"/><path d="M7 13l2 2M10 10l2 2M13 7l2 2"/>');
59
+ let stop = null;
60
+ const measuring = import('./measure.mjs');
61
+ button.addEventListener('click', async () => {
62
+ if (stop)
63
+ return stop();
64
+ button.setAttribute('aria-pressed', 'true');
65
+ const { measure } = await measuring;
66
+ stop = measure({
67
+ box,
68
+ map,
69
+ L: options.L,
70
+ labels,
71
+ locale,
72
+ stopped: () => {
73
+ stop = null;
74
+ button.setAttribute('aria-pressed', 'false');
75
+ button.focus();
76
+ },
77
+ });
78
+ });
79
+ }
80
+ }
81
+ //# sourceMappingURL=tools.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.mjs","sourceRoot":"","sources":["../../../../../libs/map/src/lib/tools.ts"],"names":[],"mappings":"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"}