Prayer Progress's pointer: once per page load, and "Keep tooltip turned on"
- pointerKeep maps (Prayer Progress only) point ONCE PER PAGE LOAD: the pointer shows the first time the map is on screen in a load. Opening the popup hides it for the rest of that load, and the next full load shows it again. The memory is a module-scope Set (pointerDoneThisLoad), because the gallery remounts a heavy tab's MapInfo on every switch back. It is marked when the pointer is on screen, not on mount. Nothing about it is persisted any more (no seen write in show() or hide()). - The keep box (still stored, per map) keeps the pointer after the popup closes and on every appearance. A page-load pointer ignores the every-map off switch, which is not offered beside it. - The label is "Keep tooltip turned on" (en), with de retuned to match; the other nine already say "keep ... on". - Rebuilt doxa-simple-map and doxa-maps-spa, then tree and fix:sri.
This commit is contained in:
parent
48a1a747ba
commit
fa01a77799
13 changed files with 79 additions and 53 deletions
|
|
@ -27,8 +27,8 @@
|
|||
*
|
||||
* ★ THE POINTER GOES FOR GOOD, per map, once its popup has been opened AND closed (opening alone
|
||||
* could be a mis-tap). The checkbox in the popup turns the pointer off on EVERY map. A map given
|
||||
* `pointer-keep` offers "Keep tooltip activated" instead: opening alone retires its pointer, and the box
|
||||
* keeps it showing on every load (see the prop). All of it lives in
|
||||
* `pointer-keep` points ONCE PER PAGE LOAD instead, and offers "Keep tooltip turned on" in place of that
|
||||
* box (see the prop). What is stored lives in
|
||||
* localStorage, read through a guard: private browsing and sandboxed frames throw on access, and a
|
||||
* hint must never be the thing that breaks a page. The button itself always stays.
|
||||
*
|
||||
|
|
@ -78,9 +78,11 @@ const props = defineProps({
|
|||
*/
|
||||
trigger: { type: String, default: 'floating', validator: (v) => ['floating', 'control'].includes(v) },
|
||||
/**
|
||||
* Offer "Keep tooltip activated" in the popup, IN PLACE OF the every-map "don't point again" box. Off by
|
||||
* default: opening the popup once retires this map's pointer, as before. Checked: the pointer keeps
|
||||
* showing on every load. Per map (its storageKey), so it answers only for the map that offers it.
|
||||
* The pointer model of a map that offers "Keep tooltip turned on" (IN PLACE OF the every-map "don't
|
||||
* point again" box). Its pointer shows ONCE PER PAGE LOAD: the first time the map is on screen in that
|
||||
* load. Opening the popup hides it for the rest of that load only, and the next full load shows it
|
||||
* again: page-load memory (pointerDoneThisLoad, below), never storage. The box, off by default, keeps it
|
||||
* showing after the popup closes and on every appearance; that preference IS stored, per map.
|
||||
*/
|
||||
pointerKeep: { type: Boolean, default: false },
|
||||
})
|
||||
|
|
@ -109,16 +111,29 @@ function writeStore(k, v) { try { window.localStorage.setItem(k, v) } catch { /*
|
|||
const pointing = ref(false)
|
||||
const pointerOff = ref(false)
|
||||
const keep = ref(false)
|
||||
// A kept pointer outranks both "seen" and the every-map off switch: it is this map's own, later answer.
|
||||
const wantPointer = () => keep.value || (!pointerOff.value && readStore(SEEN + props.storageKey) !== '1')
|
||||
function refreshPointer() {
|
||||
pointerOff.value = readStore(OFF) === 'off'
|
||||
keep.value = props.pointerKeep && readStore(KEEP + props.storageKey) === '1'
|
||||
pointing.value = wantPointer()
|
||||
if (props.pointerKeep) {
|
||||
keep.value = readStore(KEEP + props.storageKey) === '1'
|
||||
pointing.value = keep.value || !pointerDoneThisLoad.has(props.storageKey)
|
||||
return
|
||||
}
|
||||
pointing.value = !pointerOff.value && readStore(SEEN + props.storageKey) !== '1'
|
||||
}
|
||||
// Another map on the page (same document) or another tab (storage event) turned the pointer off. A
|
||||
// page-load pointer answers only its own keep box: the every-map switch is not offered beside it, and a
|
||||
// switch the reader cannot see on this map must not silently take its pointer away.
|
||||
function onPointerOff() { if (!props.pointerKeep) refreshPointer() }
|
||||
function onStorage(e) {
|
||||
if (props.pointerKeep) {
|
||||
if (!e || e.key === KEEP + props.storageKey) {
|
||||
keep.value = readStore(KEEP + props.storageKey) === '1'
|
||||
if (keep.value) pointing.value = true
|
||||
}
|
||||
return
|
||||
}
|
||||
if (!e || e.key === OFF || e.key === SEEN + props.storageKey) refreshPointer()
|
||||
}
|
||||
// Another map on the page (same document) or another tab (storage event) turned the pointer off.
|
||||
function onPointerOff() { refreshPointer() }
|
||||
function onStorage(e) { if (!e || e.key === OFF || e.key === SEEN + props.storageKey || e.key === KEEP + props.storageKey) refreshPointer() }
|
||||
onMounted(() => {
|
||||
refreshPointer()
|
||||
window.addEventListener(OFF_EVENT, onPointerOff)
|
||||
|
|
@ -131,7 +146,7 @@ onBeforeUnmount(() => {
|
|||
function setPointerOff(off) {
|
||||
pointerOff.value = off
|
||||
writeStore(OFF, off ? 'off' : 'on')
|
||||
pointing.value = wantPointer()
|
||||
pointing.value = !off && readStore(SEEN + props.storageKey) !== '1'
|
||||
try { window.dispatchEvent(new CustomEvent(OFF_EVENT)) } catch { /* no window */ }
|
||||
}
|
||||
function setKeep(on) {
|
||||
|
|
@ -148,16 +163,15 @@ const failed = reactive({})
|
|||
async function show() {
|
||||
opens.value++
|
||||
open.value = true
|
||||
// With the keep box on offer, OPENING the popup is what retires the pointer (the box is right there
|
||||
// to say otherwise), so a reader who opens it and reloads without closing is not pointed at again.
|
||||
if (props.pointerKeep) writeStore(SEEN + props.storageKey, '1')
|
||||
// A page-load pointer is done for this load once the popup has been opened (in memory only).
|
||||
if (props.pointerKeep) pointerDoneThisLoad.add(props.storageKey)
|
||||
await nextTick()
|
||||
closeEl.value?.focus()
|
||||
}
|
||||
async function hide() {
|
||||
open.value = false
|
||||
writeStore(SEEN + props.storageKey, '1')
|
||||
pointing.value = keep.value
|
||||
if (!props.pointerKeep) writeStore(SEEN + props.storageKey, '1')
|
||||
pointing.value = props.pointerKeep && keep.value
|
||||
await nextTick()
|
||||
// Back to whichever button the reader can see: the map's own control when it is on screen, else ours.
|
||||
const back = props.trigger === 'control' && controlShown.value && control.value ? control.value : btnEl.value
|
||||
|
|
@ -263,6 +277,11 @@ onBeforeUnmount(() => {
|
|||
})
|
||||
watch(open, (v) => { control.value?.setAttribute('aria-expanded', String(v)) })
|
||||
const floatingShown = () => props.trigger !== 'control' || !controlShown.value
|
||||
// The pointer beside the control has been on screen: this page load has pointed once, so a remount (the
|
||||
// gallery rebuilds a heavy tab on every switch back) does not point again. Marked on SCREEN, not on mount:
|
||||
// a tab's MapInfo can mount inside a hidden pane.
|
||||
watch(() => props.pointerKeep && pointing.value && !open.value && !floatingShown() && !!ctlAt.value,
|
||||
(on) => { if (on) pointerDoneThisLoad.add(props.storageKey) }, { immediate: true })
|
||||
// ★ aria-modal PROMISES THE READER THAT TAB STAYS INSIDE, so keep it there: Tab from the last control
|
||||
// wraps to the first, Shift+Tab from the first to the last. The active element is read from the shadow
|
||||
// root (document.activeElement would be the host element). Hidden controls are skipped.
|
||||
|
|
@ -445,6 +464,13 @@ useShadowStyles(`
|
|||
`, 'map-info')
|
||||
</script>
|
||||
|
||||
<script>
|
||||
// ★ PAGE-LOAD MEMORY, shared by every MapInfo on the page, so it must live in module scope: the gallery
|
||||
// REMOUNTS a heavy tab's MapInfo on each switch back, and component state dies with the instance. It holds
|
||||
// the storageKeys whose page-load pointer (pointerKeep) is done for this load; a full reload starts empty.
|
||||
const pointerDoneThisLoad = new Set()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div ref="rootEl" class="mi" :dir="isRtl() ? 'rtl' : 'ltr'" :lang="lang()">
|
||||
<button v-show="floatingShown()" ref="btnEl" type="button" class="mi-btn" :class="placement === 'top-left' ? 'mi-at-left' : 'mi-at-right'"
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
"moreRows": "Weitere Zeilen in der vollständigen Tabelle: {n}",
|
||||
"openFull": "In voller Größe öffnen",
|
||||
"pointerOff": "Nicht mehr auf diese Schaltfläche hinweisen",
|
||||
"keepPointer": "Tooltip aktiviert lassen",
|
||||
"keepPointer": "Tooltip eingeschaltet lassen",
|
||||
"tab": {
|
||||
"upg-100": {
|
||||
"lead": "Die UPG-100-Liste auf einer Karte: unerreichte Volksgruppen, zusammengefasst in Zonen, die Sie im Gebet übernehmen können.",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
"moreRows": "More rows in the full spreadsheet: {n}",
|
||||
"openFull": "Open full size",
|
||||
"pointerOff": "Don't point at this button again",
|
||||
"keepPointer": "Keep tooltip activated",
|
||||
"keepPointer": "Keep tooltip turned on",
|
||||
"tab": {
|
||||
"upg-100": {
|
||||
"lead": "The UPG-100 list on one map: unreached people groups, gathered into zones you can adopt in prayer.",
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -61,7 +61,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-maps-spa> custom element. -->
|
||||
<script src="../../doxa-maps-spa.js" integrity="sha384-953GDTereBaH6E44k1JIYWzMZtiaiwRVosEG2MqYARwl9loRarojvZ0h3pCuFULQ" crossorigin="anonymous"></script>
|
||||
<script src="../../doxa-maps-spa.js" integrity="sha384-Gxoe9XmVTaw+DQ7jR9x6kr+lbZX6CWPxFPYALOM+S+QDT8TlLY3YzBQwiuDNKy7o" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-maps-spa> custom element. -->
|
||||
<script src="../doxa-maps-spa.js" integrity="sha384-953GDTereBaH6E44k1JIYWzMZtiaiwRVosEG2MqYARwl9loRarojvZ0h3pCuFULQ" crossorigin="anonymous"></script>
|
||||
<script src="../doxa-maps-spa.js" integrity="sha384-Gxoe9XmVTaw+DQ7jR9x6kr+lbZX6CWPxFPYALOM+S+QDT8TlLY3YzBQwiuDNKy7o" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -361,7 +361,7 @@
|
|||
"bundle": "doxa-maps-spa",
|
||||
"scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js",
|
||||
"output": "dx-maps/doxa-maps-spa/doxa-maps-spa.js",
|
||||
"integrity": "sha384-953GDTereBaH6E44k1JIYWzMZtiaiwRVosEG2MqYARwl9loRarojvZ0h3pCuFULQ",
|
||||
"integrity": "sha384-Gxoe9XmVTaw+DQ7jR9x6kr+lbZX6CWPxFPYALOM+S+QDT8TlLY3YzBQwiuDNKy7o",
|
||||
"elements": [
|
||||
"doxa-maps-spa"
|
||||
],
|
||||
|
|
@ -389,7 +389,7 @@
|
|||
"scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-maps-spa/doxa-maps-spa/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-953GDTereBaH6E44k1JIYWzMZtiaiwRVosEG2MqYARwl9loRarojvZ0h3pCuFULQ\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-maps-spa>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-Gxoe9XmVTaw+DQ7jR9x6kr+lbZX6CWPxFPYALOM+S+QDT8TlLY3YzBQwiuDNKy7o\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-maps-spa>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -462,7 +462,7 @@
|
|||
"bundle": "doxa-simple-map",
|
||||
"scriptUrl": "./doxa-simple-map/doxa-simple-map.js",
|
||||
"output": "dx-maps/doxa-simple-map/doxa-simple-map.js",
|
||||
"integrity": "sha384-5pUXPKkzBznEBqIoa5soXOBvZIXIYhCIdKxDmWG5P7q7E0dT3yUDPxMVVtGRfKRt",
|
||||
"integrity": "sha384-R+lvbsSxDqk6c8SDAVIM0LFoQYFgTzk8I0QcjnKA5WFFMNgUMsCDueOi+Xxz7nfQ",
|
||||
"elements": [
|
||||
"doxa-map",
|
||||
"doxa-simple-map"
|
||||
|
|
@ -482,8 +482,8 @@
|
|||
"scriptUrl": "./doxa-simple-map/doxa-simple-map.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-simple-map/doxa-simple-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-5pUXPKkzBznEBqIoa5soXOBvZIXIYhCIdKxDmWG5P7q7E0dT3yUDPxMVVtGRfKRt\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<doxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-map>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-5pUXPKkzBznEBqIoa5soXOBvZIXIYhCIdKxDmWG5P7q7E0dT3yUDPxMVVtGRfKRt\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<doxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-map>"
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-R+lvbsSxDqk6c8SDAVIM0LFoQYFgTzk8I0QcjnKA5WFFMNgUMsCDueOi+Xxz7nfQ\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<doxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-map>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-R+lvbsSxDqk6c8SDAVIM0LFoQYFgTzk8I0QcjnKA5WFFMNgUMsCDueOi+Xxz7nfQ\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<doxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-map>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -70,7 +70,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-map> custom element. -->
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-5pUXPKkzBznEBqIoa5soXOBvZIXIYhCIdKxDmWG5P7q7E0dT3yUDPxMVVtGRfKRt" crossorigin="anonymous"></script>
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-R+lvbsSxDqk6c8SDAVIM0LFoQYFgTzk8I0QcjnKA5WFFMNgUMsCDueOi+Xxz7nfQ" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-map> custom element. -->
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-5pUXPKkzBznEBqIoa5soXOBvZIXIYhCIdKxDmWG5P7q7E0dT3yUDPxMVVtGRfKRt" crossorigin="anonymous"></script>
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-R+lvbsSxDqk6c8SDAVIM0LFoQYFgTzk8I0QcjnKA5WFFMNgUMsCDueOi+Xxz7nfQ" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-map> custom element. -->
|
||||
<script src="../doxa-simple-map.js" integrity="sha384-5pUXPKkzBznEBqIoa5soXOBvZIXIYhCIdKxDmWG5P7q7E0dT3yUDPxMVVtGRfKRt" crossorigin="anonymous"></script>
|
||||
<script src="../doxa-simple-map.js" integrity="sha384-R+lvbsSxDqk6c8SDAVIM0LFoQYFgTzk8I0QcjnKA5WFFMNgUMsCDueOi+Xxz7nfQ" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-map> custom element. -->
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-5pUXPKkzBznEBqIoa5soXOBvZIXIYhCIdKxDmWG5P7q7E0dT3yUDPxMVVtGRfKRt" crossorigin="anonymous"></script>
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-R+lvbsSxDqk6c8SDAVIM0LFoQYFgTzk8I0QcjnKA5WFFMNgUMsCDueOi+Xxz7nfQ" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -361,7 +361,7 @@
|
|||
"bundle": "doxa-maps-spa",
|
||||
"scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js",
|
||||
"output": "dx-maps/doxa-maps-spa/doxa-maps-spa.js",
|
||||
"integrity": "sha384-953GDTereBaH6E44k1JIYWzMZtiaiwRVosEG2MqYARwl9loRarojvZ0h3pCuFULQ",
|
||||
"integrity": "sha384-Gxoe9XmVTaw+DQ7jR9x6kr+lbZX6CWPxFPYALOM+S+QDT8TlLY3YzBQwiuDNKy7o",
|
||||
"elements": [
|
||||
"doxa-maps-spa"
|
||||
],
|
||||
|
|
@ -389,7 +389,7 @@
|
|||
"scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-maps-spa/doxa-maps-spa/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-953GDTereBaH6E44k1JIYWzMZtiaiwRVosEG2MqYARwl9loRarojvZ0h3pCuFULQ\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-maps-spa>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-Gxoe9XmVTaw+DQ7jR9x6kr+lbZX6CWPxFPYALOM+S+QDT8TlLY3YzBQwiuDNKy7o\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-maps-spa>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -462,7 +462,7 @@
|
|||
"bundle": "doxa-simple-map",
|
||||
"scriptUrl": "./doxa-simple-map/doxa-simple-map.js",
|
||||
"output": "dx-maps/doxa-simple-map/doxa-simple-map.js",
|
||||
"integrity": "sha384-5pUXPKkzBznEBqIoa5soXOBvZIXIYhCIdKxDmWG5P7q7E0dT3yUDPxMVVtGRfKRt",
|
||||
"integrity": "sha384-R+lvbsSxDqk6c8SDAVIM0LFoQYFgTzk8I0QcjnKA5WFFMNgUMsCDueOi+Xxz7nfQ",
|
||||
"elements": [
|
||||
"doxa-map",
|
||||
"doxa-simple-map"
|
||||
|
|
@ -482,8 +482,8 @@
|
|||
"scriptUrl": "./doxa-simple-map/doxa-simple-map.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-simple-map/doxa-simple-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-5pUXPKkzBznEBqIoa5soXOBvZIXIYhCIdKxDmWG5P7q7E0dT3yUDPxMVVtGRfKRt\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<doxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-map>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-5pUXPKkzBznEBqIoa5soXOBvZIXIYhCIdKxDmWG5P7q7E0dT3yUDPxMVVtGRfKRt\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<doxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-map>"
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-R+lvbsSxDqk6c8SDAVIM0LFoQYFgTzk8I0QcjnKA5WFFMNgUMsCDueOi+Xxz7nfQ\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<doxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-map>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-R+lvbsSxDqk6c8SDAVIM0LFoQYFgTzk8I0QcjnKA5WFFMNgUMsCDueOi+Xxz7nfQ\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<doxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-map>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue