@unabridged/midwest 0.24.3 → 0.24.4

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 (26) hide show
  1. package/app/assets/javascript/midwest/index.ts +8 -0
  2. package/app/assets/javascript/midwest/map_providers.ts +61 -0
  3. package/app/assets/javascript/midwest.js +972 -6
  4. package/app/assets/javascript/midwest.js.map +1 -1
  5. package/app/assets/stylesheets/midwest.css +1 -1
  6. package/app/assets/stylesheets/midwest.tailwind.css +6 -1
  7. package/dist/css/midwest.css +1 -1
  8. package/dist/javascript/collection/app/assets/javascript/midwest/index.js +8 -0
  9. package/dist/javascript/collection/app/assets/javascript/midwest/index.js.map +1 -1
  10. package/dist/javascript/collection/app/assets/javascript/midwest/map_providers.js +56 -0
  11. package/dist/javascript/collection/app/assets/javascript/midwest/map_providers.js.map +1 -0
  12. package/dist/javascript/collection/app/components/midwest/form/address_component/address_component_controller.js +441 -0
  13. package/dist/javascript/collection/app/components/midwest/form/address_component/address_component_controller.js.map +1 -0
  14. package/dist/javascript/collection/app/components/midwest/form/live_summary_component/live_summary_component_controller.js +55 -1
  15. package/dist/javascript/collection/app/components/midwest/form/live_summary_component/live_summary_component_controller.js.map +1 -1
  16. package/dist/javascript/collection/app/components/midwest/map_component/map_component_controller.js +297 -0
  17. package/dist/javascript/collection/app/components/midwest/map_component/map_component_controller.js.map +1 -0
  18. package/dist/javascript/collection/app/components/midwest/onboarding_component/onboarding_component_controller.js +34 -5
  19. package/dist/javascript/collection/app/components/midwest/onboarding_component/onboarding_component_controller.js.map +1 -1
  20. package/dist/javascript/collection/app/components/midwest/page_transition_component/page_transition_component_controller.js +38 -0
  21. package/dist/javascript/collection/app/components/midwest/page_transition_component/page_transition_component_controller.js.map +1 -0
  22. package/dist/javascript/collection/app/components/midwest/popover_component/popover_component_controller.js +67 -0
  23. package/dist/javascript/collection/app/components/midwest/popover_component/popover_component_controller.js.map +1 -0
  24. package/dist/javascript/midwest.js +972 -6
  25. package/dist/javascript/midwest.js.map +1 -1
  26. package/package.json +1 -1
@@ -39,6 +39,10 @@ import ThemeSwitch from '../../../components/midwest/form/switch_component/theme
39
39
  import Panorama from '../../../components/midwest/panorama_component/panorama_component_controller'
40
40
  import Playlist from '../../../components/midwest/playlist_component/playlist_component_controller'
41
41
  import Motion from '../../../components/midwest/motion_component/motion_component_controller'
42
+ import PageTransition from '../../../components/midwest/page_transition_component/page_transition_component_controller'
43
+ import Map from '../../../components/midwest/map_component/map_component_controller'
44
+ import Address from '../../../components/midwest/form/address_component/address_component_controller'
45
+ import Popover from '../../../components/midwest/popover_component/popover_component_controller'
42
46
  /* IMPORTS */
43
47
 
44
48
  export { Card, Banner, CountdownTimer, Chart }
@@ -85,5 +89,9 @@ export function registerMidwestControllers (application: any) {
85
89
  application.register('midwest-panorama', Panorama)
86
90
  application.register('midwest-playlist', Playlist)
87
91
  application.register('midwest-motion', Motion)
92
+ application.register('midwest-page-transition', PageTransition)
93
+ application.register('midwest-map', Map)
94
+ application.register('midwest-address', Address)
95
+ application.register('midwest-popover', Popover)
88
96
  /* EXPORTS */
89
97
  }
@@ -0,0 +1,61 @@
1
+ // Shared map provider script loaders. Module-level promises ensure the CDN
2
+ // script is only injected once even when MapComponent and AddressComponent both
3
+ // mount on the same page simultaneously.
4
+
5
+ let mapkitScriptPromise: Promise<void> | null = null
6
+ let googleMapsScriptPromise: Promise<void> | null = null
7
+ let leafletScriptPromise: Promise<void> | null = null
8
+
9
+ export function loadMapKitScript (): Promise<void> {
10
+ if ((window as any).mapkit) return Promise.resolve()
11
+ if (mapkitScriptPromise) return mapkitScriptPromise
12
+
13
+ mapkitScriptPromise = new Promise<void>((resolve, reject) => {
14
+ const script = document.createElement('script')
15
+ script.src = 'https://cdn.apple-mapkit.com/mk/5.x.x/mapkit.js'
16
+ script.crossOrigin = 'anonymous'
17
+ script.addEventListener('load', () => resolve())
18
+ script.addEventListener('error', () => reject(new Error('Failed to load MapKit JS')))
19
+ document.head.appendChild(script)
20
+ })
21
+ return mapkitScriptPromise
22
+ }
23
+
24
+ // Leaflet: injects the CSS link then the JS. Both are deduplicated.
25
+ export function loadLeafletScript (): Promise<void> {
26
+ if ((window as any).L) return Promise.resolve()
27
+ if (leafletScriptPromise) return leafletScriptPromise
28
+
29
+ leafletScriptPromise = new Promise<void>((resolve, reject) => {
30
+ if (!document.querySelector('link[data-midwest-leaflet]')) {
31
+ const link = document.createElement('link')
32
+ link.rel = 'stylesheet'
33
+ link.href = 'https://unpkg.com/leaflet@1.9.4/dist/leaflet.css'
34
+ link.dataset.midwestLeaflet = ''
35
+ document.head.appendChild(link)
36
+ }
37
+
38
+ const script = document.createElement('script')
39
+ script.src = 'https://unpkg.com/leaflet@1.9.4/dist/leaflet.js'
40
+ script.addEventListener('load', () => resolve())
41
+ script.addEventListener('error', () => reject(new Error('Failed to load Leaflet')))
42
+ document.head.appendChild(script)
43
+ })
44
+ return leafletScriptPromise
45
+ }
46
+
47
+ // Always includes &libraries=places so that AddressComponent autocomplete works
48
+ // whether or not a MapComponent also loads Google Maps on the same page.
49
+ export function loadGoogleMapsScript (apiKey: string): Promise<void> {
50
+ if ((window as any).google?.maps) return Promise.resolve()
51
+ if (googleMapsScriptPromise) return googleMapsScriptPromise
52
+
53
+ googleMapsScriptPromise = new Promise<void>((resolve, reject) => {
54
+ ;(window as any).__midwestGoogleMapsReady = resolve
55
+ const script = document.createElement('script')
56
+ script.src = `https://maps.googleapis.com/maps/api/js?key=${encodeURIComponent(apiKey)}&callback=__midwestGoogleMapsReady&loading=async&libraries=places`
57
+ script.addEventListener('error', () => reject(new Error('Failed to load Google Maps')))
58
+ document.head.appendChild(script)
59
+ })
60
+ return googleMapsScriptPromise
61
+ }