PageSourceSearch

https://www.m3aawg.org/themes/custom/aero10/apb/js/apb-placement.js?v=11.4.7

js m3aawg.org collected 2026-09-24 08:25:10 UTC 2,171 bytes, 86 lines download raw bytes

1/*
2 * APB.Placement
3 * Moves Paragraph elements based on Target Placement fields.
4 * Shared by apb.js (initial render) and APB.Editor (live update).
5 */
6
7window.APB = window.APB || {};
8
9APB.Placement = {
10	/**
11	 * Moves a single Paragraph based on its Target Placement settings.
12	 * @param {HTMLElement} element - The Paragraph DOM element to reposition.
13	 */
14	update: function (element) {
15		const DOM = APB.DOM;
16
17		// Get Target Placement values
18		const region = DOM.text(
19			DOM.one(
20				':scope > .field--name-field-apb-target-placement .term-machine-name',
21				element
22			)
23		).trim();
24
25		const locator = DOM.text(
26			DOM.one(
27				':scope > .field--name-field-apb-target-placement .apb-tx-container-locator',
28				element
29			)
30		).trim();
31
32		const method = DOM.text(
33			DOM.one(
34				':scope > .field--name-field-apb-target-placement .apb-tx-insert-method',
35				element
36			)
37		).trim();
38
39		if (!region || !locator) {
40			console.warn('APB.Placement: Missing region or locator.');
41			return;
42		}
43
44		if (region === 'current_position') {
45			// Do nothing if region is set to stay in place
46			return;
47		}
48
49		const target = DOM.one(locator);
50		if (!target) {
51			console.warn(`APB.Placement: Locator "${locator}" not found in DOM.`);
52			return;
53		}
54
55		// Optional: Special region behavior
56		if (region === 'top_region') {
57			const pageTitle = DOM.one('#page-title');
58			if (pageTitle) DOM.addClass(pageTitle, 'no-display');
59		}
60
61		if (region === 'main_content_no_container') {
62			const sectionTitle = DOM.one('.apb-section-title', element);
63			if (sectionTitle) {
64				sectionTitle.innerHTML = `<div class="section-title-inner">${sectionTitle.innerHTML}</div>`;
65			}
66		}
67
68		// Move the element based on insert method
69		switch (method) {
70			case 'insertBefore':
71				target.parentNode.insertBefore(element, target);
72				break;
73			case 'insertAfter':
74				target.parentNode.insertBefore(element, target.nextSibling);
75				break;
76			case 'appendTo':
77				target.appendChild(element);
78				break;
79			default: // 'prependTo' or fallback
80				target.insertBefore(element, target.firstChild);
81				break;
82		}
83
84		//  console.info("APB.Placement updated:", { region, locator, method });
85	},
86};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.