["^ ","~:resource-id",["~:shadow.build.classpath/resource","goog/dom/forms.js"],"~:js","goog.provide(\"goog.dom.forms\");\ngoog.require(\"goog.dom.InputType\");\ngoog.require(\"goog.dom.TagName\");\ngoog.require(\"goog.dom.safe\");\ngoog.require(\"goog.structs.Map\");\ngoog.require(\"goog.window\");\ngoog.dom.forms.submitFormInNewWindow = function(form, opt_submitElement) {\n var formData = goog.dom.forms.getFormDataMap(form);\n var action = form.action;\n var method = form.method;\n if (opt_submitElement) {\n if (goog.dom.InputType.SUBMIT != opt_submitElement.type.toLowerCase()) {\n throw new Error(\"opt_submitElement does not have a valid type.\");\n }\n var submitValue = goog.dom.forms.getValue(opt_submitElement);\n if (submitValue != null) {\n goog.dom.forms.addFormDataToMap_(formData, opt_submitElement.name, submitValue);\n }\n if (opt_submitElement.getAttribute(\"formaction\")) {\n action = opt_submitElement.getAttribute(\"formaction\");\n }\n if (opt_submitElement.getAttribute(\"formmethod\")) {\n method = opt_submitElement.getAttribute(\"formmethod\");\n }\n }\n return goog.dom.forms.submitFormDataInNewWindow(action, method, formData);\n};\ngoog.dom.forms.submitFormDataInNewWindow = function(actionUri, method, formData) {\n var newWin = goog.window.openBlank(\"\", {noreferrer:true});\n if (!newWin) {\n return false;\n }\n var newDocument = newWin.document;\n var newForm = newDocument.createElement(\"form\");\n newForm.method = method;\n goog.dom.safe.setFormElementAction(newForm, actionUri);\n formData.forEach(function(fieldValues, fieldName) {\n for (var i = 0; i < fieldValues.length; i++) {\n var fieldValue = fieldValues[i];\n var newInput = newDocument.createElement(\"input\");\n newInput.name = fieldName;\n newInput.value = fieldValue;\n newInput.type = \"hidden\";\n HTMLFormElement.prototype.appendChild.call(newForm, newInput);\n }\n });\n HTMLFormElement.prototype.submit.call(newForm);\n return true;\n};\ngoog.dom.forms.getFormDataMap = function(form) {\n var map = new goog.structs.Map();\n goog.dom.forms.getFormDataHelper_(form, map, goog.dom.forms.addFormDataToMap_);\n return map;\n};\ngoog.dom.forms.getFormDataString = function(form) {\n var sb = [];\n goog.dom.forms.getFormDataHelper_(form, sb, goog.dom.forms.addFormDataToStringBuffer_);\n return sb.join(\"\\x26\");\n};\ngoog.dom.forms.getFormDataHelper_ = function(form, result, fnAppend) {\n var els = form.elements;\n for (var el, i = 0; el = els.item(i); i++) {\n if (el.form != form || el.disabled || el.tagName == goog.dom.TagName.FIELDSET) {\n continue;\n }\n var name = el.name;\n switch(el.type.toLowerCase()) {\n case goog.dom.InputType.FILE:\n case goog.dom.InputType.SUBMIT:\n case goog.dom.InputType.RESET:\n case goog.dom.InputType.BUTTON:\n break;\n case goog.dom.InputType.SELECT_MULTIPLE:\n var values = goog.dom.forms.getValue(el);\n if (values != null) {\n for (var value, j = 0; value = values[j]; j++) {\n fnAppend(result, name, value);\n }\n }\n break;\n default:\n var value = goog.dom.forms.getValue(el);\n if (value != null) {\n fnAppend(result, name, value);\n }\n }\n }\n var inputs = form.getElementsByTagName(String(goog.dom.TagName.INPUT));\n for (var input, i = 0; input = inputs[i]; i++) {\n if (input.form == form && input.type.toLowerCase() == goog.dom.InputType.IMAGE) {\n name = input.name;\n fnAppend(result, name, input.value);\n fnAppend(result, name + \".x\", \"0\");\n fnAppend(result, name + \".y\", \"0\");\n }\n }\n};\ngoog.dom.forms.addFormDataToMap_ = function(map, name, value) {\n var array = map.get(name);\n if (!array) {\n array = [];\n map.set(name, array);\n }\n array.push(value);\n};\ngoog.dom.forms.addFormDataToStringBuffer_ = function(sb, name, value) {\n sb.push(encodeURIComponent(name) + \"\\x3d\" + encodeURIComponent(value));\n};\ngoog.dom.forms.hasFileInput = function(form) {\n var els = form.elements;\n for (var el, i = 0; el = els[i]; i++) {\n if (!el.disabled && el.type && el.type.toLowerCase() == goog.dom.InputType.FILE) {\n return true;\n }\n }\n return false;\n};\ngoog.dom.forms.setDisabled = function(el, disabled) {\n if (el.tagName == goog.dom.TagName.FORM) {\n var els = el.elements;\n for (var i = 0; el = els.item(i); i++) {\n goog.dom.forms.setDisabled(el, disabled);\n }\n } else {\n if (disabled == true) {\n el.blur();\n }\n el.disabled = disabled;\n }\n};\ngoog.dom.forms.focusAndSelect = function(el) {\n el.focus();\n if (el.select) {\n el.select();\n }\n};\ngoog.dom.forms.hasValue = function(el) {\n var value = goog.dom.forms.getValue(el);\n return !!value;\n};\ngoog.dom.forms.hasValueByName = function(form, name) {\n var value = goog.dom.forms.getValueByName(form, name);\n return !!value;\n};\ngoog.dom.forms.getValue = function(input) {\n var type = input.type;\n if (typeof type === \"string\") {\n var el = input;\n switch(type.toLowerCase()) {\n case goog.dom.InputType.CHECKBOX:\n case goog.dom.InputType.RADIO:\n return goog.dom.forms.getInputChecked_(el);\n case goog.dom.InputType.SELECT_ONE:\n return goog.dom.forms.getSelectSingle_(el);\n case goog.dom.InputType.SELECT_MULTIPLE:\n return goog.dom.forms.getSelectMultiple_(el);\n default:\n }\n }\n return input.value != null ? input.value : null;\n};\ngoog.dom.forms.getValueByName = function(form, name) {\n var els = form.elements[name];\n if (!els) {\n return null;\n } else if (els.type) {\n return goog.dom.forms.getValue(els);\n } else {\n for (var i = 0; i < els.length; i++) {\n var val = goog.dom.forms.getValue(els[i]);\n if (val) {\n return val;\n }\n }\n return null;\n }\n};\ngoog.dom.forms.getInputChecked_ = function(el) {\n return el.checked ? el.value : null;\n};\ngoog.dom.forms.getSelectSingle_ = function(el) {\n var selectedIndex = el.selectedIndex;\n return selectedIndex >= 0 ? el.options[selectedIndex].value : null;\n};\ngoog.dom.forms.getSelectMultiple_ = function(el) {\n var values = [];\n for (var option, i = 0; option = el.options[i]; i++) {\n if (option.selected) {\n values.push(option.value);\n }\n }\n return values.length ? values : null;\n};\ngoog.dom.forms.setValue = function(el, opt_value) {\n var type = el.type;\n switch(typeof type === \"string\" && type.toLowerCase()) {\n case goog.dom.InputType.CHECKBOX:\n case goog.dom.InputType.RADIO:\n goog.dom.forms.setInputChecked_(el, opt_value);\n return;\n case goog.dom.InputType.SELECT_ONE:\n goog.dom.forms.setSelectSingle_(el, opt_value);\n return;\n case goog.dom.InputType.SELECT_MULTIPLE:\n goog.dom.forms.setSelectMultiple_(el, opt_value);\n return;\n default:\n el.value = opt_value != null ? opt_value : \"\";\n }\n};\ngoog.dom.forms.setInputChecked_ = function(el, opt_value) {\n el.checked = opt_value;\n};\ngoog.dom.forms.setSelectSingle_ = function(el, opt_value) {\n el.selectedIndex = -1;\n if (typeof opt_value === \"string\") {\n for (var option, i = 0; option = el.options[i]; i++) {\n if (option.value == opt_value) {\n option.selected = true;\n break;\n }\n }\n }\n};\ngoog.dom.forms.setSelectMultiple_ = function(el, opt_value) {\n if (typeof opt_value === \"string\") {\n opt_value = [opt_value];\n }\n for (var option, i = 0; option = el.options[i]; i++) {\n option.selected = false;\n if (opt_value) {\n for (var value, j = 0; value = opt_value[j]; j++) {\n if (option.value == value) {\n option.selected = true;\n }\n }\n }\n }\n};\n","~:source","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Utilities for manipulating a form and elements.\n *\n * @suppress {strictMissingProperties}\n */\n\ngoog.provide('goog.dom.forms');\n\ngoog.require('goog.dom.InputType');\ngoog.require('goog.dom.TagName');\ngoog.require('goog.dom.safe');\ngoog.require('goog.structs.Map');\ngoog.require('goog.window');\n\n\n/**\n * Submits form data via a new window. This hides references to the parent\n * window and should be used when submitting forms to untrusted 3rd party urls.\n * By default, this uses the action and method of the specified form\n * element. It is possible to override the default action and method if an\n * optional submit element with formaction and/or formmethod attributes is\n * provided.\n * @param {!HTMLFormElement} form The form.\n * @param {!HTMLElement=} opt_submitElement The `