diff --git a/plugin-designs/wall-of-people-groups/src/blessings.js b/plugin-designs/wall-of-people-groups/src/blessings.js new file mode 100644 index 000000000..b6c659ea9 --- /dev/null +++ b/plugin-designs/wall-of-people-groups/src/blessings.js @@ -0,0 +1,73 @@ +/** + * blessings.js — the verses the Wall's BLESS mode prints under each people group, and the poster's + * banner / sub-banner / footer text. + * + * SOURCE: the World English Bible, PUBLIC DOMAIN ("The World English Bible is in the Public Domain. You + * may copy and share it freely." — ebible.org/eng-web). Every text below was extracted mechanically + * from ebible.org/eng-web chapter pages (2026-09-28), never retyped or paraphrased. A card quotes a + * whole verse, or one whole sentence of it (marked "b" in the reference), always with its reference. + * + * THE DIVINE NAME IS ONE SWITCH. The WEB prints "Yahweh"; the WEB British Edition (also public domain) + * prints "the LORD" / "The LORD" in the same places. Texts carry {NAME} (mid-sentence) and {Name} + * (sentence start); change DIVINE_NAME below to switch every verse at once. (If switching, re-verify the + * handful of verses against the British Edition text: it also uses British spelling.) + */ +export const DIVINE_NAME = { mid: 'Yahweh', start: 'Yahweh' } // British Edition: { mid: 'the LORD', start: 'The LORD' } + +const withName = (s) => s.replace(/\{Name\}/g, DIVINE_NAME.start).replace(/\{NAME\}/g, DIVINE_NAME.mid) + +// Blessings spoken over a people, then the nations' praise. Assigned by group index, so a group keeps +// its verse and neighbours alternate. +const VERSES = [ + { ref: 'Numbers 6:24', text: '{Name} bless you, and keep you.' }, + { ref: 'Numbers 6:25', text: '{Name} make his face to shine on you, and be gracious to you.' }, + { ref: 'Numbers 6:26', text: '{Name} lift up his face toward you, and give you peace.' }, + { ref: 'Psalm 134:3', text: 'May {NAME} bless you from Zion, even he who made heaven and earth.' }, + { ref: 'Psalm 115:15', text: 'Blessed are you by {NAME}, who made heaven and earth.' }, + { ref: 'Psalm 29:11', text: '{Name} will give strength to his people. {Name} will bless his people with peace.' }, + { ref: 'Psalm 121:7', text: '{Name} will keep you from all evil. He will keep your soul.' }, + { ref: 'Psalm 121:8', text: '{Name} will keep your going out and your coming in, from this time forward, and forever more.' }, + { ref: 'Psalm 67:1', text: 'May God be merciful to us, bless us, and cause his face to shine on us.' }, + { ref: 'Psalm 67:7', text: 'God will bless us. All the ends of the earth shall fear him.' }, + { ref: 'Psalm 22:27', text: 'All the ends of the earth shall remember and turn to {NAME}. All the relatives of the nations shall worship before you.' }, + { ref: 'Psalm 86:9', text: 'All nations you have made will come and worship before you, Lord. They shall glorify your name.' }, + { ref: 'Psalm 117:1', text: 'Praise {NAME}, all you nations! Extol him, all you peoples!' }, + { ref: 'Psalm 72:17b', text: 'All nations will call him blessed.' }, + { ref: 'Genesis 12:3b', text: 'All the families of the earth will be blessed through you.' }, +] + +/** The verse for the group at index i: { text, ref }. */ +export function blessingFor(i) { + const v = VERSES[((i % VERSES.length) + VERSES.length) % VERSES.length] + return { text: withName(v.text), ref: v.ref } +} +export const BLESSING_COUNT = VERSES.length + +// The poster. The banner is the Driver's own title; the footer verse is his DECIDE (sheet row 99): +// Proverbs 11:11 is recommended (the blessing verse; it says "city"), and Proverbs 14:34 is the +// alternative (the "nation" verse, about righteousness). +export const POSTER = { + banner: 'Bless the nations in Jesus’ name', + subBanner: { ref: 'Proverbs 18:21', text: 'Death and life are in the power of the tongue; those who love it will eat its fruit.' }, + footer: { ref: 'Proverbs 11:11', text: 'By the blessing of the upright, the city is exalted, but it is overthrown by the mouth of the wicked.' }, + footerAlt: { ref: 'Proverbs 14:34', text: 'Righteousness exalts a nation, but sin is a disgrace to any people.' }, +} + +/** Greedy word wrap to at most maxLines lines of ~perLine characters (for SVG/canvas text). */ +export function wrapText(text, perLine, maxLines = 4) { + const words = String(text).split(/\s+/) + const lines = [] + let cur = '' + for (const w of words) { + if (!cur) cur = w + else if ((cur + ' ' + w).length <= perLine) cur += ' ' + w + else { lines.push(cur); cur = w } + } + if (cur) lines.push(cur) + if (lines.length > maxLines) { + const kept = lines.slice(0, maxLines) + kept[maxLines - 1] = kept[maxLines - 1].replace(/\s*\S*$/, '') + '…' + return kept + } + return lines +} diff --git a/plugin-designs/wall-of-people-groups/src/components/PeopleGroupsWall.vue b/plugin-designs/wall-of-people-groups/src/components/PeopleGroupsWall.vue index d3d5cbfbf..33b205f9c 100644 --- a/plugin-designs/wall-of-people-groups/src/components/PeopleGroupsWall.vue +++ b/plugin-designs/wall-of-people-groups/src/components/PeopleGroupsWall.vue @@ -1,7 +1,7 @@