Extract logic for enum providers
| @@ -3823,6 +3823,8 @@ function applyCommandArguments(args) { | ||
| 3823 | 3823 | jQuery(async () => { |
| 3824 | 3824 | await addSDGenButtons(); |
| 3825 | 3825 | |
| 3826 | + const getSelectEnumProvider = (id, text) => () => Array.from(document.querySelectorAll(`#${id} > [value]`)).map(x => new SlashCommandEnumValue(x.getAttribute('value'), text ? x.textContent : null)); | |
| 3827 | + | |
| 3826 | 3828 | SlashCommandParser.addCommandObject(SlashCommand.fromProps({ |
| 3827 | 3829 | name: 'imagine', |
| 3828 | 3830 | returns: 'URL of the generated image, or an empty string if the generation failed', |
| @@ -3934,7 +3936,7 @@ jQuery(async () => { | ||
| 3934 | 3936 | typeList: [ARGUMENT_TYPE.STRING], |
| 3935 | 3937 | acceptsMultiple: false, |
| 3936 | 3938 | 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), | |
| 3938 | 3940 | }), |
| 3939 | 3941 | SlashCommandNamedArgument.fromProps({ |
| 3940 | 3942 | name: 'sampler', |
| @@ -3943,7 +3945,7 @@ jQuery(async () => { | ||
| 3943 | 3945 | typeList: [ARGUMENT_TYPE.STRING], |
| 3944 | 3946 | acceptsMultiple: false, |
| 3945 | 3947 | 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), | |
| 3947 | 3949 | }), |
| 3948 | 3950 | SlashCommandNamedArgument.fromProps({ |
| 3949 | 3951 | name: 'scheduler', |
| @@ -3952,7 +3954,7 @@ jQuery(async () => { | ||
| 3952 | 3954 | typeList: [ARGUMENT_TYPE.STRING], |
| 3953 | 3955 | acceptsMultiple: false, |
| 3954 | 3956 | 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), | |
| 3956 | 3958 | }), |
| 3957 | 3959 | SlashCommandNamedArgument.fromProps({ |
| 3958 | 3960 | name: 'vae', |
| @@ -3961,7 +3963,7 @@ jQuery(async () => { | ||
| 3961 | 3963 | typeList: [ARGUMENT_TYPE.STRING], |
| 3962 | 3964 | acceptsMultiple: false, |
| 3963 | 3965 | 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), | |
| 3965 | 3967 | }), |
| 3966 | 3968 | SlashCommandNamedArgument.fromProps({ |
| 3967 | 3969 | name: 'upscaler', |
| @@ -3970,7 +3972,7 @@ jQuery(async () => { | ||
| 3970 | 3972 | typeList: [ARGUMENT_TYPE.STRING], |
| 3971 | 3973 | acceptsMultiple: false, |
| 3972 | 3974 | 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), | |
| 3974 | 3976 | }), |
| 3975 | 3977 | SlashCommandNamedArgument.fromProps({ |
| 3976 | 3978 | name: 'hires', |
| @@ -4038,7 +4040,7 @@ jQuery(async () => { | ||
| 4038 | 4040 | typeList: [ARGUMENT_TYPE.STRING], |
| 4039 | 4041 | isRequired: false, |
| 4040 | 4042 | 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), | |
| 4042 | 4044 | }), |
| 4043 | 4045 | ], |
| 4044 | 4046 | 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 () => { | ||
| 4070 | 4072 | typeList: [ARGUMENT_TYPE.STRING], |
| 4071 | 4073 | isRequired: false, |
| 4072 | 4074 | 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), | |
| 4074 | 4076 | }), |
| 4075 | 4077 | ], |
| 4076 | 4078 | 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 () => { | ||
| 4097 | 4099 | description: 'workflow name', |
| 4098 | 4100 | typeList: [ARGUMENT_TYPE.STRING], |
| 4099 | 4101 | 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), | |
| 4101 | 4103 | }), |
| 4102 | 4104 | ], |
| 4103 | 4105 | helpString: '(workflowName) - change the workflow to be used for image generation with ComfyUI, e.g. <pre><code>/imagine-comfy-workflow MyWorkflow</code></pre>', |