1import{Controller}from"@hotwired/stimulus";export default class extends Controller{static targets=["input","container","label","subLabel","helpText"];static values={initialState:{type:String,default:"default"},readonly:{type:Boolean,default:!1},errorMessage:String};connect(){this.readonlyValue||("error"===this.initialStateValue&&this.applyState("error"),this.originalPlaceholder=this.inputTarget.placeholder,this.formElement=this.inputTarget.closest("form"),this.boundValidateInput=this.validateInput.bind(this),this.boundHandleInvalid=this.handleInvalid.bind(this),this.formElement&&this.formElement.addEventListener("submit",this.boundValidateInput),this.inputTarget.addEventListener("invalid",this.boundHandleInvalid))}disconnect(){this.formElement&&this.formElement.removeEventListener("submit",this.boundValidateInput),this.inputTarget.removeEventListener("invalid",this.boundHandleInvalid)}handleInvalid(t){t.preventDefault(),this.applyErrorState()}focusInput(){this.inputTarget.focus()}onFocus(){this.inputTarget.placeholder="",this.hasError()||this.applyState("active")}onBlur(){""===this.inputTarget.value&&(this.inputTarget.placeholder=this.originalPlaceholder),this.hasError()||this.applyState("default")}onInput(){this.hasError()&&this.validateInput()}validateInput(){const t=this.inputTarget,e=this.hasHelpTextTarget?this.helpTextTarget:null;t.checkValidity()?(this.applyState("default"),e&&e.dataset.originalText&&!e.dataset.serverErrors&&(e.textContent=e.dataset.originalText)):this.applyErrorState()}applyErrorState(){const t=this.inputTarget,e=this.hasHelpTextTarget?this.helpTextTarget:null;this.applyState("error");const a=this.errorMessageValue||t.validationMessage;e&&a&&!e.dataset.serverErrors&&(e.dataset.originalText||(e.dataset.originalText=e.textContent),e.textContent=a)}applyState(t){const e=this.containerTarget,a=this.hasLabelTarget?this.labelTarget:null,i=this.hasHelpTextTarget?this.helpTextTarget:null;e.classList.remove("active","error"),a&&a.classList.remove("active");const s=this.hasSubLabelTarget?this.subLabelTarget:null;s&&s.classList.remove("active"),i&&i.classList.remove("active","mds-error"),"active"===t?(e.classList.add("active"),a&&a.classList.add("active"),s&&s.classList.add("active"),i&&i.classList.add("active")):"error"===t&&(e.classList.add("error"),i&&i.classList.add("mds-error"))}hasError(){return this.containerTarget.classList.contains("error")}}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.