import fix_attribute_casing from './fix_attribute_casing.js'; import { string_literal } from '../../../utils/stringify.js'; import { b, x } from 'code-red'; import handle_select_value_binding from './handle_select_value_binding.js'; import { namespaces } from '../../../../utils/namespaces.js'; import { boolean_attributes } from '../../../../../shared/boolean_attributes.js'; import { regex_double_quotes } from '../../../../utils/patterns.js'; const non_textlike_input_types = new Set([ 'button', 'checkbox', 'color', 'date', 'datetime-local', 'file', 'hidden', 'image', 'radio', 'range', 'reset', 'submit' ]); export class BaseAttributeWrapper { /** @type {import('../../../nodes/Attribute.js').default} */ node; /** @type {import('./index.js').default} */ parent; /** * @param {import('./index.js').default} parent * @param {import('../../Block.js').default} block * @param {import('../../../nodes/Attribute.js').default} node */ constructor(parent, block, node) { this.node = node; this.parent = parent; if (node.dependencies.size > 0) { block.add_dependencies(node.dependencies); } } /** @param {import('../../Block.js').default} _block */ render(_block) {} } const regex_minus_sign = /-/; const regex_invalid_variable_identifier_characters = /[^a-zA-Z_$]/g; /** @extends BaseAttributeWrapper */ export default class AttributeWrapper extends BaseAttributeWrapper { /** @type {any} */ metadata; /** @type {string} */ name; /** @type {string} */ property_name; /** @type {boolean} */ is_indirectly_bound_value; /** @type {boolean} */ is_src; /** @type {boolean} */ is_select_value_attribute; /** @type {boolean} */ is_input_value; /** @type {boolean} */ should_cache; /** @type {import('estree').Identifier} */ last; constructor(parent, block, node) { super(parent, block, node); if (node.dependencies.size > 0) { // special case —