bind_group() — svelte Function Reference
Architecture documentation for the bind_group() function in input.js from the svelte codebase.
Entity Profile
Dependency Diagram
graph TD af7a3d2c_ef51_8bd4_b88c_e1d52a36db1e["bind_group()"] 2254d980_5794_d0a4_3609_60f21d662ff4["input.js"] af7a3d2c_ef51_8bd4_b88c_e1d52a36db1e -->|defined in| 2254d980_5794_d0a4_3609_60f21d662ff4 ea5280ff_3b87_42ee_3823_3570b76a5779["push()"] af7a3d2c_ef51_8bd4_b88c_e1d52a36db1e -->|calls| ea5280ff_3b87_42ee_3823_3570b76a5779 140e2114_da40_4679_bc9f_599a89c67e4e["listen_to_event_and_reset_event()"] af7a3d2c_ef51_8bd4_b88c_e1d52a36db1e -->|calls| 140e2114_da40_4679_bc9f_599a89c67e4e 77a42fec_7add_4867_04e0_2f568e3aa152["get_binding_group_value()"] af7a3d2c_ef51_8bd4_b88c_e1d52a36db1e -->|calls| 77a42fec_7add_4867_04e0_2f568e3aa152 7494b934_a3b8_689e_91b6_8435e26461c5["render_effect()"] af7a3d2c_ef51_8bd4_b88c_e1d52a36db1e -->|calls| 7494b934_a3b8_689e_91b6_8435e26461c5 a08b6cc5_af73_1be4_d02f_3113cf8a8305["get()"] af7a3d2c_ef51_8bd4_b88c_e1d52a36db1e -->|calls| a08b6cc5_af73_1be4_d02f_3113cf8a8305 e604925d_22aa_7ddd_2399_07b188b31eb1["is()"] af7a3d2c_ef51_8bd4_b88c_e1d52a36db1e -->|calls| e604925d_22aa_7ddd_2399_07b188b31eb1 20340432_01a2_6741_abf4_60ccab51cdb3["teardown()"] af7a3d2c_ef51_8bd4_b88c_e1d52a36db1e -->|calls| 20340432_01a2_6741_abf4_60ccab51cdb3 2cab0f64_6d19_d981_66e2_d2555c252702["queue_micro_task()"] af7a3d2c_ef51_8bd4_b88c_e1d52a36db1e -->|calls| 2cab0f64_6d19_d981_66e2_d2555c252702 style af7a3d2c_ef51_8bd4_b88c_e1d52a36db1e fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/svelte/src/internal/client/dom/elements/bindings/input.js lines 134–220
export function bind_group(inputs, group_index, input, get, set = get) {
var is_checkbox = input.getAttribute('type') === 'checkbox';
var binding_group = inputs;
// needs to be let or related code isn't treeshaken out if it's always false
let hydration_mismatch = false;
if (group_index !== null) {
for (var index of group_index) {
// @ts-expect-error
binding_group = binding_group[index] ??= [];
}
}
binding_group.push(input);
listen_to_event_and_reset_event(
input,
'change',
() => {
// @ts-ignore
var value = input.__value;
if (is_checkbox) {
value = get_binding_group_value(binding_group, value, input.checked);
}
set(value);
},
// TODO better default value handling
() => set(is_checkbox ? [] : null)
);
render_effect(() => {
var value = get();
// If we are hydrating and the value has since changed, then use the update value
// from the input instead.
if (hydrating && input.defaultChecked !== input.checked) {
hydration_mismatch = true;
return;
}
if (is_checkbox) {
value = value || [];
// @ts-ignore
input.checked = value.includes(input.__value);
} else {
// @ts-ignore
input.checked = is(input.__value, value);
}
});
teardown(() => {
var index = binding_group.indexOf(input);
if (index !== -1) {
binding_group.splice(index, 1);
}
});
if (!pending.has(binding_group)) {
pending.add(binding_group);
queue_micro_task(() => {
// necessary to maintain binding group order in all insertion scenarios
binding_group.sort((a, b) => (a.compareDocumentPosition(b) === 4 ? -1 : 1));
pending.delete(binding_group);
});
}
queue_micro_task(() => {
if (hydration_mismatch) {
var value;
if (is_checkbox) {
value = get_binding_group_value(binding_group, value, input.checked);
} else {
var hydration_input = binding_group.find((input) => input.checked);
// @ts-ignore
value = hydration_input?.__value;
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does bind_group() do?
bind_group() is a function in the svelte codebase, defined in packages/svelte/src/internal/client/dom/elements/bindings/input.js.
Where is bind_group() defined?
bind_group() is defined in packages/svelte/src/internal/client/dom/elements/bindings/input.js at line 134.
What does bind_group() call?
bind_group() calls 8 function(s): get, get_binding_group_value, is, listen_to_event_and_reset_event, push, queue_micro_task, render_effect, teardown.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free