Wall of People Groups: the poster closes on scripture, "The LORD bless you, and keep you.", across the full width
The footer is now scripture only: - the seven passages of the journey (Abraham to the church), unchanged; - a full-width rule, the same as the header's; - Numbers 6:24 from the World English Bible British Edition (public domain; verified at the source), set as its two clauses, "The LORD bless you," / "and keep you.", filling the footer's width; - its reference, and a credit line naming both public-domain translations on the poster. Removed: the long Numbers 6:22-27 block, and the closing sentence (it was our own words, not scripture). The card rows now spread their spare height between them, so the photos fill each sheet. BENEDICTION_FILL is the one number per size that sets how much of the width the verse fills (1 = all of it). Measured on the rendered print, the longer clause fills 98.4% of the text width in en and ar at every size, with nothing overflowing (the em constant comes from that measurement). At 5 x 8 ft a full-width verse costs the per-card verses: the cards go from 1.04 to 0.91 in, with one verse per row; 0.3 there keeps a verse under every card.
This commit is contained in:
parent
315dc92a65
commit
b61cc36492
7 changed files with 97 additions and 98 deletions
|
|
@ -56,11 +56,11 @@ export function planPoster(presetId, n) {
|
|||
const b = P.border
|
||||
const W = P.sheetW - 2 * b
|
||||
// Top of sheet 1: the title + DOXA line, then the prayer-themes table. Bottom of the last sheet: the
|
||||
// priestly blessing, the journey from Abraham to the church and the closing line. All scale with the width.
|
||||
// journey from Abraham to the church, a rule, and the benediction (Numbers 6:24). All scale with the width.
|
||||
// gapH: air between the chart and the first row of cards, and between the last row and the footer (the grid
|
||||
// used to butt against the chart's border).
|
||||
const headH = W * 0.075, tableH = W * 0.17, gapH = W * 0.012
|
||||
const bannerH = headH + tableH + gapH, footerH = footerHeight(W)
|
||||
const bannerH = headH + tableH + gapH, footerH = footerHeight(W, BENEDICTION_FILL[PRESETS[presetId] ? presetId : DEFAULT_PRESET] ?? 1)
|
||||
// Each sheet's content band, in the sheet's own coordinates: y0..y1. The panels give each sheet's content box:
|
||||
// sheet 1 starts below its outer border, the others below their glue band; only the last has a bottom border
|
||||
// (the others' bottom edge is trimmed flat and glued over the next sheet's band).
|
||||
|
|
@ -84,16 +84,18 @@ export function planPoster(presetId, n) {
|
|||
const stripLayout = versePtOf(grid.cw) < MIN_READABLE_PT
|
||||
if (stripLayout) grid = fit((STRIP_PT * 1.35 + 4) * PT) // one line at STRIP_PT, plus air
|
||||
const { cols, cw, ch, rowsPer, strip } = grid
|
||||
// Place cards band by band, row by row; in the strip layout each row's strip sits under it. The rows a band
|
||||
// actually uses are centred in it, so its spare height is shared equally above and below the grid (it used
|
||||
// to pool as one wide gap above the footer).
|
||||
// Place cards band by band, row by row; in the strip layout each row's strip sits under it.
|
||||
const cards = [], strips = []
|
||||
let i = 0, row = 0
|
||||
for (let s = 0; s < bands.length && i < n; s++) {
|
||||
// The spare height goes BETWEEN the rows first (up to a quarter of a row each), so the photos spread to
|
||||
// fill the sheet, and what remains is shared equally above and below.
|
||||
const used = Math.min(rowsPer[s], Math.ceil((n - i) / cols))
|
||||
const top = bands[s].y0 + Math.max(0, (bands[s].y1 - bands[s].y0) - used * (ch + strip)) / 2
|
||||
const slack = Math.max(0, (bands[s].y1 - bands[s].y0) - used * (ch + strip))
|
||||
const rowGap = used > 1 ? Math.min(slack / (used + 1), (ch + strip) * 0.25) : 0
|
||||
const top = bands[s].y0 + (slack - rowGap * (used - 1)) / 2
|
||||
for (let r = 0; r < rowsPer[s] && i < n; r++, row++) {
|
||||
const y = top + r * (ch + strip)
|
||||
const y = top + r * (ch + strip + rowGap)
|
||||
for (let c = 0; c < cols && i < n; c++, i++) cards.push({ i, s, x: b + c * cw, y, w: cw, h: ch })
|
||||
if (strip) strips.push({ row, s, x: b, y: y + ch, w: W, h: strip })
|
||||
}
|
||||
|
|
@ -108,32 +110,37 @@ export function planPoster(presetId, n) {
|
|||
}
|
||||
}
|
||||
|
||||
// The footer's height at content width W (inches), FROM ITS TEXT: the priestly blessing (the small
|
||||
// instruction, three large lines, the small promise), the journey's seven columns (as tall as its longest
|
||||
// passage wraps), and the closing line. Characters are counted at ≈ 0.5 em each, with 12% slack for
|
||||
// word breaks; the footer is never shallower than a fifth of the width. The same font sizes as the CSS.
|
||||
// The footer's height at content width W (inches), FROM ITS TEXT: the journey's seven columns (as tall as
|
||||
// its longest passage wraps), the rule, the benediction's two lines (sized to fill the width), its reference
|
||||
// and the scripture credit. Characters are counted at ≈ 0.5 em each, with 12% slack for word breaks. The
|
||||
// same font sizes as the CSS.
|
||||
// The journey's passages are the long text: never below 6 pt (2 × 3 ft), ~12 pt on the 5 × 8 ft poster, which
|
||||
// keeps the 5 × 8's verse under every card at 6 pt (a larger footer would shrink the cards below it).
|
||||
// ONE inner padding for every block (header, chart cells, footer), so all the text shares the same left and
|
||||
// right edges across the full content width.
|
||||
const padOf = (W) => W * 0.008
|
||||
export const FOOTER_FONTS = (W) => ({ small: W * 0.0065, line: W * 0.012, ref: W * 0.0075, name: W * 0.0062, station: Math.max(6 / 72, W * 0.0034), close: W * 0.0085 })
|
||||
function footerHeight(W) {
|
||||
const F = FOOTER_FONTS(W), gap = W * 0.006
|
||||
// THE BENEDICTION'S WIDTH, per size: the share of the footer's text width its longer clause fills. 1 = the full
|
||||
// width (the brief's "two lines, large, filling the footer width"). The trade-off at 5 × 8 ft, measured with
|
||||
// 2,107 groups: at 1 the footer is 17.3 in deep and the cards 0.87 in, one verse per ROW; at 0.3 the cards
|
||||
// keep a verse UNDER EVERY CARD (1.04 in). Change a size's number here to choose; nothing else needs to move.
|
||||
export const BENEDICTION_FILL = { '3x4ft': 1, '2x3ft': 1, '5x8ft': 1 }
|
||||
// Georgia bold italic, em per character of the longer clause, MEASURED on the rendered print: 0.55 rendered it at
|
||||
// 1.091 of the width (it overflowed the footer), so ≈ 0.60; 0.61 leaves a hair of the padding clear.
|
||||
const BENEDICTION_EM = 0.61
|
||||
export const FOOTER_FONTS = (W, fill = 1) => ({
|
||||
ref: W * 0.0075, name: W * 0.0062, station: Math.max(6 / 72, W * 0.0034), credit: Math.max(6 / 72, W * 0.0042),
|
||||
verse: (fill * (W - 2 * padOf(W))) / (Math.max(...POSTER.benediction.lines.map((l) => l.length)) * BENEDICTION_EM),
|
||||
})
|
||||
function footerHeight(W, fill) {
|
||||
const F = FOOTER_FONTS(W, fill), gap = W * 0.006
|
||||
const lines = (text, width, fs) => Math.max(1, Math.ceil((String(text).length * 0.5 * fs * 1.12) / width))
|
||||
const B = POSTER.blessing
|
||||
const blessH = [...B.intro, ...B.outro].reduce((a, t) => a + lines(t, W - 2 * padOf(W), F.small) * F.small * 1.35, 0)
|
||||
+ B.lines.reduce((a, t) => a + lines(t, W, F.line) * F.line * 1.25, 0) + F.ref * 1.6
|
||||
const colW = (W - 6 * gap) / 7 - W * 0.008
|
||||
const stationH = Math.max(...POSTER.journey.map((v) => lines(v.text, colW, F.station) * F.station * 1.3)) + F.name * 1.6 + F.ref * 1.6 + W * 0.006
|
||||
// the closing line's English sizes its row (its translations run within a few words of it); CLOSING_EN is
|
||||
// declared below, which is fine: this runs when a poster is planned, long after the module has loaded
|
||||
const closeH = lines(CLOSING_EN, W - 2 * padOf(W), F.close) * F.close * 1.35
|
||||
return Math.max(W * 0.2, (blessH + stationH + closeH + W * 0.03) * 1.05)
|
||||
// the seven stations, the rule, the benediction's two lines, its reference and the credit line
|
||||
const verseH = POSTER.benediction.lines.length * F.verse * 1.12 + F.ref * 1.8 + F.credit * 1.6
|
||||
return (stationH + verseH + W * 0.04) * 1.05
|
||||
}
|
||||
|
||||
// The closing line under the footer (agent-written); translated via texts.labels.closing when available.
|
||||
const CLOSING_EN = 'Jesus Christ is the cornerstone, and we are living stones. These people groups are the reward of his suffering. Take up our priestly calling: bless them in his name, and join the global family in prayer.'
|
||||
// The journey's station names (agent-written); translated via texts.labels.journey_<id> when available.
|
||||
const JOURNEY_EN = { called: 'Called', promised: 'Promised', redeemed: 'Redeemed', cornerstone: 'The cornerstone', children: 'Children of Abraham', priesthood: 'A royal priesthood', sent: 'Sent to the lost' }
|
||||
const THEME_EN = { treasure: 'Treasure', mountain: 'Mountain', sea: 'Sea' }
|
||||
|
|
@ -231,7 +238,7 @@ function posterParts(groups, presetId, texts, withCards = true) {
|
|||
const upright = /^(zh|ja|ko)/.test(String(texts.lang || '')) // CJK sidebar labels stand upright
|
||||
const glueHere = texts.glueHere || 'glue here'
|
||||
const f = (v) => v.toFixed(3) + 'in'
|
||||
const W = plan.contentW, FF = FOOTER_FONTS(W) // the footer's sizes: the same numbers footerHeight() plans with
|
||||
const W = plan.contentW, FF = FOOTER_FONTS(W, BENEDICTION_FILL[plan.presetId] ?? 1) // the footer's sizes: the same numbers footerHeight() plans with
|
||||
const vPt = plan.text.versePt, rPt = cardText(plan, '').refPt
|
||||
// The rotated sidebar labels of the chart are sized from their text: the longest word must fit the row's
|
||||
// height (a CJK label stands upright, one em a character; other scripts ≈ 0.84 em a capital: 0.72 for the
|
||||
|
|
@ -268,10 +275,10 @@ function posterParts(groups, presetId, texts, withCards = true) {
|
|||
const s = bd.s
|
||||
const marks = panelChromeHtml(panels, s, { glueHere }) // the glue band (before), the trim line + s / N tag (after)
|
||||
// THE STORY, top to bottom: in Jesus' name → three prayer themes (OT + NT) → every people group →
|
||||
// the priestly blessing → the calling to bless, Abraham to the church with Christ at its centre →
|
||||
// the closing line, at the foundation. Each station's text takes dir="auto": the grid runs right to left
|
||||
// in an RTL locale, while an English verse inside it keeps its punctuation at the end. The same holds for
|
||||
// every scripture, name and reference on the sheet (cards, chart, blessing, closing).
|
||||
// the calling to bless, Abraham to the church with Christ at its centre → the benediction, at the
|
||||
// foundation. Each station's text takes dir="auto": the grid runs right to left in an RTL locale, while an
|
||||
// English verse inside it keeps its punctuation at the end. The same holds for every scripture, name and
|
||||
// reference on the sheet; the benediction and its credit are set left to right, as the English they are.
|
||||
const cell = (v) => `<p class="tv" dir="auto">${esc(v.text)}</p><p class="tr" dir="auto">${esc(v.ref)}</p>`
|
||||
const table = `<div class="themes" dir="${dir}">`
|
||||
+ `<div class="rl rl-h">${railLabel(lab('themesLabel', 'Prayer themes'))}</div>`
|
||||
|
|
@ -288,11 +295,11 @@ function posterParts(groups, presetId, texts, withCards = true) {
|
|||
+ `<div style="height:${f(plan.tableH)}">${table}</div></header>` : ''
|
||||
const foot = bd.footerY != null
|
||||
? `<footer class="ftr" dir="${dir}" style="top:${f(bd.footerY)};height:${f(plan.footerH)}">`
|
||||
+ `<div class="bless">${POSTER.blessing.intro.map((l) => `<p class="bi" dir="auto">${esc(l)}</p>`).join('')}`
|
||||
+ `${POSTER.blessing.lines.map((l) => `<p dir="auto">${esc(l)}</p>`).join('')}`
|
||||
+ `${POSTER.blessing.outro.map((l) => `<p class="bi" dir="auto">${esc(l)}</p>`).join('')}<p class="br" dir="auto">${esc(POSTER.blessing.ref)}</p></div>`
|
||||
+ `<div class="jny">${POSTER.journey.map((v) => `<div class="st${v.centre ? ' ctr' : ''}"><p class="sn" dir="auto">${esc(lab('journey_' + v.id, JOURNEY_EN[v.id]))}</p><p class="sv" dir="auto">${esc(v.text)}</p><p class="sr" dir="auto">${esc(v.ref)}</p></div>`).join('')}</div>`
|
||||
+ `<p class="close" dir="auto">${esc(lab('closing', CLOSING_EN))}</p>`
|
||||
+ `<div class="frule"></div>`
|
||||
+ `<p class="fv" dir="ltr" lang="en">${POSTER.benediction.lines.map(esc).join('<br>')}</p>`
|
||||
+ `<p class="fvref" dir="ltr">${esc(POSTER.benediction.ref)}</p>`
|
||||
+ `<p class="fcredit" dir="ltr" lang="en">${esc(POSTER.benediction.credit)}</p>`
|
||||
+ `</footer>` : ''
|
||||
// STRIP layout: one blessing verse per row, on a strip under the row (the same rotation as the cards').
|
||||
const strips = plan.strips.filter((t) => t.s === s).map((t) => { const v = blessingFor(t.row)
|
||||
|
|
@ -325,18 +332,18 @@ body,.poster{font-family:Georgia,'Times New Roman',serif;color:${INK};-webkit-pr
|
|||
.td .tv{margin:0;font-size:${f(tvFs)};line-height:1.3;font-style:italic;color:#3a362c}
|
||||
.td .tr{margin:${f(W * 0.002)} 0 0;font:700 ${f(W * 0.0055)} ${SANS};letter-spacing:.12em;text-transform:uppercase;color:${ACCENT}}
|
||||
.ftr{position:absolute;left:${f(b)};width:${f(W)};padding:0 ${f(PAD)};display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border-top:.02in solid #C9BFA4}
|
||||
.bless p{margin:0;font-size:${f(FF.line)};line-height:1.25;font-weight:700;font-style:italic;color:#2A2721}
|
||||
.bless p.bi{margin:${f(W * 0.001)} 0;font-size:${f(FF.small)};line-height:1.35;font-weight:400;font-style:italic;color:#6a6450}
|
||||
.bless .br{margin-top:${f(W * 0.002)};font:700 ${f(FF.ref)} ${SANS};letter-spacing:.14em;text-transform:uppercase;color:${ACCENT};font-style:normal}
|
||||
/* Rules run the full content width, like the chart's; the padding belongs to the text. */
|
||||
.jny{display:grid;grid-template-columns:repeat(7,1fr);gap:${f(W * 0.006)};margin:${f(W * 0.01)} ${f(-PAD)} 0;width:${f(W)};align-items:stretch;border-top:.01in solid #D6CCB4;padding-top:${f(W * 0.004)}}
|
||||
.jny{display:grid;grid-template-columns:repeat(7,1fr);gap:${f(W * 0.006)};margin:${f(W * 0.01)} ${f(-PAD)} 0;width:${f(W)};align-items:stretch}
|
||||
.st{display:flex;flex-direction:column;justify-content:flex-start;padding:${f(W * 0.003)} ${f(W * 0.004)}}
|
||||
.st + .st{border-inline-start:.01in solid #D6CCB4}
|
||||
.st .sn{margin:0 0 ${f(W * 0.002)};font:700 ${f(FF.name)} ${SANS};letter-spacing:.08em;text-transform:uppercase;color:#8a8470}
|
||||
.st .sv{margin:0;font-size:${f(FF.station)};font-style:italic;line-height:1.3;color:#4a4636}
|
||||
.st .sr{margin:${f(W * 0.002)} 0 0;font:700 ${f(Math.max(6 / 72, W * 0.0048))} ${SANS};letter-spacing:.1em;text-transform:uppercase;color:${ACCENT}}
|
||||
.st.ctr{background:#F2EFE6;border:.02in solid #cdbf9e}.st.ctr + .st{border-inline-start:0}.st.ctr .sv{font-weight:600;color:#2A2721}.st.ctr .sn{color:${ACCENT}}
|
||||
.close{margin:${f(W * 0.008)} 0 0;font:italic 700 ${f(FF.close)}/1.35 Georgia,'Times New Roman',serif;color:#2A2721}
|
||||
.frule{width:${f(W)};margin:${f(W * 0.012)} ${f(-PAD)} ${f(W * 0.01)};border-top:.015in solid #C9BFA4}
|
||||
.fv{margin:0;font:italic 700 ${f(FF.verse)}/1.12 Georgia,'Times New Roman',serif;color:#2A2721;letter-spacing:-.01em;white-space:nowrap}
|
||||
.fvref{margin:${f(W * 0.004)} 0 0;font:700 ${f(FF.ref)} ${SANS};letter-spacing:.14em;text-transform:uppercase;color:${ACCENT}}
|
||||
.fcredit{margin:${f(W * 0.004)} 0 0;font:${f(FF.credit)}/1.3 ${SANS};color:#8a8470}
|
||||
.vstrip{position:absolute;display:flex;align-items:center;justify-content:center;gap:.6em;font-size:${STRIP_PT}pt;font-style:italic;
|
||||
color:#3a362c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-top:.01in solid #D6CCB4}
|
||||
.vstrip .vref{font:700 .8em ${SANS};letter-spacing:.12em;text-transform:uppercase;color:${ACCENT}}
|
||||
|
|
|
|||
|
|
@ -64,21 +64,14 @@ export const THEMES = THEMES_RAW.map((t) => ({ id: t.id, ot: verse(t.ot), nt: ve
|
|||
|
||||
export const POSTER = {
|
||||
banner: 'Bless the nations in Jesus’ name',
|
||||
// The large footer: the priestly blessing, the WHOLE passage (Numbers 6:22-27, Aaron and Israel
|
||||
// included): the Lord's instruction to Aaron in small type, the three blessing lines large, and the
|
||||
// promise that closes it. Verbatim WEB, its own speech marks kept.
|
||||
blessing: {
|
||||
ref: 'Numbers 6:22–27',
|
||||
intro: [
|
||||
withName('{Name} spoke to Moses, saying,'),
|
||||
'“Speak to Aaron and to his sons, saying, ‘This is how you shall bless the children of Israel.’ You shall tell them,',
|
||||
],
|
||||
lines: [
|
||||
withName('‘{Name} bless you, and keep you.'),
|
||||
withName('{Name} make his face to shine on you, and be gracious to you.'),
|
||||
withName('{Name} lift up his face toward you, and give you peace.’'),
|
||||
],
|
||||
outro: ['“So they shall put my name on the children of Israel; and I will bless them.”'],
|
||||
// The closing benediction, set large across the foot of the poster: Numbers 6:24 in the World English Bible
|
||||
// British Edition (public domain, ebible.org/eng-webbe; read 2026-10-01 via bible.helloao.org eng_webpb),
|
||||
// verbatim "The LORD bless you, and keep you." set as its two clauses. The British Edition reads "the LORD"
|
||||
// where the WEB used elsewhere on the poster reads "Yahweh"; the credit line names both.
|
||||
benediction: {
|
||||
lines: ['The LORD bless you,', 'and keep you.'],
|
||||
ref: 'Numbers 6:24',
|
||||
credit: 'Scripture: Numbers 6:24 from the World English Bible British Edition; all other verses from the World English Bible. Both are in the public domain.',
|
||||
},
|
||||
// The second footer: the calling to bless the nations as a journey, Abraham to the church, with Christ
|
||||
// the cornerstone at its centre (the `centre` station). Each station quotes its WHOLE passage, from the
|
||||
|
|
|
|||
|
|
@ -246,7 +246,6 @@ export default {
|
|||
theme_treasure: this.$t('wall.themeTreasure'),
|
||||
theme_mountain: this.$t('wall.themeMountain'),
|
||||
theme_sea: this.$t('wall.themeSea'),
|
||||
closing: this.$t('wall.posterClosing'),
|
||||
journey_called: this.$t('wall.journeyCalled'),
|
||||
journey_promised: this.$t('wall.journeyPromised'),
|
||||
journey_redeemed: this.$t('wall.journeyRedeemed'),
|
||||
|
|
|
|||
|
|
@ -1537,7 +1537,7 @@
|
|||
"bundle": "wall-of-people-groups",
|
||||
"scriptUrl": "./wall-of-people-groups/wall-of-people-groups.js",
|
||||
"output": "dx-maps/wall-of-people-groups/wall-of-people-groups.js",
|
||||
"integrity": "sha384-L+Eq7fXGEJ7FNkslOlTi/CQkeKIK45tkAUvi4LYNceCJn4+/sOVvjrmP3sDWiYor",
|
||||
"integrity": "sha384-fa35skhhHsPhVFp2WGniSRI7JhsnghiaoLx1G1+pTYmXcxjD5g0E4aSnbeuFdiQM",
|
||||
"elements": [
|
||||
"wall-of-people-groups"
|
||||
],
|
||||
|
|
@ -1557,7 +1557,7 @@
|
|||
"scriptUrl": "./wall-of-people-groups/wall-of-people-groups.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./wall-of-people-groups/wall-of-people-groups/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=\"./wall-of-people-groups/wall-of-people-groups.js\" integrity=\"sha384-L+Eq7fXGEJ7FNkslOlTi/CQkeKIK45tkAUvi4LYNceCJn4+/sOVvjrmP3sDWiYor\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<wall-of-people-groups profile-config='{\"profile\":\"wall-of-people-groups\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></wall-of-people-groups>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./wall-of-people-groups/wall-of-people-groups.js\" integrity=\"sha384-fa35skhhHsPhVFp2WGniSRI7JhsnghiaoLx1G1+pTYmXcxjD5g0E4aSnbeuFdiQM\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<wall-of-people-groups profile-config='{\"profile\":\"wall-of-people-groups\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></wall-of-people-groups>"
|
||||
},
|
||||
"bundle": "wall-of-people-groups"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1537,7 +1537,7 @@
|
|||
"bundle": "wall-of-people-groups",
|
||||
"scriptUrl": "./wall-of-people-groups/wall-of-people-groups.js",
|
||||
"output": "dx-maps/wall-of-people-groups/wall-of-people-groups.js",
|
||||
"integrity": "sha384-L+Eq7fXGEJ7FNkslOlTi/CQkeKIK45tkAUvi4LYNceCJn4+/sOVvjrmP3sDWiYor",
|
||||
"integrity": "sha384-fa35skhhHsPhVFp2WGniSRI7JhsnghiaoLx1G1+pTYmXcxjD5g0E4aSnbeuFdiQM",
|
||||
"elements": [
|
||||
"wall-of-people-groups"
|
||||
],
|
||||
|
|
@ -1557,7 +1557,7 @@
|
|||
"scriptUrl": "./wall-of-people-groups/wall-of-people-groups.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./wall-of-people-groups/wall-of-people-groups/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=\"./wall-of-people-groups/wall-of-people-groups.js\" integrity=\"sha384-L+Eq7fXGEJ7FNkslOlTi/CQkeKIK45tkAUvi4LYNceCJn4+/sOVvjrmP3sDWiYor\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<wall-of-people-groups profile-config='{\"profile\":\"wall-of-people-groups\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></wall-of-people-groups>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./wall-of-people-groups/wall-of-people-groups.js\" integrity=\"sha384-fa35skhhHsPhVFp2WGniSRI7JhsnghiaoLx1G1+pTYmXcxjD5g0E4aSnbeuFdiQM\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<wall-of-people-groups profile-config='{\"profile\":\"wall-of-people-groups\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></wall-of-people-groups>"
|
||||
},
|
||||
"bundle": "wall-of-people-groups"
|
||||
}
|
||||
|
|
|
|||
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 <wall-of-people-groups> custom element. -->
|
||||
<script src="../wall-of-people-groups.js" integrity="sha384-L+Eq7fXGEJ7FNkslOlTi/CQkeKIK45tkAUvi4LYNceCJn4+/sOVvjrmP3sDWiYor" crossorigin="anonymous"></script>
|
||||
<script src="../wall-of-people-groups.js" integrity="sha384-fa35skhhHsPhVFp2WGniSRI7JhsnghiaoLx1G1+pTYmXcxjD5g0E4aSnbeuFdiQM" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
Loading…
Reference in a new issue