Extract logic for enum providers

6b61abc8edc033c3e5e88e69ec398e70df8305ea

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +10 -8Showing whitespace changes
public/scripts/extensions/stable-diffusion/index.js+10 -8
@@ -3823,6 +3823,8 @@ function applyCommandArguments(args) {
38233823jQuery(async () => {
38243824 await addSDGenButtons();
38253825
3826+ const getSelectEnumProvider = (id, text) => () => Array.from(document.querySelectorAll(`#${id} > [value]`)).map(x => new SlashCommandEnumValue(x.getAttribute('value'), text ? x.textContent : null));
3827+
38263828 SlashCommandParser.addCommandObject(SlashCommand.fromProps({
38273829 name: 'imagine',
38283830 returns: 'URL of the generated image, or an empty string if the generation failed',
@@ -3934,7 +3936,7 @@ jQuery(async () => {
39343936 typeList: [ARGUMENT_TYPE.STRING],
39353937 acceptsMultiple: false,
39363938 forceEnum: true,
3937- enumProvider: () => Array.from(document.querySelectorAll('#sd_model > [value]')).map(o => new SlashCommandEnumValue(o.getAttribute('value'), o.textContent)),
3939+ enumProvider: getSelectEnumProvider('sd_model', true),
39383940 }),
39393941 SlashCommandNamedArgument.fromProps({
39403942 name: 'sampler',
@@ -3943,7 +3945,7 @@ jQuery(async () => {
39433945 typeList: [ARGUMENT_TYPE.STRING],
39443946 acceptsMultiple: false,
39453947 forceEnum: true,
3946- enumProvider: () => Array.from(document.querySelectorAll('#sd_sampler > [value]')).map(o => new SlashCommandEnumValue(o.getAttribute('value'), o.textContent)),
3948+ enumProvider: getSelectEnumProvider('sd_sampler', false),
39473949 }),
39483950 SlashCommandNamedArgument.fromProps({
39493951 name: 'scheduler',
@@ -3952,7 +3954,7 @@ jQuery(async () => {
39523954 typeList: [ARGUMENT_TYPE.STRING],
39533955 acceptsMultiple: false,
39543956 forceEnum: true,
3955- enumProvider: () => Array.from(document.querySelectorAll('#sd_scheduler > [value]')).map(o => new SlashCommandEnumValue(o.getAttribute('value'), o.textContent)),
3957+ enumProvider: getSelectEnumProvider('sd_scheduler', false),
39563958 }),
39573959 SlashCommandNamedArgument.fromProps({
39583960 name: 'vae',
@@ -3961,7 +3963,7 @@ jQuery(async () => {
39613963 typeList: [ARGUMENT_TYPE.STRING],
39623964 acceptsMultiple: false,
39633965 forceEnum: true,
3964- enumProvider: () => Array.from(document.querySelectorAll('#sd_vae > [value]')).map(o => new SlashCommandEnumValue(o.getAttribute('value'), o.textContent)),
3966+ enumProvider: getSelectEnumProvider('sd_vae', false),
39653967 }),
39663968 SlashCommandNamedArgument.fromProps({
39673969 name: 'upscaler',
@@ -3970,7 +3972,7 @@ jQuery(async () => {
39703972 typeList: [ARGUMENT_TYPE.STRING],
39713973 acceptsMultiple: false,
39723974 forceEnum: true,
3973- enumProvider: () => Array.from(document.querySelectorAll('#sd_hr_upscaler > [value]')).map(o => new SlashCommandEnumValue(o.getAttribute('value'), o.textContent)),
3975+ enumProvider: getSelectEnumProvider('sd_hr_upscaler', false),
39743976 }),
39753977 SlashCommandNamedArgument.fromProps({
39763978 name: 'hires',
@@ -4038,7 +4040,7 @@ jQuery(async () => {
40384040 typeList: [ARGUMENT_TYPE.STRING],
40394041 isRequired: false,
40404042 forceEnum: true,
4041- enumProvider: () => Array.from(document.querySelectorAll('#sd_source > [value]')).map(x => new SlashCommandEnumValue(x.getAttribute('value'), x.textContent)),
4043+ enumProvider: getSelectEnumProvider('sd_source', true),
40424044 }),
40434045 ],
40444046 helpString: 'If an argument is provided, change the source of the image generation, e.g. <code>/imagine-source comfy</code>. Returns the current source.',
@@ -4070,7 +4072,7 @@ jQuery(async () => {
40704072 typeList: [ARGUMENT_TYPE.STRING],
40714073 isRequired: false,
40724074 forceEnum: true,
4073- enumProvider: () => Array.from(document.querySelectorAll('#sd_style > [value]')).map(x => new SlashCommandEnumValue(x.getAttribute('value'), x.textContent)),
4075+ enumProvider: getSelectEnumProvider('sd_style', false),
40744076 }),
40754077 ],
40764078 helpString: 'If an argument is provided, change the style of the image generation, e.g. <code>/imagine-style MyStyle</code>. Returns the current style.',
@@ -4097,7 +4099,7 @@ jQuery(async () => {
40974099 description: 'workflow name',
40984100 typeList: [ARGUMENT_TYPE.STRING],
40994101 isRequired: true,
4100- enumProvider: () => Array.from(document.querySelectorAll('#sd_comfy_workflow > [value]')).map(x => x.getAttribute('value')).map(workflow => new SlashCommandEnumValue(workflow)),
4102+ enumProvider: getSelectEnumProvider('sd_comfy_workflow', false),
41014103 }),
41024104 ],
41034105 helpString: '(workflowName) - change the workflow to be used for image generation with ComfyUI, e.g. <pre><code>/imagine-comfy-workflow MyWorkflow</code></pre>',