Update the token app render hook to also do the combat turn marker source

This commit is contained in:
Oliver 2026-02-01 17:12:30 -07:00
parent cf8c82784b
commit 4d138cbdfe

View file

@ -2,24 +2,43 @@ import { ArtBrowser } from "../apps/ArtBrowser.mjs";
/*
This hook handles adding the button for selecting an image using this module
into the prototype token config and the token-specific config. Handling both
apps with a single hook.
into the prototype token config and the token-specific config. Handling all of
the relevant locations in both apps with a single hook.
*/
Hooks.on(`renderTokenApplication`, (app, form) => {
// Locate where we want to inject the button
/** @type {HTMLElement | undefined} */
const picker = form.querySelector(`file-picker[name="texture.src"]`);
if (!picker) { return };
// Create the button and listener
const button = document.createElement(`button`);
button.type = `button`;
button.classList = `icon fa-solid fa-paintbrush`;
button.addEventListener(`click`, async () => {
const src = await ArtBrowser.select(1);
picker.value = src;
});
// Inject the element into the DOM
picker.insertAdjacentElement(`afterend`, button);
/** @type {HTMLElement | undefined} */
const textureSource = form.querySelector(`file-picker[name="texture.src"]`);
if (textureSource) {
const cloned = button.cloneNode(true);
cloned.addEventListener(`click`, async () => {
const src = await ArtBrowser.select(1);
if (!src) return
textureSource.value = src;
});
textureSource.insertAdjacentElement(`afterend`, cloned);
};
/** @type {HTMLElement | undefined} */
const turnMarkerSource = form.querySelector(`file-picker[name="turnMarker.src"]`);
if (turnMarkerSource) {
const cloned = button.cloneNode(true);
cloned.disabled = turnMarkerSource.disabled;
cloned.addEventListener(`click`, async () => {
const src = await ArtBrowser.select(1);
if (!src) return
turnMarkerSource.value = src;
});
// Ensure that the disabled state stays in sync
const observer = new MutationObserver(() => {
cloned.disabled = turnMarkerSource.disabled;
});
observer.observe(turnMarkerSource, { attributeFilter: [`disabled`] });
turnMarkerSource.insertAdjacentElement(`afterend`, cloned);
};
});