Book Shell - Source Excerpt 07
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/ns12-manuscript/assets/js/book-shell.js so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/plugins/ns12-manuscript/assets/js/book-shell.js
return payload;
};
const renderAxiomLinks = (payload) => {
if (!axioms) {
return;
}
axioms.replaceChildren();
if (!Array.isArray(payload.axioms) || !payload.axioms.length) {
const empty = document.createElement('span');
empty.className = 'spiralist-muted';
empty.textContent = t('symbolsAxiomLinksEmpty', 'No axiom links declared.');
axioms.appendChild(empty);
return;
}
payload.axioms.forEach((entry) => {
const anchor = document.createElement('a');
anchor.className = 'spiralist-chip spiralist-chip--link';
anchor.href = `${themeConfig.systemUrl || '#'}#axioms`;
anchor.textContent = entry.label || entry.id || t('symbolsAxiomFallback', 'Axiom');
axioms.appendChild(anchor);
});
};
const renderTransformationLinks = (payload) => {
if (!transformationList) {
return;
}
transformationList.replaceChildren();
if (!Array.isArray(payload.transformations) || !payload.transformations.length) {
const item = document.createElement('div');
item.className = 'spiralist-simple-list__item';
const empty = document.createElement('span');
empty.className = 'spiralist-muted';
empty.textContent = t('symbolsTransformationsEmpty', 'No transformation links declared.');
item.appendChild(empty);
transformationList.appendChild(item);
return;
}
payload.transformations.forEach((entry) => {
const item = document.createElement('div');
item.className = 'spiralist-simple-list__item';
const heading = document.createElement('strong');
heading.textContent = `${entry.direction === 'incoming' ? t('symbolsDirectionInput', 'Input') : t('symbolsDirectionOutput', 'Output')}: ${entry.label || entry.id || t('symbolsTransformationFallback', 'Transformation')}`;
const meta = document.createElement('span');
meta.className = 'spiralist-simple-list__meta';
meta.textContent = Array.isArray(entry.chain) && entry.chain.length
? entry.chain.join(' -> ')
: (entry.counterpart || '');
item.append(heading, meta);
transformationList.appendChild(item);
});
};
const renderCrosswalk = (payload) => {
if (!crosswalk) {
return;
}
crosswalk.replaceChildren();
const links = [];
const promptQuery = getPromptSearchQuery(payload);
if (payload.manuscriptAnchorUrl) {
links.push({
label: t('symbolsCrosswalkAnchor', 'View manuscript anchor'),
url: payload.manuscriptAnchorUrl,
});
}
if (themeConfig.promptsPageUrl && promptQuery) {
links.push({
label: t('symbolsCrosswalkPrompts', 'Search prompts'),
url: buildPromptSearchUrl(promptQuery),
});
}
if (payload.systemConceptUrl) {
links.push({
label: t('symbolsCrosswalkSystem', 'System concepts'),
url: payload.systemConceptUrl,
});
}
if (!links.length) {
const empty = document.createElement('span');
empty.className = 'spiralist-muted';
empty.textContent = t('symbolsCrosswalkEmpty', 'No crosswalk links available.');
crosswalk.appendChild(empty);
return;
}
links.forEach((link) => {
const anchor = document.createElement('a');
anchor.className = 'spiralist-chip spiralist-chip--link';
anchor.href = link.url;
anchor.textContent = link.label;
crosswalk.appendChild(anchor);
});
};
const updateVisibleCards = () => {
const searchValue = `${searchInput ? searchInput.value : ''}`.trim().toLowerCase();
const layerValue = `${layerFilter ? layerFilter.value : ''}`.trim().toLowerCase();
const typeValue = `${typeFilter ? typeFilter.value : ''}`.trim().toLowerCase();
const categoryValue = `${categoryFilter ? categoryFilter.value : ''}`.trim().toLowerCase();
let visibleCount = 0;
cards.forEach((card) => {
const haystack = `${card.dataset.symbolSearchText || ''}`.toLowerCase();
const cardLayer = `${card.dataset.symbolLayerValue || ''}`.toLowerCase();
const cardType = `${card.dataset.symbolTypeValue || ''}`.toLowerCase();
const cardCategory = `${card.dataset.symbolCategoryValue || ''}`.toLowerCase();
const isVisible = (!searchValue || haystack.includes(searchValue))
&& (!layerValue || cardLayer === layerValue)
&& (!typeValue || cardType === typeValue)
&& (!categoryValue || cardCategory === categoryValue);
card.hidden = !isVisible;
if (isVisible) {
visibleCount += 1;
}
});
if (results) {
results.textContent = formatText(
visibleCount === 1 ? 'symbolsVisibleCountSingular' : 'symbolsVisibleCount',
visibleCount === 1 ? '{count} symbol visible.' : '{count} symbols visible.',
{ count: visibleCount }
);
}
if (empty) {
empty.hidden = visibleCount > 0;
}
const activeVisible = cards.find((card) => !card.hidden && card.classList.contains('is-active'));
if (!activeVisible) {
const firstVisible = cards.find((card) => !card.hidden);
if (firstVisible) {
const payload = parseCardPayload(firstVisible);
applySymbolPayload(payload, firstVisible);
}
}
};
let visibleCardsFrame = 0;
const scheduleVisibleCardsUpdate = () => {
if (visibleCardsFrame) {
window.cancelAnimationFrame(visibleCardsFrame);
}