Compare commits
56 commits
postervers
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a6d392a1a | ||
|
|
e209096fd7 | ||
|
|
96a0cd6ca8 | ||
|
|
3e226bd807 | ||
|
|
67ac9a8670 | ||
|
|
1855c8cad4 | ||
|
|
149e8d144b | ||
|
|
1fca636297 | ||
|
|
1c5711e339 | ||
|
|
ca2d36c8fd | ||
|
|
926815240d | ||
|
|
62fad6ed5a | ||
|
|
4c3a118d2e | ||
|
|
5d3b2cf95d | ||
|
|
e8a1a1f12c | ||
|
|
4ec5905492 | ||
|
|
6d48d8b178 | ||
|
|
fb1c646553 | ||
|
|
cee32f2732 | ||
|
|
3a7e4a3eaf | ||
|
|
a28ee3f5ee | ||
|
|
896775903b | ||
|
|
8e13e53389 | ||
|
|
05ae488eac | ||
|
|
d94e5351a3 | ||
|
|
bcbaa816ae | ||
|
|
32c6eb4fd4 | ||
|
|
f85e880b2c | ||
|
|
055b17b5b1 | ||
|
|
8fcb784556 | ||
|
|
792def78b6 | ||
|
|
be28255bd0 | ||
|
|
3e041ba646 | ||
|
|
a6c5ca5a86 | ||
|
|
492229c5ba | ||
|
|
723cd53b43 | ||
|
|
15d0ef3558 | ||
|
|
05d82ca558 | ||
|
|
2b1f55e7cf | ||
|
|
dcb005a734 | ||
|
|
6884c2a052 | ||
|
|
8a90eb5000 | ||
|
|
9c170fd143 | ||
|
|
e7879fb8c6 | ||
|
|
31ebb77a07 | ||
|
|
a97312142f | ||
|
|
b843fcade1 | ||
|
|
6f3a45f44f | ||
|
|
f69a10c8e0 | ||
|
|
8bd66a3131 | ||
|
|
446b0bfc8f | ||
|
|
0a4c9cc600 | ||
|
|
095aa67fbf | ||
|
|
6dfaf630e1 | ||
|
|
f2c8c0a90b | ||
|
|
042d2ec10f |
123 changed files with 2615 additions and 2011 deletions
147
README.md
147
README.md
|
|
@ -37,8 +37,9 @@ Built with love, with the prayer that these maps bless the nations.
|
|||
**A blessing for you.** These maps and posters are given to bless the people who bless the nations.
|
||||
We love you, and we are thankful for your work. We bless you in Jesus' name.
|
||||
|
||||
Every poster is in Posterverse (`plugin-designs/posterverse/`): UPG100 Posters, Country Posters,
|
||||
Poster Design and Wall of People Groups. They are all in the Plugin Studio (`bun run dev`) too.
|
||||
Posterverse (`plugin-designs/posterverse/`) brings the six poster plugins together: UPG100 Posters, Country
|
||||
Posters, Poster Design, Wall of People Groups, Bible Posters and Bless India Posters. They are all in the
|
||||
Plugin Studio (`bun run dev`) too.
|
||||
|
||||
# dx-maps — one build, maps that embed everywhere
|
||||
|
||||
|
|
@ -60,7 +61,7 @@ capabilities, three outputs, one shared library, one build.
|
|||
| 🔗 **Maps that talk to each other** | Maps share props and events, so one app can nest them and a click in one can move another. |
|
||||
| 🪶 **Small bundles** | Each map's file carries only the parts of the shared library it uses (tree-shaken). |
|
||||
| ⚙️ **One build step** | `bun run build` makes every map at once. |
|
||||
| 📦 **Three outputs** | A web folder (iframe, script embed), a mobile app, a desktop app — [the 3 outputs](#what-the-build-makes--3-outputs). |
|
||||
| 📦 **Three outputs** | A web folder (iframe, script embed), a mobile app, and a desktop app built from the same code you run in the browser — [the 3 outputs](#what-the-build-makes--3-outputs). |
|
||||
|
||||
| What dx-maps set out to do | Proof |
|
||||
|---|---|
|
||||
|
|
@ -70,7 +71,7 @@ capabilities, three outputs, one shared library, one build.
|
|||
| **One app nests every map** — and each stays embeddable on its own | [capability 5](#capability-5--app-shell-the-research-gallery) · `bun run check:composite-reg` |
|
||||
| **5 capabilities, every one shippable in every output** | `bun run verify:5-caps` |
|
||||
| **Shared library, private plugins** — reuse without breaking each other | `bun run check:library-index` |
|
||||
| **One owner per plugin, a second reader for every change, one merge at a time** | [agent swarm](#build-it-with-an-agent-swarm) |
|
||||
| **One agent per plugin, the repo agent reads every change, one merge at a time** | [agent swarm](#build-it-with-an-agent-swarm) |
|
||||
|
||||
## For vibe coders: build, open the Studio, embed a map
|
||||
|
||||
|
|
@ -125,9 +126,9 @@ people groups of the world. When you work here, the goal is one of these:
|
|||
library and the checks.
|
||||
- **One plugin per folder** in `plugin-designs/`; shared code goes in `library/` only if it stays reusable for
|
||||
every other plugin.
|
||||
- **Land on `development`**, one change at a time through the lock, with `bun run gates:pre` passing. `main` is
|
||||
- **Join `development`** (the pilot), one change at a time through the lock, with `gates:pre`, `gates:post` and the landing checks passing. `main` is
|
||||
production and moves only on a publish.
|
||||
- These 8 maps are in production: the 7 in the gallery, plus the country map for DX Life's country pages. The
|
||||
- These 8 maps are in production: the 7 production maps in the gallery, plus the country map for DX Life's country pages. The
|
||||
other maps are experimental: leave them as they are unless your task is one
|
||||
of them.
|
||||
|
||||
|
|
@ -135,11 +136,12 @@ people groups of the world. When you work here, the goal is one of these:
|
|||
|
||||
---
|
||||
|
||||
## The 7 production maps
|
||||
## The production maps
|
||||
|
||||
**Seven maps DX uses today** — each one a plugin you can embed on its own, and all seven together in
|
||||
the Research Gallery, which DX Life publishes as **Deep Research**. An eighth production map, the country map
|
||||
(`country-map`), draws DX Life's country pages; it isn't in the gallery.
|
||||
**Seven production maps DX uses today, all together in the Research Gallery**, which DX Life publishes
|
||||
as **Deep Research**; each one is also a plugin you can embed on its own. The gallery also carries two
|
||||
poster plugins still marked experimental, Country Posters and Poster Design (see Posterverse). An eighth
|
||||
production map, the country map (`country-map`), draws DX Life's country pages; it isn't in the gallery.
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
|
|
@ -152,7 +154,7 @@ the Research Gallery, which DX Life publishes as **Deep Research**. An eighth pr
|
|||
<td width="25%" valign="top"><img src="documentation/readme-images/cap4-upg100-mfe.png" alt="UPG100 Posters"><br><b>UPG100 Posters</b><br><sub>prayer lists of 100 people groups, with posters to print</sub></td>
|
||||
<td width="25%" valign="top"><img src="documentation/readme-images/prod-cities-internet.png" alt="Cities with Internet"><br><b>Cities with Internet</b><br><sub>internet access where unreached people groups live</sub></td>
|
||||
<td width="25%" valign="top"><img src="documentation/readme-images/prod-gospel-resources.png" alt="Gospel Resources"><br><b>Gospel Resources</b><br><sub>which people groups have scripture, film or audio — and which have nothing</sub></td>
|
||||
<td width="25%" valign="top"><img src="documentation/readme-images/cap5-doxa-maps-spa.png" alt="Research Gallery"><br><b>Research Gallery</b><br><sub>all seven in one app — capability 5</sub></td>
|
||||
<td width="25%" valign="top"><img src="documentation/readme-images/cap5-doxa-maps-spa.png" alt="Research Gallery"><br><b>Research Gallery</b><br><sub>all nine in one app — capability 5</sub></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
|
@ -259,10 +261,9 @@ If you build with AI agents, this repo is made for you:
|
|||
updating the moment you save.
|
||||
- **Speak instead of typing.** Rudder, an offline voice-to-text tool, sits as a corner widget in the
|
||||
Studio: look at a plugin, say what you see, and hand the text to your agent. Nothing leaves your
|
||||
computer (Linux today).
|
||||
- **One plugin, several outputs.** The same plugin ships as a web embed or a mobile app, and a plugin
|
||||
can target the desktop: Rudder is the desktop example, a corner widget in the Studio and its own
|
||||
desktop app (`bun run desktop:build rudder-voice`, see [HOWTO-build-the-desktop-app](./documentation/HOWTO-build-the-desktop-app.md)).
|
||||
computer. It also runs as its own desktop app.
|
||||
- **One plugin, several outputs.** The same code ships as a web embed, a mobile app or a desktop app
|
||||
([the desktop app](#output-3--the-desktop-app--works-today)).
|
||||
- **Build together.** [Run it in the cloud](#run-it-in-the-cloud) gives a whole team one shared dev
|
||||
server.
|
||||
|
||||
|
|
@ -326,7 +327,7 @@ improvement on the next build.
|
|||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>What the Research Gallery is made of — seven production maps, an Experimental shelf, all five capabilities in one plugin</b></summary>
|
||||
<summary><b>What the Research Gallery is made of — seven production maps, two poster plugins, an Experimental shelf, all five capabilities in one plugin</b></summary>
|
||||
|
||||
```text
|
||||
Research Gallery <doxa-maps-spa> capability 5
|
||||
|
|
@ -341,10 +342,12 @@ Research Gallery <doxa-maps-spa> capability 5
|
|||
│ ├─ regions list regions-list capability 1
|
||||
│ └─ region dashboards region-dashboards capability 1
|
||||
├─ Prayer Mobilization
|
||||
│ ├─ Prayer Progress doxa-simple-map capability 2
|
||||
│ ├─ UPG100 Posters upg-100-mfe capability 4
|
||||
│ │ ├─ zoned map upg-100-list capability 1
|
||||
│ │ └─ poster wall poster-wall capability 1
|
||||
│ └─ Prayer Progress doxa-simple-map capability 2
|
||||
│ ├─ Country Posters country-posters-mfe capability 4
|
||||
│ └─ Poster Design poster-design-mfe capability 4
|
||||
├─ Gospel Research
|
||||
│ ├─ Cities with Internet connectivity-map capability 1
|
||||
│ └─ Gospel Resources resources-map capability 1
|
||||
|
|
@ -352,7 +355,6 @@ Research Gallery <doxa-maps-spa> capability 5
|
|||
├─ prayer walk planner prayer-walk-planner capability 1
|
||||
├─ UPG neighbor upg-neighbor capability 3
|
||||
├─ all people groups all-people-groups capability 1
|
||||
├─ country posters country-posters capability 4
|
||||
├─ vision card doxa-vision-card capability 2
|
||||
├─ PPLR data maps pplr-data-maps capability 3
|
||||
└─ Wall of People Groups wall-of-people-groups capability 3
|
||||
|
|
@ -498,7 +500,7 @@ files in the repo. The `Dockerfile` and `compose.yaml` sit at the repo root; rec
|
|||
|
||||
**Plugin Studio: the public Studio, with PocketBase.** The highest route: the same container with
|
||||
`ACCESS=public`, on your research subdomain.
|
||||
- The Plugin Studio follows `development` and is open to everyone, so what agents land shows up live.
|
||||
- The Plugin Studio follows `development` and is open to everyone, so what agents add to the pilot shows up live.
|
||||
- Its `/cdn`, built from `main`, serves your site's production maps.
|
||||
- Publishing and PocketBase's dashboard ask for a password you set when you deploy; OIDC stays available.
|
||||
|
||||
|
|
@ -615,21 +617,38 @@ bun run phone # builds the app and installs it on a phone or emulator
|
|||
|
||||
### Output 3 — the desktop app ✅ works today
|
||||
|
||||
**We got the JAMstack map app running as a desktop app.**
|
||||
|
||||

|
||||
|
||||
**Rudder, the voice-to-text plugin, runs as its own desktop app too**, built with
|
||||
`bun run desktop:build rudder-voice` ([HOWTO-build-the-desktop-app](./documentation/HOWTO-build-the-desktop-app.md)).
|
||||
**Run it in your browser, then ship the same code as a desktop app.** [Tauri](https://tauri.app) wraps
|
||||
it in a small Rust program that runs on your computer. Rudder, the offline voice-to-text plugin, is the
|
||||
proof: its Linux desktop app works and is used to dictate the work on many of these maps. Its goal is
|
||||
private voice-to-text that you own: offline, no telemetry, no cloud.
|
||||
|
||||

|
||||
|
||||
<details>
|
||||
<summary><b>More about the desktop app</b></summary>
|
||||
<summary><b>More: how it works, Rudder's goal, and what isn't run yet</b></summary>
|
||||
|
||||
[Tauri](https://tauri.app) wraps the same built folder into a desktop program: it produced a Linux
|
||||
app and a `.deb` installer. It isn't in the dx bundler for production yet — and the Research Gallery
|
||||
could become a strong desktop app.
|
||||
**How it works.** What you build and try on the development server (`bun run dev`) is what ships to
|
||||
the desktop; there is no second code base. Rudder runs as a corner widget in the Plugin Studio and as
|
||||
its own desktop app, built with `bun run desktop:build rudder-voice`
|
||||
([HOWTO-build-the-desktop-app](./documentation/HOWTO-build-the-desktop-app.md)): look at a plugin, say
|
||||
what you see, and hand the text to an agent. The map app runs as a desktop app the same way.
|
||||
|
||||
**Rudder's goal, from the start: private voice-to-text that you own.**
|
||||
|
||||
- **Offline, with no telemetry and no cloud.** Your own code and your own self-hosted speech model
|
||||
(NVIDIA's open NeMo-Speech.cpp runtime and a small speech model, about 742 MB) run on a modest amount
|
||||
of your computer's CPU. After a one-time download of the runtime and the model, nothing needs the
|
||||
network; a trace of the speech runtime showed zero sockets and zero DNS lookups. The aim is that it
|
||||
works out of the box: today the first-run download is still a manual step.
|
||||
- **Be careful who commits to Rudder.** A voice-to-text tool hears everything said near it, so one
|
||||
bad change could turn it into spyware. Take changes to `plugin-designs/rudder-voice/` and
|
||||
`backend/rudder-engine/` only from people you trust, and have a second person read every one.
|
||||
- **Planned: an egress monitor** that shows you, as it runs, that Rudder sends no data out to anyone.
|
||||
|
||||
**What isn't run yet.** Tauri builds a Linux app and a `.deb` installer today. The macOS and Windows
|
||||
builds are set up but have not been run ([the HOWTO](./documentation/HOWTO-build-the-desktop-app.md)
|
||||
says which steps are proven). The desktop build runs on demand with the commands below; the automatic
|
||||
production build doesn't make it yet. The Research Gallery could become a strong desktop app too.
|
||||
|
||||
```bash
|
||||
bun run check:tauri # checks the desktop setup — needs no Rust tools
|
||||
|
|
@ -725,8 +744,9 @@ has one agent that owns it, and the work moves through three kinds of branch:
|
|||
with hot reload follows it, so each change that joins can be seen there within about 15 seconds.
|
||||
- **The landing branch (`main`)** is what ships. It moves only when a person approves a publish, and
|
||||
the landing server rebuilds from it.
|
||||
- **PR branches** hold one plugin or feature each. They start from the landing branch and join the
|
||||
pilot branch, one at a time, after the checks pass and a second reader has read the change.
|
||||
- **PR branches** hold one plugin or feature each. They start from the pilot branch, take in the latest
|
||||
pilot by merging (never rebasing), and join it one at a time, after the checks pass and a second agent,
|
||||
usually the repository's agent, has read the change.
|
||||
|
||||
**It scales by adding PR branches, not by sharing one.** Many people, each with several agents, can
|
||||
work on many plugins at the same time: every plugin or feature gets its own PR branch, and each one
|
||||
|
|
@ -734,10 +754,12 @@ can be seen on the pilot server as soon as it joins the pilot.
|
|||
|
||||
**Bring your own harness.** dx-maps works with whatever AI coding agent or agent harness you already
|
||||
use. The repo gives you the branch strategy below, the checks (`bun run gates:pre`) and the Plugin
|
||||
Studio; it does not ship a harness. Roles such as a coordinator that puts the merges onto the pilot in order, or a
|
||||
gate-keeper that reads each change before it joins the pilot, are jobs your harness gives to its agents.
|
||||
Studio; it does not ship a harness. There are three roles: one agent per repository, which handles its
|
||||
branches and watches the work being done in it; one agent per plugin; and one shepherd agent that all the
|
||||
other agents talk to, which keeps order and puts the merges onto the pilot in order. Your harness gives
|
||||
these jobs to its agents.
|
||||
|
||||

|
||||

|
||||
|
||||
<sub>[Open the diagram full size](documentation/readme-images/delegation-model.png): on a phone its small text needs it.</sub>
|
||||
|
||||
|
|
@ -748,11 +770,11 @@ gate-keeper that reads each change before it joins the pilot, are jobs your harn
|
|||
```bash
|
||||
git fetch origin && git switch -c development origin/main && git push -u origin development
|
||||
```
|
||||
3. **One PR branch and worktree per feature**, each started from the landing branch, then install
|
||||
3. **One PR branch and worktree per feature**, each started from the pilot branch, then install
|
||||
once in each:
|
||||
```bash
|
||||
git worktree add -b regions/work ../dx-maps-regions origin/main
|
||||
git worktree add -b upg100/work ../dx-maps-upg100 origin/main
|
||||
git worktree add -b regions/work ../dx-maps-regions origin/development
|
||||
git worktree add -b upg100/work ../dx-maps-upg100 origin/development
|
||||
cd ../dx-maps-regions && bun install --frozen-lockfile
|
||||
```
|
||||
4. **One preview server per agent on your own machine, each on its own port** (in the cloud, the one
|
||||
|
|
@ -760,35 +782,43 @@ gate-keeper that reads each change before it joins the pilot, are jobs your harn
|
|||
```bash
|
||||
bun x vite --port 5301 --strictPort # the next agent uses 5302, and so on
|
||||
```
|
||||
5. **Join the pilot one at a time, through a lock that works like a merge queue.** Inside the lock, merge your PR branch into a
|
||||
throwaway copy of the pilot branch, run the checks, and push that merge only if nothing fails
|
||||
(`gates:pre` exits non-zero when a check fails, so the push never runs then). Your PR branch itself
|
||||
stays one feature on the landing branch; only the pilot gets the merge:
|
||||
5. **Join the pilot one at a time, through a lock that works like a merge queue.** First merge the
|
||||
latest pilot into your PR branch (merge, never rebase) and fix any clash there. A second agent reads
|
||||
the change, and looks at it on screen where it shows. Then, inside the lock, merge the pilot once more
|
||||
in case it moved, run the checks (`gates:pre`, `gates:post`) and the landing checks (fresh bundles,
|
||||
the tree, the integrity hashes, no conflict markers), and push only if nothing fails:
|
||||
```bash
|
||||
git fetch origin && git merge --no-edit origin/development # on your PR branch: the latest pilot
|
||||
flock /tmp/dx-maps-development.lock sh -c '
|
||||
git fetch origin && git switch --detach origin/development &&
|
||||
git merge --no-edit regions/work &&
|
||||
bun run gates:pre && git push origin HEAD:development
|
||||
git switch regions/work'
|
||||
git fetch origin && git merge --no-edit origin/development &&
|
||||
bun run gates:pre && bun run gates:post &&
|
||||
node internal/landing-preconditions.mjs &&
|
||||
git push origin HEAD:development'
|
||||
```
|
||||
If the merge stops on a conflict, run `git merge --abort`, fix the clash on your PR branch and join
|
||||
again. `flock` guards one machine. Agents on several machines need a shared lock, such as one your
|
||||
harness provides.
|
||||
6. **One agent owns the full build**; the others build only their own plugin:
|
||||
6. **Each change rebuilds what it touches.** There is no single build owner: rebuild every bundle your
|
||||
change reaches, then the tree and the integrity hashes, and commit them with the change. The landing
|
||||
checks refuse a change whose bundles are stale:
|
||||
```bash
|
||||
BUILD_ALLOW=1 bun run build # the build owner: every plugin
|
||||
BUNDLE=<name> bun x vite build && bun run tree && bun run fix:sri # everyone else: one plugin
|
||||
BUNDLE=<name> bun x vite build # each bundle your change reaches
|
||||
bun run tree && bun run fix:sri # then the tree and the integrity hashes
|
||||
```
|
||||
7. **Publish, when a person approves it:** fast-forward the landing branch to a pilot commit that
|
||||
passed the checks, tag it, and deploy from the tag:
|
||||
Only a change to the build itself (its config or its dependencies) reaches every bundle:
|
||||
`BUILD_ALLOW=1 bun run build`.
|
||||
7. **Publish, when a person approves it:** make sure the release the landing branch is on now has its
|
||||
own version tag (that tag is the rollback point), fast-forward the landing branch to a pilot commit
|
||||
that passed the checks, tag it, and deploy from the tag:
|
||||
```bash
|
||||
git fetch origin && git switch main && git merge --ff-only origin/main
|
||||
git tag -a v0.2.0 -m "Release v0.2.0" && git push origin v0.2.0 # the outgoing release, if untagged
|
||||
git merge --ff-only <development-commit> # a commit that passed the checks
|
||||
bun run gates:pre # the checks must pass on exactly this commit
|
||||
bun run gates:pre && bun run gates:post # the checks must pass on exactly this commit
|
||||
git tag -a v1.0.0 -m "Release v1.0.0" && git push origin main v1.0.0
|
||||
```
|
||||
The tag's `public/dx-maps/` folder is the built site: deploy that
|
||||
([how to deploy](./documentation/DEPLOY.md)). Publish to a public host, such as GitHub, only from
|
||||
The tag's `public/dx-maps/` folder is the built site: deploy that, and build the landing demo from
|
||||
the same tag ([how to deploy](./documentation/DEPLOY.md)). To go back, deploy the previous release's tag. Publish to a public host, such as GitHub, only from
|
||||
the landing branch and only when it is ready.
|
||||
|
||||
### Developing in the cloud with a swarm
|
||||
|
|
@ -826,8 +856,9 @@ So the project works like a busy kitchen:
|
|||
2. **Only one change joins the pilot at a time.** Whoever holds the *pilot lock* first catches up with
|
||||
everyone else's latest work, fixes any clash itself and runs every check; the change goes into the
|
||||
pilot branch only if nothing fails. The pilot branch always works.
|
||||
3. **Someone keeps order.** A coordinator can put the merges onto the pilot in order, and a gate-keeper can read
|
||||
each change by its content before it joins the pilot. Your harness gives these jobs to its agents.
|
||||
3. **Someone keeps order.** One shepherd agent, which all the other agents talk to, keeps order and puts
|
||||
the merges onto the pilot in order; one agent per repository handles its branches and watches the work
|
||||
being done in it. Your harness gives these jobs to its agents.
|
||||
4. **The landing branch moves only when a person approves a publish**, after the checks pass on that exact version.
|
||||
The pilot server follows the pilot branch; the landing server rebuilds from the landing branch.
|
||||
|
||||
|
|
@ -845,7 +876,7 @@ That's how many plugins get built at the same time, in one project, without the
|
|||
| **main** (the landing) | the version that ships: it moves only when a person approves publishing `development` |
|
||||
| **worktree** | a private copy of the project for one agent to work in |
|
||||
| **merge conflict** | two changes touched the same lines; someone has to decide how to combine them |
|
||||
| **merge** | combining your branch with everyone else's latest work; here it happens inside the pilot lock, in a throwaway copy of the pilot |
|
||||
| **merge** | taking everyone else's latest work into your branch: the latest pilot goes into your PR branch (never a rebase), before joining and once more inside the pilot lock |
|
||||
| **pilot lock** | only one change merges onto `development` at a time; its holder catches up and runs every check first |
|
||||
| **tag** | a fixed name for one release commit, such as `v1.0.0`, so you can always deploy exactly it |
|
||||
|
||||
|
|
@ -929,7 +960,7 @@ The studio is a plugin like any other: `plugin-designs/plugin-studio/plugin-stud
|
|||
### Run it in the cloud
|
||||
|
||||
**One shared dev server for the whole team, no laptop setup.** A container clones the repo, follows
|
||||
`development`, and hot-reloads every change an agent lands, so everyone sees the Plugin Studio update in
|
||||
`development`, and hot-reloads every change that joins the pilot, so everyone sees the Plugin Studio update in
|
||||
their browser within seconds, with no rebuild. Add OIDC settings and it puts a "Sign in with *your
|
||||
provider*" page in front of everything, open only to the groups you allow. Recipe and settings:
|
||||
[deployment/cloud/](./deployment/cloud/README.md).
|
||||
|
|
@ -940,7 +971,7 @@ The three ways dx-maps ships (a drop-in into your own site, the container on its
|
|||
|
||||
### Cloud development environment
|
||||
|
||||
**Your laptop can follow what agents land somewhere else.** By default `bun run dev` is fully local: no
|
||||
**Your laptop can follow what agents add to the pilot somewhere else.** By default `bun run dev` is fully local: no
|
||||
settings, nothing fetched, and only your own edits hot-reload. To also see what agents push to a shared
|
||||
branch (an agent on a server, or the whole team), add two lines to `.env.local` (gitignored):
|
||||
|
||||
|
|
|
|||
|
|
@ -4,8 +4,9 @@ Rudder (`plugin-designs/rudder-voice`) is voice-to-text that runs on your own co
|
|||
local engine (`backend/rudder-engine`, Go) that drives NVIDIA's NeMo-Speech.cpp speech server. The
|
||||
desktop app is a Tauri window around the built web tree, with the engine started as a **sidecar**.
|
||||
|
||||
This page is written for an agent following it cold. **Read "What is proven" first**: most of the
|
||||
desktop path has never been run by anyone, and the steps say so where that is the case.
|
||||
This page is written for an agent following it cold. **Read "What is proven" first**: the Linux app is
|
||||
proven and in use; the macOS and Windows path has not been run yet, and the steps say so where that is
|
||||
the case.
|
||||
|
||||
## What is proven, and what is not
|
||||
|
||||
|
|
@ -18,8 +19,8 @@ desktop path has never been run by anyone, and the steps say so where that is th
|
|||
| The engine **compiling** for macOS (arm64, x86_64) and Windows (x86_64) | Proven by cross-compiling. It has **never been run** on either. |
|
||||
| The engine accepting a WebSocket from the Tauri webview (`tauri://localhost`, `http://tauri.localhost`) | Proven against a running engine; another site's origin is refused. |
|
||||
| NeMo-Speech.cpp runtime for macOS / Windows | Published by NVIDIA (release v0.1.0: `macos-aarch64-cpu`, `macos-aarch64-metal`, `macos-x86_64-cpu`, `windows-x86_64-cpu` / `-cuda` / `-vulkan`). **Never run here.** |
|
||||
| `bun run desktop:build rudder-voice` on **Linux** | Proven: produced `Rudder_0.1.0_amd64.deb` (8.8 MB) holding the app and the `rudder-engine` sidecar side by side. The app has **not been launched** from it yet (no display on the build box). |
|
||||
| The shell starting and stopping the engine sidecar | Built (`deployment/src-tauri/src/main.rs`), compiled into that installer; not yet run. |
|
||||
| `bun run desktop:build rudder-voice` on **Linux** | Proven: produced `Rudder_0.1.0_amd64.deb` (8.8 MB) holding the app and the `rudder-engine` sidecar side by side. The installed Linux app has since been launched and is in use: it is used to dictate the work on these maps. |
|
||||
| The shell starting and stopping the engine sidecar | Built (`deployment/src-tauri/src/main.rs`), compiled into that installer. The installed Linux app works (the row above); not yet run on macOS or Windows. |
|
||||
| First-run model download | **Not built.** Run `setup-runtime.sh` into the app's data folder by hand (step 7). |
|
||||
|
||||
## 1. Prerequisites
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 926 KiB After Width: | Height: | Size: 931 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 127 KiB |
|
|
@ -116,15 +116,15 @@
|
|||
<text x="614.1" y="556.0" text-anchor="middle" font-size="12" font-weight="800" fill="#155e75">Experimental</text>
|
||||
<text x="614.1" y="570.0" text-anchor="middle" font-size="10.5" fill="#155e75">shelf · 5 plugins</text>
|
||||
<circle cx="543.4" cy="351.1" r="40" fill="#ecfeff" stroke="#0891b2" stroke-width="2.5"/>
|
||||
<text x="543.4" y="349.1" text-anchor="middle" font-size="12" font-weight="700" fill="#155e75">roaming</text>
|
||||
<text x="543.4" y="364.1" text-anchor="middle" font-size="12" font-weight="700" fill="#155e75">agent</text>
|
||||
<text x="543.4" y="349.1" text-anchor="middle" font-size="12" font-weight="700" fill="#155e75">an agent</text>
|
||||
<text x="543.4" y="364.1" text-anchor="middle" font-size="12" font-weight="700" fill="#155e75">per plugin</text>
|
||||
<circle cx="690" cy="248" r="56" fill="#f5f3ff" stroke="#7c3aed" stroke-width="3.5"/>
|
||||
<text x="690" y="254" text-anchor="middle" font-size="14" font-weight="800" fill="#4c1d95">coordinator</text>
|
||||
<text x="690" y="254" text-anchor="middle" font-size="14" font-weight="800" fill="#4c1d95">shepherd</text>
|
||||
<circle cx="812" cy="248" r="56" fill="#f1f5f9" stroke="#334155" stroke-width="3.5"/>
|
||||
<text x="812" y="254" text-anchor="middle" font-size="14" font-weight="800" fill="#1e293b">gate-keeper</text>
|
||||
<text x="884" y="192" font-size="17" fill="#4c1d95">a coordinator puts the merges in order;</text>
|
||||
<text x="884" y="216" font-size="17" fill="#1e293b">a gate-keeper checks each one by its content</text>
|
||||
<text x="750" y="1502" text-anchor="middle" font-size="20" font-weight="800" fill="#1e3a8a">one owner per plugin, in its own branch · a second reader for every change</text>
|
||||
<text x="812" y="254" text-anchor="middle" font-size="14" font-weight="800" fill="#1e293b">repo agent</text>
|
||||
<text x="884" y="192" font-size="17" fill="#4c1d95">one shepherd: every agent talks to it; it orders the merges;</text>
|
||||
<text x="884" y="216" font-size="17" fill="#1e293b">a repo agent per repo runs its branches and watches the work</text>
|
||||
<text x="750" y="1502" text-anchor="middle" font-size="20" font-weight="800" fill="#1e3a8a">one agent per plugin, in its own branch · the repo agent reads every change</text>
|
||||
<rect x="36" y="110" width="304" height="280" rx="14" fill="#f8fafc" stroke="#e2e8f0" stroke-width="2"/>
|
||||
<circle cx="64" cy="142" r="11" fill="#166534" stroke="#14532d" stroke-width="2.5"/>
|
||||
<text x="88" y="147" font-size="15" fill="#334155">pilot branch (development)</text>
|
||||
|
|
@ -139,9 +139,9 @@
|
|||
<circle cx="64" cy="302" r="11" fill="#eff6ff" stroke="#2563eb" stroke-width="2.5"/>
|
||||
<text x="88" y="307" font-size="15" fill="#334155">agent — owns one plugin</text>
|
||||
<circle cx="64" cy="334" r="11" fill="#f5f3ff" stroke="#7c3aed" stroke-width="2.5"/>
|
||||
<text x="88" y="339" font-size="15" fill="#334155">coordinator — orders merges</text>
|
||||
<text x="88" y="339" font-size="15" fill="#334155">shepherd — orders merges</text>
|
||||
<circle cx="64" cy="366" r="11" fill="#f1f5f9" stroke="#334155" stroke-width="2.5"/>
|
||||
<text x="88" y="371" font-size="15" fill="#334155">gate-keeper — checks each merge</text>
|
||||
<text x="88" y="371" font-size="15" fill="#334155">repo agent — one per repo</text>
|
||||
<rect x="60" y="1536" width="1380" height="232" rx="20" fill="#fef2f2" stroke="#fca5a5" stroke-width="2"/>
|
||||
<text x="750" y="1578" text-anchor="middle" font-size="22" font-weight="800" fill="#7f1d1d">How a change joins the pilot — one at a time, so many plugins can be built at once</text>
|
||||
<rect x="80.0" y="1600" width="305" height="148" rx="14" fill="#fff" stroke="#dc2626" stroke-width="2"/>
|
||||
|
|
@ -155,8 +155,8 @@
|
|||
<rect x="425.0" y="1600" width="305" height="148" rx="14" fill="#fff" stroke="#dc2626" stroke-width="2"/>
|
||||
<circle cx="459.0" cy="1634" r="18" fill="#dc2626"/>
|
||||
<text x="459.0" y="1641" text-anchor="middle" font-size="19" font-weight="800" fill="#fff">2</text>
|
||||
<text x="487.0" y="1641" font-size="19" font-weight="800" fill="#0f172a">Second reader</text>
|
||||
<text x="445.0" y="1680" font-size="15" fill="#475569">another agent reads every</text>
|
||||
<text x="487.0" y="1641" font-size="19" font-weight="800" fill="#0f172a">Repo agent reads</text>
|
||||
<text x="445.0" y="1680" font-size="15" fill="#475569">the repo agent reads every</text>
|
||||
<text x="445.0" y="1702" font-size="15" fill="#475569">change by its content</text>
|
||||
<text x="445.0" y="1724" font-size="15" fill="#475569">before it may join</text>
|
||||
<text x="750.0" y="1682" text-anchor="middle" font-size="26" font-weight="800" fill="#dc2626">→</text>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
|
@ -1,12 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="630" viewBox="0 0 1200 630" font-family="Inter, 'Helvetica Neue', Arial, sans-serif">
|
||||
<rect width="1200" height="630" rx="28" fill="#f8fafc"/>
|
||||
<rect x="1.5" y="1.5" width="1197" height="627" rx="27" fill="none" stroke="#e2e8f0" stroke-width="3"/>
|
||||
<g transform="translate(110,175) scale(11.5)"><path d="M13.912 0a8.72 8.72 0 0 0-8.308 6.139c1.05-.515 2.18-.845 3.342-.976 2.415-3.363 7.4-3.412 9.88-.097 2.48 3.315 1.025 8.084-2.883 9.45a6.131 6.131 0 0 1-.3 2.762 8.72 8.72 0 0 0 3.01-1.225A8.72 8.72 0 0 0 13.913 0zm.082 6.451a2.284 2.284 0 1 0-.15 4.566 2.284 2.284 0 0 0 .15-4.566zm-5.629.27a8.72 8.72 0 0 0-3.031 1.235 8.72 8.72 0 1 0 13.06 9.9131 10.173 10.174 0 0 1-3.343.965 6.125 6.125 0 1 1-7.028-9.343 6.114 6.115 0 0 1 .342-2.772zm1.713 6.27a2.284 2.284 0 0 0-2.284 2.283 2.284 2.284 0 0 0 2.284 2.284 2.284 2.284 0 0 0 2.284-2.284 2.284 2.284 0 0 0-2.284-2.284z" fill="#24C8DB"/></g>
|
||||
<text x="480" y="250" font-size="54" font-weight="800" fill="#0f172a">Desktop app (Tauri)</text>
|
||||
<text x="480" y="315" font-size="27" fill="#475569">We got the JAMstack map app running</text>
|
||||
<text x="480" y="355" font-size="27" fill="#475569">as a desktop app.</text>
|
||||
<rect x="480" y="400" width="420" height="62" rx="31" fill="#fef3c7" stroke="#d97706" stroke-width="2.5"/>
|
||||
<text x="690" y="441" text-anchor="middle" font-size="26" font-weight="800" fill="#92400e">PROVEN · NOT YET LIVE</text>
|
||||
<text x="480" y="508" font-size="22" fill="#64748b">Proven, not yet in production. The Research</text>
|
||||
<text x="480" y="538" font-size="22" fill="#64748b">Gallery could become a strong desktop app.</text>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.6 KiB |
|
|
@ -280,6 +280,8 @@ and a change here can break other maps.
|
|||
`import … from '@map/utils/peopleGroupName.js'`
|
||||
- **peopleGroupPoints** — peopleGroupPoints.js — SHARED (@map/utils/peopleGroupPoints.js).
|
||||
`import … from '@map/utils/peopleGroupPoints.js'`
|
||||
- **publicEmbed** — publicEmbed.js: the Share menu's Embed codes for THIS plugin, from the tree's PUBLIC address.
|
||||
`import … from '@map/utils/publicEmbed.js'`
|
||||
- **scrollport** — findScrollportAncestor — the nearest ancestor that actually scrolls.
|
||||
`import … from '@map/utils/scrollport.js'`
|
||||
- **viewportScrim** — viewportScrim.js — make a position:fixed full-screen SCRIM actually cover the VIEWPORT,
|
||||
|
|
|
|||
|
|
@ -50,6 +50,19 @@ function readGated() {
|
|||
}
|
||||
export const GATED_PROFILES = readGated()
|
||||
|
||||
// The PUBLIC address of the tree for the Share menu's Embed tab (the config's shareBaseUrl): an https URL with no
|
||||
// trailing slash, or '' (unset). vite.config.js bakes it as __DOXA_SHARE_BASE__; library/utils/embedBase.js reads it.
|
||||
function readShareBase() {
|
||||
let v = ''
|
||||
try {
|
||||
const cfg = JSON.parse(readFileSync(BUILD_CONFIG_FILE, 'utf8'))
|
||||
v = typeof cfg.shareBaseUrl === 'string' ? cfg.shareBaseUrl.trim().replace(/\/+$/, '') : ''
|
||||
} catch { return '' }
|
||||
if (v && !/^https:\/\/[^\s"'<>]+$/i.test(v)) throw new Error(`[_tree-name] build config "shareBaseUrl" must be an https URL, got ${JSON.stringify(v)}`)
|
||||
return v
|
||||
}
|
||||
export const SHARE_BASE = readShareBase()
|
||||
|
||||
// The name escaped for use inside a RegExp source (a '.' in a future name must not match any char).
|
||||
export const TREE_NAME_RE = TREE_NAME.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
|
||||
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ const STATIC = [
|
|||
['check:click-sheet', 'the country sheet resolves, links are absolute'],
|
||||
['check:snapshot-guard', 'no fetcher writes around the guard'],
|
||||
['check:gospel-tables-staged', 'every asset the map fetches is in the shipped tree'],
|
||||
['check:gospel-clear-filter-url', 'Show all drops only the filter keys, not a partner\'s'],
|
||||
]
|
||||
const BROWSER = [
|
||||
['check:leaves-mount', 'all five leaves actually mount'],
|
||||
|
|
|
|||
|
|
@ -71,7 +71,8 @@ const DEBT = {
|
|||
// 2026-10-03, the Share menu's 10 new share.json keys (shareable pages P3): localization is English-only for now.
|
||||
// tStatic falls back to the English text, so these locales show English until the translations arrive;
|
||||
// lower each to 0 then, and empty the map again.
|
||||
ar: 10, de: 10, es: 10, fr: 10, hi: 10, it: 10, pt: 10, ro: 10, ru: 10, zh: 10,
|
||||
// + the Embed tab's 9 keys (URL / Iframe / JavaScript, P3b), the same English-only rule.
|
||||
ar: 19, de: 19, es: 19, fr: 19, hi: 19, it: 19, pt: 19, ro: 19, ru: 19, zh: 19,
|
||||
}
|
||||
|
||||
const fails = []
|
||||
|
|
|
|||
|
|
@ -217,6 +217,22 @@ ok(!/<em>[^<]*<\/em><\/span>/.test(full.slice(full.indexOf('class="card"'))), 't
|
|||
ok(/10/.test(caps.join(' ')), 'the bounded tally does not state its unknown count — an un-inked category reads as zero in print')
|
||||
}
|
||||
|
||||
// ★ EVERY GROUP OF THE LIST IS COUNTED (2026-10-03): a group with no record in a figure's data is named in
|
||||
// that figure's caption ("15 without data"), so each caption's parts add up to the list. Both ways: the
|
||||
// fixture's figures lack records (45 groups; 30 bounded, 24 centered), and complete data prints no such part.
|
||||
{
|
||||
const sum = (cap) => [...cap.matchAll(/\d[\d,]*/g)].reduce((a, m) => a + Number(m[0].replace(/,/g, '')), 0)
|
||||
const capsOf = (html) => [...html.matchAll(/class="set-cap">([^<]*)</g)].map((m) => m[1])
|
||||
const nd = String(strings.en.sets_no_data).replace('{n}', '').trim()
|
||||
const short = capsOf(full)
|
||||
ok(short.length === 2 && short.every((c) => sum(c) === 45 && c.includes(nd)),
|
||||
`each set caption should add up to the list's 45 groups, naming the ones ${nd}: ${short.join(' | ')}`)
|
||||
const whole = capsOf(R.buildPacket(zone, groups, new Map(), '<svg/>', funnel, christian, 'full', {
|
||||
bounded: groups.map((g, i) => ({ id: g.slug, reached: i % 2 === 0 })), centered: groups.map((g, i) => ({ id: g.slug, ring: (i % 10) + 1 })) }))
|
||||
ok(whole.length === 2 && whole.every((c) => sum(c) === 45 && !c.includes(nd)),
|
||||
`with a record for every group, each caption should add up to 45 and name none ${nd}: ${whole.join(' | ')}`)
|
||||
}
|
||||
|
||||
// ── THE RING LEGEND: THE AGREED VOCABULARY, AND ONLY THE RINGS THAT HOLD SOMEONE ────────────────
|
||||
// ★ The names are COMPOSED from band x culture rather than a flat 1..10 table, because "same
|
||||
// people" (provisional, pending a product decision) appears in rings 1, 4 AND 7 — three cells that a
|
||||
|
|
|
|||
|
|
@ -16,13 +16,15 @@
|
|||
* B. a cached copy that matches is used as is: ONE request, force-cache (the fast, offline-friendly path stays);
|
||||
* C. a server that also serves the wrong bytes → rejected, err.integrity, after one fresh refetch;
|
||||
* D. a file that is not served → rejected (not an integrity failure);
|
||||
* D2. a page without crypto.subtle (not secure: plain http by LAN address) → refused saying "secure page";
|
||||
* E. loadPacketStrings with a stale cached table → the full table in every language (not the English fallback);
|
||||
* F. loadIndiaStates with a stale cached table → India's 36 states (not a rejection);
|
||||
* G. generateSheet with a stale cached generator → a drawn sheet (not an integrity refusal);
|
||||
* H. wiring: every pinned loader fetches through fetchPinned with its own pin, and none fetches its pinned file
|
||||
* directly; the classic-script path refreshes the HTTP cache and retries a refused tag once.
|
||||
* `--self-test`: fetchPinned without its fresh refetch, one that never uses the cache, one that accepts a
|
||||
* mismatch, and a loader that fetches its pinned file directly must each FAIL.
|
||||
* mismatch, a hash that reaches for crypto.subtle unguarded, and a loader that fetches its pinned file directly must
|
||||
* each FAIL.
|
||||
* Two-sided by hand at the change: the previous loaders (the pilot before this) fail E, F and G.
|
||||
*/
|
||||
import { readFileSync, existsSync } from 'node:fs'
|
||||
|
|
@ -88,6 +90,12 @@ async function auditFetchPinned(shaSrc) {
|
|||
{ world('https://d.test', { missing: [P] }); let err = null
|
||||
try { await fetchPinned(`https://d.test/${P}`, pin) } catch (e) { err = e }
|
||||
if (!err || err.integrity) fails.push(`D: an unserved file should reject as not served (${err ? err.message : 'it resolved'})`) }
|
||||
// D2: a page that is not secure (plain http by LAN address) has no crypto.subtle: refused in WORDS, not a bare TypeError
|
||||
{ world('https://e.test', { cached: { [P]: current } }); const realCrypto = globalThis.crypto; let err = null
|
||||
Object.defineProperty(globalThis, 'crypto', { value: {}, configurable: true, writable: true })
|
||||
try { await fetchPinned(`https://e.test/${P}`, pin) } catch (e) { err = e }
|
||||
finally { Object.defineProperty(globalThis, 'crypto', { value: realCrypto, configurable: true, writable: true }) }
|
||||
if (!err || err.integrity || !/secure page/.test(err.message)) fails.push(`D2: on a page without crypto.subtle the refusal should say "secure page", got ${err ? JSON.stringify(err.message) : 'a resolve'}`) }
|
||||
globalThis.fetch = realFetch
|
||||
return fails
|
||||
}
|
||||
|
|
@ -146,6 +154,7 @@ if (process.argv.includes('--self-test')) {
|
|||
['fetchPinned without its fresh refetch', () => auditFetchPinned(shaSrc.replace(FOR, "for (const cache of ['force-cache']) {")), /^A: /],
|
||||
['fetchPinned that never uses the cache', () => auditFetchPinned(shaSrc.replace(FOR, "for (const cache of ['reload', 'reload']) {")), /^B: /],
|
||||
['fetchPinned that accepts a mismatch', () => auditFetchPinned(shaSrc.replace(' if (got === pin) return text\n', ' return text\n')), /^C: /],
|
||||
['a hash that reaches for crypto.subtle unguarded', () => auditFetchPinned(shaSrc.replace(/ if \(!subtle\) throw [^\n]*\n/, '')), /^D2: /],
|
||||
['a loader that fetches its pinned file directly', () => auditWiring((f) => (f === 'library/packet/packetStrings.js'
|
||||
? read(f).replace('fetchPinned(url, PACKET_STRINGS_SHA384)', "(await fetch(url, { cache: 'force-cache' })).text()") : read(f))), /^H: library\/packet\/packetStrings\.js/],
|
||||
]
|
||||
|
|
@ -159,5 +168,5 @@ if (process.argv.includes('--self-test')) {
|
|||
} else {
|
||||
const f = [...await auditFetchPinned(shaSrc), ...await auditLoaders(), ...auditWiring(read)]
|
||||
if (f.length) { for (const x of f) console.log('✗ ' + x); console.log(`FAIL check:pinned-fetch-fresh (${f.length})`); process.exitCode = 1 }
|
||||
else console.log('PASS check:pinned-fetch-fresh — a stale cached copy of a pinned file is refetched once, fresh: page 1 still draws, the packet keeps its language, India keeps its states; a matching cached copy is used as is; wrong bytes are refused; every pinned loader goes through fetchPinned')
|
||||
else console.log('PASS check:pinned-fetch-fresh — a stale cached copy of a pinned file is refetched once, fresh: page 1 still draws, the packet keeps its language, India keeps its states; a matching cached copy is used as is; wrong bytes are refused; a page that is not secure is told so in words; every pinned loader goes through fetchPinned')
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,7 +39,6 @@ const KNOWN = {
|
|||
'library/utils/languageRequest.js': [1, '?lang= on a generated page only (MAP_OWNS_PAGE); keeps state and every other param'],
|
||||
'library/layouts/app-wrapper-material/index.html': [1, "the layout page's own #/<map> hash; a fragment-only URL keeps the query"],
|
||||
'plugin-designs/gospel-internet/src/useBoard.js': [1, 'its own keys on its own leaves (writeUrl); keeps state, foreign params and the hash'],
|
||||
'plugin-designs/gospel-resources/data-tables.vue': [1, "clearFilter: replaceState({}, '', pathname) wipes the whole query and hash; reported to its owner"],
|
||||
}
|
||||
// SOURCE files only: gates and node scripts may simulate history. A write is `.pushState(` / `.replaceState(` (an aliased
|
||||
// history included) or a computed `history[… 'pushState' …]`.
|
||||
|
|
|
|||
|
|
@ -33,7 +33,8 @@ import { tStatic } from '@map/i18n/index.js'
|
|||
const T = (key, en) => tStatic(key) || en
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { useShadowStyles } from '../../composables/useShadowStyles.js'
|
||||
import { resolveShareUrl } from '../../utils/embedBase.js'
|
||||
import { resolveShareUrl, resolvePublicBase, resolveEmbedBase } from '../../utils/embedBase.js'
|
||||
import { publicLeafUrl, publicScriptCode } from '../../utils/publicEmbed.js'
|
||||
import { urlOwnerOf } from '../../composables/useViewAddress.js'
|
||||
import MapControlButton from './MapControlButton.vue'
|
||||
import MapControlMenu from './MapControlMenu.vue'
|
||||
|
|
@ -357,6 +358,8 @@ const pageUrl = ref('') // "Share this page": read when the menu
|
|||
const linkCopied = ref(false)
|
||||
const embedCopied = ref(false)
|
||||
const embedSize = ref('medium') // 'small' | 'medium' | 'large'
|
||||
const embedKind = ref('url') // 'url' | 'iframe' | 'script': the Embed tab's three codes
|
||||
const scriptState = ref({ loading: false }) // the JavaScript code from the public manifest: { code } | { missing } | { failed }
|
||||
|
||||
const sizePresets = {
|
||||
small: { label: 'Small', height: 400 },
|
||||
|
|
@ -390,10 +393,36 @@ const shareUrl = computed(() => resolveShareUrl({
|
|||
profileConfig: unref(profileConfig) || null,
|
||||
}))
|
||||
|
||||
/* ★ EMBED THIS PLUGIN, FROM THE PUBLIC SITE (shareable pages P3b). The Embed tab's three codes are for the plugin
|
||||
whose Share was pressed (its own page; its own bundle + element), even nested in Plugin Studio, Deep Research or
|
||||
Posterverse, and they point at the tree's PUBLIC address (resolvePublicBase: the build's shareBaseUrl), never a dev
|
||||
server or the page's own host. With no public address configured, the tree this bundle loaded from stands in. */
|
||||
const embedBase = computed(() => resolvePublicBase(unref(profileConfig) || null) || resolveEmbedBase(unref(profileConfig) || null))
|
||||
const embedPathOf = () => props.embedPath || (unref(profileConfig) || {}).shareEmbedPath || ''
|
||||
// URL: the plugin's own generated page, and nothing else: never the app page it is shown in. With no base (the dev
|
||||
// server, where modules are not bundled) or no tree-relative path, it is '' and the tab shows the plain note.
|
||||
const leafUrl = computed(() => publicLeafUrl(embedBase.value, embedPathOf()))
|
||||
const embedSnippet = computed(() => {
|
||||
const h = sizePresets[embedSize.value].height
|
||||
return '<iframe src="' + shareUrl.value + '" width="100%" height="' + h + '" style="border:none; border-radius:12px;" allowfullscreen></iframe>'
|
||||
return '<iframe src="' + leafUrl.value + '" width="100%" height="' + h + '" style="border:none; border-radius:12px;" allowfullscreen></iframe>'
|
||||
})
|
||||
// JavaScript: the plugin's embed.script from the public manifest, read once the Embed tab opens. "missing" means the
|
||||
// public site does not carry this plugin yet, so the tab shows a plain note instead of codes that would 404.
|
||||
function loadScriptCode() {
|
||||
if (scriptState.value.code || scriptState.value.loading) return
|
||||
scriptState.value = { loading: true }
|
||||
publicScriptCode(embedBase.value, embedPathOf()).then((r) => { scriptState.value = r })
|
||||
}
|
||||
const embedText = computed(() => embedKind.value === 'url' ? leafUrl.value
|
||||
: embedKind.value === 'iframe' ? embedSnippet.value : (scriptState.value.code || ''))
|
||||
const EMBED_KINDS = ['url', 'iframe', 'script']
|
||||
const kindLabel = (k) => ({ url: T('share.kind_url', 'URL'), iframe: T('share.kind_iframe', 'Iframe'), script: T('share.kind_script', 'JavaScript') })[k]
|
||||
// One plain sentence per code, for a reader who has never embedded anything.
|
||||
const kindHint = (k) => ({
|
||||
url: T('share.url_hint', 'A link to open the map on its own page.'),
|
||||
iframe: T('share.iframe_hint', 'Put the map in your page, in a frame.'),
|
||||
script: T('share.script_hint', 'Load the map straight into your page, with no frame.'),
|
||||
})[k]
|
||||
|
||||
/* ★ SHARE THIS PAGE. Where the page OWNS its address (useViewAddress: urlOwner 'app' on our own pages,
|
||||
'host' on DX Life), the address bar already names the exact view (the tab, and the filters), so the
|
||||
|
|
@ -433,6 +462,7 @@ function toggle() {
|
|||
pageUrl.value = pageLink()
|
||||
linkCopied.value = false
|
||||
embedCopied.value = false
|
||||
embedKind.value = 'url'
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -472,7 +502,7 @@ async function copyLink() {
|
|||
}
|
||||
|
||||
async function copyEmbed() {
|
||||
if (await copyText(embedSnippet.value)) {
|
||||
if (embedText.value && await copyText(embedText.value)) {
|
||||
embedCopied.value = true
|
||||
setTimeout(() => { embedCopied.value = false }, 2000)
|
||||
}
|
||||
|
|
@ -578,7 +608,7 @@ function bindAnchor(el) {
|
|||
<button
|
||||
class="share-tab" role="tab" data-share-tab="embed"
|
||||
:class="{ active: activeTab === 'embed' }" :aria-selected="String(activeTab === 'embed')"
|
||||
@click="activeTab = 'embed'"
|
||||
@click="activeTab = 'embed'; loadScriptCode()"
|
||||
>{{ T('share.tab_embed', 'Embed') }}</button>
|
||||
</div>
|
||||
|
||||
|
|
@ -612,7 +642,7 @@ function bindAnchor(el) {
|
|||
</button>
|
||||
</div>
|
||||
|
||||
<!-- ===== Tab 2: Embed (for another website) ===== -->
|
||||
<!-- ===== Tab 2: Embed (for another website): THIS plugin, from the public site ===== -->
|
||||
<div v-if="activeTab === 'embed'" class="share-body">
|
||||
<!-- What embedding is and why it helps, in plain words, before any code -->
|
||||
<div class="share-embed-desc">
|
||||
|
|
@ -622,43 +652,58 @@ function bindAnchor(el) {
|
|||
<ul class="share-steps">
|
||||
<li v-for="(step, i) in tm('buttons.shareSteps')" :key="i">{{ rt(step) }}</li>
|
||||
</ul>
|
||||
<div class="share-embed-desc">
|
||||
{{ T('share.embed_paste_hint', 'Paste this code into your website builder (WordPress, Squarespace, Wix, or any site that accepts HTML widgets).') }}
|
||||
<!-- Not on the public site yet (or no page of its own to point at): one plain note instead of codes that would
|
||||
404 or that would embed the app around it -->
|
||||
<div v-if="scriptState.missing || !leafUrl" class="share-embed-desc" data-embed-note>
|
||||
{{ T('share.not_public', "This map isn't on the public site yet. Its embed codes will appear here once it's released.") }}
|
||||
</div>
|
||||
|
||||
<!-- Size presets -->
|
||||
<div class="share-size-pills">
|
||||
<template v-else>
|
||||
<!-- Three ways, one at a time: a link, a frame, or straight into the page -->
|
||||
<div class="share-size-pills" role="tablist">
|
||||
<button
|
||||
v-for="k in EMBED_KINDS" :key="k" type="button" role="tab"
|
||||
class="share-size-pill" :data-embed-kind="k"
|
||||
:class="{ active: embedKind === k }" :aria-selected="String(embedKind === k)"
|
||||
@click="embedKind = k"
|
||||
>{{ kindLabel(k) }}</button>
|
||||
</div>
|
||||
<div class="share-embed-desc">{{ kindHint(embedKind) }}</div>
|
||||
<!-- Iframe: its height -->
|
||||
<div v-if="embedKind === 'iframe'" class="share-size-pills">
|
||||
<button
|
||||
v-for="(preset, key) in sizePresets"
|
||||
:key="key"
|
||||
class="share-size-pill"
|
||||
:class="{ active: embedSize === key }"
|
||||
@click="embedSize = key"
|
||||
>{{ sizeLabel(key) }}</button>
|
||||
</div>
|
||||
<!-- JavaScript: read from the public site when this tab opens -->
|
||||
<div v-if="embedKind === 'script' && !scriptState.code" class="share-embed-desc">
|
||||
{{ scriptState.failed ? T('share.public_failed', "Couldn't reach the public site just now. Try again in a moment.") : T('share.script_loading', 'Reading the public site…') }}
|
||||
</div>
|
||||
<div v-else class="share-code-box" data-embed-code>{{ embedText }}</div>
|
||||
<!-- One Copy button -->
|
||||
<button
|
||||
v-for="(preset, key) in sizePresets"
|
||||
:key="key"
|
||||
class="share-size-pill"
|
||||
:class="{ active: embedSize === key }"
|
||||
@click="embedSize = key"
|
||||
>{{ sizeLabel(key) }}</button>
|
||||
</div>
|
||||
|
||||
<!-- Code box -->
|
||||
<div class="share-code-box">{{ embedSnippet }}</div>
|
||||
|
||||
<!-- Copy Code button -->
|
||||
<button
|
||||
class="share-secondary-btn"
|
||||
:class="{ copied: embedCopied }"
|
||||
@click="copyEmbed"
|
||||
>
|
||||
<svg v-if="!embedCopied" width="15" height="15" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<rect x="9" y="9" width="13" height="13" rx="2" ry="2"/>
|
||||
<path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>
|
||||
</svg>
|
||||
<svg v-else width="15" height="15" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2.5"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<polyline points="20 6 9 17 4 12"/>
|
||||
</svg>
|
||||
{{ embedCopied ? T('share.copied', 'Copied!') : T('share.copy_code', 'Copy code') }}
|
||||
</button>
|
||||
v-if="embedText"
|
||||
class="share-secondary-btn"
|
||||
:class="{ copied: embedCopied }"
|
||||
@click="copyEmbed"
|
||||
>
|
||||
<svg v-if="!embedCopied" width="15" height="15" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<rect x="9" y="9" width="13" height="13" rx="2" ry="2"/>
|
||||
<path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>
|
||||
</svg>
|
||||
<svg v-else width="15" height="15" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2.5"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<polyline points="20 6 9 17 4 12"/>
|
||||
</svg>
|
||||
{{ embedCopied ? T('share.copied', 'Copied!') : (embedKind === 'url' ? T('share.copy_link', 'Copy link') : T('share.copy_code', 'Copy code')) }}
|
||||
</button>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</MapControlMenu>
|
||||
|
|
|
|||
|
|
@ -36,6 +36,15 @@ const esc = (s) => String(s ?? '')
|
|||
.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')
|
||||
.replace(/"/g, '"').replace(/'/g, ''');
|
||||
|
||||
// A sheet the host GENERATES (opts.sheet) that fails still falls through to the stored one, so a print never comes
|
||||
// out blank. It must not fall through SILENTLY: a stored sheet with an old header once printed in place of the
|
||||
// generated one, and nothing said why. The console names the sheet and the reason. An empty result is not a
|
||||
// failure: a generator returns '' on purpose when it cannot draw that sheet.
|
||||
const generated = (draw, id, format) => Promise.resolve().then(draw).catch((e) => {
|
||||
try { console.warn(`[posterPrints] the ${format} sheet for ${id} could not be generated, so the stored sheet prints instead: ${e?.message || e}`); } catch (_) { /* no console */ }
|
||||
return '';
|
||||
});
|
||||
|
||||
/**
|
||||
* THE PRINT STANDARD — one call gives any map the poster, the card deck, the prayer list and the
|
||||
* prayer packet (full or lightweight) for ANY item: a zone, a country, or a custom list of people.
|
||||
|
|
@ -167,7 +176,7 @@ export function usePosterPrints(opts = {}) {
|
|||
// that cannot generate, and a generation that fails falls through to them rather than to nothing.
|
||||
if (opts.sheet) {
|
||||
set(item, kind, 'render', tr('wall.hud.generatingPoster', 'generating the poster'), 35);
|
||||
const html = await Promise.resolve().then(() => opts.sheet(item, 'letter')).catch(() => '');
|
||||
const html = await generated(() => opts.sheet(item, 'letter'), id, 'letter');
|
||||
if (html) {
|
||||
set(item, kind, 'save', tr('wall.hud.openingPrint', 'opening the print dialog'), 80);
|
||||
await deliver(html, item, kind);
|
||||
|
|
@ -413,7 +422,7 @@ export function usePosterPrints(opts = {}) {
|
|||
const mapId = item && 'mapId' in item ? item.mapId : item?.id;
|
||||
if (!mapSvg && opts.sheet && mapId) {
|
||||
const target = mapId === item?.id ? item : { ...item, id: mapId };
|
||||
const html = await Promise.resolve().then(() => opts.sheet(target, 'packet')).catch(() => '');
|
||||
const html = await generated(() => opts.sheet(target, 'packet'), mapId, 'packet');
|
||||
if (html) mapSvg = R.liftMap(html, { labelFor: await mapLabelFor() });
|
||||
}
|
||||
if (!mapSvg && opts.mapImage) {
|
||||
|
|
|
|||
|
|
@ -20,5 +20,5 @@
|
|||
"wallHeading": "ملصقات UPG100",
|
||||
"wallIntroA": "كيف تُطعم جمعًا من خمسة آلاف؟ أجلسهم يسوع جماعاتٍ من خمسين ومن مئة، فصار المستحيل قابلًا للمشاركة (لوقا ٩:١٤). فعلنا المثل مع {n} شعوب غير مبلَّغة: ٢٧ قائمة من نحو خمسين إلى مئة. تُطبع كل قائمة حزمةَ صلاة وملصقًا، ليحمل ٢٧ تلميذًا أو كنيسة أو قائدًا محليًا كلٌّ واحدة — مصلّين لأجلهم ",
|
||||
"peopleStillLoading": "لا تزال الشعوب قيد التحميل، حاول مرة أخرى بعد لحظة",
|
||||
"posterDesignTerritory": "ملصق منطقة UPG-100"
|
||||
"posterDesignTerritory": "ملصق منطقة UPG100"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,5 +20,5 @@
|
|||
"wallHeading": "UPG100-Poster",
|
||||
"wallIntroA": "Wie würden Sie eine Menge von fünftausend speisen? Jesus ließ sie in Gruppen zu fünfzig und hundert lagern, und das Unmögliche wurde teilbar (Lukas 9,14). Dasselbe haben wir mit den {n} unerreichten Volksgruppen getan: 27 Listen von etwa fünfzig bis hundert. Jede Liste druckt als Gebetspaket und als Poster, damit 27 Jünger, Gemeinden oder einheimische Leiter je eine tragen können — und für sie beten ",
|
||||
"peopleStillLoading": "die Volksgruppen werden noch geladen; versuchen Sie es gleich noch einmal",
|
||||
"posterDesignTerritory": "UPG-100-Gebietsplakat"
|
||||
"posterDesignTerritory": "UPG100-Gebietsplakat"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,5 +11,14 @@
|
|||
"copied": "Copied!",
|
||||
"size_small": "Small",
|
||||
"size_medium": "Medium",
|
||||
"size_large": "Large"
|
||||
"size_large": "Large",
|
||||
"kind_url": "URL",
|
||||
"kind_iframe": "Iframe",
|
||||
"kind_script": "JavaScript",
|
||||
"url_hint": "A link to open the map on its own page.",
|
||||
"iframe_hint": "Put the map in your page, in a frame.",
|
||||
"script_hint": "Load the map straight into your page, with no frame.",
|
||||
"script_loading": "Reading the public site…",
|
||||
"not_public": "This map isn't on the public site yet. Its embed codes will appear here once it's released.",
|
||||
"public_failed": "Couldn't reach the public site just now. Try again in a moment."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,5 +20,5 @@
|
|||
"wallHeading": "UPG100 Posters",
|
||||
"wallIntroA": "How would you feed a crowd of five thousand? Jesus sat them down in groups of fifty and a hundred, and the impossible became shareable (Luke 9:14). We did the same with the {n} unreached people groups: 27 lists of about fifty to a hundred. Each list prints as a prayer packet and a poster, so 27 disciples, churches or local leaders can each carry one — praying for them ",
|
||||
"peopleStillLoading": "the people groups are still loading, try again in a moment",
|
||||
"posterDesignTerritory": "UPG-100 territory poster"
|
||||
"posterDesignTerritory": "UPG100 zone poster"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,5 +20,5 @@
|
|||
"wallHeading": "Carteles UPG100",
|
||||
"wallIntroA": "¿Cómo alimentarías a una multitud de cinco mil? Jesús los sentó en grupos de cincuenta y de cien, y lo imposible se volvió compartible (Lucas 9:14). Hicimos lo mismo con los {n} pueblos no alcanzados: 27 listas de unos cincuenta a cien. Cada lista se imprime como paquete de oración y cartel, para que 27 discípulos, iglesias o líderes locales lleven una cada uno — orando por ellos ",
|
||||
"peopleStillLoading": "los pueblos aún se están cargando; inténtalo de nuevo en un momento",
|
||||
"posterDesignTerritory": "Cartel de territorio UPG-100"
|
||||
"posterDesignTerritory": "Cartel de zona UPG100"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,5 +20,5 @@
|
|||
"wallHeading": "Affiches UPG100",
|
||||
"wallIntroA": "Comment nourririez-vous une foule de cinq mille personnes ? Jésus les a fait asseoir par groupes de cinquante et de cent, et l’impossible est devenu partageable (Luc 9.14). Nous avons fait de même avec les {n} peuples non atteints : 27 listes d’environ cinquante à cent. Chaque liste s’imprime en dossier de prière et en affiche, pour que 27 disciples, Églises ou responsables locaux en portent chacun une — en priant pour eux ",
|
||||
"peopleStillLoading": "les peuples sont encore en cours de chargement ; réessayez dans un instant",
|
||||
"posterDesignTerritory": "Affiche de territoire UPG-100"
|
||||
"posterDesignTerritory": "Affiche de zone UPG100"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,5 +20,5 @@
|
|||
"wallHeading": "UPG100 पोस्टर",
|
||||
"wallIntroA": "पाँच हज़ार की भीड़ को आप कैसे खिलाते? यीशु ने उन्हें पचास-पचास और सौ-सौ के समूहों में बिठाया, और असंभव बाँटने योग्य हो गया (लूका 9:14). हमने {n} अनपहुँचे जनसमूहों के साथ वही किया: लगभग पचास से सौ तक की 27 सूचियाँ. हर सूची प्रार्थना पैकेट और पोस्टर के रूप में छपती है, ताकि 27 शिष्य, कलीसियाएँ या स्थानीय अगुवे एक-एक ले सकें — उनके लिए प्रार्थना करते हुए ",
|
||||
"peopleStillLoading": "जनसमूह अभी लोड हो रहे हैं, थोड़ी देर में फिर कोशिश करें",
|
||||
"posterDesignTerritory": "UPG-100 क्षेत्र पोस्टर"
|
||||
"posterDesignTerritory": "UPG100 क्षेत्र का पोस्टर"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,5 +20,5 @@
|
|||
"wallHeading": "Poster UPG100",
|
||||
"wallIntroA": "Come sfameresti una folla di cinquemila? Gesù li fece sedere a gruppi di cinquanta e di cento, e l’impossibile divenne condivisibile (Luca 9:14). Abbiamo fatto lo stesso con i {n} popoli non raggiunti: 27 liste di circa cinquanta-cento. Ogni lista si stampa come pacchetto di preghiera e manifesto, così 27 discepoli, chiese o responsabili locali ne portano una ciascuno — pregando per loro ",
|
||||
"peopleStillLoading": "i popoli si stanno ancora caricando; riprova tra un momento",
|
||||
"posterDesignTerritory": "Manifesto di territorio UPG-100"
|
||||
"posterDesignTerritory": "Poster di zona UPG100"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,5 +20,5 @@
|
|||
"wallHeading": "Cartazes UPG100",
|
||||
"wallIntroA": "Como você alimentaria uma multidão de cinco mil? Jesus os sentou em grupos de cinquenta e de cem, e o impossível tornou-se compartilhável (Lucas 9.14). Fizemos o mesmo com os {n} povos não alcançados: 27 listas de cerca de cinquenta a cem. Cada lista imprime como pacote de oração e cartaz, para que 27 discípulos, igrejas ou líderes locais levem uma cada um — orando por eles ",
|
||||
"peopleStillLoading": "os povos ainda estão carregando; tente de novo em um instante",
|
||||
"posterDesignTerritory": "Cartaz de território UPG-100"
|
||||
"posterDesignTerritory": "Cartaz de zona UPG100"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,5 +20,5 @@
|
|||
"wallHeading": "Afișe UPG100",
|
||||
"wallIntroA": "Cum ai hrăni o mulțime de cinci mii? Isus i-a așezat în grupuri de cincizeci și de o sută, iar imposibilul a devenit împărțibil (Luca 9:14). Am făcut la fel cu cele {n} popoare neatinse: 27 de liste de aproximativ cincizeci până la o sută. Fiecare listă se tipărește ca pachet de rugăciune și afiș, ca 27 de ucenici, biserici sau lideri locali să poarte fiecare câte una — rugându-se pentru ei ",
|
||||
"peopleStillLoading": "popoarele încă se încarcă; încearcă din nou peste o clipă",
|
||||
"posterDesignTerritory": "Afiș de teritoriu UPG-100"
|
||||
"posterDesignTerritory": "Poster de zonă UPG100"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,5 +20,5 @@
|
|||
"wallHeading": "Плакаты UPG100",
|
||||
"wallIntroA": "Как накормить толпу в пять тысяч человек? Иисус рассадил их группами по пятьдесят и по сто, и невозможное стало посильным (Лк. 9:14). Мы поступили так же с {n} неохваченными народами: 27 списков примерно по пятьдесят-сто. Каждый список печатается как молитвенный пакет и плакат, чтобы 27 учеников, церквей или местных служителей взяли по одному — молясь о них ",
|
||||
"peopleStillLoading": "народы ещё загружаются; попробуйте ещё раз через мгновение",
|
||||
"posterDesignTerritory": "Плакат территории UPG-100"
|
||||
"posterDesignTerritory": "Плакат зоны UPG100"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,5 +20,5 @@
|
|||
"wallHeading": "UPG100 海报",
|
||||
"wallIntroA": "你会怎样喂饱五千人的群众?耶稣让他们一排五十、一排一百地坐下,不可能的事就变得可以分担了(路加福音 9:14)。我们对 {n} 个未得之民做了同样的事:27 份名单,每份约五十到一百。每份名单都能印成祷告手册和海报,让 27 位门徒、教会或当地领袖各领一份 — 为他们祷告 ",
|
||||
"peopleStillLoading": "族群仍在加载中,请稍后再试",
|
||||
"posterDesignTerritory": "UPG-100 区域海报"
|
||||
"posterDesignTerritory": "UPG100 区域海报(单张)"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -376,7 +376,11 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
|
|||
.pray-head{position:absolute;inset-inline-end:${M}px;display:grid;grid-template-columns:repeat(${PRAY_COLS.length},${PRAY_CELL}px);
|
||||
height:${PRAY_HEAD_H - 6}px;align-items:end;font:700 15px/1.2 Georgia,serif;color:#6f6a5c;text-align:center}
|
||||
.pray-head span{text-wrap:balance;padding:0 0 5px;border-bottom:2px solid #3b463d}
|
||||
.fd-top{position:absolute;left:${M}px;top:${M + HEAD}px;width:${CW.toFixed(0)}px;height:${FD_TOP_H}px;overflow:hidden}
|
||||
/* Page 1 of the Full detail list: the explanation, then the head row and the rows right under it (listPages). */
|
||||
.fd-first{position:absolute;left:${M}px;top:${M + HEAD}px;width:${CW.toFixed(0)}px}
|
||||
.fd-top{max-height:${FD_TOP_H}px;overflow:hidden}
|
||||
.fd-rows{position:relative}
|
||||
.fd-rows .pray-head{inset-inline-end:0}
|
||||
.hd-r{position:absolute;right:${M}px;top:54px;font:400 19px Georgia,serif;color:#8c8170}
|
||||
/* ⚠ box-sizing:border-box IS LOAD-BEARING HERE, NOT HOUSEKEEPING. Without it the row's height
|
||||
is the CONTENT box and the padding + border are added OUTSIDE it, so the row renders taller
|
||||
|
|
@ -1191,7 +1195,14 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
|
|||
PRAY_COLS.map((key) => `<span>${esc(t(key))}</span>`).join('')}</div>`;
|
||||
for (let start = 0, page = 0; start < groups.length; page += 1) {
|
||||
const per = page === 0 ? FD_FIRST : PER_PAGE;
|
||||
const rowsTop = page === 0 ? FD_ROWS_TOP : M + HEAD;
|
||||
// ★ PAGE 1'S ROWS FOLLOW THE EXPLANATION (2026-10-03). The explanation reserved a fixed FD_TOP_H and the
|
||||
// rows sat below the reserve, so every language shorter than the tallest left a gap above the head row
|
||||
// (0.36-1.30 in, measured in all 11). Now the explanation (at most FD_TOP_H) and the rows share one
|
||||
// column (.fd-first), and the rows are placed inside .fd-rows, right under it. The page still holds
|
||||
// FD_FIRST rows, sized for the full reserve, so a shorter explanation leaves the room at the page's foot.
|
||||
// The rows stay absolutely placed (see below), only their origin moves: no row can reflow to a page.
|
||||
const rowsTop = page === 0 ? PRAY_HEAD_H : M + HEAD;
|
||||
const left = page === 0 ? 0 : M;
|
||||
const slice = groups.slice(start, start + per);
|
||||
// ★ ONE FULL-WIDTH ROW PER GROUP. The column index is gone: `top` advances by the row, and the
|
||||
// three cells sit inside it. Absolute positioning is kept rather than switching to flow layout
|
||||
|
|
@ -1208,7 +1219,7 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
|
|||
const img = src
|
||||
? `<img src="${esc(src)}" alt="">`
|
||||
: `<div class="nophoto">${esc(t('no_photo'))}</div>`;
|
||||
return `<div class="card" style="left:${M}px;top:${top.toFixed(0)}px;
|
||||
return `<div class="card" style="left:${left}px;top:${top.toFixed(0)}px;
|
||||
width:${CW.toFixed(0)}px;height:${CH.toFixed(0)}px">${img}
|
||||
<div class="d-cell">
|
||||
<div class="nm">${i + 1}. ${esc(g.name)}</div>
|
||||
|
|
@ -1217,15 +1228,17 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
|
|||
<div class="pray-cols">${PRAY_COLS.map(() => '<span class="pray-col"><i class="pray-box"></i></span>').join('')}</div>
|
||||
</div>`;
|
||||
}).join('');
|
||||
const first = page === 0
|
||||
? `<div class="fd-top">${explainTop()}${explainBand(groups.length,
|
||||
const rowsH = PRAY_HEAD_H + slice.length * (CH + GUT) - GUT;
|
||||
const body = page === 0
|
||||
? `<div class="fd-first"><div class="fd-top">${explainTop()}${explainBand(groups.length,
|
||||
{ w: PRAY_COLS.length * PRAY_CELL, cols: `repeat(${PRAY_COLS.length},${PRAY_CELL}px)`, gap: 0, cell: 'xb-cell xb-cell-fd' })}</div>`
|
||||
: '';
|
||||
+ `<div class="fd-rows" style="height:${rowsH.toFixed(0)}px">${prayHead(0)}${cards}</div></div>`
|
||||
: `${prayHead(rowsTop - PRAY_HEAD_H)}${cards}`;
|
||||
pages.push(sheet(`
|
||||
<div class="hd">${esc(zone.label || zone.id)}</div>
|
||||
<div class="hd-r">${esc(fill(t('list_header'),
|
||||
{ from: num(start + 1), to: num(Math.min(start + per, groups.length)), count: num(groups.length) }))}</div>
|
||||
${first}${prayHead(rowsTop - PRAY_HEAD_H)}${cards}`));
|
||||
${body}`));
|
||||
start += per;
|
||||
}
|
||||
return pages;
|
||||
|
|
@ -1384,7 +1397,7 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
|
|||
// its own width, with per-script advances measured on this page in the packet's fonts and rounded UP; a
|
||||
// tier is taken only when the estimate fits with PT_SAFE to spare. check:packet-render measures the real
|
||||
// page in all 11 locales behind it (pointsOver).
|
||||
const PT_MIN = { head: 22, sub: 19, text: 18.5, refs: 16, gap: 5, passage: 16, th: 19, thb: 20, scr: 18 };
|
||||
const PT_MIN = { head: 22, sub: 19, text: 18, refs: 16, gap: 3, passage: 16, th: 19, thb: 20, scr: 18 };
|
||||
const PT_MAX = { head: 25, sub: 21, text: 22.5, refs: 18.5, gap: 18, passage: 20, th: 21, thb: 22, scr: 19 };
|
||||
const PT_TOP = 82, PT_TIERS = 10, PT_SAFE = 0.97;
|
||||
const PT_BODY_H = H - (M + PT_TOP) - 80; // the .points-body box: 1719px
|
||||
|
|
@ -1632,13 +1645,18 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
|
|||
+ `<rect x="${(cx - arm / 2).toFixed(1)}" y="${(cy - h / 2 + h * 0.24).toFixed(1)}" width="${arm.toFixed(1)}" height="${bar.toFixed(1)}" rx="1.5"/></g>`;
|
||||
}
|
||||
|
||||
function setsPage(zone, sets) {
|
||||
function setsPage(zone, sets, listSize) {
|
||||
// '' WITHOUT DATA, exactly like funnelPage and christianPage — a page that cannot state true
|
||||
// figures must not appear at all. This is what keeps FULL valid before a host supplies sets.
|
||||
if (!sets || (!Array.isArray(sets.bounded) && !Array.isArray(sets.centered))) return '';
|
||||
const bounded = Array.isArray(sets.bounded) ? sets.bounded : [];
|
||||
const centered = Array.isArray(sets.centered) ? sets.centered : [];
|
||||
if (!bounded.length && !centered.length) return '';
|
||||
// ★ EVERY GROUP OF THE LIST IS COUNTED (2026-10-03). A group with no record in a figure's data (no
|
||||
// near-neighbour data, say) is in none of its figures, so a caption used to add up to less than the
|
||||
// list: Laos printed "88 placed · 0 at the centre · 6 unplaced", 94 of its 95. The groups missing from
|
||||
// a figure's data are now named in its caption ("1 without data"), so its parts add up to the list.
|
||||
const noData = (n) => (Number.isFinite(listSize) && listSize > n ? ` · ${fill(t('sets_no_data'), { n: num(listSize - n) })}` : '');
|
||||
const panels = [];
|
||||
let legend = '';
|
||||
|
||||
|
|
@ -1661,7 +1679,7 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
|
|||
${cross(L.cx, L.cy, 44)}
|
||||
</svg>
|
||||
<p class="set-cap">${esc(fill(t('sets_bounded_tally'),
|
||||
{ inside: num(T.inside), outside: num(T.outside), unknown: num(T.unknown) }))}</p>
|
||||
{ inside: num(T.inside), outside: num(T.outside), unknown: num(T.unknown) }) + noData(bounded.length))}</p>
|
||||
</div>` });
|
||||
}
|
||||
|
||||
|
|
@ -1713,7 +1731,7 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
|
|||
${bands.join('')}${dots}${nums.join('')}${cross(0, 0, 40)}
|
||||
</svg>
|
||||
<p class="set-cap">${esc(fill(t('sets_centered_tally'),
|
||||
{ placed: num(bf.placed.length), centre: num(T.centre), unplaced: num(T.unplaced + bf.unplaced.length) }))}</p>
|
||||
{ placed: num(bf.placed.length), centre: num(T.centre), unplaced: num(T.unplaced + bf.unplaced.length) }) + noData(centered.length))}</p>
|
||||
</div>` });
|
||||
const rows = ringLegend(T);
|
||||
// The legend first says what a ring IS, in plain words, then lists the rings that hold someone.
|
||||
|
|
@ -1880,7 +1898,7 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
|
|||
// packet lists the SAME groups as a worksheet (LIST_STYLE); the full packet as profiles.
|
||||
...(LIST_STYLE[variant] ? LIST_STYLE[variant](zone, groups, photos) : listPages(zone, groups, photos)),
|
||||
// BACK MATTER: after the profiles (brief A1). Full-detail only.
|
||||
keep('sets') && setsPage(zone, sets),
|
||||
keep('sets') && setsPage(zone, sets, Array.isArray(groups) ? groups.length : NaN),
|
||||
keep('wheel') && wheelPage(),
|
||||
keep('points') && pointsPage(),
|
||||
].filter(Boolean);
|
||||
|
|
|
|||
|
|
@ -2,14 +2,14 @@
|
|||
// The sha384 of library/packet/poster-render.js. The browser fetches the served copy of that file
|
||||
// (<assets>/lib/poster-render.js), hashes it, and runs it only when it matches this pin: code loaded at
|
||||
// print time is integrity-pinned like every embed, because it executes on partner pages.
|
||||
export const POSTER_RENDER_SHA384 = 'sha384-TvWYyN1nK44Yjuw4yEIyrJmJG2zcAOTIBiTryFGtNHOI67cyWzEXRxHOmsRZagq1'
|
||||
export const POSTER_RENDER_SHA384 = 'sha384-BNFUrsdCCaEetmp5cSBzDklAUsB5XBEefQEcCd3+dNNDghxRuZNytNsVfl5mBOeP'
|
||||
// The sha384 of library/scripts/posters/data/ne-places.json, served at <assets>/boundaries/ne-places.json.
|
||||
// Data, not code, but pinned the same way: a sheet uses the places only when they are the pinned ones.
|
||||
export const NE_PLACES_SHA384 = 'sha384-Qtz2q8mcnA9Ei8Kwa2MRMyX95hSbSnUXjXdtsy8rHTX++mgSCih4LO4Rdrb2MIQy'
|
||||
// The sha384 of the classic-script copy (<assets>/lib/poster-render.global.js, globalVariant of the file above),
|
||||
// loaded with <script integrity> where a page's policy forbids importing a blob: of the verified text.
|
||||
export const POSTER_RENDER_GLOBAL_SHA384 = 'sha384-N0M7S+HNC5jPovGXyhRpAVrGCgmjzt8tSxQ7GiZOnEeZ8FsBJZRVXeoOimLJhAea'
|
||||
export const POSTER_RENDER_GLOBAL_SHA384 = 'sha384-idoDSzFXNuBK27dktAJffZD6QhubGkNOk+g9vwPobzs0HWHfnUq3cSyX7FyzwvtQ'
|
||||
// The sha384 of library/scripts/posters/packet-strings.json, served at <assets>/lib/packet-strings.json. The
|
||||
// packet, list and card text in every language, fetched at print time (packet/packetStrings.js) and used only
|
||||
// when it matches; otherwise the print falls back to the bundled English block.
|
||||
export const PACKET_STRINGS_SHA384 = 'sha384-NhjD/zyyBCJBF6Jj9IZ0UBtAbX5pw8hdKJTSXdVoahkzK82YpeyT2m733E0H0p4/'
|
||||
export const PACKET_STRINGS_SHA384 = 'sha384-YAzPNeMU+DF26OIEJrzo+Rr5f3lvoCjhae292a4tvGQZo5fggUQroiBVJCgBDtTF'
|
||||
|
|
|
|||
|
|
@ -287,10 +287,14 @@ const HEAD_COLUMNS_CSS = `
|
|||
// at 22 / 21px with darker ink: about 8pt on the printed page. Only the full layout (HEAD_COLUMNS) gets this; the
|
||||
// series-wide rules above stay as they were, so the series' SPARSE posters are byte-identical.
|
||||
// Print size = sheet px x 0.92 (the packet's margins) x 0.408 (1500px = 8.5in): 22px ≈ 8.3pt, 19px ≈ 7.1pt.
|
||||
// ★ THE NAMES COME FIRST (2026-10-03): the header columns step down to 18px (≈6.8pt; keys 15.5, headings 19) so
|
||||
// the people-group names beside the map can be the larger type. The shorter band gives the map ~80px more height,
|
||||
// and the names' cap on this layout rises to 19px (see MAXF). These sizes must equal HC's (fs, keyFs, headFs).
|
||||
const HEAD_COLUMNS_FULL_CSS = `
|
||||
.hcolk{font-size:19px;fill:#2f2a22;font-weight:800;letter-spacing:.1em}
|
||||
.hcolt{font-size:22px;fill:#3a362c}
|
||||
.hcolh{font-family:Georgia,'Times New Roman',serif;font-size:23px;font-weight:700;fill:#2f2a22;letter-spacing:.04em;font-variant:small-caps}
|
||||
.hcolk{font-size:15.5px;fill:#2f2a22;font-weight:800;letter-spacing:.1em}
|
||||
.hcolt{font-size:18px;fill:#3a362c}
|
||||
.hcolb{font-weight:700;fill:#2f2a22}
|
||||
.hcolh{font-family:Georgia,'Times New Roman',serif;font-size:19px;font-weight:700;fill:#2f2a22;letter-spacing:.04em;font-variant:small-caps}
|
||||
.hvref{font-size:19px}
|
||||
.hverse{font-size:19.5px}
|
||||
.hsrc{font-size:22px;fill:#4a4636}
|
||||
|
|
@ -690,7 +694,9 @@ function layoutLabels(pins, project) {
|
|||
col.forEach((it) => { it.maxNum = MAXNUM_L; });
|
||||
// A map-only sheet frees the header and footer bands the same way SPARSE frees the vision
|
||||
// columns, so it gets SPARSE's ceiling; the solver still only uses what the column can hold.
|
||||
const MAXF = (SPARSE || MAP_ONLY) ? 19 : 15;
|
||||
// The three-column sheet (HEAD_COLUMNS) gets it too: there the names are the main text, and the cap of 15
|
||||
// held 21 of the 28 zones' names at 15px (≈5.6pt printed) with room to spare in the band.
|
||||
const MAXF = (SPARSE || MAP_ONLY || HEAD_COLUMNS) ? 19 : 15;
|
||||
// AVAIL IS THE COLUMN, AND THE NAME DOES NOT GET ALL OF IT.
|
||||
// The renderer draws the name starting one number-column IN from the column's
|
||||
// map-facing edge (`nameEdge = tx ± numColW`) but does not shrink its budget by
|
||||
|
|
@ -724,18 +730,23 @@ function layoutLabels(pins, project) {
|
|||
if (line) out.push(line);
|
||||
return out.length ? out : [it.name];
|
||||
};
|
||||
// The air between rows, as a share of the size. The three-column sheet sets it tighter (0.22): its densest
|
||||
// zones (95-118 names) are held by the band's height, and the tighter rows turn that height into type
|
||||
// (west-africa 12.5 -> 13.8px, laos 15.8 -> 17.3px). A row's underline sits 0.30 below its baseline and the
|
||||
// next row's capitals start 0.56 below it, so they stay clear. Every other sheet keeps 0.34.
|
||||
const GAPF = HEAD_COLUMNS ? 0.22 : 0.34;
|
||||
let font = MAXF, wraps = null;
|
||||
for (let f = MAXF; f >= 8; f -= 0.25) {
|
||||
const ws = col.map((it) => wrapName(it, f));
|
||||
const totalLines = ws.reduce((a, w) => a + w.length, 0);
|
||||
// Each line needs f*1.06 of pitch, plus a little air between rows.
|
||||
if (totalLines * (f * 1.06) + col.length * (f * 0.34) <= bandH) { font = f; wraps = ws; break; }
|
||||
if (totalLines * (f * 1.06) + col.length * (f * GAPF) <= bandH) { font = f; wraps = ws; break; }
|
||||
}
|
||||
if (!wraps) wraps = col.map((it) => wrapName(it, font));
|
||||
// Re-pitch rows by LINE COUNT so a two-line name gets the room it needs and
|
||||
// single-line rows are not stretched to match it.
|
||||
const lineH = font * 1.06;
|
||||
const gap = font * 0.34;
|
||||
const gap = font * GAPF;
|
||||
const usedH = wraps.reduce((a, w) => a + w.length * lineH, 0) + col.length * gap;
|
||||
const slack = Math.max(0, bandH - usedH) / Math.max(1, col.length);
|
||||
let cursor = bandTop + slack / 2;
|
||||
|
|
@ -830,7 +841,8 @@ function paraInto(push, text, { x, y, w, fs, lh, cls, lead }) {
|
|||
// 1 Jesus' strategy to feed the 5000
|
||||
// 2 the facts: a bold key above each value (countries, administrative areas, people groups, series)
|
||||
// 3 what the series is
|
||||
const HC = { gut: 32, fs: 22, lh: 27, keyFs: 19, keyLh: 24, headLh: 30, gap: 8, headFs: 23 };
|
||||
// The sizes equal HEAD_COLUMNS_FULL_CSS (.hcolt = fs, .hcolk = keyFs, .hcolh = headFs); leading and gaps scale with them.
|
||||
const HC = { gut: 32, fs: 18, lh: 22, keyFs: 15.5, keyLh: 19.5, headLh: 24.5, gap: 7, headFs: 19 };
|
||||
// textW is calibrated for Lato. Without Lato the browser falls back to a system sans that sets
|
||||
// these columns 2-6% wider (measured 1.05-1.06x in DejaVu Sans). Each block is centred on its
|
||||
// width at 1.03x, halfway, so any overrun splits across both sides instead of all running right.
|
||||
|
|
@ -851,17 +863,50 @@ const strategyParas = () => (POSTER_TEXT.strategyBody ? [].concat(POSTER_TEXT.st
|
|||
// series.json (poster.sideBoxMore: one paragraph, or a list; [] prints none), as UPG100 does to keep its band even.
|
||||
const whatIsMore = () => (POSTER_TEXT.sideBoxMore !== undefined ? [].concat(POSTER_TEXT.sideBoxMore) : [WHAT_IS_MORE]);
|
||||
const WHAT_IS_MORE = 'Each map comes with a prayer list of its fifty to a hundred people groups — their names, a representative photo, and more detail — to mobilise informed intercession.';
|
||||
// A paragraph's lines as SVG text content, its **...** runs set bold (.hcolb); the markers are not printed.
|
||||
// The wrap measures the plain text: a short bold run is a few px wider, inside the measure's room.
|
||||
function boldLines(text, width) {
|
||||
let plain = '', bold = [], on = false;
|
||||
for (const part of String(text).replace(/\s+/g, ' ').trim().split('**')) {
|
||||
for (let i = 0; i < part.length; i++) { plain += part[i]; bold.push(on); } // per UTF-16 unit, as plain[p] reads
|
||||
on = !on;
|
||||
}
|
||||
// A scripture reference never breaks between its book and its chapter:verse ("Mark 6:40"): that space becomes a
|
||||
// placeholder for the wrap and prints as a space again. One character for one, so the bold flags stay aligned.
|
||||
plain = plain.replace(/([A-Za-z]+) (\d+:\d+)/g, '$1\u0001$2');
|
||||
let p = 0;
|
||||
return wrapPx(plain, HC.fs, width).map((ln) => {
|
||||
while (plain[p] === ' ') p++;
|
||||
let out = '', run = '', runBold = null;
|
||||
const flush = () => { if (run) out += runBold ? `<tspan class="hcolb">${esc(run)}</tspan>` : esc(run); run = ''; };
|
||||
for (let k = 0; k < ln.length; k++, p++) {
|
||||
if (bold[p] !== runBold) { flush(); runBold = bold[p]; }
|
||||
run += plain[p] === '\u0001' ? ' ' : plain[p];
|
||||
}
|
||||
flush();
|
||||
return out;
|
||||
});
|
||||
}
|
||||
function headColumnsBand(top, facts, approxLists) {
|
||||
const GRID_L = BAND_MARGIN_G, GRID_W = PW - 2 * BAND_MARGIN_G;
|
||||
const CW = (GRID_W - 2 * HC.gut) / 3;
|
||||
const AVAIL = GRID_W - 2 * HC.gut;
|
||||
// The measure leaves room for a fallback font (see HC_FALLBACK): a block set to it stays inside its column.
|
||||
const TW = (CW - 10 - BAND_TEXT_PAD / 2) * 0.92;
|
||||
const measure = (cw) => (cw - 10 - BAND_TEXT_PAD / 2) * 0.92;
|
||||
// ★ EVEN COLUMNS (2026-10-03): when the facts column runs longer than the two text columns it is WIDENED (and
|
||||
// shorter, it is narrowed) so the three end at about the same height. The two side columns stay equal, so they
|
||||
// still mirror each other round the centre. The centre's share is searched from 26% to 46% of the three-column
|
||||
// width; the split whose TALLEST column is shortest wins, and a tie goes to the split nearest equal widths, so a
|
||||
// zone that is already balanced keeps equal columns. measureHeader calls this same function, so the map below
|
||||
// gets exactly the height that is left.
|
||||
// Uppercase, letterspaced keys: measured as capitals plus the .14em tracking.
|
||||
const keyW = (k) => textW(k.toUpperCase(), HC.keyFs) + k.length * HC.keyFs * 0.14;
|
||||
// Each column's height at a given measure (the same arithmetic the drawing below advances y by).
|
||||
const proseH = (col, tw) => HC.headLh + col[0].paras.reduce((h, t, k) => h + (k ? HC.gap : 0) + boldLines(t, tw).length * HC.lh, 0);
|
||||
const factsH = (tw) => facts.reduce((h, [, value], k) => h + (k ? HC.gap : 0) + HC.keyLh + wrapPx(value, HC.fs, tw).length * HC.lh, 0);
|
||||
// Column order (2026-10-02): Jesus' strategy | the facts | what the series is.
|
||||
const cols = [
|
||||
[{ head: 'Jesus’ Strategy to Feed the 5000', paras: strategyParas() }],
|
||||
facts.map(([key, value]) => ({ key, lines: wrapPx(value, HC.fs, TW) })),
|
||||
null, // the facts column, wrapped below at the centre's measure
|
||||
[{ head: POSTER_TEXT.sideBoxHeading || 'What is a UPG100 List?', paras: [
|
||||
(POSTER_TEXT.sideBoxBody
|
||||
|| 'This map is one of a {approxLists}-map set called the {seriesName} — a large, overwhelming target in the thousands, organised into clear groupings and displayed on maps and prayer lists.')
|
||||
|
|
@ -869,9 +914,22 @@ function headColumnsBand(top, facts, approxLists) {
|
|||
...whatIsMore(),
|
||||
] }],
|
||||
];
|
||||
// The split: equal thirds first, then centre shares on a 1% step ordered by their distance from a third, so
|
||||
// among splits whose tallest column is equally short, the one nearest equal widths is found first and kept.
|
||||
const shares = Array.from({ length: 21 }, (_, k) => 0.26 + k * 0.01).sort((a, b) => Math.abs(a - 1 / 3) - Math.abs(b - 1 / 3));
|
||||
let best = null;
|
||||
for (const cwC of [1 / 3, ...shares].map((f) => AVAIL * f)) {
|
||||
const cwS = (AVAIL - cwC) / 2;
|
||||
const tall = Math.max(proseH(cols[0], measure(cwS)), factsH(measure(cwC)), proseH(cols[2], measure(cwS)));
|
||||
if (!best || tall < best.tall - 0.5) best = { cwC, cwS, tall };
|
||||
}
|
||||
const widths = [best.cwS, best.cwC, best.cwS];
|
||||
const lefts = [GRID_L, GRID_L + best.cwS + HC.gut, GRID_L + best.cwS + HC.gut + best.cwC + HC.gut];
|
||||
cols[1] = facts.map(([key, value]) => ({ key, lines: wrapPx(value, HC.fs, measure(best.cwC)) }));
|
||||
let frags = '', bottom = top;
|
||||
cols.forEach((col, i) => {
|
||||
const centre = GRID_L + i * (CW + HC.gut) + CW / 2;
|
||||
const CW = widths[i], TW = measure(CW);
|
||||
const centre = lefts[i] + CW / 2;
|
||||
if (col[0] && col[0].key !== undefined) { // the facts column: a bold key above each value
|
||||
const blockW = Math.min(TW, Math.max(...col.map((r) => Math.max(keyW(r.key), ...r.lines.map((ln) => textW(ln, HC.fs))))));
|
||||
const x = (centre - blockW * HC_FALLBACK / 2).toFixed(1);
|
||||
|
|
@ -885,20 +943,22 @@ function headColumnsBand(top, facts, approxLists) {
|
|||
bottom = Math.max(bottom, y);
|
||||
} else {
|
||||
const { head, paras } = col[0];
|
||||
const wrapped = paras.map((t) => wrapPx(t, HC.fs, TW));
|
||||
const blockW = Math.min(TW, Math.max(textW(head, HC.headFs), ...wrapped.flat().map((ln) => textW(ln, HC.fs))));
|
||||
// ★ MIRRORED (2026-10-03): both prose columns take the full measure, so each sits the same distance from
|
||||
// its rule and the two outer columns mirror each other round the centred facts column. (Each used to be
|
||||
// centred on its own widest line, so the two could sit at different distances from their rules.)
|
||||
const blockW = TW;
|
||||
const x = (centre - blockW * HC_FALLBACK / 2).toFixed(1);
|
||||
frags += `<text x="${x}" y="${top}" class="hcolh">${esc(head)}</text>`;
|
||||
let y = top + HC.headLh;
|
||||
wrapped.forEach((lines, k) => {
|
||||
paras.forEach((text, k) => {
|
||||
if (k) y += HC.gap;
|
||||
for (const ln of lines) { frags += `<text x="${x}" y="${y}" class="hcolt">${esc(ln)}</text>`; y += HC.lh; }
|
||||
for (const ln of boldLines(text, TW)) { frags += `<text x="${x}" y="${y}" class="hcolt">${ln}</text>`; y += HC.lh; }
|
||||
});
|
||||
bottom = Math.max(bottom, y);
|
||||
}
|
||||
});
|
||||
for (let i = 1; i < 3; i++) {
|
||||
const rx = (GRID_L + i * (CW + HC.gut) - HC.gut / 2).toFixed(1);
|
||||
const rx = (lefts[i] - HC.gut / 2).toFixed(1);
|
||||
frags += `<line x1="${rx}" y1="${top - 14}" x2="${rx}" y2="${bottom - 12}" class="hcolrule"/>`;
|
||||
}
|
||||
return { frags, bottom };
|
||||
|
|
@ -2344,7 +2404,7 @@ async function renderPoster(zone, pins, zoneFC) {
|
|||
let cy0 = bodyTop;
|
||||
strategyParas().forEach((text, k) => {
|
||||
if (k) cy0 += 5;
|
||||
cy0 = paraInto(push, text, { x: b1x[0], y: cy0, w: B1_TW, fs: B1_FS, lh: B1_LH, cls: 'hsrc2' });
|
||||
cy0 = paraInto(push, String(text).replace(/\*\*/g, ''), { x: b1x[0], y: cy0, w: B1_TW, fs: B1_FS, lh: B1_LH, cls: 'hsrc2' });
|
||||
});
|
||||
|
||||
let cy1 = bodyTop;
|
||||
|
|
@ -2355,9 +2415,11 @@ async function renderPoster(zone, pins, zoneFC) {
|
|||
|| 'This map is one of a {approxLists}-map set called the {seriesName} — a large, overwhelming target in the thousands, organised into clear groupings and displayed on maps and prayer lists.')
|
||||
.replace('{approxLists}', String(approxLists))
|
||||
.replace('{seriesName}', SERIES_NAME);
|
||||
// A **...** bold marker is the band's (boldLines); this classic header prints plain, so the markers are dropped.
|
||||
const plain = (t) => String(t).replace(/\*\*/g, '');
|
||||
[whatIs, ...whatIsMore()].forEach((text, k) => {
|
||||
if (k) cy1 += 5;
|
||||
cy1 = paraInto(push, text, { x: b1x[1], y: cy1, w: B1_TW, fs: B1_FS, lh: B1_LH, cls: 'hsrc2' });
|
||||
cy1 = paraInto(push, plain(text), { x: b1x[1], y: cy1, w: B1_TW, fs: B1_FS, lh: B1_LH, cls: 'hsrc2' });
|
||||
});
|
||||
|
||||
const b1Bot = Math.max(cy0, cy1);
|
||||
|
|
|
|||
|
|
@ -1,8 +1,14 @@
|
|||
// The Subresource-Integrity form of a text's SHA-384 ("sha384-<base64>"), via WebCrypto, so a file fetched at
|
||||
// print time can be compared with the pin baked into the bundle (poster-render.integrity.js) before it is used.
|
||||
// The same value pin-poster-render.mjs computes with node:crypto.
|
||||
// ★ ONLY ON A SECURE PAGE. A browser gives crypto.subtle only to a secure page (https, or http://localhost). Opened any
|
||||
// other way (a dev server reached over plain http by its LAN address, from a phone on the same Wi-Fi), every pinned
|
||||
// file was refused with a bare "reading 'digest'": the packet printed in English and page 1 fell back to its stored
|
||||
// sheet, with nothing saying why. Say it in words.
|
||||
export async function sha384(text) {
|
||||
const d = new Uint8Array(await crypto.subtle.digest('SHA-384', new TextEncoder().encode(text)))
|
||||
const subtle = globalThis.crypto && globalThis.crypto.subtle
|
||||
if (!subtle) throw new Error('pinned files can only be checked on a secure page (https, or http://localhost); this page is not one')
|
||||
const d = new Uint8Array(await subtle.digest('SHA-384', new TextEncoder().encode(text)))
|
||||
let bin = ''
|
||||
for (const b of d) bin += String.fromCharCode(b)
|
||||
return `sha384-${btoa(bin)}`
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@
|
|||
"n": 1,
|
||||
"rhythm": "praise",
|
||||
"sub": "Two-Cross Gospel",
|
||||
"text": "That they accept Christ as King, forgiven by His cross — and take up their own cross, willing to suffer through persecution. May the Lamb receive the reward of His suffering, starting with me.",
|
||||
"text": "Praise Jesus for taking up a cross for you and being humbled. Crown Him as your King, and pray for these nations (people groups) that they will do the same. Devote yourself to Jesus to take up your own cross and follow Him, even through suffering, and death. Praise Him for He is worthy of these nations (people groups) taking up their own cross, willing to follow Jesus no matter what the cost. May the Lamb receive the reward of His suffering, starting with me.",
|
||||
"refs": [
|
||||
"Matthew 27:27",
|
||||
"Matthew 16:24–25"
|
||||
|
|
@ -62,7 +62,7 @@
|
|||
"n": 2,
|
||||
"rhythm": "wait",
|
||||
"sub": "Holy Spirit & deliverance",
|
||||
"text": "Spend time waiting on the Holy Spirit to tell you and empower you to pray as a bold prayer warrior for them: that they are filled with the Holy Spirit and made bold witnesses, not isolated; baptized in water and Spirit; every evil grip broken; and that believers in neighboring people groups are mobilized as laborers.",
|
||||
"text": "Spend time waiting on the Holy Spirit to fill you and empower you to pray as a bold prayer warrior for them. Focus in on God's presence, and wait on the Lord!",
|
||||
"refs": [
|
||||
"Acts 1:8",
|
||||
"John 14:26"
|
||||
|
|
@ -72,7 +72,7 @@
|
|||
"n": 3,
|
||||
"rhythm": "confess",
|
||||
"sub": "",
|
||||
"text": "We confess the unbelief that it is too big an ask for God to reach all of these unreached people groups in our lifetime. We receive the truth that He is reviving our love and faith for the global unreached.",
|
||||
"text": "Be open and honest with God about your fears, lies, and unbelief surrounding unreached people groups (Example lie: It is too big an ask for God to reach all of these unreached people groups in our lifetime). Receive His love, truth, and voice surrounding unreached people groups and your role in helping Him reach these people groups. Ask God to revive your love and faith for the people groups on your prayer list.",
|
||||
"refs": [
|
||||
"John 3:16",
|
||||
"1 John 1:9"
|
||||
|
|
@ -81,8 +81,8 @@
|
|||
{
|
||||
"n": 4,
|
||||
"rhythm": "read",
|
||||
"sub": "the Father's love",
|
||||
"text": "That they would be SAVED and KNOW their heavenly Father loves them — and that through them He would bring salvation to their family, friends, neighbours, coworkers, classmates, everyone they know personally.",
|
||||
"sub": "the heavenly Father's love",
|
||||
"text": "That they would be SAVED and KNOW their heavenly Father loves them — He wants to save them, and through them He wants to bring salvation to their family, friends, neighbors, coworkers, classmates, everyone they know personally.",
|
||||
"refs": [
|
||||
"Mark 5:18–20",
|
||||
"Acts 16:31"
|
||||
|
|
@ -93,7 +93,7 @@
|
|||
"n": 5,
|
||||
"rhythm": "ask",
|
||||
"sub": "baptisms",
|
||||
"text": "New baptisms among the indigenous people groups, and every baptized disciple trained to baptize others — multiplying baptisms.",
|
||||
"text": "New baptisms among the indigenous people groups, and every baptized disciple is trained to baptize others — multiplying baptisms.",
|
||||
"refs": [
|
||||
"Acts 16",
|
||||
"Acts 10"
|
||||
|
|
@ -103,7 +103,7 @@
|
|||
"n": 6,
|
||||
"rhythm": "intercede",
|
||||
"sub": "laborers & shepherds",
|
||||
"text": "Laborers sent to deeply love a people they have never met; good shepherds raised up from within.",
|
||||
"text": "For laborers sent to deeply love a people they have never met; and indigenous good shepherds raised up from within the people groups.",
|
||||
"refs": [
|
||||
"Luke 10:2",
|
||||
"John 10:11–15"
|
||||
|
|
@ -113,7 +113,7 @@
|
|||
"n": 7,
|
||||
"rhythm": "pray_word",
|
||||
"sub": "Persons & Houses of Peace",
|
||||
"text": "That laborers and indigenous leaders find the receptive person and the house of peace, deeply love them, disciple them well, baptize them, and train them to reach their friends and family with their newfound love for Jesus.",
|
||||
"text": "That laborers and indigenous disciples find the receptive person and the house of peace, deeply love them, disciple them well, baptize them, and train them to reach their friends and family with their newfound love for Jesus.",
|
||||
"refs": [
|
||||
"Luke 10:5–7",
|
||||
"Matthew 10:5–14"
|
||||
|
|
@ -133,17 +133,17 @@
|
|||
"n": 9,
|
||||
"rhythm": "sing",
|
||||
"sub": "",
|
||||
"text": "That the people group is flooded with worshippers — worship everywhere, in freedom and in chains.",
|
||||
"text": "Imagine you are with Jesus worshipping Him, and you are surrounded by all the people groups on your prayer list worshipping Him too. Spend some time to praise Jesus.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
"n": 10,
|
||||
"rhythm": "meditate",
|
||||
"sub": "communion",
|
||||
"text": "That they take communion together and grasp the freedom they have in Christ through His death, burial and resurrection.",
|
||||
"text": "Focus on Jesus. Take communion if possible. Imagine being together with Jesus at a table with one person from each people group on your list. What is it going to take for this to become a reality?",
|
||||
"refs": [
|
||||
"Matthew 26:26–30",
|
||||
"1 Corinthians 11:23–26"
|
||||
|
|
@ -163,11 +163,10 @@
|
|||
"n": 12,
|
||||
"rhythm": "praise_end",
|
||||
"sub": "blessing · great · greater · greatest",
|
||||
"text": "Pray Jesus’ prayer in John 17 over them. The blessing: eternal life, knowing God and Jesus, whom He sent. The great blessing: their own believers leading others to faith. The greater blessing: new spiritual families of their own, one in Christ. One of the greatest: leaders from among them who train others to start new spiritual families, again and again. Ask all this and more, beyond all we ask or think. Ask, as Jesus did, that they be one and kept from the evil one. None of it is possible unless Jesus is who He says He is.",
|
||||
"text": "Short reading: It is a blessing from God for people in these people groups to be saved through Jesus and have eternal life (John 17:3). It is a great blessing from God for indigenous disciples to lead their friends, family, coworkers, classmates, neighbors, and people they don't know, to Jesus through their witness (John 17:20). It is a greater blessing from God when indigenous leaders in these people groups start new churches that are unified in Jesus (John 17:21). It is one of the greatest blessings from God, when indigenous leaders train other indigenous leaders to start more churches unified in Christ. They begin to worship Jesus and spread throughout neighboring unreached people groups bringing the life of Jesus to the ends of the earth. Spend time singing praise to God. He is worthy of worshippers in all these people groups!",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -175,8 +174,8 @@
|
|||
"point4_passage_credit": "Mark 5:18–20 · World English Bible (public domain)",
|
||||
"point4_passage_bold": "He didn’t allow him, but said to him, “Go to your house, to your friends, and tell them what great things the Lord has done for you and how he had mercy on you.”",
|
||||
"point4_heart_title": "THE HEAVENLY FATHER'S HEART",
|
||||
"point4_heart_lede": "They need to know that their Heavenly Father loves them, He wants to save them, and through them He wants their unreached people group neighbors to be saved.",
|
||||
"point4_heart_leadin": "More scriptures about the heavenly Father's heart",
|
||||
"point4_heart_lede": "They need to know that their heavenly Father loves them, He wants to save them, and through them He wants their unreached people group neighbors to be saved.",
|
||||
"point4_heart_leadin": "More scriptures about the heavenly Father's heart (pick one scripture to read)",
|
||||
"point4_heart": [
|
||||
{
|
||||
"who": "Noah",
|
||||
|
|
@ -263,6 +262,7 @@
|
|||
"sets_bounded_title": "Reached, and not",
|
||||
"sets_centered_title": "Distance from a neighbour",
|
||||
"sets_bounded_tally": "{inside} inside · {outside} outside · {unknown} unknown",
|
||||
"sets_no_data": "{n} without data",
|
||||
"sets_centered_tally": "{placed} placed · {centre} at the centre · {unplaced} unplaced",
|
||||
"ring_band_dialect": "Same dialect",
|
||||
"ring_band_language": "Same language",
|
||||
|
|
@ -297,7 +297,8 @@
|
|||
"Haggai": "Haggai",
|
||||
"Isaiah": "Isaiah",
|
||||
"Habakkuk": "Habakkuk",
|
||||
"Ephesians": "Ephesians"
|
||||
"Ephesians": "Ephesians",
|
||||
"Revelation": "Revelation"
|
||||
},
|
||||
"christian_per_cell": "Each box ≈ {n} people",
|
||||
"howto_title": "How to pray with this list",
|
||||
|
|
@ -488,7 +489,7 @@
|
|||
"text": "Que el grupo étnico sea inundado de adoradores — adoración en todas partes, en libertad y en cadenas.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -517,9 +518,8 @@
|
|||
"sub": "bendición · grande · mayor · de las mayores",
|
||||
"text": "Ora sobre ellos la oración de Jesús en Juan 17. La bendición: la vida eterna, conocer a Dios y a Jesús, a quien él envió. La gran bendición: que sus propios creyentes lleven a otros a la fe. La bendición mayor: nuevas familias espirituales propias, unidas en Cristo. Una de las mayores: líderes de entre ellos que formen a otros para iniciar nuevas familias espirituales, una y otra vez. Pide todo esto y más, mucho más de lo que pedimos o pensamos. Pide, como Jesús, que sean uno y que sean guardados del maligno. Nada de esto es posible si Jesús no es quien dice ser.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -608,6 +608,7 @@
|
|||
"sets_bounded_title": "Alcanzados y no alcanzados",
|
||||
"sets_centered_title": "Distancia a un vecino",
|
||||
"sets_bounded_tally": "{inside} dentro · {outside} fuera · {unknown} desconocido",
|
||||
"sets_no_data": "{n} sin datos",
|
||||
"sets_centered_tally": "{placed} ubicados · {centre} en el centro · {unplaced} sin ubicar",
|
||||
"ring_band_dialect": "Mismo dialecto",
|
||||
"ring_band_language": "Misma lengua",
|
||||
|
|
@ -642,7 +643,8 @@
|
|||
"Haggai": "Hageo",
|
||||
"Isaiah": "Isaías",
|
||||
"Habakkuk": "Habacuc",
|
||||
"Ephesians": "Efesios"
|
||||
"Ephesians": "Efesios",
|
||||
"Revelation": "Apocalipsis"
|
||||
},
|
||||
"christian_per_cell": "Cada casilla ≈ {n} personas",
|
||||
"howto_title": "Cómo orar con esta lista",
|
||||
|
|
@ -819,7 +821,7 @@
|
|||
"text": "Que le groupe ethnique soit inondé d'adorateurs — l'adoration partout, dans la liberté comme dans les chaînes.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -848,9 +850,8 @@
|
|||
"sub": "bénédiction · grande · plus grande · parmi les plus grandes",
|
||||
"text": "Priez sur eux la prière de Jésus en Jean 17. La bénédiction : la vie éternelle, connaître Dieu et Jésus, celui qu’il a envoyé. La grande bénédiction : que leurs propres croyants amènent d’autres à la foi. Une bénédiction plus grande : de nouvelles familles spirituelles bien à eux, unies en Christ. L’une des plus grandes : des responsables issus de leur peuple qui forment d’autres personnes à fonder de nouvelles familles spirituelles, encore et encore. Demandez tout cela et plus encore, au-delà de tout ce que nous demandons ou pensons. Demandez, comme Jésus, qu’ils soient un et gardés du malin. Rien de cela n’est possible si Jésus n’est pas celui qu’il dit être.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -939,6 +940,7 @@
|
|||
"sets_bounded_title": "Atteints, ou non",
|
||||
"sets_centered_title": "Distance d’un voisin",
|
||||
"sets_bounded_tally": "{inside} à l’intérieur · {outside} à l’extérieur · {unknown} inconnu",
|
||||
"sets_no_data": "{n} sans données",
|
||||
"sets_centered_tally": "{placed} placés · {centre} au centre · {unplaced} non placés",
|
||||
"ring_band_dialect": "Même dialecte",
|
||||
"ring_band_language": "Même langue",
|
||||
|
|
@ -973,7 +975,8 @@
|
|||
"Haggai": "Aggée",
|
||||
"Isaiah": "Ésaïe",
|
||||
"Habakkuk": "Habacuc",
|
||||
"Ephesians": "Éphésiens"
|
||||
"Ephesians": "Éphésiens",
|
||||
"Revelation": "Apocalypse"
|
||||
},
|
||||
"christian_per_cell": "Chaque case ≈ {n} personnes",
|
||||
"howto_title": "Comment prier avec cette liste",
|
||||
|
|
@ -1150,7 +1153,7 @@
|
|||
"text": "Que o grupo étnico seja inundado de adoradores — adoração em toda parte, em liberdade e em correntes.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -1179,9 +1182,8 @@
|
|||
"sub": "bênção · grande · maior · das maiores",
|
||||
"text": "Ore sobre eles a oração de Jesus em João 17. A bênção: a vida eterna, conhecer a Deus e a Jesus, a quem ele enviou. A grande bênção: que os seus próprios crentes levem outros à fé. A bênção maior: novas famílias espirituais deles mesmos, unidas em Cristo. Uma das maiores: líderes do meio deles que preparem outros para começar novas famílias espirituais, vez após vez. Peça tudo isso e mais, muito além do que pedimos ou pensamos. Peça, como Jesus pediu, que sejam um e guardados do maligno. Nada disso é possível se Jesus não for quem ele diz ser.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -1267,6 +1269,7 @@
|
|||
"sets_bounded_title": "Alcançados e não alcançados",
|
||||
"sets_centered_title": "Distância de um vizinho",
|
||||
"sets_bounded_tally": "{inside} dentro · {outside} fora · {unknown} desconhecido",
|
||||
"sets_no_data": "{n} sem dados",
|
||||
"sets_centered_tally": "{placed} posicionados · {centre} no centro · {unplaced} sem posição",
|
||||
"ring_band_dialect": "Mesmo dialeto",
|
||||
"ring_band_language": "Mesma língua",
|
||||
|
|
@ -1301,7 +1304,8 @@
|
|||
"Haggai": "Ageu",
|
||||
"Isaiah": "Isaías",
|
||||
"Habakkuk": "Habacuque",
|
||||
"Ephesians": "Efésios"
|
||||
"Ephesians": "Efésios",
|
||||
"Revelation": "Apocalipse"
|
||||
},
|
||||
"christian_per_cell": "Cada caixa ≈ {n} pessoas",
|
||||
"howto_title": "Como orar com esta lista",
|
||||
|
|
@ -1478,7 +1482,7 @@
|
|||
"text": "Dass die Volksgruppe von Anbetern überflutet wird — Anbetung überall, in Freiheit und in Ketten.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -1507,9 +1511,8 @@
|
|||
"sub": "Segen · groß · größer · einer der größten",
|
||||
"text": "Beten Sie Jesu Gebet aus Johannes 17 über ihnen. Der Segen: ewiges Leben, Gott zu kennen und Jesus, den er gesandt hat. Der große Segen: dass ihre eigenen Gläubigen andere zum Glauben führen. Der größere Segen: neue geistliche Familien, ihre eigenen, eins in Christus. Einer der größten: Leiter aus ihrer Mitte, die andere anleiten, neue geistliche Familien zu gründen, immer wieder. Bitten Sie um all das und mehr, über alles hinaus, was wir bitten oder verstehen. Bitten Sie wie Jesus, dass sie eins seien und vor dem Bösen bewahrt werden. Nichts davon ist möglich, wenn Jesus nicht der ist, der er zu sein sagt.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -1598,6 +1601,7 @@
|
|||
"sets_bounded_title": "Erreicht und nicht erreicht",
|
||||
"sets_centered_title": "Abstand zu einem Nachbarn",
|
||||
"sets_bounded_tally": "{inside} innen · {outside} außen · {unknown} unbekannt",
|
||||
"sets_no_data": "{n} ohne Daten",
|
||||
"sets_centered_tally": "{placed} platziert · {centre} in der Mitte · {unplaced} ohne Platz",
|
||||
"ring_band_dialect": "Gleicher Dialekt",
|
||||
"ring_band_language": "Gleiche Sprache",
|
||||
|
|
@ -1632,7 +1636,8 @@
|
|||
"Haggai": "Haggai",
|
||||
"Isaiah": "Jesaja",
|
||||
"Habakkuk": "Habakuk",
|
||||
"Ephesians": "Epheser"
|
||||
"Ephesians": "Epheser",
|
||||
"Revelation": "Offenbarung"
|
||||
},
|
||||
"christian_per_cell": "Jedes Kästchen ≈ {n} Menschen",
|
||||
"howto_title": "So beten Sie mit dieser Liste",
|
||||
|
|
@ -1809,7 +1814,7 @@
|
|||
"text": "Che il gruppo etnico sia inondato di adoratori — adorazione ovunque, nella libertà e nelle catene.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -1838,9 +1843,8 @@
|
|||
"sub": "benedizione · grande · più grande · tra le più grandi",
|
||||
"text": "Prega su di loro la preghiera di Gesù in Giovanni 17. La benedizione: la vita eterna, conoscere Dio e Gesù, colui che egli ha mandato. La grande benedizione: che i loro stessi credenti portino altri alla fede. La benedizione più grande: nuove famiglie spirituali tutte loro, unite in Cristo. Una delle più grandi: responsabili del loro popolo che formano altri ad avviare nuove famiglie spirituali, ancora e ancora. Chiedi tutto questo e di più, oltre tutto ciò che chiediamo o pensiamo. Chiedi, come Gesù, che siano uno e custoditi dal maligno. Niente di tutto questo è possibile se Gesù non è chi dice di essere.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -1926,6 +1930,7 @@
|
|||
"sets_bounded_title": "Raggiunti e non raggiunti",
|
||||
"sets_centered_title": "Distanza da un vicino",
|
||||
"sets_bounded_tally": "{inside} dentro · {outside} fuori · {unknown} sconosciuto",
|
||||
"sets_no_data": "{n} senza dati",
|
||||
"sets_centered_tally": "{placed} collocati · {centre} al centro · {unplaced} non collocati",
|
||||
"ring_band_dialect": "Stesso dialetto",
|
||||
"ring_band_language": "Stessa lingua",
|
||||
|
|
@ -1960,7 +1965,8 @@
|
|||
"Haggai": "Aggeo",
|
||||
"Isaiah": "Isaia",
|
||||
"Habakkuk": "Abacuc",
|
||||
"Ephesians": "Efesini"
|
||||
"Ephesians": "Efesini",
|
||||
"Revelation": "Apocalisse"
|
||||
},
|
||||
"christian_per_cell": "Ogni casella ≈ {n} persone",
|
||||
"howto_title": "Come pregare con questa lista",
|
||||
|
|
@ -2137,7 +2143,7 @@
|
|||
"text": "Grupul etnic să fie inundat de închinători — închinare pretutindeni, în libertate și în lanțuri.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -2166,9 +2172,8 @@
|
|||
"sub": "binecuvântare · mare · mai mare · printre cele mai mari",
|
||||
"text": "Roagă-te peste ei cu rugăciunea lui Isus din Ioan 17. Binecuvântarea: viața veșnică, să-L cunoască pe Dumnezeu și pe Isus, pe care L-a trimis. Marea binecuvântare: ca propriii lor credincioși să-i aducă pe alții la credință. O binecuvântare și mai mare: familii spirituale noi, ale lor, una în Hristos. Una dintre cele mai mari: lideri dintre ei care îi pregătesc pe alții să înceapă noi familii spirituale, iar și iar. Cere toate acestea și mai mult, dincolo de tot ce cerem sau gândim. Cere, ca Isus, să fie una și păziți de cel rău. Nimic din toate acestea nu este posibil dacă Isus nu este Cel care spune că este.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -2254,6 +2259,7 @@
|
|||
"sets_bounded_title": "Atinse și neatinse",
|
||||
"sets_centered_title": "Distanța față de un vecin",
|
||||
"sets_bounded_tally": "{inside} înăuntru · {outside} în afară · {unknown} necunoscut",
|
||||
"sets_no_data": "{n} fără date",
|
||||
"sets_centered_tally": "{placed} plasate · {centre} în centru · {unplaced} neplasate",
|
||||
"ring_band_dialect": "Același dialect",
|
||||
"ring_band_language": "Aceeași limbă",
|
||||
|
|
@ -2288,7 +2294,8 @@
|
|||
"Haggai": "Hagai",
|
||||
"Isaiah": "Isaia",
|
||||
"Habakkuk": "Habacuc",
|
||||
"Ephesians": "Efeseni"
|
||||
"Ephesians": "Efeseni",
|
||||
"Revelation": "Apocalipsa"
|
||||
},
|
||||
"christian_per_cell": "Fiecare căsuță ≈ {n} de oameni",
|
||||
"howto_title": "Cum să te rogi cu această listă",
|
||||
|
|
@ -2463,7 +2470,7 @@
|
|||
"text": "Чтобы народ наполнился поклонниками — поклонение повсюду, в свободе и в цепях.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -2492,9 +2499,8 @@
|
|||
"sub": "благословение · великое · большее · одно из величайших",
|
||||
"text": "Молитесь над ними молитвой Иисуса из Иоанна 17. Благословение: вечная жизнь — знать Бога и Иисуса, Которого Он послал. Великое благословение: чтобы их собственные верующие приводили других к вере. Ещё большее благословение: новые духовные семьи, свои собственные, единые во Христе. Одно из величайших: лидеры из их среды, которые учат других начинать новые духовные семьи — снова и снова. Просите обо всём этом и о большем — превыше всего, чего мы просим или о чём помышляем. Просите, как Иисус, чтобы они были едины и сохранены от лукавого. Ничто из этого невозможно, если Иисус не Тот, Кем Он Себя называет.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -2583,6 +2589,7 @@
|
|||
"sets_bounded_title": "Достигнутые и нет",
|
||||
"sets_centered_title": "Расстояние до соседа",
|
||||
"sets_bounded_tally": "{inside} внутри · {outside} снаружи · {unknown} неизвестно",
|
||||
"sets_no_data": "{n} без данных",
|
||||
"sets_centered_tally": "{placed} размещено · {centre} в центре · {unplaced} без места",
|
||||
"ring_band_dialect": "Тот же диалект",
|
||||
"ring_band_language": "Тот же язык",
|
||||
|
|
@ -2617,7 +2624,8 @@
|
|||
"Haggai": "Агг.",
|
||||
"Isaiah": "Ис.",
|
||||
"Habakkuk": "Авв.",
|
||||
"Ephesians": "Еф."
|
||||
"Ephesians": "Еф.",
|
||||
"Revelation": "Откр."
|
||||
},
|
||||
"christian_per_cell": "Каждая клетка ≈ {n} чел.",
|
||||
"howto_title": "Как молиться по этому списку",
|
||||
|
|
@ -2801,7 +2809,7 @@
|
|||
"text": "أن يفيض الشعب بالساجدين — عبادة في كل مكان، في الحرية وفي القيود.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -2830,9 +2838,8 @@
|
|||
"sub": "البركة · العظيمة · الأعظم · من أعظمها",
|
||||
"text": "صلِّ لأجلهم بصلاة يسوع في يوحنا ١٧. البركة: الحياة الأبدية، أن يعرفوا الله ويسوع الذي أرسله. البركة العظيمة: أن يقود المؤمنون منهم غيرهم إلى الإيمان. البركة الأعظم: عائلات روحية جديدة خاصة بهم، واحدة في المسيح. ومن أعظم البركات: قادة من بينهم يدرّبون آخرين ليبدؤوا عائلات روحية جديدة، مرة بعد مرة. اطلب كل هذا وأكثر، أكثر جدًا مما نطلب أو نفتكر. واطلب، كما طلب يسوع، أن يكونوا واحدًا وأن يُحفظوا من الشرير. لا شيء من هذا ممكن إن لم يكن يسوع هو مَن يقول إنه هو.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -2921,6 +2928,7 @@
|
|||
"sets_bounded_title": "وصلتهم البشارة ومن لم تصلهم",
|
||||
"sets_centered_title": "المسافة إلى جار",
|
||||
"sets_bounded_tally": "{inside} في الداخل · {outside} في الخارج · {unknown} غير معروف",
|
||||
"sets_no_data": "{n} بلا بيانات",
|
||||
"sets_centered_tally": "{placed} موضوعون · {centre} في المركز · {unplaced} بلا موضع",
|
||||
"ring_band_dialect": "اللهجة نفسها",
|
||||
"ring_band_language": "اللغة نفسها",
|
||||
|
|
@ -2955,7 +2963,8 @@
|
|||
"Haggai": "حجي",
|
||||
"Isaiah": "إشعياء",
|
||||
"Habakkuk": "حبقوق",
|
||||
"Ephesians": "أفسس"
|
||||
"Ephesians": "أفسس",
|
||||
"Revelation": "رؤيا"
|
||||
},
|
||||
"christian_per_cell": "كل مربّع ≈ {n} شخص",
|
||||
"howto_title": "كيف تصلّي بهذه القائمة",
|
||||
|
|
@ -3132,7 +3141,7 @@
|
|||
"text": "कि वह जनसमूह आराधकों से भर जाए — हर जगह आराधना, स्वतंत्रता में और बेड़ियों में भी।",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -3161,9 +3170,8 @@
|
|||
"sub": "आशीष · बड़ी · और बड़ी · सबसे बड़ी में से एक",
|
||||
"text": "यूहन्ना 17 में यीशु ने जो प्रार्थना की, वही उनके लिए करें। आशीष: अनन्त जीवन — परमेश्वर को और यीशु को जानना, जिन्हें उन्होंने भेजा। बड़ी आशीष: उन्हीं के विश्वासी दूसरों को विश्वास में लाएँ। उससे बड़ी आशीष: उनके अपने नए आत्मिक परिवार, मसीह में एक। सबसे बड़ी आशीषों में से एक: उनके बीच से अगुवे, जो दूसरों को नए आत्मिक परिवार शुरू करने के लिए तैयार करें — बार-बार। यह सब और इससे भी अधिक माँगें, जितना हम माँगते या सोचते हैं उससे कहीं बढ़कर। यीशु की तरह माँगें कि वे एक हों और उस दुष्ट से बचे रहें। इनमें से कुछ भी संभव नहीं, यदि यीशु वह नहीं हैं जो वह कहते हैं कि वह हैं।",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -3249,6 +3257,7 @@
|
|||
"sets_bounded_title": "पहुँचे और नहीं पहुँचे",
|
||||
"sets_centered_title": "पड़ोसी से दूरी",
|
||||
"sets_bounded_tally": "{inside} भीतर · {outside} बाहर · {unknown} अज्ञात",
|
||||
"sets_no_data": "{n} बिना आँकड़ों के",
|
||||
"sets_centered_tally": "{placed} स्थित · {centre} केंद्र में · {unplaced} अस्थित",
|
||||
"ring_band_dialect": "वही बोली",
|
||||
"ring_band_language": "वही भाषा",
|
||||
|
|
@ -3283,7 +3292,8 @@
|
|||
"Haggai": "हाग्गै",
|
||||
"Isaiah": "यशायाह",
|
||||
"Habakkuk": "हबक्कूक",
|
||||
"Ephesians": "इफिसियों"
|
||||
"Ephesians": "इफिसियों",
|
||||
"Revelation": "प्रकाशितवाक्य"
|
||||
},
|
||||
"christian_per_cell": "हर खाना ≈ {n} लोग",
|
||||
"howto_title": "इस सूची के साथ प्रार्थना कैसे करें",
|
||||
|
|
@ -3458,7 +3468,7 @@
|
|||
"text": "愿这族群充满敬拜者——处处敬拜,在自由中,也在捆锁中。",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -3487,9 +3497,8 @@
|
|||
"sub": "祝福 · 大 · 更大 · 最大之一",
|
||||
"text": "用耶稣在约翰福音17章的祷告为他们祷告。祝福:永生,认识神和他所差来的耶稣。大祝福:他们自己的信徒带领别人信主。更大的祝福:属于他们自己的新属灵家庭,在基督里合而为一。最大的祝福之一:从他们中间兴起领袖,装备别人建立新的属灵家庭,一代又一代。求这一切,还有更多,超过我们所求所想的。也像耶稣一样,求神使他们合而为一,保守他们脱离那恶者。若耶稣不是他自己所说的那一位,这一切都不可能。",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -3575,6 +3584,7 @@
|
|||
"sets_bounded_title": "已触及与未触及",
|
||||
"sets_centered_title": "与邻近族群的距离",
|
||||
"sets_bounded_tally": "{inside} 圈内 · {outside} 圈外 · {unknown} 未知",
|
||||
"sets_no_data": "{n} 无数据",
|
||||
"sets_centered_tally": "{placed} 已定位 · {centre} 在中心 · {unplaced} 未定位",
|
||||
"ring_band_dialect": "同一方言",
|
||||
"ring_band_language": "同一语言",
|
||||
|
|
@ -3609,7 +3619,8 @@
|
|||
"Haggai": "哈该书",
|
||||
"Isaiah": "以赛亚书",
|
||||
"Habakkuk": "哈巴谷书",
|
||||
"Ephesians": "以弗所书"
|
||||
"Ephesians": "以弗所书",
|
||||
"Revelation": "启示录"
|
||||
},
|
||||
"christian_per_cell": "每格约 {n} 人",
|
||||
"howto_title": "如何使用这份祷告名单",
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
"titleQualifier": "the coloured words before the region name, e.g. 'Unengaged of' (:2427)",
|
||||
"seriesName": "the name in quotes on the Series line and in the side box (:1877, :1907, :2115)",
|
||||
"sideBoxHeading": "the right-hand explainer's heading (:2097)",
|
||||
"sideBoxBody": "that explainer's first paragraph (:2115)",
|
||||
"sideBoxBody": "that explainer's first paragraph (:2115); in the head-columns band **...** prints a bold run",
|
||||
"strategyBody": "the Jesus column's text: one paragraph, or a list of them; absent = poster-render's STRATEGY_DEFAULT",
|
||||
"sideBoxMore": "the explainer's further paragraphs: one, or a list; [] prints none; absent = poster-render's WHAT_IS_MORE"
|
||||
},
|
||||
|
|
@ -68,8 +68,8 @@
|
|||
"titleQualifier": "Unengaged of",
|
||||
"seriesName": "UPG100 List",
|
||||
"sideBoxHeading": "What is a UPG100 List?",
|
||||
"sideBoxBody": "This map is one of a {approxLists}-map set called the {seriesName} — a large, overwhelming target in the thousands, organised into clear groupings and displayed on maps and prayer lists.",
|
||||
"strategyBody": "Jesus fed the 5,000 by multiplying a small offering. He had the crowd sit in groups of hundreds and fifties (Mark 6:40). So we pray by name, a few groups at a time.",
|
||||
"sideBoxBody": "This map is one of a {approxLists}-map set called the {seriesName} — a large, overwhelming target in the thousands, organised into clear groupings and displayed on maps and prayer lists. Each map comes with a prayer list of its fifty to a hundred people groups — their names, a representative photo, and more detail — to mobilise **informed intercession.**",
|
||||
"strategyBody": "2000 People Groups? Jesus’ disciples were faced with a similar problem, “How can we feed so many with only five loaves and two fish?” Through radical faith and miracle-expectant prayer, He focused on the few in front of Him — dividing the crowd and entrusting faithful men and women to serve the most strategic groups of fifties and hundreds (Mark 6:40).",
|
||||
"sideBoxMore": [],
|
||||
"headColumns": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -212,6 +212,24 @@ export function absoluteEmbedUrl(leaf, profileConfig = null) {
|
|||
return rel
|
||||
}
|
||||
|
||||
/**
|
||||
* The tree's PUBLIC address, for the Share menu's Embed tab (no trailing slash). Its URL, Iframe and JavaScript codes
|
||||
* point here, so an embed follows the stable releases served there, never a dev server or the page's own host.
|
||||
* Ladder: profileConfig.shareBaseUrl → window.MAP_SHARE_BASE_URL → the build's shareBaseUrl (vite.doxa-maps-build-
|
||||
* config.json, baked as __DOXA_SHARE_BASE__) → '' (unset: the Embed tab keeps the tree the bundle was loaded from).
|
||||
* @param {object|null} [profileConfig] the parsed profile-config (already unref'd)
|
||||
* @returns {string}
|
||||
*/
|
||||
export function resolvePublicBase(profileConfig) {
|
||||
// https only (an http base would give mixed-content codes on an https partner page), plus a local test server
|
||||
const ok = (v) => typeof v === 'string' && /^(https:\/\/|http:\/\/(127\.0\.0\.1|localhost)(:\d+)?\/)/i.test(v.trim())
|
||||
const fromConfig = profileConfig?.shareBaseUrl
|
||||
if (ok(fromConfig)) return stripSlashes(fromConfig)
|
||||
if (typeof window !== 'undefined' && ok(window.MAP_SHARE_BASE_URL)) return stripSlashes(window.MAP_SHARE_BASE_URL)
|
||||
// typeof-guarded: a build or a test that defines no __DOXA_SHARE_BASE__ reads '' instead of throwing
|
||||
return stripSlashes(typeof __DOXA_SHARE_BASE__ === 'string' ? __DOXA_SHARE_BASE__ : '')
|
||||
}
|
||||
|
||||
export function resolveShareUrl({ shareUrl, embedPath, profileConfig } = {}) {
|
||||
const cfg = profileConfig || null
|
||||
const hasWindow = typeof window !== 'undefined'
|
||||
|
|
|
|||
73
library/utils/publicEmbed.js
Normal file
73
library/utils/publicEmbed.js
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
/**
|
||||
* publicEmbed.js: the Share menu's Embed codes for THIS plugin, from the tree's PUBLIC address.
|
||||
*
|
||||
* Three codes, all for the plugin itself (its own leaf page, its own bundle + element), never for the app it is
|
||||
* nested in (Plugin Studio, Deep Research, Posterverse):
|
||||
* URL <base>/<bundle>/<profile>/index.html, the plugin's generated page;
|
||||
* Iframe <iframe src="that URL">;
|
||||
* JavaScript the plugin's own embed.script from the PUBLIC manifest (<base>/manifest.json), made absolute.
|
||||
*
|
||||
* ★ THE SCRIPT IS READ FROM THE PUBLIC MANIFEST, NOT BUILT HERE. The manifest's per-profile embed.script is the one
|
||||
* source of truth for the element tag, its profile-config and the page globals a plugin needs; the PUBLIC copy is the
|
||||
* release partners will load, so its tag and config match what they get. It is fetched once per base and cached
|
||||
* (the public host serves it with Access-Control-Allow-Origin: *).
|
||||
*
|
||||
* ★ NO INTEGRITY ON OUR BUNDLE. The public bundle URL is not versioned and is rebuilt in place at each release, so a
|
||||
* pinned integrity="sha384-…" would break every partner's embed at the next release. It is dropped from the copied
|
||||
* code for scripts served from the base; a versioned third-party URL (the Mapbox preload) keeps its own. Versioned
|
||||
* release URLs + SRI are a later improvement.
|
||||
*/
|
||||
|
||||
const cache = new Map() // base → Promise<manifest|null>
|
||||
|
||||
/** The tree-relative leaf path of an embedPath ('./x/y/index.html' → 'x/y/index.html'); '' for absolute or root paths. */
|
||||
export function treeRelative(embedPath) {
|
||||
const p = String(embedPath || '').trim()
|
||||
if (!p || /^https?:\/\//i.test(p) || p.startsWith('/')) return ''
|
||||
return p.replace(/^\.\//, '')
|
||||
}
|
||||
|
||||
/** The plugin's public page: <base>/<leaf>. '' when either is unknown. */
|
||||
export const publicLeafUrl = (base, embedPath) => {
|
||||
const rel = treeRelative(embedPath)
|
||||
return base && rel ? base + '/' + rel : ''
|
||||
}
|
||||
|
||||
function loadManifest(base) {
|
||||
if (!cache.has(base)) {
|
||||
// the default credentials ('same-origin'): nothing is sent to a cross-origin public host, and behind a login gate
|
||||
// a same-origin base keeps its session
|
||||
const p = fetch(base + '/manifest.json')
|
||||
.then((r) => (r.ok ? r.json() : null))
|
||||
.catch(() => { cache.delete(base); return undefined }) // a network failure may be retried later
|
||||
cache.set(base, p)
|
||||
}
|
||||
return cache.get(base)
|
||||
}
|
||||
|
||||
/**
|
||||
* The plugin's JavaScript embed code from the PUBLIC manifest.
|
||||
* Resolves { code } | { missing: true } (the public site does not carry this plugin yet) | { failed: true }.
|
||||
*/
|
||||
export async function publicScriptCode(base, embedPath) {
|
||||
const rel = treeRelative(embedPath)
|
||||
if (!base || !rel) return { missing: true }
|
||||
const m = await loadManifest(base)
|
||||
if (m === undefined) return { failed: true }
|
||||
if (!m || !Array.isArray(m.bundles)) return { missing: true }
|
||||
const norm = (u) => String(u || '').replace(/^\.\//, '')
|
||||
const [bundle, profile] = rel.split('/')
|
||||
let hit = null
|
||||
for (const b of m.bundles) for (const pr of (b.profiles || [])) {
|
||||
if (norm(pr.iframeUrl) === rel) hit = pr
|
||||
else if (!hit && b.bundle === bundle && pr.profile === profile) hit = pr // an instance path: its profile's code
|
||||
}
|
||||
const raw = hit && hit.embed && hit.embed.script
|
||||
if (!raw) return { missing: true }
|
||||
const esc = base.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
|
||||
const code = raw
|
||||
.replace(/(\s(?:src|href)=")\.\//g, '$1' + base + '/')
|
||||
.replace(/YOUR_TREE_URL/g, base)
|
||||
.replace(new RegExp('(<script\\b[^>]*\\ssrc="' + esc + '/[^"]*")\\s+integrity="[^"]*"', 'g'), '$1')
|
||||
return { code }
|
||||
}
|
||||
|
|
@ -118,6 +118,8 @@
|
|||
"check:gospel-all": "node internal/check-gospel-all.mjs",
|
||||
"check:gospel-internet": "node plugin-designs/gospel-internet/scripts/check-gospel-internet-model.mjs && node plugin-designs/gospel-internet/scripts/check-gospel-internet-i18n.mjs && node plugin-designs/gospel-internet/scripts/check-language-tree.mjs && node plugin-designs/gospel-internet/scripts/check-gospel-internet-render.mjs",
|
||||
"check:gospel-tables-staged": "node internal/check-gospel-tables-staged.mjs",
|
||||
"check:gospel-clear-filter-url": "node plugin-designs/gospel-resources/scripts/check-clear-filter-url.mjs && node plugin-designs/gospel-resources/scripts/check-clear-filter-url.mjs --poison",
|
||||
"check:gospel-template-translators": "node plugin-designs/gospel-resources/scripts/check-template-translators.mjs && node plugin-designs/gospel-resources/scripts/check-template-translators.mjs --poison",
|
||||
"check:gospel-whiteboard": "node internal/check-gospel-whiteboard.mjs",
|
||||
"check:hardcoded-english": "node internal/check-hardcoded-english.mjs",
|
||||
"check:hardcoded-english:self-test": "node internal/check-hardcoded-english.mjs --self-test",
|
||||
|
|
@ -361,7 +363,7 @@
|
|||
"fix:sri": "node internal/fix-sri.mjs",
|
||||
"gallery": "node internal/generate-gallery.mjs",
|
||||
"gates:post": "node internal/run-parallel.mjs --label=post -- check:capability-derived check:drop check:parse verify check:sri check:public-hygiene check:label-joins check:facet-cascade check:facet-one-field check:heartbeat check:kpi-unit check:composite-reg check:descriptions check:no-abs-paths check:no-codename check:dep-names check:composite-srcs check:embed-targets check:nested-token check:i18n-parity check:tabs-localized check:packets-all check:packet-strings-parity check:zone-census check:zoning-declared check:share-policy check:library-index check:csv-shape check:capability-citations check:catalog-identity check:no-orphan-gates check:quoted-scripts check:script-flags check:capability-exemplars check:packet-fixture check:packet-browser check:provider-switch check:locale-reachable check:url-resolver check:manifest-covers check:one-palette check:pin-dim-slider check:legend-source check:clustering-modes check:composite-embed-knobs check:composite-locale-leaks check:linked-vocabulary check:wp-embed check:dashboard-geocoder-provider check:leaf-engine-per-provider check:auto-engine check:engine-contract check:map-props-unit check:composites-mount check:composite-interop check:no-free-identifiers check:map-fly-reduced-motion check:mst-clustering check:list-prop-unit check:profiles-mount check:cdn-pins check:no-eval check:popup-escaping check:i18n-treeshake check:pinned-umd check:one-palette:self-test check:no-cross-plugin-imports check:no-cross-plugin-imports:self-test check:map-attribution check:studio-rail check:approx-pin-note check:embedder-keys check:provider-for check:legend-logical-insets check:legend-logical-insets:self-test check:optional-t-equivalence check:text-highlight check:religion-label-not-value check:i18n-stopped-scope check:no-silent-engine check:no-silent-engine:self-test check:regions-uses-library check:shadow-css-parses check:square-map-controls check:preset-config-merge check:instance-config-keys check:frozen-labels check:plural-forms check:region-fill-repaint check:region-paint-single-source check:poster-print-fallback check:posters-exportable check:country-names check:reduced-motion check:no-dead-library check:universal-props check:readme-size check:tree-relative check:leaf-hints check:snippet-engine check:snippet-engine:self-test check:embed-base check:link-coverage check:no-public-binds check:shared-reached check:tree-weight check:no-fleet-names:self-test check:pin-hint-floor:self-test check:poster-sizes:self-test check:shell-header:self-test check:preview-flag-dev-only:self-test check:poster-type-registry:self-test check:host-floor:self-test check:phone-print-keep:self-test check:pinned-fetch-fresh:self-test",
|
||||
"gates:pre": "node internal/run-parallel.mjs --label=pre -- check:template-literal check:mjs-parse check:sfc-parse check:tab-radius check:synced-css check:doc-scripts check:setup-order check:package-json-unique-keys check:no-repo-pb-hooks check:no-credentials-omit check:no-credentials-omit:self-test check:shadow-reduced-motion check:poster-action-print check:targets check:targets:self-test check:browser-gates-guarded check:pin-selection check:facet-shape check:hardcoded-english:self-test check:list-selection check:selector-fields check:upg-zone-joins check:gospel-set-charts check:gospel-set-fit check:describe-group check:one-scroll-container check:packet-charts check:pins-in-state check:fork-leaders check:circular-layout check:composite-token-url check:language-tree-layout check:i18n-keys-exist check:i18n-never-translated check:packet-variants check:profile-table check:element-bootstrap check:embed-url-absolute check:frame-target check:language-tree-model check:map-menu-anchor check:selection-kinds check:tiered-points check:whiteboard-projection check:mercator-slice check:ring-vocabulary check:map-props-unit check:mobile-gating check:provide-shadowing check:legend-top-offset check:cdn-cache check:plural-forms check:select-zone-race check:script-registry check:map-control-overlap check:poster-attribution check:board-map-options check:gospel-whiteboard check:packet-map-missing-loud check:poster-layout-optin check:ported-globals-identical check:ring-bands check:packet-a1-structure check:india-states check:batch-selection-export check:zone-title-tier-a check:evangelical-share check:map-labels check:packet-offline check:help-reachable check:gated-not-in-tree check:window-globals-released check:legend-data-contract check:no-internal-role-nouns check:poster-fetch-guard check:people-group-records check:sentence-slots check:popup-href-escaped check:popup-pan-controls check:country-map-refetch check:pane-config-reforward check:viewport-meta check:viewport-meta:self-test check:label-key-coverage check:poster-browser-equiv check:poster-render-pinned check:country-sheet-one-path check:country-sheet-one-path:self-test check:side-lanes check:side-lanes:self-test check:poster-section check:poster-section:self-test check:posterverse-shelf check:host-locale-fetch check:print-frame-reclaim check:click-sheet check:coverage-consistent:chained check:coverage-consistent:poison check:dashboard-filter-a11y check:filter-multivalue check:hover-channel check:kit-options-reachable check:layout-key-namespaced check:legend-mirrors check:map-unmount-race check:no-conflict-markers check:series-isolation check:snapshot-guard check:stale-sweep-claim check:surfaces-read-the-tier check:translator-contacts check:wall-wysiwyg check:wall-print-watch check:wall-no-bg-photos check:wall-pan check:template-i18n check:list-pattern-doc check:shadow-style-labels-unique check:grid-image-loading check:retry-fetch check:panel-sheets check:poster-wall-host-seams check:poster-sections check:poster-sections:self-test check:poster-design-catalogue check:poster-design-catalogue:self-test check:upg100-zone-copy check:upg100-zone-copy:self-test check:wall-photo-weight check:no-fleet-names check:pin-hint-floor check:poster-sizes check:upg-count check:shell-header check:pg-name-gate check:preview-flag-dev-only check:poster-type-registry check:host-floor check:phone-print-keep check:pinned-fetch-fresh check:view-address check:view-address:self-test check:dev-leaf-escape check:dev-leaf-escape:self-test",
|
||||
"gates:pre": "node internal/run-parallel.mjs --label=pre -- check:template-literal check:mjs-parse check:sfc-parse check:tab-radius check:synced-css check:doc-scripts check:setup-order check:package-json-unique-keys check:no-repo-pb-hooks check:no-credentials-omit check:no-credentials-omit:self-test check:shadow-reduced-motion check:poster-action-print check:targets check:targets:self-test check:browser-gates-guarded check:pin-selection check:facet-shape check:hardcoded-english:self-test check:list-selection check:selector-fields check:upg-zone-joins check:gospel-set-charts check:gospel-set-fit check:describe-group check:one-scroll-container check:packet-charts check:pins-in-state check:fork-leaders check:circular-layout check:composite-token-url check:language-tree-layout check:i18n-keys-exist check:i18n-never-translated check:packet-variants check:profile-table check:element-bootstrap check:embed-url-absolute check:frame-target check:language-tree-model check:map-menu-anchor check:selection-kinds check:tiered-points check:whiteboard-projection check:mercator-slice check:ring-vocabulary check:map-props-unit check:mobile-gating check:provide-shadowing check:legend-top-offset check:cdn-cache check:plural-forms check:select-zone-race check:script-registry check:map-control-overlap check:poster-attribution check:board-map-options check:gospel-whiteboard check:packet-map-missing-loud check:poster-layout-optin check:ported-globals-identical check:ring-bands check:packet-a1-structure check:india-states check:batch-selection-export check:zone-title-tier-a check:evangelical-share check:map-labels check:packet-offline check:help-reachable check:gated-not-in-tree check:window-globals-released check:legend-data-contract check:no-internal-role-nouns check:poster-fetch-guard check:people-group-records check:sentence-slots check:popup-href-escaped check:popup-pan-controls check:country-map-refetch check:pane-config-reforward check:viewport-meta check:viewport-meta:self-test check:label-key-coverage check:poster-browser-equiv check:poster-render-pinned check:country-sheet-one-path check:country-sheet-one-path:self-test check:side-lanes check:side-lanes:self-test check:poster-section check:poster-section:self-test check:posterverse-shelf check:host-locale-fetch check:print-frame-reclaim check:click-sheet check:coverage-consistent:chained check:coverage-consistent:poison check:dashboard-filter-a11y check:filter-multivalue check:hover-channel check:kit-options-reachable check:layout-key-namespaced check:legend-mirrors check:map-unmount-race check:no-conflict-markers check:series-isolation check:snapshot-guard check:stale-sweep-claim check:surfaces-read-the-tier check:translator-contacts check:wall-wysiwyg check:wall-print-watch check:wall-no-bg-photos check:wall-pan check:template-i18n check:list-pattern-doc check:shadow-style-labels-unique check:grid-image-loading check:retry-fetch check:panel-sheets check:poster-wall-host-seams check:poster-sections check:poster-sections:self-test check:poster-design-catalogue check:poster-design-catalogue:self-test check:upg100-zone-copy check:upg100-zone-copy:self-test check:wall-photo-weight check:no-fleet-names check:pin-hint-floor check:poster-sizes check:upg-count check:shell-header check:pg-name-gate check:preview-flag-dev-only check:poster-type-registry check:host-floor check:phone-print-keep check:pinned-fetch-fresh check:view-address check:view-address:self-test check:dev-leaf-escape check:dev-leaf-escape:self-test check:gospel-clear-filter-url check:gospel-template-translators",
|
||||
"gen:iso3-to-alpha2": "node library/scripts/generate-iso3-to-alpha2.mjs",
|
||||
"internet:adm1": "node plugin-designs/cities-internet/scripts/build-adm1-internet.mjs",
|
||||
"library-index": "node internal/generate-library-index.mjs",
|
||||
|
|
@ -447,7 +449,7 @@
|
|||
"check:pinned-fetch-fresh:self-test": "bun internal/check-pinned-fetch-fresh.mjs --self-test"
|
||||
},
|
||||
"//scripts": {
|
||||
"check:pinned-fetch-fresh": "a STALE cached copy of a pinned print-time file never decides a print: library/packet/sha384.js fetchPinned fetches force-cache, and on a copy that is not served or fails its pin, ONCE more with cache:'reload'; every pinned loader (posterSheets poster-render.js + ne-places.json, packetStrings, indiaStates) calls it, and the classic-script path refreshes the cache and retries a refused tag once. With a modelled HTTP cache holding stale copies: the current file after one fresh refetch; a matching cached copy used with one force-cache request; wrong bytes refused; page 1 still draws (generateSheet), the packet keeps every language, India keeps its 36 states. Self-test poisons: no fresh refetch, never the cache, a mismatch accepted, a loader fetching its pinned file directly.",
|
||||
"check:pinned-fetch-fresh": "a STALE cached copy of a pinned print-time file never decides a print: library/packet/sha384.js fetchPinned fetches force-cache, and on a copy that is not served or fails its pin, ONCE more with cache:'reload'; every pinned loader (posterSheets poster-render.js + ne-places.json, packetStrings, indiaStates) calls it, and the classic-script path refreshes the cache and retries a refused tag once. With a modelled HTTP cache holding stale copies: the current file after one fresh refetch; a matching cached copy used with one force-cache request; wrong bytes refused; page 1 still draws (generateSheet), the packet keeps every language, India keeps its 36 states. Self-test poisons: no fresh refetch, never the cache, a mismatch accepted, an unguarded crypto.subtle, a loader fetching its pinned file directly. On a page that is not secure (crypto.subtle missing: plain http by LAN address) the refusal says so in words (arm D2).",
|
||||
"check:phone-print-keep": "on a PHONE the in-page print document (#dxm-print-root and its print style, library/composables/printInPlace.js) and printImageBlob's object URL outlive afterprint, because Android Chrome fires afterprint once the PREVIEW is built and renders a saved PDF later, from the page as it is then (a phone's saved packet was the bare host page). A timeline on fake timers and a stub DOM with an Android user agent: still mounted 30 s after afterprint; released once the reader is back (shown again after hidden, focused again after blur, or touched after print() but not in its first TOUCH_SETTLE_MS) plus BACK_GRACE_MS (60 s), or at the ceiling; going away again during the grace cancels the pending drop; the Print tap of a late print does not count; a new print replaces it; desktop is the frame path, verbatim. --impl=<path> runs it against another copy (the pre-fix file fails). Self-test poisons: the old drop at afterprint, no release when back, listeners armed at mount, no grace, printImageBlob revoking at afterprint, no ceiling, no cancel when away again, no touch settle window.",
|
||||
"_": "What each script does. These notes used to sit inside the command strings as trailing \"# …\" comments, which made the shell discard any arguments passed after \"--\" (so a gate given --url silently measured its hardcoded default port — possibly another agent's server). Keep notes here, never in a command.",
|
||||
"browser-gates": "lists every package.json script that launches a browser (the same detection run-parallel uses to route them through internal/browser-slot.sh). Run each as internal/browser-slot.sh bun run <name>.",
|
||||
|
|
@ -535,6 +537,8 @@
|
|||
"check:gallery-embed:live-cors": "the Research Gallery on a foreign page under the LIVE static layer's CORS rule (Access-Control-Allow-Origin on files inside the tree's folders, NOT on the root manifest.json, measured on the live test host): it must still boot every tab, by reading the CORS-readable manifest copy generate-tree writes beside its bundle.",
|
||||
"check:gated-not-in-tree": "a GATED profile (the build config's gatedProfiles, today key-cities) never reaches the public tree: no public/<tree>/<name>/ folder, no manifest.json entry, no page referencing <name>/<name>.js. vite.config.js builds a gated bundle into .gated/<tree>/ (ignored by git). Data tables are out of scope on purpose: key-cities.json also feeds the production Cities with Internet map. Two-sided: three planted leaks in a temporary tree, each caught. Node only.",
|
||||
"check:gospel-all": "EVERYTHING gospel-resources owns, in one command. Its ten gates were all hand-run, which is how a dead bundle shipped: a duplicate module killed all five leaves and the one gate run that day was pointed at the map. check:no-orphan-gates was right that they were reachable — reachable is not run. Deliberately NOT in gates:pre/post: three need a browser, the shared wave holds browser gates under load, and a bundle owner should not be able to slow everyone else's build by adding to a list they do not own. Static gates run first and stop the run on failure, so a scarce browser slot is never spent confirming a table is inconsistent. Exit 75 = NOT MEASURED, never folded into a pass.",
|
||||
"check:gospel-clear-filter-url": "the gospel tables' Show all drops ONLY its own filter keys (iso, country, label, province): the page's ?tab=, a host's or partner's keys, the #hash and the history state stay. It used to replaceState the bare pathname, wiping a partner's query. Proves the pure helper (filter-url.js) and that data-tables.vue calls it; --poison runs the old wipe and must fail.",
|
||||
"check:gospel-template-translators": "every translator a gospel-resources template calls (t, tr, T, tShared, tStatic) is a TOP-LEVEL binding of its <script setup>. data-tables.vue called t(...) while its translator is tr, so the tables page threw _ctx.t is not a function on every load and its loading line never drew. Static, node only; --poison restores the old call and must fail.",
|
||||
"check:gospel-internet": "the Gospel x Internet board, headless, against the REAL table and the REAL kit bus: the join table is what its builder makes from main (2,107 / 2,107, province placement agreeing with gospel-by-province), every facet count equals the rows the bus then keeps (the five-numbers-agree invariant), D1 OR-within-key, the country->province cascade, the 369 zero-access headline by band 220/45/45/59, URL state round-trip, CSV header-first/provenance-last with injection neutralised, no engagement column; then every catalogue key the bundle names exists in all 11 locales and is translated. Each half has a --poison arm that must fail. Plugin-local because check:i18n-keys-exist cannot see a useOptionalT-based alias.",
|
||||
"check:gospel-whiteboard": "the gospel set charts' geometry once drawn on a map: the bounded set's gap survives projection, the drawing stays inside the Mercator clamp, and three more properties, each with the arm that would catch its own defect. By the gospel owner. Headless.",
|
||||
"check:hardcoded-english": "English a reader sees that no locale can reach: template text, static title=, script-block sentences, template literals, and quoted literals inside BOUND attributes, across the production plugins. Quiet on translator calls (including discovered aliases and proxy-t misses), te()-guarded fallbacks, css, urls and developer error text. Deliberately NOT in gates:post yet: it reports 179 today (gospel-resources 148, my-upg-100-list 25, cities-internet 6 incl. one cross-area key), with English inside dir=ltr islands listed as deliberate and not counted; it joins when that reaches 0 or every hit is carded. The :self-test (28 assertions, fixtures validated first so a malformed sample cannot pass as silence) runs in gates:pre.",
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ import { EN_MESSAGES } from '@map/i18n/index.js'
|
|||
import DataTable from '@map/components/tables/DataTable.vue'
|
||||
import { useShadowStyles } from '@map/composables/useShadowStyles.js'
|
||||
import { resolveAssetsBase } from '@map/utils/embedBase.js'
|
||||
import { commitUrl, urlOwnerOf } from '@map/composables/useViewAddress.js'
|
||||
import { searchWithout, FILTER_KEYS } from './filter-url.js'
|
||||
|
||||
|
||||
const profileConfig = inject('profileConfig', ref(null))
|
||||
|
|
@ -148,9 +150,12 @@ const fLabel = ref((params.get('label') || '').trim())
|
|||
const fProvince = ref((params.get('province') || '').trim())
|
||||
const fold = (v) => String(v || '').normalize('NFD').replace(/[\u0300-\u036f]/g, '').toLowerCase().trim()
|
||||
const hasFilter = computed(() => !!(fIso.value || fCountry.value || fProvince.value))
|
||||
// "Show all" drops only the filter's own keys (filter-url.js) through the one history writer, and only on a page
|
||||
// this element owns (urlOwner 'app'); a partner's or a host's address is never written. The tab, every other key,
|
||||
// the hash and the history state stay.
|
||||
function clearFilter() {
|
||||
fIso.value = ''; fCountry.value = ''; fLabel.value = ''; fProvince.value = ''
|
||||
try { window.history.replaceState({}, '', window.location.pathname) } catch (_) {}
|
||||
if (urlOwnerOf(profileConfig.value) === 'app') commitUrl({ search: searchWithout(window.location.search, FILTER_KEYS) })
|
||||
}
|
||||
|
||||
const active = ref(TABS.some((t) => t.id === params.get('tab')) ? params.get('tab') : 'links')
|
||||
|
|
@ -453,7 +458,7 @@ useShadowStyles(
|
|||
</div>
|
||||
|
||||
<div v-if="loadErr" class="gt-err">{{ loadErr }}</div>
|
||||
<div v-else-if="!table" class="gt-load">{{ t('gospel.sheet.loadingTable', { table: current.label }) }}</div>
|
||||
<div v-else-if="!table" class="gt-load">{{ tr('gospel.sheet.loadingTable', { table: tabLabel(current) }) }}</div>
|
||||
<DataTable
|
||||
v-else
|
||||
:key="current.id + ':' + fIso + ':' + fCountry + ':' + fProvince"
|
||||
|
|
|
|||
16
plugin-designs/gospel-resources/filter-url.js
Normal file
16
plugin-designs/gospel-resources/filter-url.js
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
* filter-url.js — the query after this page drops its OWN filter keys.
|
||||
*
|
||||
* The tables page reads a deep-link filter from the query (?iso= / ?country= / ?label= / ?province=).
|
||||
* "Show all" must remove exactly those keys: the page's ?tab=, any key a host or a partner put on the
|
||||
* address, and the #hash are someone else's and stay as they were. The result is in commitUrl's `search`
|
||||
* shape ('' or '?…'), and every other parameter is kept as written, byte for byte. Pure (no DOM), so a node
|
||||
* check can prove it without a browser.
|
||||
*/
|
||||
export const FILTER_KEYS = ['iso', 'country', 'label', 'province']
|
||||
|
||||
/** `search` ('' or '?…') without the parameters named in `keys`, in the same shape. */
|
||||
export function searchWithout(search, keys = FILTER_KEYS) {
|
||||
const kept = String(search || '').replace(/^\?/, '').split('&').filter((p) => p && !keys.includes(p.split('=')[0]))
|
||||
return kept.length ? '?' + kept.join('&') : ''
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
#!/usr/bin/env node
|
||||
/**
|
||||
* check-clear-filter-url.mjs — "Show all" on the gospel tables drops ONLY the filter's own keys.
|
||||
*
|
||||
* WHY: clearFilter used to replaceState({}, '', pathname), which wiped the whole query and the hash —
|
||||
* the page's own ?tab=, and any key a host or a partner had put on the address — and the history
|
||||
* state with them. The address after "Show all" must differ from the one before by the filter keys
|
||||
* alone.
|
||||
*
|
||||
* Proves it two ways: the pure helper (filter-url.js) on real-shaped addresses, and the component —
|
||||
* data-tables.vue's clearFilter writes through commitUrl (the one history writer, which keeps the hash and the
|
||||
* state) only on a page it owns, with no direct history write left.
|
||||
* `--poison` runs the old behaviour through the same assertions and requires them to FAIL.
|
||||
* Exit 0 pass · 1 fail.
|
||||
*/
|
||||
import { readFileSync } from 'node:fs'
|
||||
import { resolve, dirname } from 'node:path'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
import { searchWithout, FILTER_KEYS } from '../filter-url.js'
|
||||
|
||||
const HERE = dirname(fileURLToPath(import.meta.url))
|
||||
const POISON = process.argv.includes('--poison')
|
||||
// The address after "Show all", as commitUrl writes it ({ search } given, the current hash kept). Poison: the old wipe.
|
||||
const strip = POISON ? (href) => new URL(href).pathname : (href) => { const u = new URL(href); return u.pathname + searchWithout(u.search, FILTER_KEYS) + u.hash }
|
||||
|
||||
let fails = 0
|
||||
const ok = (c, m) => { if (c) console.log('ok ' + m); else { fails++; console.log('FAIL ' + m) } }
|
||||
const base = 'https://example.org/dx-maps/gospel-resources/data-tables/index.html'
|
||||
|
||||
const a = strip(`${base}?tab=links&iso=hin&country=IND&label=Hindi&province=Bihar&partner=abc#tables`)
|
||||
ok(!/[?&](iso|country|label|province)=/.test(a), `the filter keys are gone (${a})`)
|
||||
ok(/[?&]tab=links\b/.test(a), 'the page\'s own ?tab= stays')
|
||||
ok(/[?&]partner=abc\b/.test(a), 'a host\'s or partner\'s key stays')
|
||||
ok(a.endsWith('#tables'), 'the #hash stays')
|
||||
const b = strip(`${base}?iso=hin`)
|
||||
ok(b === new URL(base).pathname, `only filter keys: no dangling "?" (${b})`)
|
||||
const c = strip(`${base}?tab=countries`)
|
||||
ok(c === new URL(base).pathname + '?tab=countries', 'no filter: the address is unchanged')
|
||||
const d = strip(`${base}?tab=links&q=a%20b+c&iso=hin`)
|
||||
ok(d.endsWith('?tab=links&q=a%20b+c'), `other parameters are kept as written, byte for byte (${d})`)
|
||||
|
||||
if (!POISON) {
|
||||
const vue = readFileSync(resolve(HERE, '../data-tables.vue'), 'utf8')
|
||||
const fn = (vue.match(/function clearFilter\(\)\s*\{[\s\S]*?\n\}/) || [''])[0]
|
||||
ok(/import \{[^}]*\bcommitUrl\b[^}]*\burlOwnerOf\b[^}]*\} from '@map\/composables\/useViewAddress\.js'/.test(vue), 'data-tables.vue imports the one history writer (commitUrl) and urlOwnerOf')
|
||||
ok(/commitUrl\(\{\s*search:\s*searchWithout\(window\.location\.search,\s*FILTER_KEYS\)\s*\}\)/.test(fn), 'clearFilter writes through commitUrl with only the filter keys dropped (the hash and state kept by commitUrl)')
|
||||
ok(/urlOwnerOf\(profileConfig\.value\)\s*===\s*'app'/.test(fn), 'and only on a page it owns (urlOwner app): a partner\'s address is never written')
|
||||
ok(!/\.(push|replace)State\s*\(/.test(vue), 'no direct history write is left in data-tables.vue')
|
||||
}
|
||||
|
||||
if (POISON) { console.log(fails ? `POISON OK: ${fails} caught` : 'POISON FAILED'); process.exit(fails ? 0 : 1) }
|
||||
console.log(fails ? `FAIL check-clear-filter-url: ${fails}` : 'PASS check-clear-filter-url')
|
||||
process.exit(fails ? 1 : 0)
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
#!/usr/bin/env node
|
||||
/**
|
||||
* check-template-translators.mjs — every translator a gospel-resources template calls is bound in its <script setup>.
|
||||
*
|
||||
* WHY: data-tables.vue's template called t(...) while its translator is `tr`, and no top-level `t` existed. A
|
||||
* <script setup> template resolves an unbound name through the component proxy (_ctx.t), so the tables page threw
|
||||
* "_ctx.t is not a function" (minified "I.t") on every load, the loading line never drew, and nothing failed a gate.
|
||||
*
|
||||
* For each .vue in plugin-designs/gospel-resources: the translator-shaped calls in its template (t, tr, T, tShared,
|
||||
* tStatic) must each be a TOP-LEVEL binding of its <script setup> (const / let / function / import), not a name
|
||||
* that only appears inside a function. `--poison` runs the same check on the old data-tables.vue line and must fail.
|
||||
* Exit 0 pass · 1 fail.
|
||||
*/
|
||||
import { readFileSync, readdirSync } from 'node:fs'
|
||||
import { resolve, dirname, join } from 'node:path'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
|
||||
const DIR = resolve(dirname(fileURLToPath(import.meta.url)), '..')
|
||||
const POISON = process.argv.includes('--poison')
|
||||
const NAMES = ['t', 'tr', 'T', 'tShared', 'tStatic']
|
||||
|
||||
function unbound(src) {
|
||||
const tpl = (src.match(/^<template>([\s\S]*)^<\/template>/m) || [])[1] || ''
|
||||
const script = (src.match(/^<script setup[^>]*>([\s\S]*?)^<\/script>/m) || [])[1] || ''
|
||||
// TOP-LEVEL bindings: declarations at column 0 of the script block, and imported names.
|
||||
const top = new Set()
|
||||
for (const m of script.matchAll(/^(?:const|let|var|function)\s+([A-Za-z_$][\w$]*)/gm)) top.add(m[1])
|
||||
for (const m of script.matchAll(/^(?:const|let|var)\s+\{([^}]*)\}\s*=/gm)) for (const n of m[1].split(',')) top.add(n.split(':').pop().trim())
|
||||
for (const m of script.matchAll(/^import\s+\{([^}]*)\}/gm)) for (const n of m[1].split(',')) top.add(n.split(/\s+as\s+/).pop().trim())
|
||||
const called = new Set([...tpl.matchAll(/(?:^|[^\w$.])([A-Za-z_$][\w$]*)\(/g)].map((m) => m[1]).filter((n) => NAMES.includes(n)))
|
||||
return [...called].filter((n) => !top.has(n))
|
||||
}
|
||||
|
||||
let fails = 0
|
||||
if (POISON) {
|
||||
const src = readFileSync(join(DIR, 'data-tables.vue'), 'utf8').replace("{{ tr('gospel.sheet.loadingTable'", "{{ t('gospel.sheet.loadingTable'")
|
||||
const u = unbound(src)
|
||||
console.log(u.includes('t') ? 'POISON OK: the old data-tables.vue call t(...) is caught as unbound' : 'POISON FAILED')
|
||||
process.exit(u.includes('t') ? 0 : 1)
|
||||
}
|
||||
for (const f of readdirSync(DIR).filter((f) => f.endsWith('.vue'))) {
|
||||
const u = unbound(readFileSync(join(DIR, f), 'utf8'))
|
||||
if (u.length) { fails++; console.log(`FAIL ${f}: the template calls ${u.map((n) => n + '(…)').join(', ')} but its <script setup> binds no such name at the top level`) }
|
||||
else console.log(`ok ${f}`)
|
||||
}
|
||||
console.log(fails ? `FAIL check-template-translators: ${fails}` : 'PASS check-template-translators')
|
||||
process.exit(fails ? 1 : 0)
|
||||
|
|
@ -77,7 +77,7 @@ const GLOBALS = [
|
|||
'DataView', 'WeakRef', 'FinalizationRegistry', 'ClipboardItem', 'CSSStyleSheet', 'XMLSerializer',
|
||||
// Build-time defines: vite REPLACES these before the browser ever sees them (vite.config.js
|
||||
// `define`), so they are bound by the bundler rather than by the file.
|
||||
'__DOXA_TREE_NAME__', '__DOXA_QA__',
|
||||
'__DOXA_TREE_NAME__', '__DOXA_QA__', '__DOXA_SHARE_BASE__',
|
||||
// Bound by the build too, but by a transform rather than `define`: with DX_SHIP_ONE_LOCALE the
|
||||
// i18nAreasPlugin prepends `const __DX_LOCALE_SRI__ = {…}` to library/i18n/index.js; without it the
|
||||
// name does not exist, which is why its one read sits behind `typeof … !== 'undefined'`.
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <all-people-groups> custom element. -->
|
||||
<script src="../all-people-groups.js" integrity="sha384-kCCtSdpWfJmCi6wtGplAHul5Vo+0Et2h4HMZLXHIsHuBtFn/0FOJqsTZk+/VfPka" crossorigin="anonymous"></script>
|
||||
<script src="../all-people-groups.js" integrity="sha384-4uZxLJxLey7Zl7tiZ5qTwrQnblpRX0lxzKzjTcfUqBNEOP2Qn63Bvtra+Vo+6ecm" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@
|
|||
"n": 1,
|
||||
"rhythm": "praise",
|
||||
"sub": "Two-Cross Gospel",
|
||||
"text": "That they accept Christ as King, forgiven by His cross — and take up their own cross, willing to suffer through persecution. May the Lamb receive the reward of His suffering, starting with me.",
|
||||
"text": "Praise Jesus for taking up a cross for you and being humbled. Crown Him as your King, and pray for these nations (people groups) that they will do the same. Devote yourself to Jesus to take up your own cross and follow Him, even through suffering, and death. Praise Him for He is worthy of these nations (people groups) taking up their own cross, willing to follow Jesus no matter what the cost. May the Lamb receive the reward of His suffering, starting with me.",
|
||||
"refs": [
|
||||
"Matthew 27:27",
|
||||
"Matthew 16:24–25"
|
||||
|
|
@ -62,7 +62,7 @@
|
|||
"n": 2,
|
||||
"rhythm": "wait",
|
||||
"sub": "Holy Spirit & deliverance",
|
||||
"text": "Spend time waiting on the Holy Spirit to tell you and empower you to pray as a bold prayer warrior for them: that they are filled with the Holy Spirit and made bold witnesses, not isolated; baptized in water and Spirit; every evil grip broken; and that believers in neighboring people groups are mobilized as laborers.",
|
||||
"text": "Spend time waiting on the Holy Spirit to fill you and empower you to pray as a bold prayer warrior for them. Focus in on God's presence, and wait on the Lord!",
|
||||
"refs": [
|
||||
"Acts 1:8",
|
||||
"John 14:26"
|
||||
|
|
@ -72,7 +72,7 @@
|
|||
"n": 3,
|
||||
"rhythm": "confess",
|
||||
"sub": "",
|
||||
"text": "We confess the unbelief that it is too big an ask for God to reach all of these unreached people groups in our lifetime. We receive the truth that He is reviving our love and faith for the global unreached.",
|
||||
"text": "Be open and honest with God about your fears, lies, and unbelief surrounding unreached people groups (Example lie: It is too big an ask for God to reach all of these unreached people groups in our lifetime). Receive His love, truth, and voice surrounding unreached people groups and your role in helping Him reach these people groups. Ask God to revive your love and faith for the people groups on your prayer list.",
|
||||
"refs": [
|
||||
"John 3:16",
|
||||
"1 John 1:9"
|
||||
|
|
@ -81,8 +81,8 @@
|
|||
{
|
||||
"n": 4,
|
||||
"rhythm": "read",
|
||||
"sub": "the Father's love",
|
||||
"text": "That they would be SAVED and KNOW their heavenly Father loves them — and that through them He would bring salvation to their family, friends, neighbours, coworkers, classmates, everyone they know personally.",
|
||||
"sub": "the heavenly Father's love",
|
||||
"text": "That they would be SAVED and KNOW their heavenly Father loves them — He wants to save them, and through them He wants to bring salvation to their family, friends, neighbors, coworkers, classmates, everyone they know personally.",
|
||||
"refs": [
|
||||
"Mark 5:18–20",
|
||||
"Acts 16:31"
|
||||
|
|
@ -93,7 +93,7 @@
|
|||
"n": 5,
|
||||
"rhythm": "ask",
|
||||
"sub": "baptisms",
|
||||
"text": "New baptisms among the indigenous people groups, and every baptized disciple trained to baptize others — multiplying baptisms.",
|
||||
"text": "New baptisms among the indigenous people groups, and every baptized disciple is trained to baptize others — multiplying baptisms.",
|
||||
"refs": [
|
||||
"Acts 16",
|
||||
"Acts 10"
|
||||
|
|
@ -103,7 +103,7 @@
|
|||
"n": 6,
|
||||
"rhythm": "intercede",
|
||||
"sub": "laborers & shepherds",
|
||||
"text": "Laborers sent to deeply love a people they have never met; good shepherds raised up from within.",
|
||||
"text": "For laborers sent to deeply love a people they have never met; and indigenous good shepherds raised up from within the people groups.",
|
||||
"refs": [
|
||||
"Luke 10:2",
|
||||
"John 10:11–15"
|
||||
|
|
@ -113,7 +113,7 @@
|
|||
"n": 7,
|
||||
"rhythm": "pray_word",
|
||||
"sub": "Persons & Houses of Peace",
|
||||
"text": "That laborers and indigenous leaders find the receptive person and the house of peace, deeply love them, disciple them well, baptize them, and train them to reach their friends and family with their newfound love for Jesus.",
|
||||
"text": "That laborers and indigenous disciples find the receptive person and the house of peace, deeply love them, disciple them well, baptize them, and train them to reach their friends and family with their newfound love for Jesus.",
|
||||
"refs": [
|
||||
"Luke 10:5–7",
|
||||
"Matthew 10:5–14"
|
||||
|
|
@ -133,17 +133,17 @@
|
|||
"n": 9,
|
||||
"rhythm": "sing",
|
||||
"sub": "",
|
||||
"text": "That the people group is flooded with worshippers — worship everywhere, in freedom and in chains.",
|
||||
"text": "Imagine you are with Jesus worshipping Him, and you are surrounded by all the people groups on your prayer list worshipping Him too. Spend some time to praise Jesus.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
"n": 10,
|
||||
"rhythm": "meditate",
|
||||
"sub": "communion",
|
||||
"text": "That they take communion together and grasp the freedom they have in Christ through His death, burial and resurrection.",
|
||||
"text": "Focus on Jesus. Take communion if possible. Imagine being together with Jesus at a table with one person from each people group on your list. What is it going to take for this to become a reality?",
|
||||
"refs": [
|
||||
"Matthew 26:26–30",
|
||||
"1 Corinthians 11:23–26"
|
||||
|
|
@ -163,11 +163,10 @@
|
|||
"n": 12,
|
||||
"rhythm": "praise_end",
|
||||
"sub": "blessing · great · greater · greatest",
|
||||
"text": "Pray Jesus’ prayer in John 17 over them. The blessing: eternal life, knowing God and Jesus, whom He sent. The great blessing: their own believers leading others to faith. The greater blessing: new spiritual families of their own, one in Christ. One of the greatest: leaders from among them who train others to start new spiritual families, again and again. Ask all this and more, beyond all we ask or think. Ask, as Jesus did, that they be one and kept from the evil one. None of it is possible unless Jesus is who He says He is.",
|
||||
"text": "Short reading: It is a blessing from God for people in these people groups to be saved through Jesus and have eternal life (John 17:3). It is a great blessing from God for indigenous disciples to lead their friends, family, coworkers, classmates, neighbors, and people they don't know, to Jesus through their witness (John 17:20). It is a greater blessing from God when indigenous leaders in these people groups start new churches that are unified in Jesus (John 17:21). It is one of the greatest blessings from God, when indigenous leaders train other indigenous leaders to start more churches unified in Christ. They begin to worship Jesus and spread throughout neighboring unreached people groups bringing the life of Jesus to the ends of the earth. Spend time singing praise to God. He is worthy of worshippers in all these people groups!",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -175,8 +174,8 @@
|
|||
"point4_passage_credit": "Mark 5:18–20 · World English Bible (public domain)",
|
||||
"point4_passage_bold": "He didn’t allow him, but said to him, “Go to your house, to your friends, and tell them what great things the Lord has done for you and how he had mercy on you.”",
|
||||
"point4_heart_title": "THE HEAVENLY FATHER'S HEART",
|
||||
"point4_heart_lede": "They need to know that their Heavenly Father loves them, He wants to save them, and through them He wants their unreached people group neighbors to be saved.",
|
||||
"point4_heart_leadin": "More scriptures about the heavenly Father's heart",
|
||||
"point4_heart_lede": "They need to know that their heavenly Father loves them, He wants to save them, and through them He wants their unreached people group neighbors to be saved.",
|
||||
"point4_heart_leadin": "More scriptures about the heavenly Father's heart (pick one scripture to read)",
|
||||
"point4_heart": [
|
||||
{
|
||||
"who": "Noah",
|
||||
|
|
@ -263,6 +262,7 @@
|
|||
"sets_bounded_title": "Reached, and not",
|
||||
"sets_centered_title": "Distance from a neighbour",
|
||||
"sets_bounded_tally": "{inside} inside · {outside} outside · {unknown} unknown",
|
||||
"sets_no_data": "{n} without data",
|
||||
"sets_centered_tally": "{placed} placed · {centre} at the centre · {unplaced} unplaced",
|
||||
"ring_band_dialect": "Same dialect",
|
||||
"ring_band_language": "Same language",
|
||||
|
|
@ -297,7 +297,8 @@
|
|||
"Haggai": "Haggai",
|
||||
"Isaiah": "Isaiah",
|
||||
"Habakkuk": "Habakkuk",
|
||||
"Ephesians": "Ephesians"
|
||||
"Ephesians": "Ephesians",
|
||||
"Revelation": "Revelation"
|
||||
},
|
||||
"christian_per_cell": "Each box ≈ {n} people",
|
||||
"howto_title": "How to pray with this list",
|
||||
|
|
@ -488,7 +489,7 @@
|
|||
"text": "Que el grupo étnico sea inundado de adoradores — adoración en todas partes, en libertad y en cadenas.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -517,9 +518,8 @@
|
|||
"sub": "bendición · grande · mayor · de las mayores",
|
||||
"text": "Ora sobre ellos la oración de Jesús en Juan 17. La bendición: la vida eterna, conocer a Dios y a Jesús, a quien él envió. La gran bendición: que sus propios creyentes lleven a otros a la fe. La bendición mayor: nuevas familias espirituales propias, unidas en Cristo. Una de las mayores: líderes de entre ellos que formen a otros para iniciar nuevas familias espirituales, una y otra vez. Pide todo esto y más, mucho más de lo que pedimos o pensamos. Pide, como Jesús, que sean uno y que sean guardados del maligno. Nada de esto es posible si Jesús no es quien dice ser.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -608,6 +608,7 @@
|
|||
"sets_bounded_title": "Alcanzados y no alcanzados",
|
||||
"sets_centered_title": "Distancia a un vecino",
|
||||
"sets_bounded_tally": "{inside} dentro · {outside} fuera · {unknown} desconocido",
|
||||
"sets_no_data": "{n} sin datos",
|
||||
"sets_centered_tally": "{placed} ubicados · {centre} en el centro · {unplaced} sin ubicar",
|
||||
"ring_band_dialect": "Mismo dialecto",
|
||||
"ring_band_language": "Misma lengua",
|
||||
|
|
@ -642,7 +643,8 @@
|
|||
"Haggai": "Hageo",
|
||||
"Isaiah": "Isaías",
|
||||
"Habakkuk": "Habacuc",
|
||||
"Ephesians": "Efesios"
|
||||
"Ephesians": "Efesios",
|
||||
"Revelation": "Apocalipsis"
|
||||
},
|
||||
"christian_per_cell": "Cada casilla ≈ {n} personas",
|
||||
"howto_title": "Cómo orar con esta lista",
|
||||
|
|
@ -819,7 +821,7 @@
|
|||
"text": "Que le groupe ethnique soit inondé d'adorateurs — l'adoration partout, dans la liberté comme dans les chaînes.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -848,9 +850,8 @@
|
|||
"sub": "bénédiction · grande · plus grande · parmi les plus grandes",
|
||||
"text": "Priez sur eux la prière de Jésus en Jean 17. La bénédiction : la vie éternelle, connaître Dieu et Jésus, celui qu’il a envoyé. La grande bénédiction : que leurs propres croyants amènent d’autres à la foi. Une bénédiction plus grande : de nouvelles familles spirituelles bien à eux, unies en Christ. L’une des plus grandes : des responsables issus de leur peuple qui forment d’autres personnes à fonder de nouvelles familles spirituelles, encore et encore. Demandez tout cela et plus encore, au-delà de tout ce que nous demandons ou pensons. Demandez, comme Jésus, qu’ils soient un et gardés du malin. Rien de cela n’est possible si Jésus n’est pas celui qu’il dit être.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -939,6 +940,7 @@
|
|||
"sets_bounded_title": "Atteints, ou non",
|
||||
"sets_centered_title": "Distance d’un voisin",
|
||||
"sets_bounded_tally": "{inside} à l’intérieur · {outside} à l’extérieur · {unknown} inconnu",
|
||||
"sets_no_data": "{n} sans données",
|
||||
"sets_centered_tally": "{placed} placés · {centre} au centre · {unplaced} non placés",
|
||||
"ring_band_dialect": "Même dialecte",
|
||||
"ring_band_language": "Même langue",
|
||||
|
|
@ -973,7 +975,8 @@
|
|||
"Haggai": "Aggée",
|
||||
"Isaiah": "Ésaïe",
|
||||
"Habakkuk": "Habacuc",
|
||||
"Ephesians": "Éphésiens"
|
||||
"Ephesians": "Éphésiens",
|
||||
"Revelation": "Apocalypse"
|
||||
},
|
||||
"christian_per_cell": "Chaque case ≈ {n} personnes",
|
||||
"howto_title": "Comment prier avec cette liste",
|
||||
|
|
@ -1150,7 +1153,7 @@
|
|||
"text": "Que o grupo étnico seja inundado de adoradores — adoração em toda parte, em liberdade e em correntes.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -1179,9 +1182,8 @@
|
|||
"sub": "bênção · grande · maior · das maiores",
|
||||
"text": "Ore sobre eles a oração de Jesus em João 17. A bênção: a vida eterna, conhecer a Deus e a Jesus, a quem ele enviou. A grande bênção: que os seus próprios crentes levem outros à fé. A bênção maior: novas famílias espirituais deles mesmos, unidas em Cristo. Uma das maiores: líderes do meio deles que preparem outros para começar novas famílias espirituais, vez após vez. Peça tudo isso e mais, muito além do que pedimos ou pensamos. Peça, como Jesus pediu, que sejam um e guardados do maligno. Nada disso é possível se Jesus não for quem ele diz ser.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -1267,6 +1269,7 @@
|
|||
"sets_bounded_title": "Alcançados e não alcançados",
|
||||
"sets_centered_title": "Distância de um vizinho",
|
||||
"sets_bounded_tally": "{inside} dentro · {outside} fora · {unknown} desconhecido",
|
||||
"sets_no_data": "{n} sem dados",
|
||||
"sets_centered_tally": "{placed} posicionados · {centre} no centro · {unplaced} sem posição",
|
||||
"ring_band_dialect": "Mesmo dialeto",
|
||||
"ring_band_language": "Mesma língua",
|
||||
|
|
@ -1301,7 +1304,8 @@
|
|||
"Haggai": "Ageu",
|
||||
"Isaiah": "Isaías",
|
||||
"Habakkuk": "Habacuque",
|
||||
"Ephesians": "Efésios"
|
||||
"Ephesians": "Efésios",
|
||||
"Revelation": "Apocalipse"
|
||||
},
|
||||
"christian_per_cell": "Cada caixa ≈ {n} pessoas",
|
||||
"howto_title": "Como orar com esta lista",
|
||||
|
|
@ -1478,7 +1482,7 @@
|
|||
"text": "Dass die Volksgruppe von Anbetern überflutet wird — Anbetung überall, in Freiheit und in Ketten.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -1507,9 +1511,8 @@
|
|||
"sub": "Segen · groß · größer · einer der größten",
|
||||
"text": "Beten Sie Jesu Gebet aus Johannes 17 über ihnen. Der Segen: ewiges Leben, Gott zu kennen und Jesus, den er gesandt hat. Der große Segen: dass ihre eigenen Gläubigen andere zum Glauben führen. Der größere Segen: neue geistliche Familien, ihre eigenen, eins in Christus. Einer der größten: Leiter aus ihrer Mitte, die andere anleiten, neue geistliche Familien zu gründen, immer wieder. Bitten Sie um all das und mehr, über alles hinaus, was wir bitten oder verstehen. Bitten Sie wie Jesus, dass sie eins seien und vor dem Bösen bewahrt werden. Nichts davon ist möglich, wenn Jesus nicht der ist, der er zu sein sagt.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -1598,6 +1601,7 @@
|
|||
"sets_bounded_title": "Erreicht und nicht erreicht",
|
||||
"sets_centered_title": "Abstand zu einem Nachbarn",
|
||||
"sets_bounded_tally": "{inside} innen · {outside} außen · {unknown} unbekannt",
|
||||
"sets_no_data": "{n} ohne Daten",
|
||||
"sets_centered_tally": "{placed} platziert · {centre} in der Mitte · {unplaced} ohne Platz",
|
||||
"ring_band_dialect": "Gleicher Dialekt",
|
||||
"ring_band_language": "Gleiche Sprache",
|
||||
|
|
@ -1632,7 +1636,8 @@
|
|||
"Haggai": "Haggai",
|
||||
"Isaiah": "Jesaja",
|
||||
"Habakkuk": "Habakuk",
|
||||
"Ephesians": "Epheser"
|
||||
"Ephesians": "Epheser",
|
||||
"Revelation": "Offenbarung"
|
||||
},
|
||||
"christian_per_cell": "Jedes Kästchen ≈ {n} Menschen",
|
||||
"howto_title": "So beten Sie mit dieser Liste",
|
||||
|
|
@ -1809,7 +1814,7 @@
|
|||
"text": "Che il gruppo etnico sia inondato di adoratori — adorazione ovunque, nella libertà e nelle catene.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -1838,9 +1843,8 @@
|
|||
"sub": "benedizione · grande · più grande · tra le più grandi",
|
||||
"text": "Prega su di loro la preghiera di Gesù in Giovanni 17. La benedizione: la vita eterna, conoscere Dio e Gesù, colui che egli ha mandato. La grande benedizione: che i loro stessi credenti portino altri alla fede. La benedizione più grande: nuove famiglie spirituali tutte loro, unite in Cristo. Una delle più grandi: responsabili del loro popolo che formano altri ad avviare nuove famiglie spirituali, ancora e ancora. Chiedi tutto questo e di più, oltre tutto ciò che chiediamo o pensiamo. Chiedi, come Gesù, che siano uno e custoditi dal maligno. Niente di tutto questo è possibile se Gesù non è chi dice di essere.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -1926,6 +1930,7 @@
|
|||
"sets_bounded_title": "Raggiunti e non raggiunti",
|
||||
"sets_centered_title": "Distanza da un vicino",
|
||||
"sets_bounded_tally": "{inside} dentro · {outside} fuori · {unknown} sconosciuto",
|
||||
"sets_no_data": "{n} senza dati",
|
||||
"sets_centered_tally": "{placed} collocati · {centre} al centro · {unplaced} non collocati",
|
||||
"ring_band_dialect": "Stesso dialetto",
|
||||
"ring_band_language": "Stessa lingua",
|
||||
|
|
@ -1960,7 +1965,8 @@
|
|||
"Haggai": "Aggeo",
|
||||
"Isaiah": "Isaia",
|
||||
"Habakkuk": "Abacuc",
|
||||
"Ephesians": "Efesini"
|
||||
"Ephesians": "Efesini",
|
||||
"Revelation": "Apocalisse"
|
||||
},
|
||||
"christian_per_cell": "Ogni casella ≈ {n} persone",
|
||||
"howto_title": "Come pregare con questa lista",
|
||||
|
|
@ -2137,7 +2143,7 @@
|
|||
"text": "Grupul etnic să fie inundat de închinători — închinare pretutindeni, în libertate și în lanțuri.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -2166,9 +2172,8 @@
|
|||
"sub": "binecuvântare · mare · mai mare · printre cele mai mari",
|
||||
"text": "Roagă-te peste ei cu rugăciunea lui Isus din Ioan 17. Binecuvântarea: viața veșnică, să-L cunoască pe Dumnezeu și pe Isus, pe care L-a trimis. Marea binecuvântare: ca propriii lor credincioși să-i aducă pe alții la credință. O binecuvântare și mai mare: familii spirituale noi, ale lor, una în Hristos. Una dintre cele mai mari: lideri dintre ei care îi pregătesc pe alții să înceapă noi familii spirituale, iar și iar. Cere toate acestea și mai mult, dincolo de tot ce cerem sau gândim. Cere, ca Isus, să fie una și păziți de cel rău. Nimic din toate acestea nu este posibil dacă Isus nu este Cel care spune că este.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -2254,6 +2259,7 @@
|
|||
"sets_bounded_title": "Atinse și neatinse",
|
||||
"sets_centered_title": "Distanța față de un vecin",
|
||||
"sets_bounded_tally": "{inside} înăuntru · {outside} în afară · {unknown} necunoscut",
|
||||
"sets_no_data": "{n} fără date",
|
||||
"sets_centered_tally": "{placed} plasate · {centre} în centru · {unplaced} neplasate",
|
||||
"ring_band_dialect": "Același dialect",
|
||||
"ring_band_language": "Aceeași limbă",
|
||||
|
|
@ -2288,7 +2294,8 @@
|
|||
"Haggai": "Hagai",
|
||||
"Isaiah": "Isaia",
|
||||
"Habakkuk": "Habacuc",
|
||||
"Ephesians": "Efeseni"
|
||||
"Ephesians": "Efeseni",
|
||||
"Revelation": "Apocalipsa"
|
||||
},
|
||||
"christian_per_cell": "Fiecare căsuță ≈ {n} de oameni",
|
||||
"howto_title": "Cum să te rogi cu această listă",
|
||||
|
|
@ -2463,7 +2470,7 @@
|
|||
"text": "Чтобы народ наполнился поклонниками — поклонение повсюду, в свободе и в цепях.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -2492,9 +2499,8 @@
|
|||
"sub": "благословение · великое · большее · одно из величайших",
|
||||
"text": "Молитесь над ними молитвой Иисуса из Иоанна 17. Благословение: вечная жизнь — знать Бога и Иисуса, Которого Он послал. Великое благословение: чтобы их собственные верующие приводили других к вере. Ещё большее благословение: новые духовные семьи, свои собственные, единые во Христе. Одно из величайших: лидеры из их среды, которые учат других начинать новые духовные семьи — снова и снова. Просите обо всём этом и о большем — превыше всего, чего мы просим или о чём помышляем. Просите, как Иисус, чтобы они были едины и сохранены от лукавого. Ничто из этого невозможно, если Иисус не Тот, Кем Он Себя называет.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -2583,6 +2589,7 @@
|
|||
"sets_bounded_title": "Достигнутые и нет",
|
||||
"sets_centered_title": "Расстояние до соседа",
|
||||
"sets_bounded_tally": "{inside} внутри · {outside} снаружи · {unknown} неизвестно",
|
||||
"sets_no_data": "{n} без данных",
|
||||
"sets_centered_tally": "{placed} размещено · {centre} в центре · {unplaced} без места",
|
||||
"ring_band_dialect": "Тот же диалект",
|
||||
"ring_band_language": "Тот же язык",
|
||||
|
|
@ -2617,7 +2624,8 @@
|
|||
"Haggai": "Агг.",
|
||||
"Isaiah": "Ис.",
|
||||
"Habakkuk": "Авв.",
|
||||
"Ephesians": "Еф."
|
||||
"Ephesians": "Еф.",
|
||||
"Revelation": "Откр."
|
||||
},
|
||||
"christian_per_cell": "Каждая клетка ≈ {n} чел.",
|
||||
"howto_title": "Как молиться по этому списку",
|
||||
|
|
@ -2801,7 +2809,7 @@
|
|||
"text": "أن يفيض الشعب بالساجدين — عبادة في كل مكان، في الحرية وفي القيود.",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -2830,9 +2838,8 @@
|
|||
"sub": "البركة · العظيمة · الأعظم · من أعظمها",
|
||||
"text": "صلِّ لأجلهم بصلاة يسوع في يوحنا ١٧. البركة: الحياة الأبدية، أن يعرفوا الله ويسوع الذي أرسله. البركة العظيمة: أن يقود المؤمنون منهم غيرهم إلى الإيمان. البركة الأعظم: عائلات روحية جديدة خاصة بهم، واحدة في المسيح. ومن أعظم البركات: قادة من بينهم يدرّبون آخرين ليبدؤوا عائلات روحية جديدة، مرة بعد مرة. اطلب كل هذا وأكثر، أكثر جدًا مما نطلب أو نفتكر. واطلب، كما طلب يسوع، أن يكونوا واحدًا وأن يُحفظوا من الشرير. لا شيء من هذا ممكن إن لم يكن يسوع هو مَن يقول إنه هو.",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -2921,6 +2928,7 @@
|
|||
"sets_bounded_title": "وصلتهم البشارة ومن لم تصلهم",
|
||||
"sets_centered_title": "المسافة إلى جار",
|
||||
"sets_bounded_tally": "{inside} في الداخل · {outside} في الخارج · {unknown} غير معروف",
|
||||
"sets_no_data": "{n} بلا بيانات",
|
||||
"sets_centered_tally": "{placed} موضوعون · {centre} في المركز · {unplaced} بلا موضع",
|
||||
"ring_band_dialect": "اللهجة نفسها",
|
||||
"ring_band_language": "اللغة نفسها",
|
||||
|
|
@ -2955,7 +2963,8 @@
|
|||
"Haggai": "حجي",
|
||||
"Isaiah": "إشعياء",
|
||||
"Habakkuk": "حبقوق",
|
||||
"Ephesians": "أفسس"
|
||||
"Ephesians": "أفسس",
|
||||
"Revelation": "رؤيا"
|
||||
},
|
||||
"christian_per_cell": "كل مربّع ≈ {n} شخص",
|
||||
"howto_title": "كيف تصلّي بهذه القائمة",
|
||||
|
|
@ -3132,7 +3141,7 @@
|
|||
"text": "कि वह जनसमूह आराधकों से भर जाए — हर जगह आराधना, स्वतंत्रता में और बेड़ियों में भी।",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -3161,9 +3170,8 @@
|
|||
"sub": "आशीष · बड़ी · और बड़ी · सबसे बड़ी में से एक",
|
||||
"text": "यूहन्ना 17 में यीशु ने जो प्रार्थना की, वही उनके लिए करें। आशीष: अनन्त जीवन — परमेश्वर को और यीशु को जानना, जिन्हें उन्होंने भेजा। बड़ी आशीष: उन्हीं के विश्वासी दूसरों को विश्वास में लाएँ। उससे बड़ी आशीष: उनके अपने नए आत्मिक परिवार, मसीह में एक। सबसे बड़ी आशीषों में से एक: उनके बीच से अगुवे, जो दूसरों को नए आत्मिक परिवार शुरू करने के लिए तैयार करें — बार-बार। यह सब और इससे भी अधिक माँगें, जितना हम माँगते या सोचते हैं उससे कहीं बढ़कर। यीशु की तरह माँगें कि वे एक हों और उस दुष्ट से बचे रहें। इनमें से कुछ भी संभव नहीं, यदि यीशु वह नहीं हैं जो वह कहते हैं कि वह हैं।",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -3249,6 +3257,7 @@
|
|||
"sets_bounded_title": "पहुँचे और नहीं पहुँचे",
|
||||
"sets_centered_title": "पड़ोसी से दूरी",
|
||||
"sets_bounded_tally": "{inside} भीतर · {outside} बाहर · {unknown} अज्ञात",
|
||||
"sets_no_data": "{n} बिना आँकड़ों के",
|
||||
"sets_centered_tally": "{placed} स्थित · {centre} केंद्र में · {unplaced} अस्थित",
|
||||
"ring_band_dialect": "वही बोली",
|
||||
"ring_band_language": "वही भाषा",
|
||||
|
|
@ -3283,7 +3292,8 @@
|
|||
"Haggai": "हाग्गै",
|
||||
"Isaiah": "यशायाह",
|
||||
"Habakkuk": "हबक्कूक",
|
||||
"Ephesians": "इफिसियों"
|
||||
"Ephesians": "इफिसियों",
|
||||
"Revelation": "प्रकाशितवाक्य"
|
||||
},
|
||||
"christian_per_cell": "हर खाना ≈ {n} लोग",
|
||||
"howto_title": "इस सूची के साथ प्रार्थना कैसे करें",
|
||||
|
|
@ -3458,7 +3468,7 @@
|
|||
"text": "愿这族群充满敬拜者——处处敬拜,在自由中,也在捆锁中。",
|
||||
"refs": [
|
||||
"Acts 16:25–26",
|
||||
"Colossians 3:16"
|
||||
"Revelation 7:9–10"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -3487,9 +3497,8 @@
|
|||
"sub": "祝福 · 大 · 更大 · 最大之一",
|
||||
"text": "用耶稣在约翰福音17章的祷告为他们祷告。祝福:永生,认识神和他所差来的耶稣。大祝福:他们自己的信徒带领别人信主。更大的祝福:属于他们自己的新属灵家庭,在基督里合而为一。最大的祝福之一:从他们中间兴起领袖,装备别人建立新的属灵家庭,一代又一代。求这一切,还有更多,超过我们所求所想的。也像耶稣一样,求神使他们合而为一,保守他们脱离那恶者。若耶稣不是他自己所说的那一位,这一切都不可能。",
|
||||
"refs": [
|
||||
"John 17:3",
|
||||
"John 17:11–23",
|
||||
"Ephesians 3:20"
|
||||
"John 17:3,11–23",
|
||||
"Ephesians 3:20–21"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
|
@ -3575,6 +3584,7 @@
|
|||
"sets_bounded_title": "已触及与未触及",
|
||||
"sets_centered_title": "与邻近族群的距离",
|
||||
"sets_bounded_tally": "{inside} 圈内 · {outside} 圈外 · {unknown} 未知",
|
||||
"sets_no_data": "{n} 无数据",
|
||||
"sets_centered_tally": "{placed} 已定位 · {centre} 在中心 · {unplaced} 未定位",
|
||||
"ring_band_dialect": "同一方言",
|
||||
"ring_band_language": "同一语言",
|
||||
|
|
@ -3609,7 +3619,8 @@
|
|||
"Haggai": "哈该书",
|
||||
"Isaiah": "以赛亚书",
|
||||
"Habakkuk": "哈巴谷书",
|
||||
"Ephesians": "以弗所书"
|
||||
"Ephesians": "以弗所书",
|
||||
"Revelation": "启示录"
|
||||
},
|
||||
"christian_per_cell": "每格约 {n} 人",
|
||||
"howto_title": "如何使用这份祷告名单",
|
||||
|
|
|
|||
|
|
@ -289,10 +289,14 @@ const HEAD_COLUMNS_CSS = `
|
|||
// at 22 / 21px with darker ink: about 8pt on the printed page. Only the full layout (HEAD_COLUMNS) gets this; the
|
||||
// series-wide rules above stay as they were, so the series' SPARSE posters are byte-identical.
|
||||
// Print size = sheet px x 0.92 (the packet's margins) x 0.408 (1500px = 8.5in): 22px ≈ 8.3pt, 19px ≈ 7.1pt.
|
||||
// ★ THE NAMES COME FIRST (2026-10-03): the header columns step down to 18px (≈6.8pt; keys 15.5, headings 19) so
|
||||
// the people-group names beside the map can be the larger type. The shorter band gives the map ~80px more height,
|
||||
// and the names' cap on this layout rises to 19px (see MAXF). These sizes must equal HC's (fs, keyFs, headFs).
|
||||
const HEAD_COLUMNS_FULL_CSS = `
|
||||
.hcolk{font-size:19px;fill:#2f2a22;font-weight:800;letter-spacing:.1em}
|
||||
.hcolt{font-size:22px;fill:#3a362c}
|
||||
.hcolh{font-family:Georgia,'Times New Roman',serif;font-size:23px;font-weight:700;fill:#2f2a22;letter-spacing:.04em;font-variant:small-caps}
|
||||
.hcolk{font-size:15.5px;fill:#2f2a22;font-weight:800;letter-spacing:.1em}
|
||||
.hcolt{font-size:18px;fill:#3a362c}
|
||||
.hcolb{font-weight:700;fill:#2f2a22}
|
||||
.hcolh{font-family:Georgia,'Times New Roman',serif;font-size:19px;font-weight:700;fill:#2f2a22;letter-spacing:.04em;font-variant:small-caps}
|
||||
.hvref{font-size:19px}
|
||||
.hverse{font-size:19.5px}
|
||||
.hsrc{font-size:22px;fill:#4a4636}
|
||||
|
|
@ -692,7 +696,9 @@ function layoutLabels(pins, project) {
|
|||
col.forEach((it) => { it.maxNum = MAXNUM_L; });
|
||||
// A map-only sheet frees the header and footer bands the same way SPARSE frees the vision
|
||||
// columns, so it gets SPARSE's ceiling; the solver still only uses what the column can hold.
|
||||
const MAXF = (SPARSE || MAP_ONLY) ? 19 : 15;
|
||||
// The three-column sheet (HEAD_COLUMNS) gets it too: there the names are the main text, and the cap of 15
|
||||
// held 21 of the 28 zones' names at 15px (≈5.6pt printed) with room to spare in the band.
|
||||
const MAXF = (SPARSE || MAP_ONLY || HEAD_COLUMNS) ? 19 : 15;
|
||||
// AVAIL IS THE COLUMN, AND THE NAME DOES NOT GET ALL OF IT.
|
||||
// The renderer draws the name starting one number-column IN from the column's
|
||||
// map-facing edge (`nameEdge = tx ± numColW`) but does not shrink its budget by
|
||||
|
|
@ -726,18 +732,23 @@ function layoutLabels(pins, project) {
|
|||
if (line) out.push(line);
|
||||
return out.length ? out : [it.name];
|
||||
};
|
||||
// The air between rows, as a share of the size. The three-column sheet sets it tighter (0.22): its densest
|
||||
// zones (95-118 names) are held by the band's height, and the tighter rows turn that height into type
|
||||
// (west-africa 12.5 -> 13.8px, laos 15.8 -> 17.3px). A row's underline sits 0.30 below its baseline and the
|
||||
// next row's capitals start 0.56 below it, so they stay clear. Every other sheet keeps 0.34.
|
||||
const GAPF = HEAD_COLUMNS ? 0.22 : 0.34;
|
||||
let font = MAXF, wraps = null;
|
||||
for (let f = MAXF; f >= 8; f -= 0.25) {
|
||||
const ws = col.map((it) => wrapName(it, f));
|
||||
const totalLines = ws.reduce((a, w) => a + w.length, 0);
|
||||
// Each line needs f*1.06 of pitch, plus a little air between rows.
|
||||
if (totalLines * (f * 1.06) + col.length * (f * 0.34) <= bandH) { font = f; wraps = ws; break; }
|
||||
if (totalLines * (f * 1.06) + col.length * (f * GAPF) <= bandH) { font = f; wraps = ws; break; }
|
||||
}
|
||||
if (!wraps) wraps = col.map((it) => wrapName(it, font));
|
||||
// Re-pitch rows by LINE COUNT so a two-line name gets the room it needs and
|
||||
// single-line rows are not stretched to match it.
|
||||
const lineH = font * 1.06;
|
||||
const gap = font * 0.34;
|
||||
const gap = font * GAPF;
|
||||
const usedH = wraps.reduce((a, w) => a + w.length * lineH, 0) + col.length * gap;
|
||||
const slack = Math.max(0, bandH - usedH) / Math.max(1, col.length);
|
||||
let cursor = bandTop + slack / 2;
|
||||
|
|
@ -832,7 +843,8 @@ function paraInto(push, text, { x, y, w, fs, lh, cls, lead }) {
|
|||
// 1 Jesus' strategy to feed the 5000
|
||||
// 2 the facts: a bold key above each value (countries, administrative areas, people groups, series)
|
||||
// 3 what the series is
|
||||
const HC = { gut: 32, fs: 22, lh: 27, keyFs: 19, keyLh: 24, headLh: 30, gap: 8, headFs: 23 };
|
||||
// The sizes equal HEAD_COLUMNS_FULL_CSS (.hcolt = fs, .hcolk = keyFs, .hcolh = headFs); leading and gaps scale with them.
|
||||
const HC = { gut: 32, fs: 18, lh: 22, keyFs: 15.5, keyLh: 19.5, headLh: 24.5, gap: 7, headFs: 19 };
|
||||
// textW is calibrated for Lato. Without Lato the browser falls back to a system sans that sets
|
||||
// these columns 2-6% wider (measured 1.05-1.06x in DejaVu Sans). Each block is centred on its
|
||||
// width at 1.03x, halfway, so any overrun splits across both sides instead of all running right.
|
||||
|
|
@ -853,17 +865,50 @@ const strategyParas = () => (POSTER_TEXT.strategyBody ? [].concat(POSTER_TEXT.st
|
|||
// series.json (poster.sideBoxMore: one paragraph, or a list; [] prints none), as UPG100 does to keep its band even.
|
||||
const whatIsMore = () => (POSTER_TEXT.sideBoxMore !== undefined ? [].concat(POSTER_TEXT.sideBoxMore) : [WHAT_IS_MORE]);
|
||||
const WHAT_IS_MORE = 'Each map comes with a prayer list of its fifty to a hundred people groups — their names, a representative photo, and more detail — to mobilise informed intercession.';
|
||||
// A paragraph's lines as SVG text content, its **...** runs set bold (.hcolb); the markers are not printed.
|
||||
// The wrap measures the plain text: a short bold run is a few px wider, inside the measure's room.
|
||||
function boldLines(text, width) {
|
||||
let plain = '', bold = [], on = false;
|
||||
for (const part of String(text).replace(/\s+/g, ' ').trim().split('**')) {
|
||||
for (let i = 0; i < part.length; i++) { plain += part[i]; bold.push(on); } // per UTF-16 unit, as plain[p] reads
|
||||
on = !on;
|
||||
}
|
||||
// A scripture reference never breaks between its book and its chapter:verse ("Mark 6:40"): that space becomes a
|
||||
// placeholder for the wrap and prints as a space again. One character for one, so the bold flags stay aligned.
|
||||
plain = plain.replace(/([A-Za-z]+) (\d+:\d+)/g, '$1\u0001$2');
|
||||
let p = 0;
|
||||
return wrapPx(plain, HC.fs, width).map((ln) => {
|
||||
while (plain[p] === ' ') p++;
|
||||
let out = '', run = '', runBold = null;
|
||||
const flush = () => { if (run) out += runBold ? `<tspan class="hcolb">${esc(run)}</tspan>` : esc(run); run = ''; };
|
||||
for (let k = 0; k < ln.length; k++, p++) {
|
||||
if (bold[p] !== runBold) { flush(); runBold = bold[p]; }
|
||||
run += plain[p] === '\u0001' ? ' ' : plain[p];
|
||||
}
|
||||
flush();
|
||||
return out;
|
||||
});
|
||||
}
|
||||
function headColumnsBand(top, facts, approxLists) {
|
||||
const GRID_L = BAND_MARGIN_G, GRID_W = PW - 2 * BAND_MARGIN_G;
|
||||
const CW = (GRID_W - 2 * HC.gut) / 3;
|
||||
const AVAIL = GRID_W - 2 * HC.gut;
|
||||
// The measure leaves room for a fallback font (see HC_FALLBACK): a block set to it stays inside its column.
|
||||
const TW = (CW - 10 - BAND_TEXT_PAD / 2) * 0.92;
|
||||
const measure = (cw) => (cw - 10 - BAND_TEXT_PAD / 2) * 0.92;
|
||||
// ★ EVEN COLUMNS (2026-10-03): when the facts column runs longer than the two text columns it is WIDENED (and
|
||||
// shorter, it is narrowed) so the three end at about the same height. The two side columns stay equal, so they
|
||||
// still mirror each other round the centre. The centre's share is searched from 26% to 46% of the three-column
|
||||
// width; the split whose TALLEST column is shortest wins, and a tie goes to the split nearest equal widths, so a
|
||||
// zone that is already balanced keeps equal columns. measureHeader calls this same function, so the map below
|
||||
// gets exactly the height that is left.
|
||||
// Uppercase, letterspaced keys: measured as capitals plus the .14em tracking.
|
||||
const keyW = (k) => textW(k.toUpperCase(), HC.keyFs) + k.length * HC.keyFs * 0.14;
|
||||
// Each column's height at a given measure (the same arithmetic the drawing below advances y by).
|
||||
const proseH = (col, tw) => HC.headLh + col[0].paras.reduce((h, t, k) => h + (k ? HC.gap : 0) + boldLines(t, tw).length * HC.lh, 0);
|
||||
const factsH = (tw) => facts.reduce((h, [, value], k) => h + (k ? HC.gap : 0) + HC.keyLh + wrapPx(value, HC.fs, tw).length * HC.lh, 0);
|
||||
// Column order (2026-10-02): Jesus' strategy | the facts | what the series is.
|
||||
const cols = [
|
||||
[{ head: 'Jesus’ Strategy to Feed the 5000', paras: strategyParas() }],
|
||||
facts.map(([key, value]) => ({ key, lines: wrapPx(value, HC.fs, TW) })),
|
||||
null, // the facts column, wrapped below at the centre's measure
|
||||
[{ head: POSTER_TEXT.sideBoxHeading || 'What is a UPG100 List?', paras: [
|
||||
(POSTER_TEXT.sideBoxBody
|
||||
|| 'This map is one of a {approxLists}-map set called the {seriesName} — a large, overwhelming target in the thousands, organised into clear groupings and displayed on maps and prayer lists.')
|
||||
|
|
@ -871,9 +916,22 @@ function headColumnsBand(top, facts, approxLists) {
|
|||
...whatIsMore(),
|
||||
] }],
|
||||
];
|
||||
// The split: equal thirds first, then centre shares on a 1% step ordered by their distance from a third, so
|
||||
// among splits whose tallest column is equally short, the one nearest equal widths is found first and kept.
|
||||
const shares = Array.from({ length: 21 }, (_, k) => 0.26 + k * 0.01).sort((a, b) => Math.abs(a - 1 / 3) - Math.abs(b - 1 / 3));
|
||||
let best = null;
|
||||
for (const cwC of [1 / 3, ...shares].map((f) => AVAIL * f)) {
|
||||
const cwS = (AVAIL - cwC) / 2;
|
||||
const tall = Math.max(proseH(cols[0], measure(cwS)), factsH(measure(cwC)), proseH(cols[2], measure(cwS)));
|
||||
if (!best || tall < best.tall - 0.5) best = { cwC, cwS, tall };
|
||||
}
|
||||
const widths = [best.cwS, best.cwC, best.cwS];
|
||||
const lefts = [GRID_L, GRID_L + best.cwS + HC.gut, GRID_L + best.cwS + HC.gut + best.cwC + HC.gut];
|
||||
cols[1] = facts.map(([key, value]) => ({ key, lines: wrapPx(value, HC.fs, measure(best.cwC)) }));
|
||||
let frags = '', bottom = top;
|
||||
cols.forEach((col, i) => {
|
||||
const centre = GRID_L + i * (CW + HC.gut) + CW / 2;
|
||||
const CW = widths[i], TW = measure(CW);
|
||||
const centre = lefts[i] + CW / 2;
|
||||
if (col[0] && col[0].key !== undefined) { // the facts column: a bold key above each value
|
||||
const blockW = Math.min(TW, Math.max(...col.map((r) => Math.max(keyW(r.key), ...r.lines.map((ln) => textW(ln, HC.fs))))));
|
||||
const x = (centre - blockW * HC_FALLBACK / 2).toFixed(1);
|
||||
|
|
@ -887,20 +945,22 @@ function headColumnsBand(top, facts, approxLists) {
|
|||
bottom = Math.max(bottom, y);
|
||||
} else {
|
||||
const { head, paras } = col[0];
|
||||
const wrapped = paras.map((t) => wrapPx(t, HC.fs, TW));
|
||||
const blockW = Math.min(TW, Math.max(textW(head, HC.headFs), ...wrapped.flat().map((ln) => textW(ln, HC.fs))));
|
||||
// ★ MIRRORED (2026-10-03): both prose columns take the full measure, so each sits the same distance from
|
||||
// its rule and the two outer columns mirror each other round the centred facts column. (Each used to be
|
||||
// centred on its own widest line, so the two could sit at different distances from their rules.)
|
||||
const blockW = TW;
|
||||
const x = (centre - blockW * HC_FALLBACK / 2).toFixed(1);
|
||||
frags += `<text x="${x}" y="${top}" class="hcolh">${esc(head)}</text>`;
|
||||
let y = top + HC.headLh;
|
||||
wrapped.forEach((lines, k) => {
|
||||
paras.forEach((text, k) => {
|
||||
if (k) y += HC.gap;
|
||||
for (const ln of lines) { frags += `<text x="${x}" y="${y}" class="hcolt">${esc(ln)}</text>`; y += HC.lh; }
|
||||
for (const ln of boldLines(text, TW)) { frags += `<text x="${x}" y="${y}" class="hcolt">${ln}</text>`; y += HC.lh; }
|
||||
});
|
||||
bottom = Math.max(bottom, y);
|
||||
}
|
||||
});
|
||||
for (let i = 1; i < 3; i++) {
|
||||
const rx = (GRID_L + i * (CW + HC.gut) - HC.gut / 2).toFixed(1);
|
||||
const rx = (lefts[i] - HC.gut / 2).toFixed(1);
|
||||
frags += `<line x1="${rx}" y1="${top - 14}" x2="${rx}" y2="${bottom - 12}" class="hcolrule"/>`;
|
||||
}
|
||||
return { frags, bottom };
|
||||
|
|
@ -2346,7 +2406,7 @@ async function renderPoster(zone, pins, zoneFC) {
|
|||
let cy0 = bodyTop;
|
||||
strategyParas().forEach((text, k) => {
|
||||
if (k) cy0 += 5;
|
||||
cy0 = paraInto(push, text, { x: b1x[0], y: cy0, w: B1_TW, fs: B1_FS, lh: B1_LH, cls: 'hsrc2' });
|
||||
cy0 = paraInto(push, String(text).replace(/\*\*/g, ''), { x: b1x[0], y: cy0, w: B1_TW, fs: B1_FS, lh: B1_LH, cls: 'hsrc2' });
|
||||
});
|
||||
|
||||
let cy1 = bodyTop;
|
||||
|
|
@ -2357,9 +2417,11 @@ async function renderPoster(zone, pins, zoneFC) {
|
|||
|| 'This map is one of a {approxLists}-map set called the {seriesName} — a large, overwhelming target in the thousands, organised into clear groupings and displayed on maps and prayer lists.')
|
||||
.replace('{approxLists}', String(approxLists))
|
||||
.replace('{seriesName}', SERIES_NAME);
|
||||
// A **...** bold marker is the band's (boldLines); this classic header prints plain, so the markers are dropped.
|
||||
const plain = (t) => String(t).replace(/\*\*/g, '');
|
||||
[whatIs, ...whatIsMore()].forEach((text, k) => {
|
||||
if (k) cy1 += 5;
|
||||
cy1 = paraInto(push, text, { x: b1x[1], y: cy1, w: B1_TW, fs: B1_FS, lh: B1_LH, cls: 'hsrc2' });
|
||||
cy1 = paraInto(push, plain(text), { x: b1x[1], y: cy1, w: B1_TW, fs: B1_FS, lh: B1_LH, cls: 'hsrc2' });
|
||||
});
|
||||
|
||||
const b1Bot = Math.max(cy0, cy1);
|
||||
|
|
|
|||
|
|
@ -287,10 +287,14 @@ const HEAD_COLUMNS_CSS = `
|
|||
// at 22 / 21px with darker ink: about 8pt on the printed page. Only the full layout (HEAD_COLUMNS) gets this; the
|
||||
// series-wide rules above stay as they were, so the series' SPARSE posters are byte-identical.
|
||||
// Print size = sheet px x 0.92 (the packet's margins) x 0.408 (1500px = 8.5in): 22px ≈ 8.3pt, 19px ≈ 7.1pt.
|
||||
// ★ THE NAMES COME FIRST (2026-10-03): the header columns step down to 18px (≈6.8pt; keys 15.5, headings 19) so
|
||||
// the people-group names beside the map can be the larger type. The shorter band gives the map ~80px more height,
|
||||
// and the names' cap on this layout rises to 19px (see MAXF). These sizes must equal HC's (fs, keyFs, headFs).
|
||||
const HEAD_COLUMNS_FULL_CSS = `
|
||||
.hcolk{font-size:19px;fill:#2f2a22;font-weight:800;letter-spacing:.1em}
|
||||
.hcolt{font-size:22px;fill:#3a362c}
|
||||
.hcolh{font-family:Georgia,'Times New Roman',serif;font-size:23px;font-weight:700;fill:#2f2a22;letter-spacing:.04em;font-variant:small-caps}
|
||||
.hcolk{font-size:15.5px;fill:#2f2a22;font-weight:800;letter-spacing:.1em}
|
||||
.hcolt{font-size:18px;fill:#3a362c}
|
||||
.hcolb{font-weight:700;fill:#2f2a22}
|
||||
.hcolh{font-family:Georgia,'Times New Roman',serif;font-size:19px;font-weight:700;fill:#2f2a22;letter-spacing:.04em;font-variant:small-caps}
|
||||
.hvref{font-size:19px}
|
||||
.hverse{font-size:19.5px}
|
||||
.hsrc{font-size:22px;fill:#4a4636}
|
||||
|
|
@ -690,7 +694,9 @@ function layoutLabels(pins, project) {
|
|||
col.forEach((it) => { it.maxNum = MAXNUM_L; });
|
||||
// A map-only sheet frees the header and footer bands the same way SPARSE frees the vision
|
||||
// columns, so it gets SPARSE's ceiling; the solver still only uses what the column can hold.
|
||||
const MAXF = (SPARSE || MAP_ONLY) ? 19 : 15;
|
||||
// The three-column sheet (HEAD_COLUMNS) gets it too: there the names are the main text, and the cap of 15
|
||||
// held 21 of the 28 zones' names at 15px (≈5.6pt printed) with room to spare in the band.
|
||||
const MAXF = (SPARSE || MAP_ONLY || HEAD_COLUMNS) ? 19 : 15;
|
||||
// AVAIL IS THE COLUMN, AND THE NAME DOES NOT GET ALL OF IT.
|
||||
// The renderer draws the name starting one number-column IN from the column's
|
||||
// map-facing edge (`nameEdge = tx ± numColW`) but does not shrink its budget by
|
||||
|
|
@ -724,18 +730,23 @@ function layoutLabels(pins, project) {
|
|||
if (line) out.push(line);
|
||||
return out.length ? out : [it.name];
|
||||
};
|
||||
// The air between rows, as a share of the size. The three-column sheet sets it tighter (0.22): its densest
|
||||
// zones (95-118 names) are held by the band's height, and the tighter rows turn that height into type
|
||||
// (west-africa 12.5 -> 13.8px, laos 15.8 -> 17.3px). A row's underline sits 0.30 below its baseline and the
|
||||
// next row's capitals start 0.56 below it, so they stay clear. Every other sheet keeps 0.34.
|
||||
const GAPF = HEAD_COLUMNS ? 0.22 : 0.34;
|
||||
let font = MAXF, wraps = null;
|
||||
for (let f = MAXF; f >= 8; f -= 0.25) {
|
||||
const ws = col.map((it) => wrapName(it, f));
|
||||
const totalLines = ws.reduce((a, w) => a + w.length, 0);
|
||||
// Each line needs f*1.06 of pitch, plus a little air between rows.
|
||||
if (totalLines * (f * 1.06) + col.length * (f * 0.34) <= bandH) { font = f; wraps = ws; break; }
|
||||
if (totalLines * (f * 1.06) + col.length * (f * GAPF) <= bandH) { font = f; wraps = ws; break; }
|
||||
}
|
||||
if (!wraps) wraps = col.map((it) => wrapName(it, font));
|
||||
// Re-pitch rows by LINE COUNT so a two-line name gets the room it needs and
|
||||
// single-line rows are not stretched to match it.
|
||||
const lineH = font * 1.06;
|
||||
const gap = font * 0.34;
|
||||
const gap = font * GAPF;
|
||||
const usedH = wraps.reduce((a, w) => a + w.length * lineH, 0) + col.length * gap;
|
||||
const slack = Math.max(0, bandH - usedH) / Math.max(1, col.length);
|
||||
let cursor = bandTop + slack / 2;
|
||||
|
|
@ -830,7 +841,8 @@ function paraInto(push, text, { x, y, w, fs, lh, cls, lead }) {
|
|||
// 1 Jesus' strategy to feed the 5000
|
||||
// 2 the facts: a bold key above each value (countries, administrative areas, people groups, series)
|
||||
// 3 what the series is
|
||||
const HC = { gut: 32, fs: 22, lh: 27, keyFs: 19, keyLh: 24, headLh: 30, gap: 8, headFs: 23 };
|
||||
// The sizes equal HEAD_COLUMNS_FULL_CSS (.hcolt = fs, .hcolk = keyFs, .hcolh = headFs); leading and gaps scale with them.
|
||||
const HC = { gut: 32, fs: 18, lh: 22, keyFs: 15.5, keyLh: 19.5, headLh: 24.5, gap: 7, headFs: 19 };
|
||||
// textW is calibrated for Lato. Without Lato the browser falls back to a system sans that sets
|
||||
// these columns 2-6% wider (measured 1.05-1.06x in DejaVu Sans). Each block is centred on its
|
||||
// width at 1.03x, halfway, so any overrun splits across both sides instead of all running right.
|
||||
|
|
@ -851,17 +863,50 @@ const strategyParas = () => (POSTER_TEXT.strategyBody ? [].concat(POSTER_TEXT.st
|
|||
// series.json (poster.sideBoxMore: one paragraph, or a list; [] prints none), as UPG100 does to keep its band even.
|
||||
const whatIsMore = () => (POSTER_TEXT.sideBoxMore !== undefined ? [].concat(POSTER_TEXT.sideBoxMore) : [WHAT_IS_MORE]);
|
||||
const WHAT_IS_MORE = 'Each map comes with a prayer list of its fifty to a hundred people groups — their names, a representative photo, and more detail — to mobilise informed intercession.';
|
||||
// A paragraph's lines as SVG text content, its **...** runs set bold (.hcolb); the markers are not printed.
|
||||
// The wrap measures the plain text: a short bold run is a few px wider, inside the measure's room.
|
||||
function boldLines(text, width) {
|
||||
let plain = '', bold = [], on = false;
|
||||
for (const part of String(text).replace(/\s+/g, ' ').trim().split('**')) {
|
||||
for (let i = 0; i < part.length; i++) { plain += part[i]; bold.push(on); } // per UTF-16 unit, as plain[p] reads
|
||||
on = !on;
|
||||
}
|
||||
// A scripture reference never breaks between its book and its chapter:verse ("Mark 6:40"): that space becomes a
|
||||
// placeholder for the wrap and prints as a space again. One character for one, so the bold flags stay aligned.
|
||||
plain = plain.replace(/([A-Za-z]+) (\d+:\d+)/g, '$1\u0001$2');
|
||||
let p = 0;
|
||||
return wrapPx(plain, HC.fs, width).map((ln) => {
|
||||
while (plain[p] === ' ') p++;
|
||||
let out = '', run = '', runBold = null;
|
||||
const flush = () => { if (run) out += runBold ? `<tspan class="hcolb">${esc(run)}</tspan>` : esc(run); run = ''; };
|
||||
for (let k = 0; k < ln.length; k++, p++) {
|
||||
if (bold[p] !== runBold) { flush(); runBold = bold[p]; }
|
||||
run += plain[p] === '\u0001' ? ' ' : plain[p];
|
||||
}
|
||||
flush();
|
||||
return out;
|
||||
});
|
||||
}
|
||||
function headColumnsBand(top, facts, approxLists) {
|
||||
const GRID_L = BAND_MARGIN_G, GRID_W = PW - 2 * BAND_MARGIN_G;
|
||||
const CW = (GRID_W - 2 * HC.gut) / 3;
|
||||
const AVAIL = GRID_W - 2 * HC.gut;
|
||||
// The measure leaves room for a fallback font (see HC_FALLBACK): a block set to it stays inside its column.
|
||||
const TW = (CW - 10 - BAND_TEXT_PAD / 2) * 0.92;
|
||||
const measure = (cw) => (cw - 10 - BAND_TEXT_PAD / 2) * 0.92;
|
||||
// ★ EVEN COLUMNS (2026-10-03): when the facts column runs longer than the two text columns it is WIDENED (and
|
||||
// shorter, it is narrowed) so the three end at about the same height. The two side columns stay equal, so they
|
||||
// still mirror each other round the centre. The centre's share is searched from 26% to 46% of the three-column
|
||||
// width; the split whose TALLEST column is shortest wins, and a tie goes to the split nearest equal widths, so a
|
||||
// zone that is already balanced keeps equal columns. measureHeader calls this same function, so the map below
|
||||
// gets exactly the height that is left.
|
||||
// Uppercase, letterspaced keys: measured as capitals plus the .14em tracking.
|
||||
const keyW = (k) => textW(k.toUpperCase(), HC.keyFs) + k.length * HC.keyFs * 0.14;
|
||||
// Each column's height at a given measure (the same arithmetic the drawing below advances y by).
|
||||
const proseH = (col, tw) => HC.headLh + col[0].paras.reduce((h, t, k) => h + (k ? HC.gap : 0) + boldLines(t, tw).length * HC.lh, 0);
|
||||
const factsH = (tw) => facts.reduce((h, [, value], k) => h + (k ? HC.gap : 0) + HC.keyLh + wrapPx(value, HC.fs, tw).length * HC.lh, 0);
|
||||
// Column order (2026-10-02): Jesus' strategy | the facts | what the series is.
|
||||
const cols = [
|
||||
[{ head: 'Jesus’ Strategy to Feed the 5000', paras: strategyParas() }],
|
||||
facts.map(([key, value]) => ({ key, lines: wrapPx(value, HC.fs, TW) })),
|
||||
null, // the facts column, wrapped below at the centre's measure
|
||||
[{ head: POSTER_TEXT.sideBoxHeading || 'What is a UPG100 List?', paras: [
|
||||
(POSTER_TEXT.sideBoxBody
|
||||
|| 'This map is one of a {approxLists}-map set called the {seriesName} — a large, overwhelming target in the thousands, organised into clear groupings and displayed on maps and prayer lists.')
|
||||
|
|
@ -869,9 +914,22 @@ function headColumnsBand(top, facts, approxLists) {
|
|||
...whatIsMore(),
|
||||
] }],
|
||||
];
|
||||
// The split: equal thirds first, then centre shares on a 1% step ordered by their distance from a third, so
|
||||
// among splits whose tallest column is equally short, the one nearest equal widths is found first and kept.
|
||||
const shares = Array.from({ length: 21 }, (_, k) => 0.26 + k * 0.01).sort((a, b) => Math.abs(a - 1 / 3) - Math.abs(b - 1 / 3));
|
||||
let best = null;
|
||||
for (const cwC of [1 / 3, ...shares].map((f) => AVAIL * f)) {
|
||||
const cwS = (AVAIL - cwC) / 2;
|
||||
const tall = Math.max(proseH(cols[0], measure(cwS)), factsH(measure(cwC)), proseH(cols[2], measure(cwS)));
|
||||
if (!best || tall < best.tall - 0.5) best = { cwC, cwS, tall };
|
||||
}
|
||||
const widths = [best.cwS, best.cwC, best.cwS];
|
||||
const lefts = [GRID_L, GRID_L + best.cwS + HC.gut, GRID_L + best.cwS + HC.gut + best.cwC + HC.gut];
|
||||
cols[1] = facts.map(([key, value]) => ({ key, lines: wrapPx(value, HC.fs, measure(best.cwC)) }));
|
||||
let frags = '', bottom = top;
|
||||
cols.forEach((col, i) => {
|
||||
const centre = GRID_L + i * (CW + HC.gut) + CW / 2;
|
||||
const CW = widths[i], TW = measure(CW);
|
||||
const centre = lefts[i] + CW / 2;
|
||||
if (col[0] && col[0].key !== undefined) { // the facts column: a bold key above each value
|
||||
const blockW = Math.min(TW, Math.max(...col.map((r) => Math.max(keyW(r.key), ...r.lines.map((ln) => textW(ln, HC.fs))))));
|
||||
const x = (centre - blockW * HC_FALLBACK / 2).toFixed(1);
|
||||
|
|
@ -885,20 +943,22 @@ function headColumnsBand(top, facts, approxLists) {
|
|||
bottom = Math.max(bottom, y);
|
||||
} else {
|
||||
const { head, paras } = col[0];
|
||||
const wrapped = paras.map((t) => wrapPx(t, HC.fs, TW));
|
||||
const blockW = Math.min(TW, Math.max(textW(head, HC.headFs), ...wrapped.flat().map((ln) => textW(ln, HC.fs))));
|
||||
// ★ MIRRORED (2026-10-03): both prose columns take the full measure, so each sits the same distance from
|
||||
// its rule and the two outer columns mirror each other round the centred facts column. (Each used to be
|
||||
// centred on its own widest line, so the two could sit at different distances from their rules.)
|
||||
const blockW = TW;
|
||||
const x = (centre - blockW * HC_FALLBACK / 2).toFixed(1);
|
||||
frags += `<text x="${x}" y="${top}" class="hcolh">${esc(head)}</text>`;
|
||||
let y = top + HC.headLh;
|
||||
wrapped.forEach((lines, k) => {
|
||||
paras.forEach((text, k) => {
|
||||
if (k) y += HC.gap;
|
||||
for (const ln of lines) { frags += `<text x="${x}" y="${y}" class="hcolt">${esc(ln)}</text>`; y += HC.lh; }
|
||||
for (const ln of boldLines(text, TW)) { frags += `<text x="${x}" y="${y}" class="hcolt">${ln}</text>`; y += HC.lh; }
|
||||
});
|
||||
bottom = Math.max(bottom, y);
|
||||
}
|
||||
});
|
||||
for (let i = 1; i < 3; i++) {
|
||||
const rx = (GRID_L + i * (CW + HC.gut) - HC.gut / 2).toFixed(1);
|
||||
const rx = (lefts[i] - HC.gut / 2).toFixed(1);
|
||||
frags += `<line x1="${rx}" y1="${top - 14}" x2="${rx}" y2="${bottom - 12}" class="hcolrule"/>`;
|
||||
}
|
||||
return { frags, bottom };
|
||||
|
|
@ -2344,7 +2404,7 @@ async function renderPoster(zone, pins, zoneFC) {
|
|||
let cy0 = bodyTop;
|
||||
strategyParas().forEach((text, k) => {
|
||||
if (k) cy0 += 5;
|
||||
cy0 = paraInto(push, text, { x: b1x[0], y: cy0, w: B1_TW, fs: B1_FS, lh: B1_LH, cls: 'hsrc2' });
|
||||
cy0 = paraInto(push, String(text).replace(/\*\*/g, ''), { x: b1x[0], y: cy0, w: B1_TW, fs: B1_FS, lh: B1_LH, cls: 'hsrc2' });
|
||||
});
|
||||
|
||||
let cy1 = bodyTop;
|
||||
|
|
@ -2355,9 +2415,11 @@ async function renderPoster(zone, pins, zoneFC) {
|
|||
|| 'This map is one of a {approxLists}-map set called the {seriesName} — a large, overwhelming target in the thousands, organised into clear groupings and displayed on maps and prayer lists.')
|
||||
.replace('{approxLists}', String(approxLists))
|
||||
.replace('{seriesName}', SERIES_NAME);
|
||||
// A **...** bold marker is the band's (boldLines); this classic header prints plain, so the markers are dropped.
|
||||
const plain = (t) => String(t).replace(/\*\*/g, '');
|
||||
[whatIs, ...whatIsMore()].forEach((text, k) => {
|
||||
if (k) cy1 += 5;
|
||||
cy1 = paraInto(push, text, { x: b1x[1], y: cy1, w: B1_TW, fs: B1_FS, lh: B1_LH, cls: 'hsrc2' });
|
||||
cy1 = paraInto(push, plain(text), { x: b1x[1], y: cy1, w: B1_TW, fs: B1_FS, lh: B1_LH, cls: 'hsrc2' });
|
||||
});
|
||||
|
||||
const b1Bot = Math.max(cy0, cy1);
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <bless-india-posters> custom element. -->
|
||||
<script src="../bless-india-posters.js" integrity="sha384-E4XxvUZ7ZN9VXwwUAYAMldJNsIRq1ijNibobg0flroCtP9b33aMpwxYcMpA65blB" crossorigin="anonymous"></script>
|
||||
<script src="../bless-india-posters.js" integrity="sha384-Y/Ib6sYGClrODPxG3Gj9txadwtVZRIiHWQa9FA9fH/RGAAs9SAbVrJobrwC4bY1b" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <cities-internet-map> custom element. -->
|
||||
<script src="../cities-internet.js" integrity="sha384-x6+3nssgPyibxG8iZfwk+IqkUVVHuf2rjo5On41MmJdnmAkc9Ed4YS64QODXbUgz" crossorigin="anonymous"></script>
|
||||
<script src="../cities-internet.js" integrity="sha384-6c4SlWMUWowE4IG1S5F3WshA66I3aKnK7ilHyHzOncLWeyXFL/I+NGlAYhyjZ1Ql" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <cities-internet-map> custom element. -->
|
||||
<script src="../cities-internet.js" integrity="sha384-x6+3nssgPyibxG8iZfwk+IqkUVVHuf2rjo5On41MmJdnmAkc9Ed4YS64QODXbUgz" crossorigin="anonymous"></script>
|
||||
<script src="../cities-internet.js" integrity="sha384-6c4SlWMUWowE4IG1S5F3WshA66I3aKnK7ilHyHzOncLWeyXFL/I+NGlAYhyjZ1Ql" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <cities-internet-map> custom element. -->
|
||||
<script src="../cities-internet.js" integrity="sha384-x6+3nssgPyibxG8iZfwk+IqkUVVHuf2rjo5On41MmJdnmAkc9Ed4YS64QODXbUgz" crossorigin="anonymous"></script>
|
||||
<script src="../cities-internet.js" integrity="sha384-6c4SlWMUWowE4IG1S5F3WshA66I3aKnK7ilHyHzOncLWeyXFL/I+NGlAYhyjZ1Ql" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <country-posters-map> custom element. -->
|
||||
<script src="../country-posters.js" integrity="sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE" crossorigin="anonymous"></script>
|
||||
<script src="../country-posters.js" integrity="sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <country-posters-map> custom element. -->
|
||||
<script src="../country-posters.js" integrity="sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE" crossorigin="anonymous"></script>
|
||||
<script src="../country-posters.js" integrity="sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <country-posters-map> custom element. -->
|
||||
<script src="../country-posters.js" integrity="sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE" crossorigin="anonymous"></script>
|
||||
<script src="../country-posters.js" integrity="sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <country-posters-map> custom element. -->
|
||||
<script src="../country-posters.js" integrity="sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE" crossorigin="anonymous"></script>
|
||||
<script src="../country-posters.js" integrity="sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -82,7 +82,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <dashboard-plus-grid> custom element. -->
|
||||
<script src="../../dashboard-plus-grid.js" integrity="sha384-43uFY+M997neTD09l+u+LcDJcSIkjgEk4arWtJOrDWh9mxLmHr6Svm/5D2F9EB8b" crossorigin="anonymous"></script>
|
||||
<script src="../../dashboard-plus-grid.js" integrity="sha384-AyqUww8eDFdF36GeDkZhv3wX6orazKJ4ksNFWdTclwRXYYYTyJ3zgHdoU204eiYk" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <dashboard-plus-grid> custom element. -->
|
||||
<script src="../dashboard-plus-grid.js" integrity="sha384-43uFY+M997neTD09l+u+LcDJcSIkjgEk4arWtJOrDWh9mxLmHr6Svm/5D2F9EB8b" crossorigin="anonymous"></script>
|
||||
<script src="../dashboard-plus-grid.js" integrity="sha384-AyqUww8eDFdF36GeDkZhv3wX6orazKJ4ksNFWdTclwRXYYYTyJ3zgHdoU204eiYk" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <demo-map> custom element. -->
|
||||
<script src="../demo-map.js" integrity="sha384-iDYwdyR+8ZswhaAS4/NcewWTs9q0eRDzuebLviXtjSt5nFa00MfkzSDMzJYafuys" crossorigin="anonymous"></script>
|
||||
<script src="../demo-map.js" integrity="sha384-eCdagq/JzSB4RbPXxCB4Cah0DemoKxPhkguZy1jvFoAN5ge0XzUDxid7ln8rHqAX" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <demo-map> custom element. -->
|
||||
<script src="../../demo-map.js" integrity="sha384-iDYwdyR+8ZswhaAS4/NcewWTs9q0eRDzuebLviXtjSt5nFa00MfkzSDMzJYafuys" crossorigin="anonymous"></script>
|
||||
<script src="../../demo-map.js" integrity="sha384-eCdagq/JzSB4RbPXxCB4Cah0DemoKxPhkguZy1jvFoAN5ge0XzUDxid7ln8rHqAX" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
"bundle": "all-people-groups",
|
||||
"scriptUrl": "./all-people-groups/all-people-groups.js",
|
||||
"output": "dx-maps/all-people-groups/all-people-groups.js",
|
||||
"integrity": "sha384-kCCtSdpWfJmCi6wtGplAHul5Vo+0Et2h4HMZLXHIsHuBtFn/0FOJqsTZk+/VfPka",
|
||||
"integrity": "sha384-4uZxLJxLey7Zl7tiZ5qTwrQnblpRX0lxzKzjTcfUqBNEOP2Qn63Bvtra+Vo+6ecm",
|
||||
"elements": [
|
||||
"all-people-groups"
|
||||
],
|
||||
|
|
@ -30,8 +30,8 @@
|
|||
"scriptUrl": "./all-people-groups/all-people-groups.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./all-people-groups/all-people-groups/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=\"./all-people-groups/all-people-groups.js\" integrity=\"sha384-kCCtSdpWfJmCi6wtGplAHul5Vo+0Et2h4HMZLXHIsHuBtFn/0FOJqsTZk+/VfPka\" 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<all-people-groups profile-config='{\"profile\":\"all-people-groups\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></all-people-groups>",
|
||||
"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=\"./all-people-groups/all-people-groups.js\" integrity=\"sha384-kCCtSdpWfJmCi6wtGplAHul5Vo+0Et2h4HMZLXHIsHuBtFn/0FOJqsTZk+/VfPka\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<all-people-groups profile-config='{\"profile\":\"all-people-groups\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></all-people-groups>"
|
||||
"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=\"./all-people-groups/all-people-groups.js\" integrity=\"sha384-4uZxLJxLey7Zl7tiZ5qTwrQnblpRX0lxzKzjTcfUqBNEOP2Qn63Bvtra+Vo+6ecm\" 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<all-people-groups profile-config='{\"profile\":\"all-people-groups\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></all-people-groups>",
|
||||
"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=\"./all-people-groups/all-people-groups.js\" integrity=\"sha384-4uZxLJxLey7Zl7tiZ5qTwrQnblpRX0lxzKzjTcfUqBNEOP2Qn63Bvtra+Vo+6ecm\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<all-people-groups profile-config='{\"profile\":\"all-people-groups\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></all-people-groups>"
|
||||
},
|
||||
"bundle": "all-people-groups"
|
||||
}
|
||||
|
|
@ -164,7 +164,7 @@
|
|||
"bundle": "bless-india-posters",
|
||||
"scriptUrl": "./bless-india-posters/bless-india-posters.js",
|
||||
"output": "dx-maps/bless-india-posters/bless-india-posters.js",
|
||||
"integrity": "sha384-E4XxvUZ7ZN9VXwwUAYAMldJNsIRq1ijNibobg0flroCtP9b33aMpwxYcMpA65blB",
|
||||
"integrity": "sha384-Y/Ib6sYGClrODPxG3Gj9txadwtVZRIiHWQa9FA9fH/RGAAs9SAbVrJobrwC4bY1b",
|
||||
"elements": [
|
||||
"bless-india-posters"
|
||||
],
|
||||
|
|
@ -207,7 +207,7 @@
|
|||
"scriptUrl": "./bless-india-posters/bless-india-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./bless-india-posters/bless-india-posters/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=\"./bless-india-posters/bless-india-posters.js\" integrity=\"sha384-E4XxvUZ7ZN9VXwwUAYAMldJNsIRq1ijNibobg0flroCtP9b33aMpwxYcMpA65blB\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<bless-india-posters profile-config='{\"profile\":\"bless-india-posters\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></bless-india-posters>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./bless-india-posters/bless-india-posters.js\" integrity=\"sha384-Y/Ib6sYGClrODPxG3Gj9txadwtVZRIiHWQa9FA9fH/RGAAs9SAbVrJobrwC4bY1b\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<bless-india-posters profile-config='{\"profile\":\"bless-india-posters\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></bless-india-posters>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -216,7 +216,7 @@
|
|||
"bundle": "cities-internet",
|
||||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"output": "dx-maps/cities-internet/cities-internet.js",
|
||||
"integrity": "sha384-x6+3nssgPyibxG8iZfwk+IqkUVVHuf2rjo5On41MmJdnmAkc9Ed4YS64QODXbUgz",
|
||||
"integrity": "sha384-6c4SlWMUWowE4IG1S5F3WshA66I3aKnK7ilHyHzOncLWeyXFL/I+NGlAYhyjZ1Ql",
|
||||
"elements": [
|
||||
"cities-internet-map"
|
||||
],
|
||||
|
|
@ -235,7 +235,7 @@
|
|||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./cities-internet/connectivity-list/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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-x6+3nssgPyibxG8iZfwk+IqkUVVHuf2rjo5On41MmJdnmAkc9Ed4YS64QODXbUgz\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<cities-internet-map profile-config='{\"profile\":\"connectivity-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-6c4SlWMUWowE4IG1S5F3WshA66I3aKnK7ilHyHzOncLWeyXFL/I+NGlAYhyjZ1Ql\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<cities-internet-map profile-config='{\"profile\":\"connectivity-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -251,8 +251,8 @@
|
|||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./cities-internet/connectivity-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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-x6+3nssgPyibxG8iZfwk+IqkUVVHuf2rjo5On41MmJdnmAkc9Ed4YS64QODXbUgz\" 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<cities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-x6+3nssgPyibxG8iZfwk+IqkUVVHuf2rjo5On41MmJdnmAkc9Ed4YS64QODXbUgz\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<cities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-6c4SlWMUWowE4IG1S5F3WshA66I3aKnK7ilHyHzOncLWeyXFL/I+NGlAYhyjZ1Ql\" 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<cities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-6c4SlWMUWowE4IG1S5F3WshA66I3aKnK7ilHyHzOncLWeyXFL/I+NGlAYhyjZ1Ql\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<cities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -268,7 +268,7 @@
|
|||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./cities-internet/data-tables/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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-x6+3nssgPyibxG8iZfwk+IqkUVVHuf2rjo5On41MmJdnmAkc9Ed4YS64QODXbUgz\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<cities-internet-map profile-config='{\"profile\":\"data-tables\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-6c4SlWMUWowE4IG1S5F3WshA66I3aKnK7ilHyHzOncLWeyXFL/I+NGlAYhyjZ1Ql\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<cities-internet-map profile-config='{\"profile\":\"data-tables\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -306,7 +306,7 @@
|
|||
"bundle": "country-posters",
|
||||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"output": "dx-maps/country-posters/country-posters.js",
|
||||
"integrity": "sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE",
|
||||
"integrity": "sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z",
|
||||
"elements": [
|
||||
"country-posters-map"
|
||||
],
|
||||
|
|
@ -329,8 +329,8 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/countries-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=\"./country-posters/country-posters.js\" integrity=\"sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE\" 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<country-posters-map profile-config='{\"profile\":\"countries-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-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=\"./country-posters/country-posters.js\" integrity=\"sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<country-posters-map profile-config='{\"profile\":\"countries-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-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=\"./country-posters/country-posters.js\" integrity=\"sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z\" 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<country-posters-map profile-config='{\"profile\":\"countries-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-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=\"./country-posters/country-posters.js\" integrity=\"sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<country-posters-map profile-config='{\"profile\":\"countries-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -368,7 +368,7 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/country-poster-wall/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=\"./country-posters/country-posters.js\" integrity=\"sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<country-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<country-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -384,8 +384,8 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/country-posters-mfe/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=\"./country-posters/country-posters.js\" integrity=\"sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE\" 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<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-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=\"./country-posters/country-posters.js\" integrity=\"sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-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=\"./country-posters/country-posters.js\" integrity=\"sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z\" 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<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-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=\"./country-posters/country-posters.js\" integrity=\"sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -401,7 +401,7 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/poster-section/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=\"./country-posters/country-posters.js\" integrity=\"sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<country-posters-map profile-config='{\"profile\":\"poster-section\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<country-posters-map profile-config='{\"profile\":\"poster-section\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -410,7 +410,7 @@
|
|||
"bundle": "dashboard-plus-grid",
|
||||
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"output": "dx-maps/dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"integrity": "sha384-43uFY+M997neTD09l+u+LcDJcSIkjgEk4arWtJOrDWh9mxLmHr6Svm/5D2F9EB8b",
|
||||
"integrity": "sha384-AyqUww8eDFdF36GeDkZhv3wX6orazKJ4ksNFWdTclwRXYYYTyJ3zgHdoU204eiYk",
|
||||
"elements": [
|
||||
"dashboard-plus-grid"
|
||||
],
|
||||
|
|
@ -434,8 +434,8 @@
|
|||
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./dashboard-plus-grid/dashboard-plus-grid/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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-43uFY+M997neTD09l+u+LcDJcSIkjgEk4arWtJOrDWh9mxLmHr6Svm/5D2F9EB8b\" 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<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>",
|
||||
"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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-43uFY+M997neTD09l+u+LcDJcSIkjgEk4arWtJOrDWh9mxLmHr6Svm/5D2F9EB8b\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
|
||||
"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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-AyqUww8eDFdF36GeDkZhv3wX6orazKJ4ksNFWdTclwRXYYYTyJ3zgHdoU204eiYk\" 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<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>",
|
||||
"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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-AyqUww8eDFdF36GeDkZhv3wX6orazKJ4ksNFWdTclwRXYYYTyJ3zgHdoU204eiYk\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -459,7 +459,7 @@
|
|||
"bundle": "demo-map",
|
||||
"scriptUrl": "./demo-map/demo-map.js",
|
||||
"output": "dx-maps/demo-map/demo-map.js",
|
||||
"integrity": "sha384-iDYwdyR+8ZswhaAS4/NcewWTs9q0eRDzuebLviXtjSt5nFa00MfkzSDMzJYafuys",
|
||||
"integrity": "sha384-eCdagq/JzSB4RbPXxCB4Cah0DemoKxPhkguZy1jvFoAN5ge0XzUDxid7ln8rHqAX",
|
||||
"elements": [
|
||||
"demo-map"
|
||||
],
|
||||
|
|
@ -477,8 +477,8 @@
|
|||
"scriptUrl": "./demo-map/demo-map.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./demo-map/demo-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=\"./demo-map/demo-map.js\" integrity=\"sha384-iDYwdyR+8ZswhaAS4/NcewWTs9q0eRDzuebLviXtjSt5nFa00MfkzSDMzJYafuys\" 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<demo-map profile-config='{\"profile\":\"demo-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></demo-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=\"./demo-map/demo-map.js\" integrity=\"sha384-iDYwdyR+8ZswhaAS4/NcewWTs9q0eRDzuebLviXtjSt5nFa00MfkzSDMzJYafuys\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<demo-map profile-config='{\"profile\":\"demo-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></demo-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=\"./demo-map/demo-map.js\" integrity=\"sha384-eCdagq/JzSB4RbPXxCB4Cah0DemoKxPhkguZy1jvFoAN5ge0XzUDxid7ln8rHqAX\" 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<demo-map profile-config='{\"profile\":\"demo-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></demo-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=\"./demo-map/demo-map.js\" integrity=\"sha384-eCdagq/JzSB4RbPXxCB4Cah0DemoKxPhkguZy1jvFoAN5ge0XzUDxid7ln8rHqAX\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<demo-map profile-config='{\"profile\":\"demo-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></demo-map>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"bundle": "doxa-research-map",
|
||||
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
|
||||
"output": "dx-maps/doxa-research-map/doxa-research-map.js",
|
||||
"integrity": "sha384-vASbOyKVdTogTWjPRdw33UZp8BclmFkLopP2JvfccvtAihsLAVPy/131Z0/DdjUE",
|
||||
"integrity": "sha384-w8mEGeIr5DTaQEIrfMaga7c8AOzBfk5BCFQWhhBLStfA1x+8/WPn0W8FVDM77tX+",
|
||||
"elements": [
|
||||
"doxa-research-map"
|
||||
],
|
||||
|
|
@ -581,8 +581,8 @@
|
|||
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-research-map/research-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-research-map/doxa-research-map.js\" integrity=\"sha384-vASbOyKVdTogTWjPRdw33UZp8BclmFkLopP2JvfccvtAihsLAVPy/131Z0/DdjUE\" 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-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-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-research-map/doxa-research-map.js\" integrity=\"sha384-vASbOyKVdTogTWjPRdw33UZp8BclmFkLopP2JvfccvtAihsLAVPy/131Z0/DdjUE\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-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-research-map/doxa-research-map.js\" integrity=\"sha384-w8mEGeIr5DTaQEIrfMaga7c8AOzBfk5BCFQWhhBLStfA1x+8/WPn0W8FVDM77tX+\" 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-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-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-research-map/doxa-research-map.js\" integrity=\"sha384-w8mEGeIr5DTaQEIrfMaga7c8AOzBfk5BCFQWhhBLStfA1x+8/WPn0W8FVDM77tX+\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -608,7 +608,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-CuHDwTbbwb0PCFgnqMNHGlT4S2Zh5XeCUyJOKQ8PGizQ8kBW4cvtdIp9BVSiCmcD",
|
||||
"integrity": "sha384-dVdk9Dyd0DZ92VoOULWQFVRqexr7zKwDyvy9GkGXHe0oGo3tqS+xR1pc04QP/B0L",
|
||||
"elements": [
|
||||
"dxm-simple-map"
|
||||
],
|
||||
|
|
@ -627,8 +627,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-CuHDwTbbwb0PCFgnqMNHGlT4S2Zh5XeCUyJOKQ8PGizQ8kBW4cvtdIp9BVSiCmcD\" 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<dxm-simple-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-simple-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-CuHDwTbbwb0PCFgnqMNHGlT4S2Zh5XeCUyJOKQ8PGizQ8kBW4cvtdIp9BVSiCmcD\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<dxm-simple-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-simple-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-dVdk9Dyd0DZ92VoOULWQFVRqexr7zKwDyvy9GkGXHe0oGo3tqS+xR1pc04QP/B0L\" 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<dxm-simple-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-simple-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-dVdk9Dyd0DZ92VoOULWQFVRqexr7zKwDyvy9GkGXHe0oGo3tqS+xR1pc04QP/B0L\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<dxm-simple-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-simple-map>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -798,7 +798,7 @@
|
|||
"bundle": "gospel-internet",
|
||||
"scriptUrl": "./gospel-internet/gospel-internet.js",
|
||||
"output": "dx-maps/gospel-internet/gospel-internet.js",
|
||||
"integrity": "sha384-olAz4BuFXmqcKLZH8lersYjbS0TVVFZH07jArFJfbzH+vdw4k2I9avfJd+BrTW4t",
|
||||
"integrity": "sha384-cYEFAJDnY5U2DTUhnYFCCSG7rUsqh1c8nzExu1GePI0mIKdFZU3vQ/zKHkSBHdvc",
|
||||
"elements": [
|
||||
"gospel-internet-board"
|
||||
],
|
||||
|
|
@ -819,8 +819,8 @@
|
|||
"scriptUrl": "./gospel-internet/gospel-internet.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-internet/board/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=\"./gospel-internet/gospel-internet.js\" integrity=\"sha384-olAz4BuFXmqcKLZH8lersYjbS0TVVFZH07jArFJfbzH+vdw4k2I9avfJd+BrTW4t\" 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<gospel-internet-board profile-config='{\"profile\":\"board\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-internet-board>",
|
||||
"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=\"./gospel-internet/gospel-internet.js\" integrity=\"sha384-olAz4BuFXmqcKLZH8lersYjbS0TVVFZH07jArFJfbzH+vdw4k2I9avfJd+BrTW4t\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<gospel-internet-board profile-config='{\"profile\":\"board\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-internet-board>"
|
||||
"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=\"./gospel-internet/gospel-internet.js\" integrity=\"sha384-cYEFAJDnY5U2DTUhnYFCCSG7rUsqh1c8nzExu1GePI0mIKdFZU3vQ/zKHkSBHdvc\" 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<gospel-internet-board profile-config='{\"profile\":\"board\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-internet-board>",
|
||||
"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=\"./gospel-internet/gospel-internet.js\" integrity=\"sha384-cYEFAJDnY5U2DTUhnYFCCSG7rUsqh1c8nzExu1GePI0mIKdFZU3vQ/zKHkSBHdvc\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<gospel-internet-board profile-config='{\"profile\":\"board\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-internet-board>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -927,7 +927,7 @@
|
|||
"bundle": "gospel-resources",
|
||||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"output": "dx-maps/gospel-resources/gospel-resources.js",
|
||||
"integrity": "sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT",
|
||||
"integrity": "sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M",
|
||||
"elements": [
|
||||
"gospel-resources-map"
|
||||
],
|
||||
|
|
@ -950,7 +950,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/charts/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -966,7 +966,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/data-tables/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -982,8 +982,8 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/gospel-dashboard/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT\" 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<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M\" 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<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -999,7 +999,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/resources-list/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1015,8 +1015,8 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT\" 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<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M\" 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<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -1025,7 +1025,7 @@
|
|||
"bundle": "my-upg-100-list",
|
||||
"scriptUrl": "./my-upg-100-list/my-upg-100-list.js",
|
||||
"output": "dx-maps/my-upg-100-list/my-upg-100-list.js",
|
||||
"integrity": "sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G",
|
||||
"integrity": "sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo",
|
||||
"elements": [
|
||||
"my-upg-100-list-map"
|
||||
],
|
||||
|
|
@ -1064,43 +1064,43 @@
|
|||
],
|
||||
"posterDesignLabels": {
|
||||
"upg100-territory-poster.letter": {
|
||||
"ar": "ملصق منطقة UPG-100",
|
||||
"de": "UPG-100-Gebietsplakat",
|
||||
"en": "UPG-100 territory poster",
|
||||
"es": "Cartel de territorio UPG-100",
|
||||
"fr": "Affiche de territoire UPG-100",
|
||||
"hi": "UPG-100 क्षेत्र पोस्टर",
|
||||
"it": "Manifesto di territorio UPG-100",
|
||||
"pt": "Cartaz de território UPG-100",
|
||||
"ro": "Afiș de teritoriu UPG-100",
|
||||
"ru": "Плакат территории UPG-100",
|
||||
"zh": "UPG-100 区域海报"
|
||||
"ar": "ملصق منطقة UPG100",
|
||||
"de": "UPG100-Gebietsplakat",
|
||||
"en": "UPG100 zone poster",
|
||||
"es": "Cartel de zona UPG100",
|
||||
"fr": "Affiche de zone UPG100",
|
||||
"hi": "UPG100 क्षेत्र का पोस्टर",
|
||||
"it": "Poster di zona UPG100",
|
||||
"pt": "Cartaz de zona UPG100",
|
||||
"ro": "Poster de zonă UPG100",
|
||||
"ru": "Плакат зоны UPG100",
|
||||
"zh": "UPG100 区域海报(单张)"
|
||||
},
|
||||
"upg100-territory-poster.3x3": {
|
||||
"ar": "ملصق منطقة UPG-100",
|
||||
"de": "UPG-100-Gebietsplakat",
|
||||
"en": "UPG-100 territory poster",
|
||||
"es": "Cartel de territorio UPG-100",
|
||||
"fr": "Affiche de territoire UPG-100",
|
||||
"hi": "UPG-100 क्षेत्र पोस्टर",
|
||||
"it": "Manifesto di territorio UPG-100",
|
||||
"pt": "Cartaz de território UPG-100",
|
||||
"ro": "Afiș de teritoriu UPG-100",
|
||||
"ru": "Плакат территории UPG-100",
|
||||
"zh": "UPG-100 区域海报"
|
||||
"ar": "ملصق منطقة UPG100",
|
||||
"de": "UPG100-Gebietsplakat",
|
||||
"en": "UPG100 zone poster",
|
||||
"es": "Cartel de zona UPG100",
|
||||
"fr": "Affiche de zone UPG100",
|
||||
"hi": "UPG100 क्षेत्र का पोस्टर",
|
||||
"it": "Poster di zona UPG100",
|
||||
"pt": "Cartaz de zona UPG100",
|
||||
"ro": "Poster de zonă UPG100",
|
||||
"ru": "Плакат зоны UPG100",
|
||||
"zh": "UPG100 区域海报(单张)"
|
||||
},
|
||||
"upg100-territory-poster.3x4": {
|
||||
"ar": "ملصق منطقة UPG-100",
|
||||
"de": "UPG-100-Gebietsplakat",
|
||||
"en": "UPG-100 territory poster",
|
||||
"es": "Cartel de territorio UPG-100",
|
||||
"fr": "Affiche de territoire UPG-100",
|
||||
"hi": "UPG-100 क्षेत्र पोस्टर",
|
||||
"it": "Manifesto di territorio UPG-100",
|
||||
"pt": "Cartaz de território UPG-100",
|
||||
"ro": "Afiș de teritoriu UPG-100",
|
||||
"ru": "Плакат территории UPG-100",
|
||||
"zh": "UPG-100 区域海报"
|
||||
"ar": "ملصق منطقة UPG100",
|
||||
"de": "UPG100-Gebietsplakat",
|
||||
"en": "UPG100 zone poster",
|
||||
"es": "Cartel de zona UPG100",
|
||||
"fr": "Affiche de zone UPG100",
|
||||
"hi": "UPG100 क्षेत्र का पोस्टर",
|
||||
"it": "Poster di zona UPG100",
|
||||
"pt": "Cartaz de zona UPG100",
|
||||
"ro": "Poster de zonă UPG100",
|
||||
"ru": "Плакат зоны UPG100",
|
||||
"zh": "UPG100 区域海报(单张)"
|
||||
}
|
||||
},
|
||||
"file": "poster-wall.vue",
|
||||
|
|
@ -1112,7 +1112,7 @@
|
|||
"scriptUrl": "./my-upg-100-list/my-upg-100-list.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./my-upg-100-list/poster-wall/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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<my-upg-100-list-map profile-config='{\"profile\":\"poster-wall\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<my-upg-100-list-map profile-config='{\"profile\":\"poster-wall\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1128,8 +1128,8 @@
|
|||
"scriptUrl": "./my-upg-100-list/my-upg-100-list.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./my-upg-100-list/upg-100-list/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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G\" 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<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-list\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo\" 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<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-list\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1145,8 +1145,8 @@
|
|||
"scriptUrl": "./my-upg-100-list/my-upg-100-list.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./my-upg-100-list/upg-100-mfe/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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G\" 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<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo\" 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<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -1277,7 +1277,7 @@
|
|||
"bundle": "poster-design",
|
||||
"scriptUrl": "./poster-design/poster-design.js",
|
||||
"output": "dx-maps/poster-design/poster-design.js",
|
||||
"integrity": "sha384-+awg8qsCdVYBdgB1Ec63JiZ0c2706CsHG6N6yF75nighyxRkPd4U9Mt4lrVHJvXI",
|
||||
"integrity": "sha384-5r/RtSGqs1AaM+gimpy9hYjCwR+fzjHyYX617dMwaFWhydz6dlt09TOyb+i/78Vo",
|
||||
"elements": [
|
||||
"poster-design"
|
||||
],
|
||||
|
|
@ -1300,7 +1300,7 @@
|
|||
"scriptUrl": "./poster-design/poster-design.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./poster-design/poster-design-mfe/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=\"./poster-design/poster-design.js\" integrity=\"sha384-+awg8qsCdVYBdgB1Ec63JiZ0c2706CsHG6N6yF75nighyxRkPd4U9Mt4lrVHJvXI\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-design profile-config='{\"profile\":\"poster-design-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-design>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./poster-design/poster-design.js\" integrity=\"sha384-5r/RtSGqs1AaM+gimpy9hYjCwR+fzjHyYX617dMwaFWhydz6dlt09TOyb+i/78Vo\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-design profile-config='{\"profile\":\"poster-design-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-design>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1316,7 +1316,7 @@
|
|||
"scriptUrl": "./poster-design/poster-design.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./poster-design/poster-sizes/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=\"./poster-design/poster-design.js\" integrity=\"sha384-+awg8qsCdVYBdgB1Ec63JiZ0c2706CsHG6N6yF75nighyxRkPd4U9Mt4lrVHJvXI\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-design profile-config='{\"profile\":\"poster-sizes\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-design>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./poster-design/poster-design.js\" integrity=\"sha384-5r/RtSGqs1AaM+gimpy9hYjCwR+fzjHyYX617dMwaFWhydz6dlt09TOyb+i/78Vo\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-design profile-config='{\"profile\":\"poster-sizes\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-design>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1332,7 +1332,7 @@
|
|||
"scriptUrl": "./poster-design/poster-design.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./poster-design/poster-styles/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=\"./poster-design/poster-design.js\" integrity=\"sha384-+awg8qsCdVYBdgB1Ec63JiZ0c2706CsHG6N6yF75nighyxRkPd4U9Mt4lrVHJvXI\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-design profile-config='{\"profile\":\"poster-styles\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-design>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./poster-design/poster-design.js\" integrity=\"sha384-5r/RtSGqs1AaM+gimpy9hYjCwR+fzjHyYX617dMwaFWhydz6dlt09TOyb+i/78Vo\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-design profile-config='{\"profile\":\"poster-styles\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-design>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -1341,7 +1341,7 @@
|
|||
"bundle": "poster-sections",
|
||||
"scriptUrl": "./poster-sections/poster-sections.js",
|
||||
"output": "dx-maps/poster-sections/poster-sections.js",
|
||||
"integrity": "sha384-vjNpH6iKZVNk0Y3j/vJUjy8iINx33MfiIbiwOzPvgUFKmrJg00vRCCbavMPr2rxK",
|
||||
"integrity": "sha384-yTqSEf7W1guaDdfAfm5AC3H1dG2wOasVHQdVjnV3XhFbXfukPq3wJokwLOrK4M4j",
|
||||
"elements": [
|
||||
"poster-sections"
|
||||
],
|
||||
|
|
@ -1360,7 +1360,7 @@
|
|||
"scriptUrl": "./poster-sections/poster-sections.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./poster-sections/poster-sections/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=\"./poster-sections/poster-sections.js\" integrity=\"sha384-vjNpH6iKZVNk0Y3j/vJUjy8iINx33MfiIbiwOzPvgUFKmrJg00vRCCbavMPr2rxK\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-sections profile-config='{\"profile\":\"poster-sections\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-sections>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./poster-sections/poster-sections.js\" integrity=\"sha384-yTqSEf7W1guaDdfAfm5AC3H1dG2wOasVHQdVjnV3XhFbXfukPq3wJokwLOrK4M4j\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-sections profile-config='{\"profile\":\"poster-sections\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-sections>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -1589,7 +1589,7 @@
|
|||
"bundle": "prayer-walk-planner",
|
||||
"scriptUrl": "./prayer-walk-planner/prayer-walk-planner.js",
|
||||
"output": "dx-maps/prayer-walk-planner/prayer-walk-planner.js",
|
||||
"integrity": "sha384-4w4Ku5DC4cRd1yybcKqVOsaXaPBxAtHQszgWM2Td3glftxm2AkKuZeqwI8RkVRW8",
|
||||
"integrity": "sha384-6nj6SNKsRM5cmVVUmPgIAKe8ZSejxZew8HheG0P4rzyiUYdLrPVosfJJbrUypNiY",
|
||||
"elements": [
|
||||
"prayer-walk-planner"
|
||||
],
|
||||
|
|
@ -1607,8 +1607,8 @@
|
|||
"scriptUrl": "./prayer-walk-planner/prayer-walk-planner.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./prayer-walk-planner/prayer-walk-planner/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=\"./prayer-walk-planner/prayer-walk-planner.js\" integrity=\"sha384-4w4Ku5DC4cRd1yybcKqVOsaXaPBxAtHQszgWM2Td3glftxm2AkKuZeqwI8RkVRW8\" 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<prayer-walk-planner profile-config='{\"profile\":\"prayer-walk-planner\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></prayer-walk-planner>",
|
||||
"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=\"./prayer-walk-planner/prayer-walk-planner.js\" integrity=\"sha384-4w4Ku5DC4cRd1yybcKqVOsaXaPBxAtHQszgWM2Td3glftxm2AkKuZeqwI8RkVRW8\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<prayer-walk-planner profile-config='{\"profile\":\"prayer-walk-planner\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></prayer-walk-planner>"
|
||||
"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=\"./prayer-walk-planner/prayer-walk-planner.js\" integrity=\"sha384-6nj6SNKsRM5cmVVUmPgIAKe8ZSejxZew8HheG0P4rzyiUYdLrPVosfJJbrUypNiY\" 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<prayer-walk-planner profile-config='{\"profile\":\"prayer-walk-planner\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></prayer-walk-planner>",
|
||||
"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=\"./prayer-walk-planner/prayer-walk-planner.js\" integrity=\"sha384-6nj6SNKsRM5cmVVUmPgIAKe8ZSejxZew8HheG0P4rzyiUYdLrPVosfJJbrUypNiY\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<prayer-walk-planner profile-config='{\"profile\":\"prayer-walk-planner\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></prayer-walk-planner>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -1617,7 +1617,7 @@
|
|||
"bundle": "regions-dashboard",
|
||||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"output": "dx-maps/regions-dashboard/regions-dashboard.js",
|
||||
"integrity": "sha384-jo4fOr0Hs5kNzNKaecPNSZdfBF+UbqRAX6pdYAaJQIUOFdduFDJezcUGNqroThmb",
|
||||
"integrity": "sha384-TzpyeMEeBj+L99cLsTKN2X27VxqYVTMqRdnxct/qhxQ5KrNOkQw7yJUGgaepqrex",
|
||||
"elements": [
|
||||
"regions-dashboard"
|
||||
],
|
||||
|
|
@ -1640,8 +1640,8 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/region-dashboards/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-jo4fOr0Hs5kNzNKaecPNSZdfBF+UbqRAX6pdYAaJQIUOFdduFDJezcUGNqroThmb\" 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<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-jo4fOr0Hs5kNzNKaecPNSZdfBF+UbqRAX6pdYAaJQIUOFdduFDJezcUGNqroThmb\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-TzpyeMEeBj+L99cLsTKN2X27VxqYVTMqRdnxct/qhxQ5KrNOkQw7yJUGgaepqrex\" 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<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-TzpyeMEeBj+L99cLsTKN2X27VxqYVTMqRdnxct/qhxQ5KrNOkQw7yJUGgaepqrex\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1657,7 +1657,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/regions-list/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-jo4fOr0Hs5kNzNKaecPNSZdfBF+UbqRAX6pdYAaJQIUOFdduFDJezcUGNqroThmb\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-TzpyeMEeBj+L99cLsTKN2X27VxqYVTMqRdnxct/qhxQ5KrNOkQw7yJUGgaepqrex\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1673,8 +1673,8 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/regions-mfe/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-jo4fOr0Hs5kNzNKaecPNSZdfBF+UbqRAX6pdYAaJQIUOFdduFDJezcUGNqroThmb\" 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<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-jo4fOr0Hs5kNzNKaecPNSZdfBF+UbqRAX6pdYAaJQIUOFdduFDJezcUGNqroThmb\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-TzpyeMEeBj+L99cLsTKN2X27VxqYVTMqRdnxct/qhxQ5KrNOkQw7yJUGgaepqrex\" 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<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-TzpyeMEeBj+L99cLsTKN2X27VxqYVTMqRdnxct/qhxQ5KrNOkQw7yJUGgaepqrex\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -1683,7 +1683,7 @@
|
|||
"bundle": "research-dashboard",
|
||||
"scriptUrl": "./research-dashboard/research-dashboard.js",
|
||||
"output": "dx-maps/research-dashboard/research-dashboard.js",
|
||||
"integrity": "sha384-lpc+59frO7H3oeAerPcUr4/eLSdsRgrEk56tDwm+WyTcwjeI/6I0F+O3g37bYgjG",
|
||||
"integrity": "sha384-szV59QxctTn0xXiZHAyXVBUP1QY54HpVGtClXc58F+X1JOYmzQUStEFQWi6UAl3/",
|
||||
"elements": [
|
||||
"research-dashboard-map"
|
||||
],
|
||||
|
|
@ -1702,8 +1702,8 @@
|
|||
"scriptUrl": "./research-dashboard/research-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./research-dashboard/research-dashboard/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=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-lpc+59frO7H3oeAerPcUr4/eLSdsRgrEk56tDwm+WyTcwjeI/6I0F+O3g37bYgjG\" 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<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-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=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-lpc+59frO7H3oeAerPcUr4/eLSdsRgrEk56tDwm+WyTcwjeI/6I0F+O3g37bYgjG\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-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=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-szV59QxctTn0xXiZHAyXVBUP1QY54HpVGtClXc58F+X1JOYmzQUStEFQWi6UAl3/\" 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<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-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=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-szV59QxctTn0xXiZHAyXVBUP1QY54HpVGtClXc58F+X1JOYmzQUStEFQWi6UAl3/\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-map>"
|
||||
},
|
||||
"bundle": "research-dashboard"
|
||||
}
|
||||
|
|
@ -1808,7 +1808,7 @@
|
|||
"bundle": "upg-neighbor",
|
||||
"scriptUrl": "./upg-neighbor/upg-neighbor.js",
|
||||
"output": "dx-maps/upg-neighbor/upg-neighbor.js",
|
||||
"integrity": "sha384-dnPko47/tcfCHCOlPLCBYFTKcZJme8/Gk/TFXHaOcG8RD0m90YODMHsjpTHvqBBC",
|
||||
"integrity": "sha384-g6NBHTZ945HuiOxk/eGRpMe64qQcAVdFjn0KMeclyAZCwZ3NlIyaKfsOCq55uJab",
|
||||
"elements": [
|
||||
"upg-neighbor"
|
||||
],
|
||||
|
|
@ -1827,8 +1827,8 @@
|
|||
"scriptUrl": "./upg-neighbor/upg-neighbor.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./upg-neighbor/upg-neighbor/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=\"./upg-neighbor/upg-neighbor.js\" integrity=\"sha384-dnPko47/tcfCHCOlPLCBYFTKcZJme8/Gk/TFXHaOcG8RD0m90YODMHsjpTHvqBBC\" 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<upg-neighbor profile-config='{\"profile\":\"upg-neighbor\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></upg-neighbor>",
|
||||
"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=\"./upg-neighbor/upg-neighbor.js\" integrity=\"sha384-dnPko47/tcfCHCOlPLCBYFTKcZJme8/Gk/TFXHaOcG8RD0m90YODMHsjpTHvqBBC\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<upg-neighbor profile-config='{\"profile\":\"upg-neighbor\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></upg-neighbor>"
|
||||
"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=\"./upg-neighbor/upg-neighbor.js\" integrity=\"sha384-g6NBHTZ945HuiOxk/eGRpMe64qQcAVdFjn0KMeclyAZCwZ3NlIyaKfsOCq55uJab\" 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<upg-neighbor profile-config='{\"profile\":\"upg-neighbor\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></upg-neighbor>",
|
||||
"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=\"./upg-neighbor/upg-neighbor.js\" integrity=\"sha384-g6NBHTZ945HuiOxk/eGRpMe64qQcAVdFjn0KMeclyAZCwZ3NlIyaKfsOCq55uJab\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<upg-neighbor profile-config='{\"profile\":\"upg-neighbor\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></upg-neighbor>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-research-map> custom element. -->
|
||||
<script src="../doxa-research-map.js" integrity="sha384-vASbOyKVdTogTWjPRdw33UZp8BclmFkLopP2JvfccvtAihsLAVPy/131Z0/DdjUE" crossorigin="anonymous"></script>
|
||||
<script src="../doxa-research-map.js" integrity="sha384-w8mEGeIr5DTaQEIrfMaga7c8AOzBfk5BCFQWhhBLStfA1x+8/WPn0W8FVDM77tX+" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-research-map> custom element. -->
|
||||
<script src="../../doxa-research-map.js" integrity="sha384-vASbOyKVdTogTWjPRdw33UZp8BclmFkLopP2JvfccvtAihsLAVPy/131Z0/DdjUE" crossorigin="anonymous"></script>
|
||||
<script src="../../doxa-research-map.js" integrity="sha384-w8mEGeIr5DTaQEIrfMaga7c8AOzBfk5BCFQWhhBLStfA1x+8/WPn0W8FVDM77tX+" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <dxm-simple-map> custom element. -->
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-CuHDwTbbwb0PCFgnqMNHGlT4S2Zh5XeCUyJOKQ8PGizQ8kBW4cvtdIp9BVSiCmcD" crossorigin="anonymous"></script>
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-dVdk9Dyd0DZ92VoOULWQFVRqexr7zKwDyvy9GkGXHe0oGo3tqS+xR1pc04QP/B0L" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <dxm-simple-map> custom element. -->
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-CuHDwTbbwb0PCFgnqMNHGlT4S2Zh5XeCUyJOKQ8PGizQ8kBW4cvtdIp9BVSiCmcD" crossorigin="anonymous"></script>
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-dVdk9Dyd0DZ92VoOULWQFVRqexr7zKwDyvy9GkGXHe0oGo3tqS+xR1pc04QP/B0L" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <dxm-simple-map> custom element. -->
|
||||
<script src="../doxa-simple-map.js" integrity="sha384-CuHDwTbbwb0PCFgnqMNHGlT4S2Zh5XeCUyJOKQ8PGizQ8kBW4cvtdIp9BVSiCmcD" crossorigin="anonymous"></script>
|
||||
<script src="../doxa-simple-map.js" integrity="sha384-dVdk9Dyd0DZ92VoOULWQFVRqexr7zKwDyvy9GkGXHe0oGo3tqS+xR1pc04QP/B0L" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <dxm-simple-map> custom element. -->
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-CuHDwTbbwb0PCFgnqMNHGlT4S2Zh5XeCUyJOKQ8PGizQ8kBW4cvtdIp9BVSiCmcD" crossorigin="anonymous"></script>
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-dVdk9Dyd0DZ92VoOULWQFVRqexr7zKwDyvy9GkGXHe0oGo3tqS+xR1pc04QP/B0L" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-internet-board> custom element. -->
|
||||
<script src="../../gospel-internet.js" integrity="sha384-olAz4BuFXmqcKLZH8lersYjbS0TVVFZH07jArFJfbzH+vdw4k2I9avfJd+BrTW4t" crossorigin="anonymous"></script>
|
||||
<script src="../../gospel-internet.js" integrity="sha384-cYEFAJDnY5U2DTUhnYFCCSG7rUsqh1c8nzExu1GePI0mIKdFZU3vQ/zKHkSBHdvc" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-internet-board> custom element. -->
|
||||
<script src="../gospel-internet.js" integrity="sha384-olAz4BuFXmqcKLZH8lersYjbS0TVVFZH07jArFJfbzH+vdw4k2I9avfJd+BrTW4t" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-internet.js" integrity="sha384-cYEFAJDnY5U2DTUhnYFCCSG7rUsqh1c8nzExu1GePI0mIKdFZU3vQ/zKHkSBHdvc" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-internet-board> custom element. -->
|
||||
<script src="../../gospel-internet.js" integrity="sha384-olAz4BuFXmqcKLZH8lersYjbS0TVVFZH07jArFJfbzH+vdw4k2I9avfJd+BrTW4t" crossorigin="anonymous"></script>
|
||||
<script src="../../gospel-internet.js" integrity="sha384-cYEFAJDnY5U2DTUhnYFCCSG7rUsqh1c8nzExu1GePI0mIKdFZU3vQ/zKHkSBHdvc" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-internet-board> custom element. -->
|
||||
<script src="../../gospel-internet.js" integrity="sha384-olAz4BuFXmqcKLZH8lersYjbS0TVVFZH07jArFJfbzH+vdw4k2I9avfJd+BrTW4t" crossorigin="anonymous"></script>
|
||||
<script src="../../gospel-internet.js" integrity="sha384-cYEFAJDnY5U2DTUhnYFCCSG7rUsqh1c8nzExu1GePI0mIKdFZU3vQ/zKHkSBHdvc" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-internet-board> custom element. -->
|
||||
<script src="../../gospel-internet.js" integrity="sha384-olAz4BuFXmqcKLZH8lersYjbS0TVVFZH07jArFJfbzH+vdw4k2I9avfJd+BrTW4t" crossorigin="anonymous"></script>
|
||||
<script src="../../gospel-internet.js" integrity="sha384-cYEFAJDnY5U2DTUhnYFCCSG7rUsqh1c8nzExu1GePI0mIKdFZU3vQ/zKHkSBHdvc" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-internet-board> custom element. -->
|
||||
<script src="../../gospel-internet.js" integrity="sha384-olAz4BuFXmqcKLZH8lersYjbS0TVVFZH07jArFJfbzH+vdw4k2I9avfJd+BrTW4t" crossorigin="anonymous"></script>
|
||||
<script src="../../gospel-internet.js" integrity="sha384-cYEFAJDnY5U2DTUhnYFCCSG7rUsqh1c8nzExu1GePI0mIKdFZU3vQ/zKHkSBHdvc" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-internet-board> custom element. -->
|
||||
<script src="../../gospel-internet.js" integrity="sha384-olAz4BuFXmqcKLZH8lersYjbS0TVVFZH07jArFJfbzH+vdw4k2I9avfJd+BrTW4t" crossorigin="anonymous"></script>
|
||||
<script src="../../gospel-internet.js" integrity="sha384-cYEFAJDnY5U2DTUhnYFCCSG7rUsqh1c8nzExu1GePI0mIKdFZU3vQ/zKHkSBHdvc" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
"bundle": "all-people-groups",
|
||||
"scriptUrl": "./all-people-groups/all-people-groups.js",
|
||||
"output": "dx-maps/all-people-groups/all-people-groups.js",
|
||||
"integrity": "sha384-kCCtSdpWfJmCi6wtGplAHul5Vo+0Et2h4HMZLXHIsHuBtFn/0FOJqsTZk+/VfPka",
|
||||
"integrity": "sha384-4uZxLJxLey7Zl7tiZ5qTwrQnblpRX0lxzKzjTcfUqBNEOP2Qn63Bvtra+Vo+6ecm",
|
||||
"elements": [
|
||||
"all-people-groups"
|
||||
],
|
||||
|
|
@ -30,8 +30,8 @@
|
|||
"scriptUrl": "./all-people-groups/all-people-groups.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./all-people-groups/all-people-groups/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=\"./all-people-groups/all-people-groups.js\" integrity=\"sha384-kCCtSdpWfJmCi6wtGplAHul5Vo+0Et2h4HMZLXHIsHuBtFn/0FOJqsTZk+/VfPka\" 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<all-people-groups profile-config='{\"profile\":\"all-people-groups\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></all-people-groups>",
|
||||
"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=\"./all-people-groups/all-people-groups.js\" integrity=\"sha384-kCCtSdpWfJmCi6wtGplAHul5Vo+0Et2h4HMZLXHIsHuBtFn/0FOJqsTZk+/VfPka\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<all-people-groups profile-config='{\"profile\":\"all-people-groups\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></all-people-groups>"
|
||||
"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=\"./all-people-groups/all-people-groups.js\" integrity=\"sha384-4uZxLJxLey7Zl7tiZ5qTwrQnblpRX0lxzKzjTcfUqBNEOP2Qn63Bvtra+Vo+6ecm\" 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<all-people-groups profile-config='{\"profile\":\"all-people-groups\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></all-people-groups>",
|
||||
"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=\"./all-people-groups/all-people-groups.js\" integrity=\"sha384-4uZxLJxLey7Zl7tiZ5qTwrQnblpRX0lxzKzjTcfUqBNEOP2Qn63Bvtra+Vo+6ecm\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<all-people-groups profile-config='{\"profile\":\"all-people-groups\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></all-people-groups>"
|
||||
},
|
||||
"bundle": "all-people-groups"
|
||||
}
|
||||
|
|
@ -164,7 +164,7 @@
|
|||
"bundle": "bless-india-posters",
|
||||
"scriptUrl": "./bless-india-posters/bless-india-posters.js",
|
||||
"output": "dx-maps/bless-india-posters/bless-india-posters.js",
|
||||
"integrity": "sha384-E4XxvUZ7ZN9VXwwUAYAMldJNsIRq1ijNibobg0flroCtP9b33aMpwxYcMpA65blB",
|
||||
"integrity": "sha384-Y/Ib6sYGClrODPxG3Gj9txadwtVZRIiHWQa9FA9fH/RGAAs9SAbVrJobrwC4bY1b",
|
||||
"elements": [
|
||||
"bless-india-posters"
|
||||
],
|
||||
|
|
@ -207,7 +207,7 @@
|
|||
"scriptUrl": "./bless-india-posters/bless-india-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./bless-india-posters/bless-india-posters/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=\"./bless-india-posters/bless-india-posters.js\" integrity=\"sha384-E4XxvUZ7ZN9VXwwUAYAMldJNsIRq1ijNibobg0flroCtP9b33aMpwxYcMpA65blB\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<bless-india-posters profile-config='{\"profile\":\"bless-india-posters\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></bless-india-posters>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./bless-india-posters/bless-india-posters.js\" integrity=\"sha384-Y/Ib6sYGClrODPxG3Gj9txadwtVZRIiHWQa9FA9fH/RGAAs9SAbVrJobrwC4bY1b\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<bless-india-posters profile-config='{\"profile\":\"bless-india-posters\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></bless-india-posters>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -216,7 +216,7 @@
|
|||
"bundle": "cities-internet",
|
||||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"output": "dx-maps/cities-internet/cities-internet.js",
|
||||
"integrity": "sha384-x6+3nssgPyibxG8iZfwk+IqkUVVHuf2rjo5On41MmJdnmAkc9Ed4YS64QODXbUgz",
|
||||
"integrity": "sha384-6c4SlWMUWowE4IG1S5F3WshA66I3aKnK7ilHyHzOncLWeyXFL/I+NGlAYhyjZ1Ql",
|
||||
"elements": [
|
||||
"cities-internet-map"
|
||||
],
|
||||
|
|
@ -235,7 +235,7 @@
|
|||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./cities-internet/connectivity-list/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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-x6+3nssgPyibxG8iZfwk+IqkUVVHuf2rjo5On41MmJdnmAkc9Ed4YS64QODXbUgz\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<cities-internet-map profile-config='{\"profile\":\"connectivity-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-6c4SlWMUWowE4IG1S5F3WshA66I3aKnK7ilHyHzOncLWeyXFL/I+NGlAYhyjZ1Ql\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<cities-internet-map profile-config='{\"profile\":\"connectivity-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -251,8 +251,8 @@
|
|||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./cities-internet/connectivity-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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-x6+3nssgPyibxG8iZfwk+IqkUVVHuf2rjo5On41MmJdnmAkc9Ed4YS64QODXbUgz\" 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<cities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-x6+3nssgPyibxG8iZfwk+IqkUVVHuf2rjo5On41MmJdnmAkc9Ed4YS64QODXbUgz\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<cities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-6c4SlWMUWowE4IG1S5F3WshA66I3aKnK7ilHyHzOncLWeyXFL/I+NGlAYhyjZ1Ql\" 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<cities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-6c4SlWMUWowE4IG1S5F3WshA66I3aKnK7ilHyHzOncLWeyXFL/I+NGlAYhyjZ1Ql\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<cities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -268,7 +268,7 @@
|
|||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./cities-internet/data-tables/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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-x6+3nssgPyibxG8iZfwk+IqkUVVHuf2rjo5On41MmJdnmAkc9Ed4YS64QODXbUgz\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<cities-internet-map profile-config='{\"profile\":\"data-tables\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-6c4SlWMUWowE4IG1S5F3WshA66I3aKnK7ilHyHzOncLWeyXFL/I+NGlAYhyjZ1Ql\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<cities-internet-map profile-config='{\"profile\":\"data-tables\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -306,7 +306,7 @@
|
|||
"bundle": "country-posters",
|
||||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"output": "dx-maps/country-posters/country-posters.js",
|
||||
"integrity": "sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE",
|
||||
"integrity": "sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z",
|
||||
"elements": [
|
||||
"country-posters-map"
|
||||
],
|
||||
|
|
@ -329,8 +329,8 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/countries-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=\"./country-posters/country-posters.js\" integrity=\"sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE\" 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<country-posters-map profile-config='{\"profile\":\"countries-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-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=\"./country-posters/country-posters.js\" integrity=\"sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<country-posters-map profile-config='{\"profile\":\"countries-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-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=\"./country-posters/country-posters.js\" integrity=\"sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z\" 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<country-posters-map profile-config='{\"profile\":\"countries-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-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=\"./country-posters/country-posters.js\" integrity=\"sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<country-posters-map profile-config='{\"profile\":\"countries-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -368,7 +368,7 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/country-poster-wall/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=\"./country-posters/country-posters.js\" integrity=\"sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<country-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<country-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -384,8 +384,8 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/country-posters-mfe/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=\"./country-posters/country-posters.js\" integrity=\"sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE\" 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<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-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=\"./country-posters/country-posters.js\" integrity=\"sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-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=\"./country-posters/country-posters.js\" integrity=\"sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z\" 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<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-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=\"./country-posters/country-posters.js\" integrity=\"sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -401,7 +401,7 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/poster-section/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=\"./country-posters/country-posters.js\" integrity=\"sha384-qqQFkG1sE7jcJgSvy3UTqStm7XXPomROEaDydN2SuK3G3im9wzg5fPpcBtoli6CE\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<country-posters-map profile-config='{\"profile\":\"poster-section\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-PWyg9lVVg1fuZP5YCEBCsoAonqUcYztXk0ykfXnlPDA1eqeLNZHYKokaon1mE90Z\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<country-posters-map profile-config='{\"profile\":\"poster-section\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -410,7 +410,7 @@
|
|||
"bundle": "dashboard-plus-grid",
|
||||
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"output": "dx-maps/dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"integrity": "sha384-43uFY+M997neTD09l+u+LcDJcSIkjgEk4arWtJOrDWh9mxLmHr6Svm/5D2F9EB8b",
|
||||
"integrity": "sha384-AyqUww8eDFdF36GeDkZhv3wX6orazKJ4ksNFWdTclwRXYYYTyJ3zgHdoU204eiYk",
|
||||
"elements": [
|
||||
"dashboard-plus-grid"
|
||||
],
|
||||
|
|
@ -434,8 +434,8 @@
|
|||
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./dashboard-plus-grid/dashboard-plus-grid/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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-43uFY+M997neTD09l+u+LcDJcSIkjgEk4arWtJOrDWh9mxLmHr6Svm/5D2F9EB8b\" 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<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>",
|
||||
"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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-43uFY+M997neTD09l+u+LcDJcSIkjgEk4arWtJOrDWh9mxLmHr6Svm/5D2F9EB8b\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
|
||||
"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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-AyqUww8eDFdF36GeDkZhv3wX6orazKJ4ksNFWdTclwRXYYYTyJ3zgHdoU204eiYk\" 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<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>",
|
||||
"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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-AyqUww8eDFdF36GeDkZhv3wX6orazKJ4ksNFWdTclwRXYYYTyJ3zgHdoU204eiYk\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -459,7 +459,7 @@
|
|||
"bundle": "demo-map",
|
||||
"scriptUrl": "./demo-map/demo-map.js",
|
||||
"output": "dx-maps/demo-map/demo-map.js",
|
||||
"integrity": "sha384-iDYwdyR+8ZswhaAS4/NcewWTs9q0eRDzuebLviXtjSt5nFa00MfkzSDMzJYafuys",
|
||||
"integrity": "sha384-eCdagq/JzSB4RbPXxCB4Cah0DemoKxPhkguZy1jvFoAN5ge0XzUDxid7ln8rHqAX",
|
||||
"elements": [
|
||||
"demo-map"
|
||||
],
|
||||
|
|
@ -477,8 +477,8 @@
|
|||
"scriptUrl": "./demo-map/demo-map.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./demo-map/demo-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=\"./demo-map/demo-map.js\" integrity=\"sha384-iDYwdyR+8ZswhaAS4/NcewWTs9q0eRDzuebLviXtjSt5nFa00MfkzSDMzJYafuys\" 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<demo-map profile-config='{\"profile\":\"demo-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></demo-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=\"./demo-map/demo-map.js\" integrity=\"sha384-iDYwdyR+8ZswhaAS4/NcewWTs9q0eRDzuebLviXtjSt5nFa00MfkzSDMzJYafuys\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<demo-map profile-config='{\"profile\":\"demo-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></demo-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=\"./demo-map/demo-map.js\" integrity=\"sha384-eCdagq/JzSB4RbPXxCB4Cah0DemoKxPhkguZy1jvFoAN5ge0XzUDxid7ln8rHqAX\" 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<demo-map profile-config='{\"profile\":\"demo-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></demo-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=\"./demo-map/demo-map.js\" integrity=\"sha384-eCdagq/JzSB4RbPXxCB4Cah0DemoKxPhkguZy1jvFoAN5ge0XzUDxid7ln8rHqAX\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<demo-map profile-config='{\"profile\":\"demo-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></demo-map>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"bundle": "doxa-research-map",
|
||||
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
|
||||
"output": "dx-maps/doxa-research-map/doxa-research-map.js",
|
||||
"integrity": "sha384-vASbOyKVdTogTWjPRdw33UZp8BclmFkLopP2JvfccvtAihsLAVPy/131Z0/DdjUE",
|
||||
"integrity": "sha384-w8mEGeIr5DTaQEIrfMaga7c8AOzBfk5BCFQWhhBLStfA1x+8/WPn0W8FVDM77tX+",
|
||||
"elements": [
|
||||
"doxa-research-map"
|
||||
],
|
||||
|
|
@ -581,8 +581,8 @@
|
|||
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-research-map/research-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-research-map/doxa-research-map.js\" integrity=\"sha384-vASbOyKVdTogTWjPRdw33UZp8BclmFkLopP2JvfccvtAihsLAVPy/131Z0/DdjUE\" 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-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-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-research-map/doxa-research-map.js\" integrity=\"sha384-vASbOyKVdTogTWjPRdw33UZp8BclmFkLopP2JvfccvtAihsLAVPy/131Z0/DdjUE\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-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-research-map/doxa-research-map.js\" integrity=\"sha384-w8mEGeIr5DTaQEIrfMaga7c8AOzBfk5BCFQWhhBLStfA1x+8/WPn0W8FVDM77tX+\" 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-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-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-research-map/doxa-research-map.js\" integrity=\"sha384-w8mEGeIr5DTaQEIrfMaga7c8AOzBfk5BCFQWhhBLStfA1x+8/WPn0W8FVDM77tX+\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -608,7 +608,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-CuHDwTbbwb0PCFgnqMNHGlT4S2Zh5XeCUyJOKQ8PGizQ8kBW4cvtdIp9BVSiCmcD",
|
||||
"integrity": "sha384-dVdk9Dyd0DZ92VoOULWQFVRqexr7zKwDyvy9GkGXHe0oGo3tqS+xR1pc04QP/B0L",
|
||||
"elements": [
|
||||
"dxm-simple-map"
|
||||
],
|
||||
|
|
@ -627,8 +627,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-CuHDwTbbwb0PCFgnqMNHGlT4S2Zh5XeCUyJOKQ8PGizQ8kBW4cvtdIp9BVSiCmcD\" 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<dxm-simple-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-simple-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-CuHDwTbbwb0PCFgnqMNHGlT4S2Zh5XeCUyJOKQ8PGizQ8kBW4cvtdIp9BVSiCmcD\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<dxm-simple-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-simple-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-dVdk9Dyd0DZ92VoOULWQFVRqexr7zKwDyvy9GkGXHe0oGo3tqS+xR1pc04QP/B0L\" 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<dxm-simple-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-simple-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-dVdk9Dyd0DZ92VoOULWQFVRqexr7zKwDyvy9GkGXHe0oGo3tqS+xR1pc04QP/B0L\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<dxm-simple-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-simple-map>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -798,7 +798,7 @@
|
|||
"bundle": "gospel-internet",
|
||||
"scriptUrl": "./gospel-internet/gospel-internet.js",
|
||||
"output": "dx-maps/gospel-internet/gospel-internet.js",
|
||||
"integrity": "sha384-olAz4BuFXmqcKLZH8lersYjbS0TVVFZH07jArFJfbzH+vdw4k2I9avfJd+BrTW4t",
|
||||
"integrity": "sha384-cYEFAJDnY5U2DTUhnYFCCSG7rUsqh1c8nzExu1GePI0mIKdFZU3vQ/zKHkSBHdvc",
|
||||
"elements": [
|
||||
"gospel-internet-board"
|
||||
],
|
||||
|
|
@ -819,8 +819,8 @@
|
|||
"scriptUrl": "./gospel-internet/gospel-internet.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-internet/board/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=\"./gospel-internet/gospel-internet.js\" integrity=\"sha384-olAz4BuFXmqcKLZH8lersYjbS0TVVFZH07jArFJfbzH+vdw4k2I9avfJd+BrTW4t\" 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<gospel-internet-board profile-config='{\"profile\":\"board\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-internet-board>",
|
||||
"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=\"./gospel-internet/gospel-internet.js\" integrity=\"sha384-olAz4BuFXmqcKLZH8lersYjbS0TVVFZH07jArFJfbzH+vdw4k2I9avfJd+BrTW4t\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<gospel-internet-board profile-config='{\"profile\":\"board\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-internet-board>"
|
||||
"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=\"./gospel-internet/gospel-internet.js\" integrity=\"sha384-cYEFAJDnY5U2DTUhnYFCCSG7rUsqh1c8nzExu1GePI0mIKdFZU3vQ/zKHkSBHdvc\" 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<gospel-internet-board profile-config='{\"profile\":\"board\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-internet-board>",
|
||||
"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=\"./gospel-internet/gospel-internet.js\" integrity=\"sha384-cYEFAJDnY5U2DTUhnYFCCSG7rUsqh1c8nzExu1GePI0mIKdFZU3vQ/zKHkSBHdvc\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<gospel-internet-board profile-config='{\"profile\":\"board\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-internet-board>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -927,7 +927,7 @@
|
|||
"bundle": "gospel-resources",
|
||||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"output": "dx-maps/gospel-resources/gospel-resources.js",
|
||||
"integrity": "sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT",
|
||||
"integrity": "sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M",
|
||||
"elements": [
|
||||
"gospel-resources-map"
|
||||
],
|
||||
|
|
@ -950,7 +950,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/charts/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -966,7 +966,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/data-tables/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -982,8 +982,8 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/gospel-dashboard/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT\" 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<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M\" 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<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -999,7 +999,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/resources-list/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1015,8 +1015,8 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT\" 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<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-YsU1rWFd1E/U3jD/upPCjU107AjJuS7MqNfvX9C1QYc+x5wg3kodvJFBuAaCe1dT\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M\" 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<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-bUYx/HIJrMOYevH8JQVp4qeZnLx9cHrT9ZbuuNTGzVy32DXCL1lnIwABy8f2Bi4M\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -1025,7 +1025,7 @@
|
|||
"bundle": "my-upg-100-list",
|
||||
"scriptUrl": "./my-upg-100-list/my-upg-100-list.js",
|
||||
"output": "dx-maps/my-upg-100-list/my-upg-100-list.js",
|
||||
"integrity": "sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G",
|
||||
"integrity": "sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo",
|
||||
"elements": [
|
||||
"my-upg-100-list-map"
|
||||
],
|
||||
|
|
@ -1064,43 +1064,43 @@
|
|||
],
|
||||
"posterDesignLabels": {
|
||||
"upg100-territory-poster.letter": {
|
||||
"ar": "ملصق منطقة UPG-100",
|
||||
"de": "UPG-100-Gebietsplakat",
|
||||
"en": "UPG-100 territory poster",
|
||||
"es": "Cartel de territorio UPG-100",
|
||||
"fr": "Affiche de territoire UPG-100",
|
||||
"hi": "UPG-100 क्षेत्र पोस्टर",
|
||||
"it": "Manifesto di territorio UPG-100",
|
||||
"pt": "Cartaz de território UPG-100",
|
||||
"ro": "Afiș de teritoriu UPG-100",
|
||||
"ru": "Плакат территории UPG-100",
|
||||
"zh": "UPG-100 区域海报"
|
||||
"ar": "ملصق منطقة UPG100",
|
||||
"de": "UPG100-Gebietsplakat",
|
||||
"en": "UPG100 zone poster",
|
||||
"es": "Cartel de zona UPG100",
|
||||
"fr": "Affiche de zone UPG100",
|
||||
"hi": "UPG100 क्षेत्र का पोस्टर",
|
||||
"it": "Poster di zona UPG100",
|
||||
"pt": "Cartaz de zona UPG100",
|
||||
"ro": "Poster de zonă UPG100",
|
||||
"ru": "Плакат зоны UPG100",
|
||||
"zh": "UPG100 区域海报(单张)"
|
||||
},
|
||||
"upg100-territory-poster.3x3": {
|
||||
"ar": "ملصق منطقة UPG-100",
|
||||
"de": "UPG-100-Gebietsplakat",
|
||||
"en": "UPG-100 territory poster",
|
||||
"es": "Cartel de territorio UPG-100",
|
||||
"fr": "Affiche de territoire UPG-100",
|
||||
"hi": "UPG-100 क्षेत्र पोस्टर",
|
||||
"it": "Manifesto di territorio UPG-100",
|
||||
"pt": "Cartaz de território UPG-100",
|
||||
"ro": "Afiș de teritoriu UPG-100",
|
||||
"ru": "Плакат территории UPG-100",
|
||||
"zh": "UPG-100 区域海报"
|
||||
"ar": "ملصق منطقة UPG100",
|
||||
"de": "UPG100-Gebietsplakat",
|
||||
"en": "UPG100 zone poster",
|
||||
"es": "Cartel de zona UPG100",
|
||||
"fr": "Affiche de zone UPG100",
|
||||
"hi": "UPG100 क्षेत्र का पोस्टर",
|
||||
"it": "Poster di zona UPG100",
|
||||
"pt": "Cartaz de zona UPG100",
|
||||
"ro": "Poster de zonă UPG100",
|
||||
"ru": "Плакат зоны UPG100",
|
||||
"zh": "UPG100 区域海报(单张)"
|
||||
},
|
||||
"upg100-territory-poster.3x4": {
|
||||
"ar": "ملصق منطقة UPG-100",
|
||||
"de": "UPG-100-Gebietsplakat",
|
||||
"en": "UPG-100 territory poster",
|
||||
"es": "Cartel de territorio UPG-100",
|
||||
"fr": "Affiche de territoire UPG-100",
|
||||
"hi": "UPG-100 क्षेत्र पोस्टर",
|
||||
"it": "Manifesto di territorio UPG-100",
|
||||
"pt": "Cartaz de território UPG-100",
|
||||
"ro": "Afiș de teritoriu UPG-100",
|
||||
"ru": "Плакат территории UPG-100",
|
||||
"zh": "UPG-100 区域海报"
|
||||
"ar": "ملصق منطقة UPG100",
|
||||
"de": "UPG100-Gebietsplakat",
|
||||
"en": "UPG100 zone poster",
|
||||
"es": "Cartel de zona UPG100",
|
||||
"fr": "Affiche de zone UPG100",
|
||||
"hi": "UPG100 क्षेत्र का पोस्टर",
|
||||
"it": "Poster di zona UPG100",
|
||||
"pt": "Cartaz de zona UPG100",
|
||||
"ro": "Poster de zonă UPG100",
|
||||
"ru": "Плакат зоны UPG100",
|
||||
"zh": "UPG100 区域海报(单张)"
|
||||
}
|
||||
},
|
||||
"file": "poster-wall.vue",
|
||||
|
|
@ -1112,7 +1112,7 @@
|
|||
"scriptUrl": "./my-upg-100-list/my-upg-100-list.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./my-upg-100-list/poster-wall/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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<my-upg-100-list-map profile-config='{\"profile\":\"poster-wall\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<my-upg-100-list-map profile-config='{\"profile\":\"poster-wall\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1128,8 +1128,8 @@
|
|||
"scriptUrl": "./my-upg-100-list/my-upg-100-list.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./my-upg-100-list/upg-100-list/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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G\" 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<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-list\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo\" 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<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-list\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1145,8 +1145,8 @@
|
|||
"scriptUrl": "./my-upg-100-list/my-upg-100-list.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./my-upg-100-list/upg-100-mfe/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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G\" 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<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo\" 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<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-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=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<my-upg-100-list-map profile-config='{\"profile\":\"upg-100-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></my-upg-100-list-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -1277,7 +1277,7 @@
|
|||
"bundle": "poster-design",
|
||||
"scriptUrl": "./poster-design/poster-design.js",
|
||||
"output": "dx-maps/poster-design/poster-design.js",
|
||||
"integrity": "sha384-+awg8qsCdVYBdgB1Ec63JiZ0c2706CsHG6N6yF75nighyxRkPd4U9Mt4lrVHJvXI",
|
||||
"integrity": "sha384-5r/RtSGqs1AaM+gimpy9hYjCwR+fzjHyYX617dMwaFWhydz6dlt09TOyb+i/78Vo",
|
||||
"elements": [
|
||||
"poster-design"
|
||||
],
|
||||
|
|
@ -1300,7 +1300,7 @@
|
|||
"scriptUrl": "./poster-design/poster-design.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./poster-design/poster-design-mfe/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=\"./poster-design/poster-design.js\" integrity=\"sha384-+awg8qsCdVYBdgB1Ec63JiZ0c2706CsHG6N6yF75nighyxRkPd4U9Mt4lrVHJvXI\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-design profile-config='{\"profile\":\"poster-design-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-design>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./poster-design/poster-design.js\" integrity=\"sha384-5r/RtSGqs1AaM+gimpy9hYjCwR+fzjHyYX617dMwaFWhydz6dlt09TOyb+i/78Vo\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-design profile-config='{\"profile\":\"poster-design-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-design>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1316,7 +1316,7 @@
|
|||
"scriptUrl": "./poster-design/poster-design.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./poster-design/poster-sizes/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=\"./poster-design/poster-design.js\" integrity=\"sha384-+awg8qsCdVYBdgB1Ec63JiZ0c2706CsHG6N6yF75nighyxRkPd4U9Mt4lrVHJvXI\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-design profile-config='{\"profile\":\"poster-sizes\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-design>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./poster-design/poster-design.js\" integrity=\"sha384-5r/RtSGqs1AaM+gimpy9hYjCwR+fzjHyYX617dMwaFWhydz6dlt09TOyb+i/78Vo\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-design profile-config='{\"profile\":\"poster-sizes\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-design>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1332,7 +1332,7 @@
|
|||
"scriptUrl": "./poster-design/poster-design.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./poster-design/poster-styles/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=\"./poster-design/poster-design.js\" integrity=\"sha384-+awg8qsCdVYBdgB1Ec63JiZ0c2706CsHG6N6yF75nighyxRkPd4U9Mt4lrVHJvXI\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-design profile-config='{\"profile\":\"poster-styles\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-design>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./poster-design/poster-design.js\" integrity=\"sha384-5r/RtSGqs1AaM+gimpy9hYjCwR+fzjHyYX617dMwaFWhydz6dlt09TOyb+i/78Vo\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-design profile-config='{\"profile\":\"poster-styles\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-design>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -1341,7 +1341,7 @@
|
|||
"bundle": "poster-sections",
|
||||
"scriptUrl": "./poster-sections/poster-sections.js",
|
||||
"output": "dx-maps/poster-sections/poster-sections.js",
|
||||
"integrity": "sha384-vjNpH6iKZVNk0Y3j/vJUjy8iINx33MfiIbiwOzPvgUFKmrJg00vRCCbavMPr2rxK",
|
||||
"integrity": "sha384-yTqSEf7W1guaDdfAfm5AC3H1dG2wOasVHQdVjnV3XhFbXfukPq3wJokwLOrK4M4j",
|
||||
"elements": [
|
||||
"poster-sections"
|
||||
],
|
||||
|
|
@ -1360,7 +1360,7 @@
|
|||
"scriptUrl": "./poster-sections/poster-sections.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./poster-sections/poster-sections/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=\"./poster-sections/poster-sections.js\" integrity=\"sha384-vjNpH6iKZVNk0Y3j/vJUjy8iINx33MfiIbiwOzPvgUFKmrJg00vRCCbavMPr2rxK\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-sections profile-config='{\"profile\":\"poster-sections\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-sections>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./poster-sections/poster-sections.js\" integrity=\"sha384-yTqSEf7W1guaDdfAfm5AC3H1dG2wOasVHQdVjnV3XhFbXfukPq3wJokwLOrK4M4j\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<poster-sections profile-config='{\"profile\":\"poster-sections\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></poster-sections>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -1589,7 +1589,7 @@
|
|||
"bundle": "prayer-walk-planner",
|
||||
"scriptUrl": "./prayer-walk-planner/prayer-walk-planner.js",
|
||||
"output": "dx-maps/prayer-walk-planner/prayer-walk-planner.js",
|
||||
"integrity": "sha384-4w4Ku5DC4cRd1yybcKqVOsaXaPBxAtHQszgWM2Td3glftxm2AkKuZeqwI8RkVRW8",
|
||||
"integrity": "sha384-6nj6SNKsRM5cmVVUmPgIAKe8ZSejxZew8HheG0P4rzyiUYdLrPVosfJJbrUypNiY",
|
||||
"elements": [
|
||||
"prayer-walk-planner"
|
||||
],
|
||||
|
|
@ -1607,8 +1607,8 @@
|
|||
"scriptUrl": "./prayer-walk-planner/prayer-walk-planner.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./prayer-walk-planner/prayer-walk-planner/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=\"./prayer-walk-planner/prayer-walk-planner.js\" integrity=\"sha384-4w4Ku5DC4cRd1yybcKqVOsaXaPBxAtHQszgWM2Td3glftxm2AkKuZeqwI8RkVRW8\" 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<prayer-walk-planner profile-config='{\"profile\":\"prayer-walk-planner\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></prayer-walk-planner>",
|
||||
"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=\"./prayer-walk-planner/prayer-walk-planner.js\" integrity=\"sha384-4w4Ku5DC4cRd1yybcKqVOsaXaPBxAtHQszgWM2Td3glftxm2AkKuZeqwI8RkVRW8\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<prayer-walk-planner profile-config='{\"profile\":\"prayer-walk-planner\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></prayer-walk-planner>"
|
||||
"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=\"./prayer-walk-planner/prayer-walk-planner.js\" integrity=\"sha384-6nj6SNKsRM5cmVVUmPgIAKe8ZSejxZew8HheG0P4rzyiUYdLrPVosfJJbrUypNiY\" 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<prayer-walk-planner profile-config='{\"profile\":\"prayer-walk-planner\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></prayer-walk-planner>",
|
||||
"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=\"./prayer-walk-planner/prayer-walk-planner.js\" integrity=\"sha384-6nj6SNKsRM5cmVVUmPgIAKe8ZSejxZew8HheG0P4rzyiUYdLrPVosfJJbrUypNiY\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<prayer-walk-planner profile-config='{\"profile\":\"prayer-walk-planner\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></prayer-walk-planner>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -1617,7 +1617,7 @@
|
|||
"bundle": "regions-dashboard",
|
||||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"output": "dx-maps/regions-dashboard/regions-dashboard.js",
|
||||
"integrity": "sha384-jo4fOr0Hs5kNzNKaecPNSZdfBF+UbqRAX6pdYAaJQIUOFdduFDJezcUGNqroThmb",
|
||||
"integrity": "sha384-TzpyeMEeBj+L99cLsTKN2X27VxqYVTMqRdnxct/qhxQ5KrNOkQw7yJUGgaepqrex",
|
||||
"elements": [
|
||||
"regions-dashboard"
|
||||
],
|
||||
|
|
@ -1640,8 +1640,8 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/region-dashboards/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-jo4fOr0Hs5kNzNKaecPNSZdfBF+UbqRAX6pdYAaJQIUOFdduFDJezcUGNqroThmb\" 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<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-jo4fOr0Hs5kNzNKaecPNSZdfBF+UbqRAX6pdYAaJQIUOFdduFDJezcUGNqroThmb\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-TzpyeMEeBj+L99cLsTKN2X27VxqYVTMqRdnxct/qhxQ5KrNOkQw7yJUGgaepqrex\" 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<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-TzpyeMEeBj+L99cLsTKN2X27VxqYVTMqRdnxct/qhxQ5KrNOkQw7yJUGgaepqrex\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1657,7 +1657,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/regions-list/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-jo4fOr0Hs5kNzNKaecPNSZdfBF+UbqRAX6pdYAaJQIUOFdduFDJezcUGNqroThmb\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-TzpyeMEeBj+L99cLsTKN2X27VxqYVTMqRdnxct/qhxQ5KrNOkQw7yJUGgaepqrex\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1673,8 +1673,8 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/regions-mfe/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-jo4fOr0Hs5kNzNKaecPNSZdfBF+UbqRAX6pdYAaJQIUOFdduFDJezcUGNqroThmb\" 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<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-jo4fOr0Hs5kNzNKaecPNSZdfBF+UbqRAX6pdYAaJQIUOFdduFDJezcUGNqroThmb\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-TzpyeMEeBj+L99cLsTKN2X27VxqYVTMqRdnxct/qhxQ5KrNOkQw7yJUGgaepqrex\" 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<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-TzpyeMEeBj+L99cLsTKN2X27VxqYVTMqRdnxct/qhxQ5KrNOkQw7yJUGgaepqrex\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -1683,7 +1683,7 @@
|
|||
"bundle": "research-dashboard",
|
||||
"scriptUrl": "./research-dashboard/research-dashboard.js",
|
||||
"output": "dx-maps/research-dashboard/research-dashboard.js",
|
||||
"integrity": "sha384-lpc+59frO7H3oeAerPcUr4/eLSdsRgrEk56tDwm+WyTcwjeI/6I0F+O3g37bYgjG",
|
||||
"integrity": "sha384-szV59QxctTn0xXiZHAyXVBUP1QY54HpVGtClXc58F+X1JOYmzQUStEFQWi6UAl3/",
|
||||
"elements": [
|
||||
"research-dashboard-map"
|
||||
],
|
||||
|
|
@ -1702,8 +1702,8 @@
|
|||
"scriptUrl": "./research-dashboard/research-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./research-dashboard/research-dashboard/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=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-lpc+59frO7H3oeAerPcUr4/eLSdsRgrEk56tDwm+WyTcwjeI/6I0F+O3g37bYgjG\" 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<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-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=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-lpc+59frO7H3oeAerPcUr4/eLSdsRgrEk56tDwm+WyTcwjeI/6I0F+O3g37bYgjG\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-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=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-szV59QxctTn0xXiZHAyXVBUP1QY54HpVGtClXc58F+X1JOYmzQUStEFQWi6UAl3/\" 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<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-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=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-szV59QxctTn0xXiZHAyXVBUP1QY54HpVGtClXc58F+X1JOYmzQUStEFQWi6UAl3/\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-map>"
|
||||
},
|
||||
"bundle": "research-dashboard"
|
||||
}
|
||||
|
|
@ -1808,7 +1808,7 @@
|
|||
"bundle": "upg-neighbor",
|
||||
"scriptUrl": "./upg-neighbor/upg-neighbor.js",
|
||||
"output": "dx-maps/upg-neighbor/upg-neighbor.js",
|
||||
"integrity": "sha384-dnPko47/tcfCHCOlPLCBYFTKcZJme8/Gk/TFXHaOcG8RD0m90YODMHsjpTHvqBBC",
|
||||
"integrity": "sha384-g6NBHTZ945HuiOxk/eGRpMe64qQcAVdFjn0KMeclyAZCwZ3NlIyaKfsOCq55uJab",
|
||||
"elements": [
|
||||
"upg-neighbor"
|
||||
],
|
||||
|
|
@ -1827,8 +1827,8 @@
|
|||
"scriptUrl": "./upg-neighbor/upg-neighbor.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./upg-neighbor/upg-neighbor/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=\"./upg-neighbor/upg-neighbor.js\" integrity=\"sha384-dnPko47/tcfCHCOlPLCBYFTKcZJme8/Gk/TFXHaOcG8RD0m90YODMHsjpTHvqBBC\" 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<upg-neighbor profile-config='{\"profile\":\"upg-neighbor\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></upg-neighbor>",
|
||||
"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=\"./upg-neighbor/upg-neighbor.js\" integrity=\"sha384-dnPko47/tcfCHCOlPLCBYFTKcZJme8/Gk/TFXHaOcG8RD0m90YODMHsjpTHvqBBC\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<upg-neighbor profile-config='{\"profile\":\"upg-neighbor\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></upg-neighbor>"
|
||||
"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=\"./upg-neighbor/upg-neighbor.js\" integrity=\"sha384-g6NBHTZ945HuiOxk/eGRpMe64qQcAVdFjn0KMeclyAZCwZ3NlIyaKfsOCq55uJab\" 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<upg-neighbor profile-config='{\"profile\":\"upg-neighbor\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></upg-neighbor>",
|
||||
"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=\"./upg-neighbor/upg-neighbor.js\" integrity=\"sha384-g6NBHTZ945HuiOxk/eGRpMe64qQcAVdFjn0KMeclyAZCwZ3NlIyaKfsOCq55uJab\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<upg-neighbor profile-config='{\"profile\":\"upg-neighbor\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></upg-neighbor>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <my-upg-100-list-map> custom element. -->
|
||||
<script src="../my-upg-100-list.js" integrity="sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G" crossorigin="anonymous"></script>
|
||||
<script src="../my-upg-100-list.js" integrity="sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <my-upg-100-list-map> custom element. -->
|
||||
<script src="../my-upg-100-list.js" integrity="sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G" crossorigin="anonymous"></script>
|
||||
<script src="../my-upg-100-list.js" integrity="sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <my-upg-100-list-map> custom element. -->
|
||||
<script src="../my-upg-100-list.js" integrity="sha384-WdfjKpu2QooaCQl6+/aV+/UO3J/FlaK/d9J6XhOxy9ej8r/eCl9MY9Kg/FvwXU4G" crossorigin="anonymous"></script>
|
||||
<script src="../my-upg-100-list.js" integrity="sha384-lGHqz/3puE+d+OsmZgC+TmlNYspuG9ifVaIyxyzGyAFf6cXh9wDwSKj9bFvZY4Fo" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <poster-design> custom element. -->
|
||||
<script src="../poster-design.js" integrity="sha384-+awg8qsCdVYBdgB1Ec63JiZ0c2706CsHG6N6yF75nighyxRkPd4U9Mt4lrVHJvXI" crossorigin="anonymous"></script>
|
||||
<script src="../poster-design.js" integrity="sha384-5r/RtSGqs1AaM+gimpy9hYjCwR+fzjHyYX617dMwaFWhydz6dlt09TOyb+i/78Vo" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <poster-design> custom element. -->
|
||||
<script src="../poster-design.js" integrity="sha384-+awg8qsCdVYBdgB1Ec63JiZ0c2706CsHG6N6yF75nighyxRkPd4U9Mt4lrVHJvXI" crossorigin="anonymous"></script>
|
||||
<script src="../poster-design.js" integrity="sha384-5r/RtSGqs1AaM+gimpy9hYjCwR+fzjHyYX617dMwaFWhydz6dlt09TOyb+i/78Vo" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <poster-design> custom element. -->
|
||||
<script src="../poster-design.js" integrity="sha384-+awg8qsCdVYBdgB1Ec63JiZ0c2706CsHG6N6yF75nighyxRkPd4U9Mt4lrVHJvXI" crossorigin="anonymous"></script>
|
||||
<script src="../poster-design.js" integrity="sha384-5r/RtSGqs1AaM+gimpy9hYjCwR+fzjHyYX617dMwaFWhydz6dlt09TOyb+i/78Vo" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <poster-sections> custom element. -->
|
||||
<script src="../../poster-sections.js" integrity="sha384-vjNpH6iKZVNk0Y3j/vJUjy8iINx33MfiIbiwOzPvgUFKmrJg00vRCCbavMPr2rxK" crossorigin="anonymous"></script>
|
||||
<script src="../../poster-sections.js" integrity="sha384-yTqSEf7W1guaDdfAfm5AC3H1dG2wOasVHQdVjnV3XhFbXfukPq3wJokwLOrK4M4j" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <poster-sections> custom element. -->
|
||||
<script src="../../poster-sections.js" integrity="sha384-vjNpH6iKZVNk0Y3j/vJUjy8iINx33MfiIbiwOzPvgUFKmrJg00vRCCbavMPr2rxK" crossorigin="anonymous"></script>
|
||||
<script src="../../poster-sections.js" integrity="sha384-yTqSEf7W1guaDdfAfm5AC3H1dG2wOasVHQdVjnV3XhFbXfukPq3wJokwLOrK4M4j" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <poster-sections> custom element. -->
|
||||
<script src="../../poster-sections.js" integrity="sha384-vjNpH6iKZVNk0Y3j/vJUjy8iINx33MfiIbiwOzPvgUFKmrJg00vRCCbavMPr2rxK" crossorigin="anonymous"></script>
|
||||
<script src="../../poster-sections.js" integrity="sha384-yTqSEf7W1guaDdfAfm5AC3H1dG2wOasVHQdVjnV3XhFbXfukPq3wJokwLOrK4M4j" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <poster-sections> custom element. -->
|
||||
<script src="../../poster-sections.js" integrity="sha384-vjNpH6iKZVNk0Y3j/vJUjy8iINx33MfiIbiwOzPvgUFKmrJg00vRCCbavMPr2rxK" crossorigin="anonymous"></script>
|
||||
<script src="../../poster-sections.js" integrity="sha384-yTqSEf7W1guaDdfAfm5AC3H1dG2wOasVHQdVjnV3XhFbXfukPq3wJokwLOrK4M4j" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue