123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- // Utility functions to select text areas the script should work on,
- // including third party options.
- // Supported third party options so far:
- // - Dataset Tag Editor
- // Core text area selectors
- const core = [
- "#txt2img_prompt > label > textarea",
- "#img2img_prompt > label > textarea",
- "#txt2img_neg_prompt > label > textarea",
- "#img2img_neg_prompt > label > textarea"
- ];
- // Third party text area selectors
- const thirdParty = {
- "dataset-tag-editor": {
- "base": "#tab_dataset_tag_editor_interface",
- "hasIds": false,
- "selectors": [
- "Caption of Selected Image",
- "Interrogate Result",
- "Edit Caption",
- "Edit Tags"
- ]
- }
- }
- function getTextAreas() {
- // First get all core text areas
- let textAreas = [...gradioApp().querySelectorAll(core.join(", "))];
-
- for (const [key, entry] of Object.entries(thirdParty)) {
- if (entry.hasIds) { // If the entry has proper ids, we can just select them
- textAreas = textAreas.concat([...gradioApp().querySelectorAll(entry.selectors.join(", "))]);
- } else { // Otherwise, we have to find the text areas by their adjacent labels
- let base = gradioApp().querySelector(entry.base);
-
- // Safety check
- if (!base) continue;
-
- let allTextAreas = [...base.querySelectorAll("textarea")];
-
- // Filter the text areas where the adjacent label matches one of the selectors
- let matchingTextAreas = allTextAreas.filter(ta => [...ta.parentElement.childNodes].some(x => entry.selectors.includes(x.innerText)));
- textAreas = textAreas.concat(matchingTextAreas);
- }
- };
- return textAreas;
- }
- const thirdPartyIdSet = new Set();
- // Get the identifier for the text area to differentiate between positive and negative
- function getTextAreaIdentifier(textArea) {
- let txt2img_p = gradioApp().querySelector('#txt2img_prompt > label > textarea');
- let txt2img_n = gradioApp().querySelector('#txt2img_neg_prompt > label > textarea');
- let img2img_p = gradioApp().querySelector('#img2img_prompt > label > textarea');
- let img2img_n = gradioApp().querySelector('#img2img_neg_prompt > label > textarea');
- let modifier = "";
- switch (textArea) {
- case txt2img_p:
- modifier = ".txt2img.p";
- break;
- case txt2img_n:
- modifier = ".txt2img.n";
- break;
- case img2img_p:
- modifier = ".img2img.p";
- break;
- case img2img_n:
- modifier = ".img2img.n";
- break;
- default:
- // If the text area is not a core text area, it must be a third party text area
- // Add it to the set of third party text areas and get its index as a unique identifier
- if (!thirdPartyIdSet.has(textArea))
- thirdPartyIdSet.add(textArea);
- modifier = `.thirdParty.ta${[...thirdPartyIdSet].indexOf(textArea)}`;
- break;
- }
- return modifier;
- }
|