@hpcc-js/form 3.2.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/__package__.ts","../src/Button.ts","../src/CheckBox.ts","../src/ColorInput.ts","../src/Form.ts","../src/Input.ts","../src/FieldForm.ts","../src/InputRange.ts","../src/OnOff.ts","../src/Radio.ts","../src/Range.ts","../src/Select.ts","../src/Slider.ts","../src/TextArea.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/form\";\nexport const PKG_VERSION = \"3.1.0\";\nexport const BUILD_VERSION = \"3.2.1\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Button extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n this._inputElement[0] = element.append(\"button\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].text(this.value());\n }\n}\nButton.prototype._class += \" form_Button\";\nButton.prototype.implements(IInput.prototype);\n\nexport interface Button {\n name(): string;\n name(_: string): Button;\n label(): string;\n label(_: string): Button;\n value(): any;\n value(_: any): Button;\n validate(): string;\n validate(_: string): Button;\n}\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class CheckBox extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n const checkboxContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = checkboxContainer.append(\"li\").append(\"input\").attr(\"type\", \"checkbox\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nCheckBox.prototype._class += \" form_CheckBox\";\nCheckBox.prototype.implements(IInput.prototype);\n\nexport interface CheckBox {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nCheckBox.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class ColorInput extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"text\");\n this._inputElement[0].classed(\"color-text\", true);\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"color\");\n\n this._inputElement.forEach(function (e, idx) {\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n this._inputElement.forEach(function (e) {\n e.attr(\"name\", context.name());\n });\n\n this._inputElement[0].attr(\"type\", \"text\");\n this._inputElement[1].attr(\"type\", \"color\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[1].property(\"value\", d3Rgb(this.value()).toString());\n\n const bbox = this._inputElement[0].node().getBoundingClientRect();\n this._inputElement[1].style(\"height\", (bbox.height - 2) + \"px\");\n\n }\n}\nColorInput.prototype._class += \" form_ColorInput\";\nColorInput.prototype.implements(IInput.prototype);\n\nexport interface ColorInput {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n}\n","import { d3Event, HTMLWidget, select as d3Select, SVGWidget, Widget, WidgetArray } from \"@hpcc-js/common\";\nimport { Button } from \"./Button.ts\";\n\nimport \"../src/Form.css\";\n\nexport class Form extends HTMLWidget {\n tbody;\n tfoot;\n btntd;\n _controls;\n _maxCols;\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) {\n const retVal = [];\n this.inputsForEach(function (input) {\n retVal.push(input.value());\n });\n return retVal;\n } else {\n this.inputsForEach(function (input, idx) {\n if (_ && _.length > idx) {\n input.value(_[idx]).render();\n }\n });\n }\n return this;\n }\n\n inputsForEach(callback, scope?) {\n let idx = 0;\n this.inputs().forEach(function (inp) {\n const inpArray = inp instanceof WidgetArray ? inp.content() : [inp];\n inpArray.forEach(function (inp2) {\n if (scope) {\n callback.call(scope, inp2, idx++);\n } else {\n callback(inp2, idx++);\n }\n });\n });\n }\n\n inputsMap(): { [name: string]: Widget } {\n const retVal: { [name: string]: Widget } = {};\n this.inputs().forEach(function (inp) {\n retVal[inp.name()] = inp;\n });\n return retVal;\n }\n\n calcMaxColumns() {\n let retVal = 0;\n this.inputs().forEach(function (inputWidget) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n if (inputWidgetArray.length > retVal) {\n retVal = inputWidgetArray.length;\n }\n });\n return retVal;\n }\n\n values(): any;\n values(_: any): this;\n values(_?: any): any | this {\n if (!arguments.length) {\n const dataArr = {};\n this.inputsForEach(function (inp) {\n const type = inp.type ? inp.type() : \"text\";\n const value = inp.value();\n if (value || !this.omitBlank()) {\n switch (type) {\n case \"checkbox\":\n dataArr[inp.name()] = inp.value_exists() ? !!inp.value() : undefined;\n break;\n case \"number\":\n const v = inp.value();\n dataArr[inp.name()] = v === \"\" ? undefined : +v;\n break;\n case \"text\":\n default:\n dataArr[inp.name()] = inp.value_exists() ? inp.value() : undefined;\n break;\n }\n }\n }, this);\n return dataArr;\n } else {\n this.inputsForEach(function (inp) {\n if (_[inp.name()]) {\n inp.value(_[inp.name()]);\n } else if (this.omitBlank()) {\n inp.value(\"\");\n }\n }, this);\n }\n return this;\n }\n\n submit() {\n let isValid = true;\n if (this.validate()) {\n isValid = this.checkValidation();\n }\n if (!this.allowEmptyRequest() && !this.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n })) {\n return;\n }\n this.click(isValid ? this.values() : null, null, isValid);\n }\n\n clear() {\n this.inputsForEach(function (inp) {\n switch (inp.classID()) {\n case \"form_Slider\":\n if (inp.allowRange()) {\n inp.value([inp.low(), inp.low()]).render();\n } else {\n inp.value(inp.low()).render();\n }\n break;\n case \"form_CheckBox\":\n inp.value(false).render();\n break;\n case \"form_Button\":\n /* skip */\n break;\n default:\n inp.value(undefined).render();\n break;\n }\n });\n }\n\n checkValidation() {\n let ret = true;\n const msgArr = [];\n this.inputsForEach(function (inp) {\n if (!inp.isValid()) {\n msgArr.push(\"'\" + inp.label() + \"'\" + \" value is invalid.\");\n }\n });\n if (msgArr.length > 0) {\n alert(msgArr.join(\"\\n\"));\n ret = false;\n }\n return ret;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.on(\"submit\", function () {\n d3Event().preventDefault();\n });\n\n this._placeholderElement.style(\"overflow\", \"auto\");\n const table = element\n .append(\"table\")\n ;\n this.tbody = table.append(\"tbody\");\n this.tfoot = table.append(\"tfoot\");\n this.btntd = this.tfoot.append(\"tr\").append(\"td\")\n .attr(\"colspan\", 2)\n ;\n\n const context = this;\n this._controls = [\n new Button()\n .classed({ default: true })\n .value(\"Submit\")\n .on(\"click\", function () {\n context.submit();\n }, true),\n new Button()\n .value(\"Clear\")\n .on(\"click\", function () {\n context.clear();\n }, true)\n ];\n const rightJust = context.btntd\n .append(\"div\")\n .style(\"float\", \"right\")\n ;\n this._controls.forEach(function (w) {\n const leftJust = rightJust\n .append(\"span\")\n .style(\"float\", \"left\")\n ;\n w.target(leftJust.node()).render();\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._maxCols = this.calcMaxColumns();\n\n const context = this;\n const rows = this.tbody.selectAll(\"tr\").data(this.inputs());\n rows.enter().append(\"tr\")\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.append(\"td\")\n .attr(\"class\", \"prompt\")\n ;\n const input = element2.append(\"td\")\n .attr(\"class\", \"input\")\n ;\n if (idx === inputWidgetArray.length - 1 && inputWidgetArray.length < context._maxCols) {\n input.attr(\"colspan\", (context._maxCols - inputWidgetArray.length + 1) * 2);\n }\n inputWidget2.target(input.node()).render();\n if (inputWidget2 instanceof SVGWidget) {\n const bbox = inputWidget2.element().node().getBBox();\n input.style(\"height\", bbox.height + \"px\");\n inputWidget2.resize().render();\n }\n\n if (inputWidget2._inputElement instanceof Array) {\n inputWidget2._inputElement.forEach(function (e) {\n e.on(\"keyup.form\", function (w) {\n setTimeout(function () {\n\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w2) {\n if (w2._class.indexOf(\"WidgetArray\") !== -1) {\n return w2.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w2.hasValue();\n }));\n }, 100);\n });\n });\n }\n });\n })\n .merge(rows)\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.select(\"td.prompt\")\n .text(inputWidget2.label() + \":\")\n ;\n });\n })\n ;\n rows.each(function (inputWidget, i) {\n if (i === 0 && inputWidget.setFocus) {\n inputWidget.setFocus();\n }\n });\n rows.exit()\n .each(function (inputWidget, i) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n inputWidget2.target(null);\n });\n })\n .remove()\n ;\n\n this.tfoot\n .style(\"display\", this.showSubmit() ? \"table-footer-group\" : \"none\")\n ;\n this.btntd\n .attr(\"colspan\", this._maxCols * 2)\n ;\n\n // Disable Submit unless there is data\n if (!this.allowEmptyRequest()) {\n setTimeout(function () {\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n }));\n }, 100);\n }\n\n }\n\n exit(domNode, element) {\n this.inputsForEach(input => input.target(null));\n super.exit(domNode, element);\n }\n\n click(row, col, sel) {\n }\n}\nForm.prototype._class += \" form_Form\";\n\nexport interface Form {\n validate(): boolean;\n validate(_: boolean): this;\n validate_exists(): boolean;\n inputs(): any[];\n inputs(_: any[]): this;\n inputs_exists(): boolean;\n inputs_reset(): void;\n showSubmit(): boolean;\n showSubmit(_: boolean): this;\n showSubmit_exists(): boolean;\n omitBlank(): boolean;\n omitBlank(_: boolean): this;\n omitBlank_exists(): boolean;\n allowEmptyRequest(): boolean;\n allowEmptyRequest(_: boolean): this;\n allowEmptyRequest_exists(): boolean;\n}\n\nForm.prototype.publish(\"validate\", true, \"boolean\", \"Enable/Disable input validation\");\nForm.prototype.publish(\"inputs\", [], \"widgetArray\", \"Array of input widgets\", null, { render: false });\nForm.prototype.publish(\"showSubmit\", true, \"boolean\", \"Show Submit/Cancel Controls\");\nForm.prototype.publish(\"omitBlank\", false, \"boolean\", \"Drop Blank Fields From Submit\");\nForm.prototype.publish(\"allowEmptyRequest\", false, \"boolean\", \"Allow Blank Form to be Submitted\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { Database, HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Input extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n checked(_) {\n if (!arguments.length) return this._inputElement[0] ? this._inputElement[0].property(\"checked\") : false;\n if (this._inputElement[0]) {\n this._inputElement[0].property(\"checked\", _);\n }\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n const context = this;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0] = element.append(\"button\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n case \"textarea\":\n this._inputElement[0] = element.append(\"textarea\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n default:\n this._inputElement[0] = element.append(\"input\")\n .attr(\"id\", this.id() + \"_input\")\n .attr(\"type\", this.type())\n ;\n break;\n }\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w: Input) {\n w.click(w);\n });\n e.on(\"blur\", function (w: Input) {\n w.blur(w);\n });\n e.on(\"change\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n e.on(\"keyup\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, false);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0].text(this.value());\n break;\n case \"textarea\":\n this._inputElement[0].property(\"value\", this.value());\n break;\n default:\n this._inputElement[0].attr(\"type\", this.type());\n this._inputElement[0].property(\"value\", this.value());\n break;\n }\n }\n\n // IInput Events ---\n blur(w: Input) {\n }\n keyup(w: Input) {\n }\n focus(w: Input) {\n }\n click(w: Input) {\n }\n dblclick(w: Input) {\n }\n change(w: Input, complete: boolean) {\n }\n}\nInput.prototype._class += \" form_Input\";\nInput.prototype.implements(IInput.prototype);\n\nexport interface Input {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\";\n type(_: Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\"): this;\n type_exists(): boolean;\n type_default(): string;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInput.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"string\", \"number\", \"boolean\", \"date\", \"time\", \"hidden\", \"nested\", \"button\", \"checkbox\", \"text\", \"textarea\", \"search\", \"email\", \"datetime\"]);\nInput.prototype.publish(\"inlineLabel\", null, \"string\", \"Input Label\", null, { optional: true });\n","import { Database } from \"@hpcc-js/common\";\nimport { Form } from \"./Form.ts\";\nimport { Input } from \"./Input.ts\";\n\nimport \"../src/Form.css\";\n\nexport class FieldForm extends Form {\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n const retVal = super.fields.apply(this, arguments);\n if (arguments.length) {\n const inpMap = this.inputsMap();\n this.inputs(_.map(f => inpMap[f.id()] || new Input()\n .name(f.id())\n .label(f.label())\n .type(f.type())\n ));\n }\n return retVal;\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) return super.data();\n super.data(_[0]);\n if (_[0]) {\n // Update input \"name\" with the __lparam ids ---\n const inputs = this.inputs();\n const __lparam = _[0][this.columns().length];\n let i = 0;\n for (const key in __lparam) {\n inputs[i].name(key);\n ++i;\n }\n }\n return this;\n }\n\n}\nFieldForm.prototype._class += \" form_FieldForm\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class InputRange extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n _rangeData = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_min\")\n .attr(\"type\", this.type()));\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_max\")\n .attr(\"type\", this.type()));\n\n const context = this;\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context._rangeData[idx] = e.property(\"value\");\n context.value(context._rangeData);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n\n this._rangeData = this.value();\n this._inputElement.forEach(function (e, idx) {\n e\n .attr(\"type\", this.type())\n .property(\"value\", this._rangeData.length > idx ? this._rangeData[idx] : \"\");\n }, this);\n }\n}\nInputRange.prototype._class += \" form_InputRange\";\nInputRange.prototype.implements(IInput.prototype);\n\nexport interface InputRange {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any[];\n value(_: any[]): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInputRange.prototype.publish(\"type\", \"text\", \"set\", \"InputRange type\", [\"number\", \"date\", \"text\", \"time\", \"datetime\", \"hidden\"]);\nInputRange.prototype.publish(\"inlineLabel\", null, \"string\", \"InputRange Label\", null, { optional: true });\nInputRange.prototype.publish(\"value\", [\"\", \"\"], \"array\", \"Input Current Value\", null, { override: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/OnOff.css\";\n\nexport class OnOff extends HTMLWidget {\n _inputElement = [];\n _input;\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.classed(\"onoffswitch\", true);\n const context = this;\n this._input = element.append(\"input\")\n .attr(\"class\", \"onoffswitch-checkbox\")\n .attr(\"type\", \"checkbox\")\n .attr(\"id\", this.id() + \"_onOff\")\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d, idx) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n })\n ;\n const label = element.append(\"label\")\n .attr(\"class\", \"onoffswitch-label\")\n .attr(\"for\", this.id() + \"_onOff\")\n ;\n const inner = label.append(\"div\")\n .attr(\"class\", \"onoffswitch-inner\")\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-offText\")\n .style(\"padding-right\", (this.containerRadius() / 2) + \"px\")\n .text(this.offText())\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-onText\")\n .style(\"padding-left\", (this.containerRadius() / 2) + \"px\")\n .style(\"width\", `calc(100% - ${(this.containerRadius() / 2)}px)`)\n .text(this.onText())\n ;\n label.append(\"div\")\n .attr(\"class\", \"onoffswitch-switch\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._input\n .attr(\"name\", this.name())\n ;\n element\n .style(\"margin-left\", this.marginLeft() + \"px\")\n .style(\"margin-bottom\", this.marginBottom() + \"px\")\n .style(\"width\", this.minWidth() + \"px\")\n ;\n\n const _switch_size = this.minHeight() - (this.gutter() * 4);\n\n element.select(\".onoffswitch-switch\")\n .style(\"height\", _switch_size + \"px\")\n .style(\"width\", _switch_size + \"px\")\n .style(\"top\", (this.gutter() * 2) + 1 + \"px\")\n .style(\"border-radius\", this.switchRadius() + \"px\")\n ;\n element.select(\".onoffswitch-inner\")\n .style(\"min-height\", this.minHeight() + \"px\")\n ;\n element.select(\".onoffswitch-label\")\n .style(\"border-radius\", this.containerRadius() + \"px\")\n ;\n element.select(\".onoffswitch-offText\")\n .style(\"color\", this.offFontColor())\n .style(\"background-color\", this.offColor())\n ;\n element.select(\".onoffswitch-onText\")\n .style(\"color\", this.onFontColor())\n .style(\"background-color\", this.onColor())\n ;\n }\n}\nOnOff.prototype._class += \" form_OnOff\";\nexport interface OnOff {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n marginLeft(): number;\n marginLeft(_: number): this;\n marginBottom(): number;\n marginBottom(_: number): this;\n minWidth(): number;\n minWidth(_: number): this;\n minHeight(): number;\n minHeight(_: number): this;\n gutter(): number;\n gutter(_: number): this;\n offText(): string;\n offText(_: string): this;\n onText(): string;\n onText(_: string): this;\n switchRadius(): number;\n switchRadius(_: number): this;\n containerRadius(): number;\n containerRadius(_: number): this;\n offColor(): string;\n offColor(_: string): this;\n onColor(): string;\n onColor(_: string): this;\n offFontColor(): string;\n offFontColor(_: string): this;\n onFontColor(): string;\n onFontColor(_: string): this;\n\n}\nOnOff.prototype.implements(IInput.prototype);\n\nOnOff.prototype.publish(\"marginLeft\", 0, \"number\", \"Margin left of OnOff\");\nOnOff.prototype.publish(\"marginBottom\", 0, \"number\", \"Margin bottom of OnOff\");\nOnOff.prototype.publish(\"minWidth\", 100, \"number\", \"Minimum width of OnOff (pixels)\");\nOnOff.prototype.publish(\"minHeight\", 20, \"number\", \"Minimum height of OnOff (pixels)\");\nOnOff.prototype.publish(\"gutter\", 1, \"number\", \"Space between switch and border of OnOff (pixels)\");\nOnOff.prototype.publish(\"onText\", \"Save\", \"string\", \"Text to display when 'ON'\");\nOnOff.prototype.publish(\"offText\", \"Properties\", \"string\", \"Text to display when 'OFF'\");\nOnOff.prototype.publish(\"switchRadius\", 10, \"number\", \"Border radius of switch (pixels)\");\nOnOff.prototype.publish(\"containerRadius\", 10, \"number\", \"Border radius of OnOff (pixels)\");\nOnOff.prototype.publish(\"onColor\", \"#2ecc71\", \"html-color\", \"Background color when 'ON'\");\nOnOff.prototype.publish(\"offColor\", \"#ecf0f1\", \"html-color\", \"Background color when 'OFF'\");\nOnOff.prototype.publish(\"onFontColor\", \"#2c3e50\", \"html-color\", \"Font color when 'ON'\");\nOnOff.prototype.publish(\"offFontColor\", \"#7f8c8d\", \"html-color\", \"Font color when 'OFF'\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Radio extends HTMLWidget {\n _inputElement = [];\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n const radioContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = radioContainer.append(\"li\").append(\"input\").attr(\"type\", \"radio\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n}\nRadio.prototype._class += \" form_Radio\";\nRadio.prototype.implements(IInput.prototype);\n\nexport interface Radio {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nRadio.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class Range extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"range\");\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"number\");\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].attr(\"type\", \"range\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[0].attr(\"min\", this.low());\n this._inputElement[0].attr(\"max\", this.high());\n this._inputElement[0].attr(\"step\", this.step());\n this._inputElement[1].attr(\"type\", \"number\");\n this._inputElement[1].property(\"value\", this.value());\n this._inputElement[1].attr(\"min\", this.low());\n this._inputElement[1].attr(\"max\", this.high());\n this._inputElement[1].attr(\"step\", this.step());\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nRange.prototype._class += \" form_Range\";\nRange.prototype.implements(IInput.prototype);\n\nexport interface Range {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n low(): number;\n low(_: number): this;\n low_exists(): boolean;\n high(): number;\n high(_: number): this;\n high_exists(): boolean;\n step(): number;\n step(_: number): this;\n step_exists(): boolean;\n}\n\nRange.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"html-color\", \"number\", \"checkbox\", \"button\", \"select\", \"textarea\", \"date\", \"text\", \"range\", \"search\", \"email\", \"time\", \"datetime\"]);\nRange.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nRange.prototype.publish(\"low\", null, \"number\", \"Minimum value for Range input\");\nRange.prototype.publish(\"high\", null, \"number\", \"Maximum value for Range input\");\nRange.prototype.publish(\"step\", null, \"number\", \"Step value for Range input\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Select extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"select\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this.insertSelectOptions(this.selectOptions());\n this._inputElement[0]\n .property(\"value\", this.value())\n .style(\"max-width\", this.maxWidth_exists() ? this.maxWidth() + \"px\" : null)\n ;\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nSelect.prototype._class += \" form_Select\";\nSelect.prototype.implements(IInput.prototype);\n\nexport interface Select {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n maxWidth(): number;\n maxWidth(_: number): this;\n maxWidth_exists(): boolean;\n}\n\nSelect.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nSelect.prototype.publish(\"maxWidth\", 120, \"number\", \"Width\", null, { optional: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { d3Event, select as d3Select, SVGWidget } from \"@hpcc-js/common\";\nimport { drag as d3Drag } from \"d3-drag\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/Slider.css\";\n\nexport class Slider extends SVGWidget {\n xScale;\n\n moveMode: \"both\" | \"left\" | \"right\";\n moveStartPos: number;\n\n prevValue;\n\n slider;\n\n handleLeft;\n handleLeftPos: number = 0;\n handleLeftStartPos: number;\n\n handleRight;\n handleRightPos: number = 0;\n handleRightStartPos: number;\n\n constructor() {\n super();\n IInput.call(this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.resize({ width: this.width(), height: 50 });\n\n this.xScale = d3ScaleLinear()\n .clamp(true);\n\n this.slider = element.append(\"g\")\n .attr(\"class\", \"slider\")\n ;\n if (this.low() === null && this.high() === null) {\n if (this.lowDatetime() !== null && this.highDatetime() !== null) {\n const time_parser = d3TimeParse(this.timePattern() ? this.timePattern() : \"%Q\");\n this.low(time_parser(this.lowDatetime()).getTime());\n this.high(time_parser(this.highDatetime()).getTime());\n }\n }\n this.slider.append(\"line\")\n .attr(\"class\", \"track\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-inset\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-overlay\")\n .call(d3Drag()\n .on(\"start\", () => {\n const event = d3Event();\n this.moveStartPos = event.x;\n this.handleLeftStartPos = this.handleLeftPos;\n this.handleRightStartPos = this.handleRightPos;\n if (this.allowRange() && this.handleLeftPos <= event.x && event.x <= this.handleRightPos) {\n this.moveMode = \"both\";\n } else if (Math.abs(event.x - this.handleLeftPos) < Math.abs(event.x - this.handleRightPos)) {\n this.moveMode = \"left\";\n } else {\n this.moveMode = \"right\";\n }\n this.moveHandleTo(event.x);\n })\n .on(\"drag\", () => {\n this.moveHandleTo(d3Event().x);\n })\n .on(\"end\", () => {\n this.moveHandleTo(d3Event().x);\n this.data([[this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)]]);\n this.checkChangedValue();\n }));\n\n this.slider.insert(\"g\", \".track-overlay\")\n .attr(\"class\", \"ticks\")\n .attr(\"transform\", `translate(0, ${this.fontSize() + (this.tickHeight() / 2)})`)\n ;\n\n this.handleRight = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n\n this.handleLeft = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n this.xScale\n .domain([this.low(), this.high()])\n .range([0, this.width() - this.padding() * 2])\n ;\n\n this.slider\n .attr(\"transform\", \"translate(\" + (-this.width() / 2 + this.padding()) + \",\" + 0 + \")\");\n\n this.slider.selectAll(\"line.track,line.track-inset,line.track-overlay\")\n .attr(\"x1\", this.xScale.range()[0])\n .attr(\"x2\", this.xScale.range()[1])\n ;\n\n const x_distance = (this.width() - (this.padding() * 2)) / (this.tickCount() - 1);\n\n const tick_text_arr = [];\n if (this.tickDateFormat() !== null && this.timePattern() !== null) {\n const Q_parser = d3TimeParse(\"%Q\");\n const time_formatter = d3TimeFormat(this.tickDateFormat());\n const time_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const date_to_parse = \"\" + (this.low() + (time_segment * i));\n const parsed_date = Q_parser(date_to_parse);\n tick_text_arr.push(time_formatter(parsed_date));\n }\n } else {\n const value_formatter = d3Format(this.tickValueFormat());\n const value_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const tick_value = this.low() + (value_segment * i);\n tick_text_arr.push(value_formatter(tick_value));\n }\n }\n const tickText = this.slider.selectAll(\"g.tick\").data(tick_text_arr);\n const tickTextEnter = tickText.enter().append(\"g\").attr(\"class\", \"tick\");\n\n tickTextEnter.append(\"text\").attr(\"class\", \"tick-text\");\n tickTextEnter.append(\"line\").attr(\"class\", \"tick-line\");\n tickTextEnter\n .merge(tickText)\n .each(function (d, i) {\n const x = x_distance * i;\n\n d3Select(this).select(\"text.tick-text\")\n .style(\"font-size\", context.fontSize())\n .attr(\"x\", function () {\n if (i === 0) return x - 2;\n return i === context.tickCount() - 1 ? x + 2 : x;\n })\n .attr(\"y\", context.tickHeight() + (context.tickOffset() / 2) + context.fontSize())\n .attr(\"text-basline\", \"text-before-edge\")\n .attr(\"text-anchor\", function () {\n if (i === 0) return \"start\";\n return i === context.tickCount() - 1 ? \"end\" : \"middle\";\n })\n .text(() => d)\n ;\n\n d3Select(this).select(\"line.tick-line\")\n .attr(\"x1\", x)\n .attr(\"x2\", x)\n .attr(\"y1\", context.tickOffset() - 1)\n .attr(\"y2\", context.tickOffset() + context.tickHeight())\n .style(\"stroke\", \"#000\")\n .style(\"stroke-width\", 1)\n ;\n });\n this.slider.node().appendChild(this.handleRight.node());\n this.slider.node().appendChild(this.handleLeft.node());\n this.handleLeftPos = this.lowPos();\n this.handleRightPos = this.highPos();\n this.updateHandles();\n this.checkChangedValue();\n }\n\n checkChangedValue() {\n if (this.prevValue !== this.value() && typeof this.prevValue !== \"undefined\") {\n this.change(this);\n }\n this.prevValue = this.value();\n }\n\n updateHandles() {\n this.handleLeft\n .attr(\"transform\", `translate(${this.handleLeftPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"l\"))\n ;\n this.handleRight\n .attr(\"transform\", `translate(${this.handleRightPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"r\"))\n ;\n }\n\n lowPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][0]);\n }\n\n highPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][this.allowRange() ? 1 : 0]);\n }\n\n moveHandleTo(pos) {\n if (this.allowRange()) {\n switch (this.moveMode) {\n case \"both\":\n this.handleLeftPos = this.handleLeftStartPos + pos - this.moveStartPos;\n this.handleRightPos = this.handleRightStartPos + pos - this.moveStartPos;\n break;\n case \"left\":\n this.handleLeftPos = pos;\n if (this.handleLeftPos > this.handleRightPos) {\n this.handleRightPos = this.handleLeftPos;\n }\n break;\n case \"right\":\n this.handleRightPos = pos;\n if (this.handleRightPos < this.handleLeftPos) {\n this.handleLeftPos = this.handleRightPos;\n }\n break;\n }\n } else {\n this.handleLeftPos = this.handleRightPos = pos;\n }\n\n this.handleLeftPos = this.constrain(this.handleLeftPos);\n this.handleRightPos = this.constrain(this.handleRightPos);\n this.value(this.allowRange() ? [this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)] : this.xScale.invert(this.handleLeftPos));\n this.updateHandles();\n }\n\n constrain(pos: number): number {\n const range = this.xScale.range();\n if (pos < range[0]) pos = range[0];\n if (pos > range[1]) pos = range[1];\n return this.nearestStep(pos);\n }\n\n nearestStep(pos) {\n const value = this.xScale.invert(pos);\n return this.xScale(this.low() + Math.round((value - this.low()) / this.step()) * this.step());\n }\n\n handlePath = function (d) {\n const e = +(d === \"r\");\n const x = e ? 1 : -1;\n const xOffset = this.allowRange() ? 0.5 : 0.0;\n const y = 18;\n let retVal = \"M\" + (xOffset * x) + \",\" + y +\n \"A6,6 0 0 \" + e + \" \" + (6.5 * x) + \",\" + (y + 6) +\n \"V\" + (2 * y - 6) +\n \"A6,6 0 0 \" + e + \" \" + (xOffset * x) + \",\" + (2 * y)\n ;\n if (this.allowRange()) {\n retVal += \"Z\" +\n \"M\" + (2.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8) +\n \"M\" + (4.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n } else {\n retVal += \"M\" + (1 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n }\n return retVal;\n };\n\n}\nSlider.prototype._class += \" form_Slider\";\nSlider.prototype.implements(IInput.prototype);\n\nexport interface Slider {\n // IInput ---\n name(): string;\n name(_: string): this;\n change(_: Slider): void;\n\n // Properties ---\n padding(): number;\n padding(_: number): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontColor(): string;\n fontColor(_: string): this;\n allowRange(): boolean;\n allowRange(_: boolean): this;\n low(): number;\n low(_: number): this;\n high(): number;\n high(_: number): this;\n step(): number;\n step(_: number): this;\n lowDatetime(): string;\n lowDatetime(_: string): this;\n highDatetime(): string;\n highDatetime(_: string): this;\n stepDatetime(): number;\n stepDatetime(_: number): this;\n selectionLabel(): string;\n selectionLabel(_: string): this;\n label(): string;\n label(_: string): this;\n value(): any;\n value(_: any): this;\n validate(): string;\n validate(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n tickOffset(): number;\n tickOffset(_: number): this;\n tickHeight(): number;\n tickHeight(_: number): this;\n tickDateFormat(): string;\n tickDateFormat(_: string): this;\n tickValueFormat(): string;\n tickValueFormat(_: string): this;\n timePattern(): string;\n timePattern(_: string): this;\n\n padding_exists(): boolean;\n fontSize_exists(): boolean;\n fontFamily_exists(): boolean;\n fontColor_exists(): boolean;\n allowRange_exists(): boolean;\n low_exists(): boolean;\n step_exists(): boolean;\n high_exists(): boolean;\n selectionLabel_exists(): boolean;\n name_exists(): boolean;\n label_exists(): boolean;\n value_exists(): boolean;\n validate_exists(): boolean;\n}\n\nSlider.prototype.publish(\"padding\", 16, \"number\", \"Outer Padding\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontSize\", 12, \"number\", \"Font Size\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontFamily\", null, \"string\", \"Font Name\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontColor\", null, \"html-color\", \"Font Color\", null, { tags: [\"Basic\"] });\n\nSlider.prototype.publish(\"allowRange\", false, \"boolean\", \"Allow Range Selection\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"low\", null, \"number\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"high\", null, \"number\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"step\", 10, \"number\", \"Step\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"lowDatetime\", null, \"string\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"highDatetime\", null, \"string\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"selectionLabel\", \"\", \"string\", \"Selection Label\", null, { tags: [\"Intermediate\"] });\n\nSlider.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\");\n\nSlider.prototype.publish(\"tickCount\", 10, \"number\");\nSlider.prototype.publish(\"tickOffset\", 5, \"number\");\nSlider.prototype.publish(\"tickHeight\", 8, \"number\");\nSlider.prototype.publish(\"tickDateFormat\", null, \"string\");\nSlider.prototype.publish(\"tickValueFormat\", \",.0f\", \"string\");\n\nconst name = Slider.prototype.name;\nSlider.prototype.name = function (_?: any): any {\n const retVal = name.apply(this, arguments);\n if (arguments.length) {\n const val = _ instanceof Array ? _ : [_];\n SVGWidget.prototype.columns.call(this, val);\n }\n return retVal;\n};\n\nconst value = Slider.prototype.value;\nSlider.prototype.value = function (_?: any): any {\n const retVal = value.apply(this, arguments);\n if (!arguments.length) {\n if (!this.allowRange()) {\n return SVGWidget.prototype.data.call(this)[0][0];\n }\n return SVGWidget.prototype.data.call(this)[0];\n } else {\n SVGWidget.prototype.data.call(this, [this.allowRange() ? _ : [_, _]]);\n }\n return retVal;\n};\n","import { Input } from \"./Input.ts\";\n\nexport class TextArea extends Input {\n constructor() {\n super();\n\n this._tag = \"div\";\n this.type(\"textarea\");\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n calcHeight() {\n return Math.max(this.minHeight_exists() ? this.minHeight() : 0, this.height());\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._inputElement[0]\n .attr(\"rows\", this.rows())\n .attr(\"cols\", this.cols())\n .attr(\"wrap\", this.wrap())\n .attr(\"spellcheck\", this.spellcheck())\n .style(\"height\", this.calcHeight() + \"px\")\n ;\n }\n\n}\nTextArea.prototype._class += \" form_TextArea\";\n\nexport interface TextArea {\n rows(): number;\n rows(_: number): this;\n rows_exists(): boolean;\n cols(): number;\n cols(_: number): this;\n cols_exists(): boolean;\n wrap(): string;\n wrap(_: string): this;\n wrap_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n spellcheck(): boolean;\n spellcheck(_: boolean): this;\n spellcheck_exists(): boolean;\n}\n\nTextArea.prototype.publish(\"rows\", null, \"number\", \"Rows\", null, { optional: true });\nTextArea.prototype.publish(\"cols\", null, \"number\", \"Columns\", null, { optional: true });\nTextArea.prototype.publish(\"wrap\", \"off\", \"set\", \"Wrap\", [\"off\", \"on\"]);\nTextArea.prototype.publish(\"minHeight\", null, \"number\", \"Minimum Height\", null, { optional: true });\nTextArea.prototype.publish(\"spellcheck\", null, \"boolean\", \"Input spell checking\", { optional: true });\n"],"names":["d3Rgb","d3Select","d3ScaleLinear","d3TimeParse","d3Drag","d3TimeFormat","d3Format","value"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/__package__.ts","../src/Button.ts","../src/CheckBox.ts","../src/ColorInput.ts","../src/Form.ts","../src/Input.ts","../src/FieldForm.ts","../src/InputRange.ts","../src/OnOff.ts","../src/Radio.ts","../src/Range.ts","../src/Select.ts","../src/Slider.ts","../src/TextArea.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/form\";\nexport const PKG_VERSION = \"3.1.0\";\nexport const BUILD_VERSION = \"3.2.1\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Button extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n this._inputElement[0] = element.append(\"button\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].text(this.value());\n }\n}\nButton.prototype._class += \" form_Button\";\nButton.prototype.implements(IInput.prototype);\n\nexport interface Button {\n name(): string;\n name(_: string): Button;\n label(): string;\n label(_: string): Button;\n value(): any;\n value(_: any): Button;\n validate(): string;\n validate(_: string): Button;\n}\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class CheckBox extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n const checkboxContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = checkboxContainer.append(\"li\").append(\"input\").attr(\"type\", \"checkbox\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nCheckBox.prototype._class += \" form_CheckBox\";\nCheckBox.prototype.implements(IInput.prototype);\n\nexport interface CheckBox {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nCheckBox.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class ColorInput extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"text\");\n this._inputElement[0].classed(\"color-text\", true);\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"color\");\n\n this._inputElement.forEach(function (e, idx) {\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n this._inputElement.forEach(function (e) {\n e.attr(\"name\", context.name());\n });\n\n this._inputElement[0].attr(\"type\", \"text\");\n this._inputElement[1].attr(\"type\", \"color\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[1].property(\"value\", d3Rgb(this.value()).toString());\n\n const bbox = this._inputElement[0].node().getBoundingClientRect();\n this._inputElement[1].style(\"height\", (bbox.height - 2) + \"px\");\n\n }\n}\nColorInput.prototype._class += \" form_ColorInput\";\nColorInput.prototype.implements(IInput.prototype);\n\nexport interface ColorInput {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n}\n","import { d3Event, HTMLWidget, select as d3Select, SVGWidget, Widget, WidgetArray } from \"@hpcc-js/common\";\nimport { Button } from \"./Button.ts\";\n\nimport \"../src/Form.css\";\n\nexport class Form extends HTMLWidget {\n tbody;\n tfoot;\n btntd;\n _controls;\n _maxCols;\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) {\n const retVal = [];\n this.inputsForEach(function (input) {\n retVal.push(input.value());\n });\n return retVal;\n } else {\n this.inputsForEach(function (input, idx) {\n if (_ && _.length > idx) {\n input.value(_[idx]).render();\n }\n });\n }\n return this;\n }\n\n inputsForEach(callback, scope?) {\n let idx = 0;\n this.inputs().forEach(function (inp) {\n const inpArray = inp instanceof WidgetArray ? inp.content() : [inp];\n inpArray.forEach(function (inp2) {\n if (scope) {\n callback.call(scope, inp2, idx++);\n } else {\n callback(inp2, idx++);\n }\n });\n });\n }\n\n inputsMap(): { [name: string]: Widget } {\n const retVal: { [name: string]: Widget } = {};\n this.inputs().forEach(function (inp) {\n retVal[inp.name()] = inp;\n });\n return retVal;\n }\n\n calcMaxColumns() {\n let retVal = 0;\n this.inputs().forEach(function (inputWidget) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n if (inputWidgetArray.length > retVal) {\n retVal = inputWidgetArray.length;\n }\n });\n return retVal;\n }\n\n values(): any;\n values(_: any): this;\n values(_?: any): any | this {\n if (!arguments.length) {\n const dataArr = {};\n this.inputsForEach(function (inp) {\n const type = inp.type ? inp.type() : \"text\";\n const value = inp.value();\n if (value || !this.omitBlank()) {\n switch (type) {\n case \"checkbox\":\n dataArr[inp.name()] = inp.value_exists() ? !!inp.value() : undefined;\n break;\n case \"number\":\n const v = inp.value();\n dataArr[inp.name()] = v === \"\" ? undefined : +v;\n break;\n case \"text\":\n default:\n dataArr[inp.name()] = inp.value_exists() ? inp.value() : undefined;\n break;\n }\n }\n }, this);\n return dataArr;\n } else {\n this.inputsForEach(function (inp) {\n if (_[inp.name()]) {\n inp.value(_[inp.name()]);\n } else if (this.omitBlank()) {\n inp.value(\"\");\n }\n }, this);\n }\n return this;\n }\n\n submit() {\n let isValid = true;\n if (this.validate()) {\n isValid = this.checkValidation();\n }\n if (!this.allowEmptyRequest() && !this.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n })) {\n return;\n }\n this.click(isValid ? this.values() : null, null, isValid);\n }\n\n clear() {\n this.inputsForEach(function (inp) {\n switch (inp.classID()) {\n case \"form_Slider\":\n if (inp.allowRange()) {\n inp.value([inp.low(), inp.low()]).render();\n } else {\n inp.value(inp.low()).render();\n }\n break;\n case \"form_CheckBox\":\n inp.value(false).render();\n break;\n case \"form_Button\":\n /* skip */\n break;\n default:\n inp.value(undefined).render();\n break;\n }\n });\n }\n\n checkValidation() {\n let ret = true;\n const msgArr = [];\n this.inputsForEach(function (inp) {\n if (!inp.isValid()) {\n msgArr.push(\"'\" + inp.label() + \"'\" + \" value is invalid.\");\n }\n });\n if (msgArr.length > 0) {\n alert(msgArr.join(\"\\n\"));\n ret = false;\n }\n return ret;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.on(\"submit\", function () {\n d3Event().preventDefault();\n });\n\n this._placeholderElement.style(\"overflow\", \"auto\");\n const table = element\n .append(\"table\")\n ;\n this.tbody = table.append(\"tbody\");\n this.tfoot = table.append(\"tfoot\");\n this.btntd = this.tfoot.append(\"tr\").append(\"td\")\n .attr(\"colspan\", 2)\n ;\n\n const context = this;\n this._controls = [\n new Button()\n .classed({ default: true })\n .value(\"Submit\")\n .on(\"click\", function () {\n context.submit();\n }, true),\n new Button()\n .value(\"Clear\")\n .on(\"click\", function () {\n context.clear();\n }, true)\n ];\n const rightJust = context.btntd\n .append(\"div\")\n .style(\"float\", \"right\")\n ;\n this._controls.forEach(function (w) {\n const leftJust = rightJust\n .append(\"span\")\n .style(\"float\", \"left\")\n ;\n w.target(leftJust.node()).render();\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._maxCols = this.calcMaxColumns();\n\n const context = this;\n const rows = this.tbody.selectAll(\"tr\").data(this.inputs());\n rows.enter().append(\"tr\")\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.append(\"td\")\n .attr(\"class\", \"prompt\")\n ;\n const input = element2.append(\"td\")\n .attr(\"class\", \"input\")\n ;\n if (idx === inputWidgetArray.length - 1 && inputWidgetArray.length < context._maxCols) {\n input.attr(\"colspan\", (context._maxCols - inputWidgetArray.length + 1) * 2);\n }\n inputWidget2.target(input.node()).render();\n if (inputWidget2 instanceof SVGWidget) {\n const bbox = inputWidget2.element().node().getBBox();\n input.style(\"height\", bbox.height + \"px\");\n inputWidget2.resize().render();\n }\n\n if (inputWidget2._inputElement instanceof Array) {\n inputWidget2._inputElement.forEach(function (e) {\n e.on(\"keyup.form\", function (w) {\n setTimeout(function () {\n\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w2) {\n if (w2._class.indexOf(\"WidgetArray\") !== -1) {\n return w2.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w2.hasValue();\n }));\n }, 100);\n });\n });\n }\n });\n })\n .merge(rows)\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.select(\"td.prompt\")\n .text(inputWidget2.label() + \":\")\n ;\n });\n })\n ;\n rows.each(function (inputWidget, i) {\n if (i === 0 && inputWidget.setFocus) {\n inputWidget.setFocus();\n }\n });\n rows.exit()\n .each(function (inputWidget, i) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n inputWidget2.target(null);\n });\n })\n .remove()\n ;\n\n this.tfoot\n .style(\"display\", this.showSubmit() ? \"table-footer-group\" : \"none\")\n ;\n this.btntd\n .attr(\"colspan\", this._maxCols * 2)\n ;\n\n // Disable Submit unless there is data\n if (!this.allowEmptyRequest()) {\n setTimeout(function () {\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n }));\n }, 100);\n }\n\n }\n\n exit(domNode, element) {\n this.inputsForEach(input => input.target(null));\n super.exit(domNode, element);\n }\n\n click(row, col, sel) {\n }\n}\nForm.prototype._class += \" form_Form\";\n\nexport interface Form {\n validate(): boolean;\n validate(_: boolean): this;\n validate_exists(): boolean;\n inputs(): any[];\n inputs(_: any[]): this;\n inputs_exists(): boolean;\n inputs_reset(): void;\n showSubmit(): boolean;\n showSubmit(_: boolean): this;\n showSubmit_exists(): boolean;\n omitBlank(): boolean;\n omitBlank(_: boolean): this;\n omitBlank_exists(): boolean;\n allowEmptyRequest(): boolean;\n allowEmptyRequest(_: boolean): this;\n allowEmptyRequest_exists(): boolean;\n}\n\nForm.prototype.publish(\"validate\", true, \"boolean\", \"Enable/Disable input validation\");\nForm.prototype.publish(\"inputs\", [], \"widgetArray\", \"Array of input widgets\", null, { render: false });\nForm.prototype.publish(\"showSubmit\", true, \"boolean\", \"Show Submit/Cancel Controls\");\nForm.prototype.publish(\"omitBlank\", false, \"boolean\", \"Drop Blank Fields From Submit\");\nForm.prototype.publish(\"allowEmptyRequest\", false, \"boolean\", \"Allow Blank Form to be Submitted\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { Database, HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Input extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n checked(_) {\n if (!arguments.length) return this._inputElement[0] ? this._inputElement[0].property(\"checked\") : false;\n if (this._inputElement[0]) {\n this._inputElement[0].property(\"checked\", _);\n }\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n const context = this;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0] = element.append(\"button\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n case \"textarea\":\n this._inputElement[0] = element.append(\"textarea\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n default:\n this._inputElement[0] = element.append(\"input\")\n .attr(\"id\", this.id() + \"_input\")\n .attr(\"type\", this.type())\n ;\n break;\n }\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w: Input) {\n w.click(w);\n });\n e.on(\"blur\", function (w: Input) {\n w.blur(w);\n });\n e.on(\"change\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n e.on(\"keyup\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, false);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0].text(this.value());\n break;\n case \"textarea\":\n this._inputElement[0].property(\"value\", this.value());\n break;\n default:\n this._inputElement[0].attr(\"type\", this.type());\n this._inputElement[0].property(\"value\", this.value());\n break;\n }\n }\n\n // IInput Events ---\n blur(w: Input) {\n }\n keyup(w: Input) {\n }\n focus(w: Input) {\n }\n click(w: Input) {\n }\n dblclick(w: Input) {\n }\n change(w: Input, complete: boolean) {\n }\n}\nInput.prototype._class += \" form_Input\";\nInput.prototype.implements(IInput.prototype);\n\nexport interface Input {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\";\n type(_: Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\"): this;\n type_exists(): boolean;\n type_default(): string;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInput.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"string\", \"number\", \"boolean\", \"date\", \"time\", \"hidden\", \"nested\", \"button\", \"checkbox\", \"text\", \"textarea\", \"search\", \"email\", \"datetime\"]);\nInput.prototype.publish(\"inlineLabel\", null, \"string\", \"Input Label\", null, { optional: true });\n","import { Database } from \"@hpcc-js/common\";\nimport { Form } from \"./Form.ts\";\nimport { Input } from \"./Input.ts\";\n\nimport \"../src/Form.css\";\n\nexport class FieldForm extends Form {\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n const retVal = super.fields.apply(this, arguments);\n if (arguments.length) {\n const inpMap = this.inputsMap();\n this.inputs(_.map(f => inpMap[f.id()] || new Input()\n .name(f.id())\n .label(f.label())\n .type(f.type())\n ));\n }\n return retVal;\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) return super.data();\n super.data(_[0]);\n if (_[0]) {\n // Update input \"name\" with the __lparam ids ---\n const inputs = this.inputs();\n const __lparam = _[0][this.columns().length];\n let i = 0;\n for (const key in __lparam) {\n inputs[i].name(key);\n ++i;\n }\n }\n return this;\n }\n\n}\nFieldForm.prototype._class += \" form_FieldForm\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class InputRange extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n _rangeData = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_min\")\n .attr(\"type\", this.type()));\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_max\")\n .attr(\"type\", this.type()));\n\n const context = this;\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context._rangeData[idx] = e.property(\"value\");\n context.value(context._rangeData);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n\n this._rangeData = this.value();\n this._inputElement.forEach(function (e, idx) {\n e\n .attr(\"type\", this.type())\n .property(\"value\", this._rangeData.length > idx ? this._rangeData[idx] : \"\");\n }, this);\n }\n}\nInputRange.prototype._class += \" form_InputRange\";\nInputRange.prototype.implements(IInput.prototype);\n\nexport interface InputRange {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any[];\n value(_: any[]): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInputRange.prototype.publish(\"type\", \"text\", \"set\", \"InputRange type\", [\"number\", \"date\", \"text\", \"time\", \"datetime\", \"hidden\"]);\nInputRange.prototype.publish(\"inlineLabel\", null, \"string\", \"InputRange Label\", null, { optional: true });\nInputRange.prototype.publish(\"value\", [\"\", \"\"], \"array\", \"Input Current Value\", null, { override: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/OnOff.css\";\n\nexport class OnOff extends HTMLWidget {\n _inputElement = [];\n _input;\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.classed(\"onoffswitch\", true);\n const context = this;\n this._input = element.append(\"input\")\n .attr(\"class\", \"onoffswitch-checkbox\")\n .attr(\"type\", \"checkbox\")\n .attr(\"id\", this.id() + \"_onOff\")\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d, idx) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n })\n ;\n const label = element.append(\"label\")\n .attr(\"class\", \"onoffswitch-label\")\n .attr(\"for\", this.id() + \"_onOff\")\n ;\n const inner = label.append(\"div\")\n .attr(\"class\", \"onoffswitch-inner\")\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-offText\")\n .style(\"padding-right\", (this.containerRadius() / 2) + \"px\")\n .text(this.offText())\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-onText\")\n .style(\"padding-left\", (this.containerRadius() / 2) + \"px\")\n .style(\"width\", `calc(100% - ${(this.containerRadius() / 2)}px)`)\n .text(this.onText())\n ;\n label.append(\"div\")\n .attr(\"class\", \"onoffswitch-switch\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._input\n .attr(\"name\", this.name())\n ;\n element\n .style(\"margin-left\", this.marginLeft() + \"px\")\n .style(\"margin-bottom\", this.marginBottom() + \"px\")\n .style(\"width\", this.minWidth() + \"px\")\n ;\n\n const _switch_size = this.minHeight() - (this.gutter() * 4);\n\n element.select(\".onoffswitch-switch\")\n .style(\"height\", _switch_size + \"px\")\n .style(\"width\", _switch_size + \"px\")\n .style(\"top\", (this.gutter() * 2) + 1 + \"px\")\n .style(\"border-radius\", this.switchRadius() + \"px\")\n ;\n element.select(\".onoffswitch-inner\")\n .style(\"min-height\", this.minHeight() + \"px\")\n ;\n element.select(\".onoffswitch-label\")\n .style(\"border-radius\", this.containerRadius() + \"px\")\n ;\n element.select(\".onoffswitch-offText\")\n .style(\"color\", this.offFontColor())\n .style(\"background-color\", this.offColor())\n ;\n element.select(\".onoffswitch-onText\")\n .style(\"color\", this.onFontColor())\n .style(\"background-color\", this.onColor())\n ;\n }\n}\nOnOff.prototype._class += \" form_OnOff\";\nexport interface OnOff {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n marginLeft(): number;\n marginLeft(_: number): this;\n marginBottom(): number;\n marginBottom(_: number): this;\n minWidth(): number;\n minWidth(_: number): this;\n minHeight(): number;\n minHeight(_: number): this;\n gutter(): number;\n gutter(_: number): this;\n offText(): string;\n offText(_: string): this;\n onText(): string;\n onText(_: string): this;\n switchRadius(): number;\n switchRadius(_: number): this;\n containerRadius(): number;\n containerRadius(_: number): this;\n offColor(): string;\n offColor(_: string): this;\n onColor(): string;\n onColor(_: string): this;\n offFontColor(): string;\n offFontColor(_: string): this;\n onFontColor(): string;\n onFontColor(_: string): this;\n\n}\nOnOff.prototype.implements(IInput.prototype);\n\nOnOff.prototype.publish(\"marginLeft\", 0, \"number\", \"Margin left of OnOff\");\nOnOff.prototype.publish(\"marginBottom\", 0, \"number\", \"Margin bottom of OnOff\");\nOnOff.prototype.publish(\"minWidth\", 100, \"number\", \"Minimum width of OnOff (pixels)\");\nOnOff.prototype.publish(\"minHeight\", 20, \"number\", \"Minimum height of OnOff (pixels)\");\nOnOff.prototype.publish(\"gutter\", 1, \"number\", \"Space between switch and border of OnOff (pixels)\");\nOnOff.prototype.publish(\"onText\", \"Save\", \"string\", \"Text to display when 'ON'\");\nOnOff.prototype.publish(\"offText\", \"Properties\", \"string\", \"Text to display when 'OFF'\");\nOnOff.prototype.publish(\"switchRadius\", 10, \"number\", \"Border radius of switch (pixels)\");\nOnOff.prototype.publish(\"containerRadius\", 10, \"number\", \"Border radius of OnOff (pixels)\");\nOnOff.prototype.publish(\"onColor\", \"#2ecc71\", \"html-color\", \"Background color when 'ON'\");\nOnOff.prototype.publish(\"offColor\", \"#ecf0f1\", \"html-color\", \"Background color when 'OFF'\");\nOnOff.prototype.publish(\"onFontColor\", \"#2c3e50\", \"html-color\", \"Font color when 'ON'\");\nOnOff.prototype.publish(\"offFontColor\", \"#7f8c8d\", \"html-color\", \"Font color when 'OFF'\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Radio extends HTMLWidget {\n _inputElement = [];\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n const radioContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = radioContainer.append(\"li\").append(\"input\").attr(\"type\", \"radio\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n}\nRadio.prototype._class += \" form_Radio\";\nRadio.prototype.implements(IInput.prototype);\n\nexport interface Radio {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nRadio.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class Range extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"range\");\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"number\");\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].attr(\"type\", \"range\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[0].attr(\"min\", this.low());\n this._inputElement[0].attr(\"max\", this.high());\n this._inputElement[0].attr(\"step\", this.step());\n this._inputElement[1].attr(\"type\", \"number\");\n this._inputElement[1].property(\"value\", this.value());\n this._inputElement[1].attr(\"min\", this.low());\n this._inputElement[1].attr(\"max\", this.high());\n this._inputElement[1].attr(\"step\", this.step());\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nRange.prototype._class += \" form_Range\";\nRange.prototype.implements(IInput.prototype);\n\nexport interface Range {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n low(): number;\n low(_: number): this;\n low_exists(): boolean;\n high(): number;\n high(_: number): this;\n high_exists(): boolean;\n step(): number;\n step(_: number): this;\n step_exists(): boolean;\n}\n\nRange.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"html-color\", \"number\", \"checkbox\", \"button\", \"select\", \"textarea\", \"date\", \"text\", \"range\", \"search\", \"email\", \"time\", \"datetime\"]);\nRange.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nRange.prototype.publish(\"low\", null, \"number\", \"Minimum value for Range input\");\nRange.prototype.publish(\"high\", null, \"number\", \"Maximum value for Range input\");\nRange.prototype.publish(\"step\", null, \"number\", \"Step value for Range input\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Select extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"select\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this.insertSelectOptions(this.selectOptions());\n this._inputElement[0]\n .property(\"value\", this.value())\n .style(\"max-width\", this.maxWidth_exists() ? this.maxWidth() + \"px\" : null)\n ;\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nSelect.prototype._class += \" form_Select\";\nSelect.prototype.implements(IInput.prototype);\n\nexport interface Select {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n maxWidth(): number;\n maxWidth(_: number): this;\n maxWidth_exists(): boolean;\n}\n\nSelect.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nSelect.prototype.publish(\"maxWidth\", 120, \"number\", \"Width\", null, { optional: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { d3Event, select as d3Select, SVGWidget } from \"@hpcc-js/common\";\nimport { drag as d3Drag } from \"d3-drag\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/Slider.css\";\n\nexport class Slider extends SVGWidget {\n xScale;\n\n moveMode: \"both\" | \"left\" | \"right\";\n moveStartPos: number;\n\n prevValue;\n\n slider;\n\n handleLeft;\n handleLeftPos: number = 0;\n handleLeftStartPos: number;\n\n handleRight;\n handleRightPos: number = 0;\n handleRightStartPos: number;\n\n constructor() {\n super();\n IInput.call(this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.resize({ width: this.width(), height: 50 });\n\n this.xScale = d3ScaleLinear()\n .clamp(true);\n\n this.slider = element.append(\"g\")\n .attr(\"class\", \"slider\")\n ;\n if (this.low() === null && this.high() === null) {\n if (this.lowDatetime() !== null && this.highDatetime() !== null) {\n const time_parser = d3TimeParse(this.timePattern() ? this.timePattern() : \"%Q\");\n this.low(time_parser(this.lowDatetime()).getTime());\n this.high(time_parser(this.highDatetime()).getTime());\n }\n }\n this.slider.append(\"line\")\n .attr(\"class\", \"track\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-inset\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-overlay\")\n .call(d3Drag()\n .on(\"start\", () => {\n const event = d3Event();\n this.moveStartPos = event.x;\n this.handleLeftStartPos = this.handleLeftPos;\n this.handleRightStartPos = this.handleRightPos;\n if (this.allowRange() && this.handleLeftPos <= event.x && event.x <= this.handleRightPos) {\n this.moveMode = \"both\";\n } else if (Math.abs(event.x - this.handleLeftPos) < Math.abs(event.x - this.handleRightPos)) {\n this.moveMode = \"left\";\n } else {\n this.moveMode = \"right\";\n }\n this.moveHandleTo(event.x);\n })\n .on(\"drag\", () => {\n this.moveHandleTo(d3Event().x);\n })\n .on(\"end\", () => {\n this.moveHandleTo(d3Event().x);\n this.data([[this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)]]);\n this.checkChangedValue();\n }));\n\n this.slider.insert(\"g\", \".track-overlay\")\n .attr(\"class\", \"ticks\")\n .attr(\"transform\", `translate(0, ${this.fontSize() + (this.tickHeight() / 2)})`)\n ;\n\n this.handleRight = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n\n this.handleLeft = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n this.xScale\n .domain([this.low(), this.high()])\n .range([0, this.width() - this.padding() * 2])\n ;\n\n this.slider\n .attr(\"transform\", \"translate(\" + (-this.width() / 2 + this.padding()) + \",\" + 0 + \")\");\n\n this.slider.selectAll(\"line.track,line.track-inset,line.track-overlay\")\n .attr(\"x1\", this.xScale.range()[0])\n .attr(\"x2\", this.xScale.range()[1])\n ;\n\n const x_distance = (this.width() - (this.padding() * 2)) / (this.tickCount() - 1);\n\n const tick_text_arr = [];\n if (this.tickDateFormat() !== null && this.timePattern() !== null) {\n const Q_parser = d3TimeParse(\"%Q\");\n const time_formatter = d3TimeFormat(this.tickDateFormat());\n const time_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const date_to_parse = \"\" + (this.low() + (time_segment * i));\n const parsed_date = Q_parser(date_to_parse);\n tick_text_arr.push(time_formatter(parsed_date));\n }\n } else {\n const value_formatter = d3Format(this.tickValueFormat());\n const value_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const tick_value = this.low() + (value_segment * i);\n tick_text_arr.push(value_formatter(tick_value));\n }\n }\n const tickText = this.slider.selectAll(\"g.tick\").data(tick_text_arr);\n const tickTextEnter = tickText.enter().append(\"g\").attr(\"class\", \"tick\");\n\n tickTextEnter.append(\"text\").attr(\"class\", \"tick-text\");\n tickTextEnter.append(\"line\").attr(\"class\", \"tick-line\");\n tickTextEnter\n .merge(tickText)\n .each(function (d, i) {\n const x = x_distance * i;\n\n d3Select(this).select(\"text.tick-text\")\n .style(\"font-size\", context.fontSize())\n .attr(\"x\", function () {\n if (i === 0) return x - 2;\n return i === context.tickCount() - 1 ? x + 2 : x;\n })\n .attr(\"y\", context.tickHeight() + (context.tickOffset() / 2) + context.fontSize())\n .attr(\"text-basline\", \"text-before-edge\")\n .attr(\"text-anchor\", function () {\n if (i === 0) return \"start\";\n return i === context.tickCount() - 1 ? \"end\" : \"middle\";\n })\n .text(() => d)\n ;\n\n d3Select(this).select(\"line.tick-line\")\n .attr(\"x1\", x)\n .attr(\"x2\", x)\n .attr(\"y1\", context.tickOffset() - 1)\n .attr(\"y2\", context.tickOffset() + context.tickHeight())\n .style(\"stroke\", \"#000\")\n .style(\"stroke-width\", 1)\n ;\n });\n this.slider.node().appendChild(this.handleRight.node());\n this.slider.node().appendChild(this.handleLeft.node());\n this.handleLeftPos = this.lowPos();\n this.handleRightPos = this.highPos();\n this.updateHandles();\n this.checkChangedValue();\n }\n\n checkChangedValue() {\n if (this.prevValue !== this.value() && typeof this.prevValue !== \"undefined\") {\n this.change(this);\n }\n this.prevValue = this.value();\n }\n\n updateHandles() {\n this.handleLeft\n .attr(\"transform\", `translate(${this.handleLeftPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"l\"))\n ;\n this.handleRight\n .attr(\"transform\", `translate(${this.handleRightPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"r\"))\n ;\n }\n\n lowPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][0]);\n }\n\n highPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][this.allowRange() ? 1 : 0]);\n }\n\n moveHandleTo(pos) {\n if (this.allowRange()) {\n switch (this.moveMode) {\n case \"both\":\n this.handleLeftPos = this.handleLeftStartPos + pos - this.moveStartPos;\n this.handleRightPos = this.handleRightStartPos + pos - this.moveStartPos;\n break;\n case \"left\":\n this.handleLeftPos = pos;\n if (this.handleLeftPos > this.handleRightPos) {\n this.handleRightPos = this.handleLeftPos;\n }\n break;\n case \"right\":\n this.handleRightPos = pos;\n if (this.handleRightPos < this.handleLeftPos) {\n this.handleLeftPos = this.handleRightPos;\n }\n break;\n }\n } else {\n this.handleLeftPos = this.handleRightPos = pos;\n }\n\n this.handleLeftPos = this.constrain(this.handleLeftPos);\n this.handleRightPos = this.constrain(this.handleRightPos);\n this.value(this.allowRange() ? [this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)] : this.xScale.invert(this.handleLeftPos));\n this.updateHandles();\n }\n\n constrain(pos: number): number {\n const range = this.xScale.range();\n if (pos < range[0]) pos = range[0];\n if (pos > range[1]) pos = range[1];\n return this.nearestStep(pos);\n }\n\n nearestStep(pos) {\n const value = this.xScale.invert(pos);\n return this.xScale(this.low() + Math.round((value - this.low()) / this.step()) * this.step());\n }\n\n handlePath = function (d) {\n const e = +(d === \"r\");\n const x = e ? 1 : -1;\n const xOffset = this.allowRange() ? 0.5 : 0.0;\n const y = 18;\n let retVal = \"M\" + (xOffset * x) + \",\" + y +\n \"A6,6 0 0 \" + e + \" \" + (6.5 * x) + \",\" + (y + 6) +\n \"V\" + (2 * y - 6) +\n \"A6,6 0 0 \" + e + \" \" + (xOffset * x) + \",\" + (2 * y)\n ;\n if (this.allowRange()) {\n retVal += \"Z\" +\n \"M\" + (2.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8) +\n \"M\" + (4.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n } else {\n retVal += \"M\" + (1 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n }\n return retVal;\n };\n\n}\nSlider.prototype._class += \" form_Slider\";\nSlider.prototype.implements(IInput.prototype);\n\nexport interface Slider {\n // IInput ---\n name(): string;\n name(_: string): this;\n change(_: Slider): void;\n\n // Properties ---\n padding(): number;\n padding(_: number): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontColor(): string;\n fontColor(_: string): this;\n allowRange(): boolean;\n allowRange(_: boolean): this;\n low(): number;\n low(_: number): this;\n high(): number;\n high(_: number): this;\n step(): number;\n step(_: number): this;\n lowDatetime(): string;\n lowDatetime(_: string): this;\n highDatetime(): string;\n highDatetime(_: string): this;\n stepDatetime(): number;\n stepDatetime(_: number): this;\n selectionLabel(): string;\n selectionLabel(_: string): this;\n label(): string;\n label(_: string): this;\n value(): any;\n value(_: any): this;\n validate(): string;\n validate(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n tickOffset(): number;\n tickOffset(_: number): this;\n tickHeight(): number;\n tickHeight(_: number): this;\n tickDateFormat(): string;\n tickDateFormat(_: string): this;\n tickValueFormat(): string;\n tickValueFormat(_: string): this;\n timePattern(): string;\n timePattern(_: string): this;\n\n padding_exists(): boolean;\n fontSize_exists(): boolean;\n fontFamily_exists(): boolean;\n fontColor_exists(): boolean;\n allowRange_exists(): boolean;\n low_exists(): boolean;\n step_exists(): boolean;\n high_exists(): boolean;\n selectionLabel_exists(): boolean;\n name_exists(): boolean;\n label_exists(): boolean;\n value_exists(): boolean;\n validate_exists(): boolean;\n}\n\nSlider.prototype.publish(\"padding\", 16, \"number\", \"Outer Padding\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontSize\", 12, \"number\", \"Font Size\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontFamily\", null, \"string\", \"Font Name\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontColor\", null, \"html-color\", \"Font Color\", null, { tags: [\"Basic\"] });\n\nSlider.prototype.publish(\"allowRange\", false, \"boolean\", \"Allow Range Selection\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"low\", null, \"number\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"high\", null, \"number\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"step\", 10, \"number\", \"Step\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"lowDatetime\", null, \"string\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"highDatetime\", null, \"string\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"selectionLabel\", \"\", \"string\", \"Selection Label\", null, { tags: [\"Intermediate\"] });\n\nSlider.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\");\n\nSlider.prototype.publish(\"tickCount\", 10, \"number\");\nSlider.prototype.publish(\"tickOffset\", 5, \"number\");\nSlider.prototype.publish(\"tickHeight\", 8, \"number\");\nSlider.prototype.publish(\"tickDateFormat\", null, \"string\");\nSlider.prototype.publish(\"tickValueFormat\", \",.0f\", \"string\");\n\nconst name = Slider.prototype.name;\nSlider.prototype.name = function (_?: any): any {\n const retVal = name.apply(this, arguments);\n if (arguments.length) {\n const val = _ instanceof Array ? _ : [_];\n SVGWidget.prototype.columns.call(this, val);\n }\n return retVal;\n};\n\nconst value = Slider.prototype.value;\nSlider.prototype.value = function (_?: any): any {\n const retVal = value.apply(this, arguments);\n if (!arguments.length) {\n if (!this.allowRange()) {\n return SVGWidget.prototype.data.call(this)[0][0];\n }\n return SVGWidget.prototype.data.call(this)[0];\n } else {\n SVGWidget.prototype.data.call(this, [this.allowRange() ? _ : [_, _]]);\n }\n return retVal;\n};\n","import { Input } from \"./Input.ts\";\n\nexport class TextArea extends Input {\n constructor() {\n super();\n\n this._tag = \"div\";\n this.type(\"textarea\");\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n calcHeight() {\n return Math.max(this.minHeight_exists() ? this.minHeight() : 0, this.height());\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._inputElement[0]\n .attr(\"rows\", this.rows())\n .attr(\"cols\", this.cols())\n .attr(\"wrap\", this.wrap())\n .attr(\"spellcheck\", this.spellcheck())\n .style(\"height\", this.calcHeight() + \"px\")\n ;\n }\n\n}\nTextArea.prototype._class += \" form_TextArea\";\n\nexport interface TextArea {\n rows(): number;\n rows(_: number): this;\n rows_exists(): boolean;\n cols(): number;\n cols(_: number): this;\n cols_exists(): boolean;\n wrap(): string;\n wrap(_: string): this;\n wrap_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n spellcheck(): boolean;\n spellcheck(_: boolean): this;\n spellcheck_exists(): boolean;\n}\n\nTextArea.prototype.publish(\"rows\", null, \"number\", \"Rows\", null, { optional: true });\nTextArea.prototype.publish(\"cols\", null, \"number\", \"Columns\", null, { optional: true });\nTextArea.prototype.publish(\"wrap\", \"off\", \"set\", \"Wrap\", [\"off\", \"on\"]);\nTextArea.prototype.publish(\"minHeight\", null, \"number\", \"Minimum Height\", null, { optional: true });\nTextArea.prototype.publish(\"spellcheck\", null, \"boolean\", \"Input spell checking\", { optional: true });\n"],"names":["d3Rgb","d3Select","d3ScaleLinear","d3TimeParse","d3Drag","d3TimeFormat","d3Format","value"],"mappings":";;;;;AAAO,MAAM,WAAW,iBACX,cAAc,SACd,gBAAgB;ACGtB,MAAM,eAAe,WAAW;AAAA,EAGnC,cAAc;AACJ,UAAA;AAHV,yCAAgB,CAAC;AAIb,WAAO,KAAK,IAAI,GAEhB,KAAK,OAAO;AAAA,EAAA;AAAA,EAGhB,MAAM,SAAS,SAAS;AACd,UAAA,MAAM,SAAS,OAAO;AAC5B,UAAM,UAAU;AAChB,SAAK,cAAc,CAAC,IAAI,QAAQ,OAAO,QAAQ,EAC1C,KAAK,QAAQ,KAAK,KAAM,CAAA,EACxB,GAAG,SAAS,SAAU,GAAG;AACtB,QAAE,MAAM,CAAC;AAAA,IACZ,CAAA,EACA,GAAG,QAAQ,SAAU,GAAG;AACrB,QAAE,KAAK,CAAC;AAAA,IACX,CAAA,EACA,GAAG,UAAU,SAAU,GAAG;AACf,cAAA,MAAM,CAAC,QAAQ,cAAc,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,GACxD,EAAA,OAAO,GAAG,EAAI;AAAA,IAAA,CACnB;AAAA,EAAA;AAAA,EAIT,OAAO,SAAS,SAAS;AACf,UAAA,OAAO,SAAS,OAAO,GAE7B,KAAK,cAAc,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA,EAAA;AAE/C;AACA,OAAO,UAAU,UAAU;AAC3B,OAAO,UAAU,WAAW,OAAO,SAAS;ACnCrC,MAAM,iBAAiB,WAAW;AAAA,EAGrC,cAAc;AACJ,UAAA;AAHV,yCAAgB,CAAC;AAIb,WAAO,KAAK,IAAI,GAEhB,KAAK,OAAO;AAAA,EAAA;AAAA,EAGhB,MAAM,SAAS,SAAS;AACd,UAAA,MAAM,SAAS,OAAO;AAC5B,UAAM,UAAU,MAEV,oBAAoB,QAAQ,OAAO,IAAI;AAC7C,IAAK,KAAK,cAAc,EAAE,UACjB,KAAA,cAAA,EAAgB,KAAK,EAAE,GAEhC,KAAK,cAAc,EAAE,QAAQ,SAAU,KAAK,KAAK;AAC7C,cAAQ,cAAc,GAAG,IAAI,kBAAkB,OAAO,IAAI,EAAE,OAAO,OAAO,EAAE,KAAK,QAAQ,UAAU,GAC3F,QAAA,cAAc,GAAG,EAAE,KAAA,EAAO,mBAAmB,YAAY,WAAW,MAAM,SAAS;AAAA,IAAA,CAC9F,GAED,KAAK,cAAc,QAAQ,SAAU,GAAG,KAAK;AACzC,QAAE,KAAK,QAAQ,QAAQ,KAAA,CAAM,GAC3B,EAAA,GAAG,SAAS,SAAU,GAAG;AACvB,UAAE,MAAM,CAAC;AAAA,MAAA,CACZ,GACC,EAAA,GAAG,QAAQ,SAAU,GAAG;AACtB,UAAE,KAAK,CAAC;AAAA,MAAA,CACX,GACC,EAAA,GAAG,UAAU,SAAU,GAAG;AACxB,cAAM,OAAO,CAAC;AACN,gBAAA,cAAc,QAAQ,SAAU,GAAG;AACnC,UAAA,EAAE,SAAS,SAAS,KACpB,KAAK,KAAK,EAAE,SAAS,OAAO,CAAC;AAAA,QACjC,CACH,GACD,QAAQ,MAAM,IAAI,GAChB,EAAA,OAAO,GAAG,EAAI;AAAA,MAAA,CACnB;AAAA,IAAA,CACJ;AAAA,EAAA;AAAA,EAGL,OAAO,SAAS,SAAS;AACf,UAAA,OAAO,SAAS,OAAO;AAE7B,UAAM,UAAU;AAEhB,SAAK,cAAc,QAAQ,SAAU,GAAG,KAAK;AACzC,QAAE,SAAS,SAAS,QAAQ,cAAc,EAAE,GAAG,CAAC,GAC5C,QAAQ,MAAA,EAAQ,QAAQ,QAAQ,cAAc,EAAE,GAAG,CAAC,MAAM,MAAM,QAAQ,MAAA,MAAY,UAClF,EAAA,SAAS,WAAW,EAAI,IAExB,EAAA,SAAS,WAAW,EAAK;AAAA,IAC/B,CACH;AAAA,EAAA;AAAA,EAGL,oBAAoB,YAAY;AAC5B,QAAI,aAAa;AACb,IAAA,WAAW,SAAS,IACT,WAAA,QAAQ,SAAU,KAAK;AAC9B,YAAM,MAAO,eAAe,QAAQ,IAAI,CAAC,IAAI,KACvC,OAAQ,eAAe,QAAS,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAK;AACpD,oBAAA,oBAAoB,MAAM,OAAO,OAAO;AAAA,IAAA,CACzD,IAEa,cAAA,0CAElB,KAAK,cAAc,CAAC,EAAE,KAAK,UAAU;AAAA,EAAA;AAE7C;AACA,SAAS,UAAU,UAAU;AAC7B,SAAS,UAAU,WAAW,OAAO,SAAS;AAuB9C,SAAS,UAAU,QAAQ,iBAAiB,CAAA,GAAI,SAAS,+CAA+C;AChGjG,MAAM,mBAAmB,WAAW;AAAA,EAGvC,cAAc;AACJ,UAAA;AAHV,yCAAgB,CAAC;AAIb,WAAO,KAAK,IAAI,GAEhB,KAAK,OAAO;AAAA,EAAA;AAAA,EAGhB,MAAM,SAAS,SAAS;AACd,UAAA,MAAM,SAAS,OAAO;AAE5B,UAAM,UAAU;AAEX,SAAA,cAAc,CAAC,IAAI,QAAQ,OAAO,OAAO,EAAE,KAAK,QAAQ,MAAM,GACnE,KAAK,cAAc,CAAC,EAAE,QAAQ,cAAc,EAAI,GAC3C,KAAA,cAAc,CAAC,IAAI,QAAQ,OAAO,OAAO,EAAE,KAAK,QAAQ,OAAO,GAEpE,KAAK,cAAc,QAAQ,SAAU,GAAG,KAAK;AACvC,QAAA,GAAG,SAAS,SAAU,GAAG;AACvB,UAAE,MAAM,CAAC;AAAA,MAAA,CACZ,GACC,EAAA,GAAG,QAAQ,SAAU,GAAG;AACtB,UAAE,KAAK,CAAC;AAAA,MAAA,CACX,GACC,EAAA,GAAG,UAAU,SAAU,GAAG;AACxB,QAAI,QAAQ,KACR,QAAQ,cAAc,CAAC,EAAE,SAAS,SAASA,IAAM,QAAQ,cAAc,CAAC,EAAE,SAAS,OAAO,CAAC,EAAE,UAAU,GACvG,QAAQ,MAAM,QAAQ,cAAc,CAAC,EAAE,SAAS,OAAO,CAAC,MAEhD,QAAA,cAAc,CAAC,EAAE,SAAS,SAAS,QAAQ,cAAc,CAAC,EAAE,SAAS,OAAO,CAAC,GAC7E,QAAA,MAAMA,IAAM,QAAQ,cAAc,CAAC,EAAE,SAAS,OAAO,CAAC,EAAE,SAAA,CAAU,IAE5E,EAAA,OAAO,GAAG,EAAI;AAAA,MAAA,CACnB;AAAA,IAAA,CACJ;AAAA,EAAA;AAAA,EAGL,OAAO,SAAS,SAAS;AACf,UAAA,OAAO,SAAS,OAAO;AAE7B,UAAM,UAAU;AACX,SAAA,cAAc,QAAQ,SAAU,GAAG;AACpC,QAAE,KAAK,QAAQ,QAAQ,KAAA,CAAM;AAAA,IAAA,CAChC,GAED,KAAK,cAAc,CAAC,EAAE,KAAK,QAAQ,MAAM,GACzC,KAAK,cAAc,CAAC,EAAE,KAAK,QAAQ,OAAO,GAC1C,KAAK,cAAc,CAAC,EAAE,SAAS,SAAS,KAAK,OAAO,GAC/C,KAAA,cAAc,CAAC,EAAE,SAAS,SAASA,IAAM,KAAK,OAAO,EAAE,SAAA,CAAU;AAEtE,UAAM,OAAO,KAAK,cAAc,CAAC,EAAE,OAAO,sBAAsB;AAC3D,SAAA,cAAc,CAAC,EAAE,MAAM,UAAW,KAAK,SAAS,IAAK,IAAI;AAAA,EAAA;AAGtE;AACA,WAAW,UAAU,UAAU;AAC/B,WAAW,UAAU,WAAW,OAAO,SAAS;AC3DzC,MAAM,aAAa,WAAW;AAAA,EAOjC,cAAc;AACJ,UAAA;AAPV;AACA;AACA;AACA;AACA;AAKI,SAAK,OAAO;AAAA,EAAA;AAAA,EAKhB,KAAK,GAAqB;AAClB,QAAC,UAAU;AAON,WAAA,cAAc,SAAU,OAAO,KAAK;AACjC,QAAA,KAAK,EAAE,SAAS,OAChB,MAAM,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO;AAAA,MAC/B,CACH;AAAA,SAXkB;AACnB,YAAM,SAAS,CAAC;AACX,kBAAA,cAAc,SAAU,OAAO;AACzB,eAAA,KAAK,MAAM,OAAO;AAAA,MAAA,CAC5B,GACM;AAAA,IAAA;AAQJ,WAAA;AAAA,EAAA;AAAA,EAGX,cAAc,UAAU,OAAQ;AAC5B,QAAI,MAAM;AACV,SAAK,OAAO,EAAE,QAAQ,SAAU,KAAK;AAExB,OADQ,eAAe,cAAc,IAAI,QAAQ,IAAI,CAAC,GAAG,GACzD,QAAQ,SAAU,MAAM;AAC7B,QAAI,QACS,SAAA,KAAK,OAAO,MAAM,KAAK,IAEhC,SAAS,MAAM,KAAK;AAAA,MACxB,CACH;AAAA,IAAA,CACJ;AAAA,EAAA;AAAA,EAGL,YAAwC;AACpC,UAAM,SAAqC,CAAC;AAC5C,gBAAK,OAAO,EAAE,QAAQ,SAAU,KAAK;AAC1B,aAAA,IAAI,KAAM,CAAA,IAAI;AAAA,IAAA,CACxB,GACM;AAAA,EAAA;AAAA,EAGX,iBAAiB;AACb,QAAI,SAAS;AACb,gBAAK,OAAO,EAAE,QAAQ,SAAU,aAAa;AACzC,YAAM,mBAAmB,uBAAuB,cAAc,YAAY,QAAQ,IAAI,CAAC,WAAW;AAC9F,MAAA,iBAAiB,SAAS,WAC1B,SAAS,iBAAiB;AAAA,IAC9B,CACH,GACM;AAAA,EAAA;AAAA,EAKX,OAAO,GAAqB;AACpB,QAAC,UAAU;AAuBN,WAAA,cAAc,SAAU,KAAK;AAC9B,QAAI,EAAE,IAAI,KAAK,CAAC,IACZ,IAAI,MAAM,EAAE,IAAI,KAAM,CAAA,CAAC,IAChB,KAAK,eACZ,IAAI,MAAM,EAAE;AAAA,SAEjB,IAAI;AAAA,SA7BY;AACnB,YAAM,UAAU,CAAC;AACZ,kBAAA,cAAc,SAAU,KAAK;AAC9B,cAAM,OAAO,IAAI,OAAO,IAAI,KAAS,IAAA;AAErC,YADc,IAAI,MAAM,KACX,CAAC,KAAK;AACf,kBAAQ,MAAM;AAAA,YACV,KAAK;AACO,sBAAA,IAAI,KAAM,CAAA,IAAI,IAAI,aAAa,IAAI,CAAC,CAAC,IAAI,MAAA,IAAU;AAC3D;AAAA,YACJ,KAAK;AACK,oBAAA,IAAI,IAAI,MAAM;AACpB,sBAAQ,IAAI,KAAM,CAAA,IAAI,MAAM,KAAK,SAAY,CAAC;AAC9C;AAAA,YACJ,KAAK;AAAA,YACL;AACY,sBAAA,IAAI,MAAM,IAAI,IAAI,iBAAiB,IAAI,MAAA,IAAU;AACzD;AAAA,UAAA;AAAA,SAGb,IAAI,GACA;AAAA,IAAA;AAUJ,WAAA;AAAA,EAAA;AAAA,EAGX,SAAS;AACL,QAAI,UAAU;AAIV,IAHA,KAAK,eACL,UAAU,KAAK,gBAAgB,IAE/B,GAAC,KAAK,uBAAuB,CAAC,KAAK,OAAO,EAAE,KAAK,SAAU,GAAG;AAC9D,aAAI,EAAE,OAAO,QAAQ,aAAa,MAAM,KAC7B,EAAE,QAAA,EAAU,KAAK,SAAU,IAAI;AAClC,eAAO,GAAG,SAAS;AAAA,MAAA,CACtB,IAEE,EAAE,SAAS;AAAA,IAAA,CACrB,MAGD,KAAK,MAAM,UAAU,KAAK,WAAW,MAAM,MAAM,OAAO;AAAA,EAAA;AAAA,EAG5D,QAAQ;AACC,SAAA,cAAc,SAAU,KAAK;AACtB,cAAA,IAAI,QAAW,GAAA;AAAA,QACnB,KAAK;AACG,UAAA,IAAI,eACA,IAAA,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,IAEzC,IAAI,MAAM,IAAI,IAAK,CAAA,EAAE,OAAO;AAEhC;AAAA,QACJ,KAAK;AACG,cAAA,MAAM,EAAK,EAAE,OAAO;AACxB;AAAA,QACJ,KAAK;AAED;AAAA,QACJ;AACQ,cAAA,MAAM,MAAS,EAAE,OAAO;AAC5B;AAAA,MAAA;AAAA,IACR,CACH;AAAA,EAAA;AAAA,EAGL,kBAAkB;AACd,QAAI,MAAM;AACV,UAAM,SAAS,CAAC;AACX,gBAAA,cAAc,SAAU,KAAK;AAC1B,MAAC,IAAI,aACL,OAAO,KAAK,MAAM,IAAI,MAAA,IAAU,qBAA0B;AAAA,IAC9D,CACH,GACG,OAAO,SAAS,MACV,MAAA,OAAO,KAAK;AAAA,CAAI,CAAC,GACjB,MAAA,KAEH;AAAA,EAAA;AAAA,EAGX,MAAM,SAAS,SAAS;AACd,UAAA,MAAM,SAAS,OAAO,GACpB,QAAA,GAAG,UAAU,WAAY;AAC7B,cAAA,EAAU,eAAe;AAAA,IAAA,CAC5B,GAEI,KAAA,oBAAoB,MAAM,YAAY,MAAM;AAC3C,UAAA,QAAQ,QACT,OAAO,OAAO;AAEd,SAAA,QAAQ,MAAM,OAAO,OAAO,GAC5B,KAAA,QAAQ,MAAM,OAAO,OAAO,GAC5B,KAAA,QAAQ,KAAK,MAAM,OAAO,IAAI,EAAE,OAAO,IAAI,EAC3C,KAAK,WAAW,CAAC;AAGtB,UAAM,UAAU;AAChB,SAAK,YAAY;AAAA,MACb,IAAI,OACC,EAAA,QAAQ,EAAE,SAAS,GAAA,CAAM,EACzB,MAAM,QAAQ,EACd,GAAG,SAAS,WAAY;AACrB,gBAAQ,OAAO;AAAA,SAChB,EAAI;AAAA,MACX,IAAI,OACC,EAAA,MAAM,OAAO,EACb,GAAG,SAAS,WAAY;AACrB,gBAAQ,MAAM;AAAA,MAAA,GACf,EAAI;AAAA,IACf;AACM,UAAA,YAAY,QAAQ,MACrB,OAAO,KAAK,EACZ,MAAM,SAAS,OAAO;AAEtB,SAAA,UAAU,QAAQ,SAAU,GAAG;AAChC,YAAM,WAAW,UACZ,OAAO,MAAM,EACb,MAAM,SAAS,MAAM;AAE1B,QAAE,OAAO,SAAS,KAAM,CAAA,EAAE,OAAO;AAAA,IAAA,CACpC;AAAA,EAAA;AAAA,EAGL,OAAO,SAAS,SAAS;AACf,UAAA,OAAO,SAAS,OAAO,GAExB,KAAA,WAAW,KAAK,eAAe;AAEpC,UAAM,UAAU,MACV,OAAO,KAAK,MAAM,UAAU,IAAI,EAAE,KAAK,KAAK,QAAQ;AACrD,SAAA,QAAQ,OAAO,IAAI,EACnB,KAAK,SAAU,aAAa,GAAG;AACtB,YAAA,WAAWC,OAAS,IAAI,GAExB,mBAAmB,uBAAuB,cAAc,YAAY,QAAQ,IAAI,CAAC,WAAW;AACjF,uBAAA,QAAQ,SAAU,cAAc,KAAK;AAClD,iBAAS,OAAO,IAAI,EACf,KAAK,SAAS,QAAQ;AAE3B,cAAM,QAAQ,SAAS,OAAO,IAAI,EAC7B,KAAK,SAAS,OAAO;AAM1B,YAJI,QAAQ,iBAAiB,SAAS,KAAK,iBAAiB,SAAS,QAAQ,YACzE,MAAM,KAAK,YAAY,QAAQ,WAAW,iBAAiB,SAAS,KAAK,CAAC,GAE9E,aAAa,OAAO,MAAM,KAAM,CAAA,EAAE,OAAO,GACrC,wBAAwB,WAAW;AACnC,gBAAM,OAAO,aAAa,QAAU,EAAA,KAAA,EAAO,QAAQ;AACnD,gBAAM,MAAM,UAAU,KAAK,SAAS,IAAI,GAC3B,aAAA,SAAS,OAAO;AAAA,QAAA;AAG7B,QAAA,aAAa,yBAAyB,SACzB,aAAA,cAAc,QAAQ,SAAU,GAAG;AAC1C,YAAA,GAAG,cAAc,SAAU,GAAG;AAC5B,uBAAW,WAAY;AAEnB,sBAAQ,UAAU,CAAC,EAAE,QAAQ,CAAC,QAAQ,kBAAuB,KAAA,CAAC,QAAQ,OAAS,EAAA,KAAK,SAAU,IAAI;AAC9F,uBAAI,GAAG,OAAO,QAAQ,aAAa,MAAM,KAC9B,GAAG,QAAA,EAAU,KAAK,SAAU,IAAI;AACnC,yBAAO,GAAG,SAAS;AAAA,gBAAA,CACtB,IAEE,GAAG,SAAS;AAAA,cAAA,CACtB,CAAC;AAAA,eACH,GAAG;AAAA,UAAA,CACT;AAAA,QAAA,CACJ;AAAA,MACL,CACH;AAAA,IAAA,CACJ,EACA,MAAM,IAAI,EACV,KAAK,SAAU,aAAa,GAAG;AACtB,YAAA,WAAWA,OAAS,IAAI;AAEb,OADQ,uBAAuB,cAAc,YAAY,QAAQ,IAAI,CAAC,WAAW,GACjF,QAAQ,SAAU,cAAc,KAAK;AAClD,iBAAS,OAAO,WAAW,EACtB,KAAK,aAAa,UAAU,GAAG;AAAA,MAAA,CAEvC;AAAA,IAAA,CACJ,GAEA,KAAA,KAAK,SAAU,aAAa,GAAG;AAC5B,MAAA,MAAM,KAAK,YAAY,YACvB,YAAY,SAAS;AAAA,IACzB,CACH,GACD,KAAK,KAAK,EACL,KAAK,SAAU,aAAa,GAAG;AAEX,OADQ,uBAAuB,cAAc,YAAY,QAAQ,IAAI,CAAC,WAAW,GACjF,QAAQ,SAAU,cAAc,KAAK;AAClD,qBAAa,OAAO,IAAI;AAAA,MAAA,CAC3B;AAAA,IACJ,CAAA,EACA,OAAO,GAGZ,KAAK,MACA,MAAM,WAAW,KAAK,WAAW,IAAI,uBAAuB,MAAM,GAEvE,KAAK,MACA,KAAK,WAAW,KAAK,WAAW,CAAC,GAIjC,KAAK,uBACN,WAAW,WAAY;AACnB,cAAQ,UAAU,CAAC,EAAE,QAAQ,CAAC,QAAQ,kBAAuB,KAAA,CAAC,QAAQ,OAAS,EAAA,KAAK,SAAU,GAAG;AAC7F,eAAI,EAAE,OAAO,QAAQ,aAAa,MAAM,KAC7B,EAAE,QAAA,EAAU,KAAK,SAAU,IAAI;AAClC,iBAAO,GAAG,SAAS;AAAA,QAAA,CACtB,IAEE,EAAE,SAAS;AAAA,MAAA,CACrB,CAAC;AAAA,OACH,GAAG;AAAA,EACV;AAAA,EAIJ,KAAK,SAAS,SAAS;AACnB,SAAK,cAAc,CAAA,UAAS,MAAM,OAAO,IAAI,CAAC,GACxC,MAAA,KAAK,SAAS,OAAO;AAAA,EAAA;AAAA,EAG/B,MAAM,KAAK,KAAK,KAAK;AAAA,EAAA;AAEzB;AACA,KAAK,UAAU,UAAU;AAqBzB,KAAK,UAAU,QAAQ,YAAY,IAAM,WAAW,iCAAiC;AACrF,KAAK,UAAU,QAAQ,UAAU,IAAI,eAAe,0BAA0B,MAAM,EAAE,QAAQ,IAAO;AACrG,KAAK,UAAU,QAAQ,cAAc,IAAM,WAAW,6BAA6B;AACnF,KAAK,UAAU,QAAQ,aAAa,IAAO,WAAW,+BAA+B;AACrF,KAAK,UAAU,QAAQ,qBAAqB,IAAO,WAAW,kCAAkC;AC3UzF,MAAM,cAAc,WAAW;AAAA,EAIlC,cAAc;AACJ,UAAA;AAJV,yCAAgB,CAAC;AACjB,yCAAgB,CAAC;AAIb,WAAO,KAAK,IAAI,GAEhB,KAAK,OAAO;AAAA,EAAA;AAAA,EAGhB,QAAQ,GAAG;AACP,WAAK,UAAU,UACX,KAAK,cAAc,CAAC,KACpB,KAAK,cAAc,CAAC,EAAE,SAAS,WAAW,CAAC,GAExC,QAJuB,KAAK,cAAc,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,SAAS,SAAS,IAAI;AAAA,EAI3F;AAAA,EAGX,MAAM,SAAS,SAAS;AACd,UAAA,MAAM,SAAS,OAAO,GAEvB,KAAA,cAAc,CAAC,IAAI,QAAQ,OAAO,OAAO,EACzC,KAAK,OAAO,KAAK,OAAO,QAAQ,EAChC,MAAM,cAAc,KAAK,mBAAmB,IAAI,YAAY,QAAQ;AAGzE,UAAM,UAAU;AACR,YAAA,KAAK,KAAQ,GAAA;AAAA,MACjB,KAAK;AACD,aAAK,cAAc,CAAC,IAAI,QAAQ,OAAO,QAAQ,EAC1C,KAAK,MAAM,KAAK,GAAG,IAAI,QAAQ;AAEpC;AAAA,MACJ,KAAK;AACD,aAAK,cAAc,CAAC,IAAI,QAAQ,OAAO,UAAU,EAC5C,KAAK,MAAM,KAAK,GAAG,IAAI,QAAQ;AAEpC;AAAA,MACJ;AACI,aAAK,cAAc,CAAC,IAAI,QAAQ,OAAO,OAAO,EACzC,KAAK,MAAM,KAAK,OAAO,QAAQ,EAC/B,KAAK,QAAQ,KAAK,MAAM;AAE7B;AAAA,IAAA;AAGR,SAAK,cAAc,QAAQ,SAAU,GAAG,KAAK;AACzC,QAAE,KAAK,QAAQ,QAAQ,KAAA,CAAM,GAC3B,EAAA,GAAG,SAAS,SAAU,GAAU;AAC9B,UAAE,MAAM,CAAC;AAAA,MAAA,CACZ,GACC,EAAA,GAAG,QAAQ,SAAU,GAAU;AAC7B,UAAE,KAAK,CAAC;AAAA,MAAA,CACX,GACC,EAAA,GAAG,UAAU,SAAU,GAAU;AAC/B,gBAAQ,MAAM,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,GACjC,EAAA,OAAO,GAAG,EAAI;AAAA,MAAA,CACnB,GACC,EAAA,GAAG,SAAS,SAAU,GAAU;AAC9B,gBAAQ,MAAM,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,GACjC,EAAA,OAAO,GAAG,EAAK;AAAA,MAAA,CACpB;AAAA,IAAA,CACJ;AAAA,EAAA;AAAA,EAGL,OAAO,SAAS,SAAS;AAOb,YANF,MAAA,OAAO,SAAS,OAAO,GAE7B,KAAK,cAAc,CAAC,EACf,MAAM,cAAc,KAAK,mBAAA,IAAuB,YAAY,QAAQ,EACpE,KAAK,KAAK,aAAa,GAEpB,KAAK,KAAQ,GAAA;AAAA,MACjB,KAAK;AACD,aAAK,cAAc,CAAC,EAAE,KAAK,KAAK,OAAO;AACvC;AAAA,MACJ,KAAK;AACD,aAAK,cAAc,CAAC,EAAE,SAAS,SAAS,KAAK,OAAO;AACpD;AAAA,MACJ;AACI,aAAK,cAAc,CAAC,EAAE,KAAK,QAAQ,KAAK,MAAM,GAC9C,KAAK,cAAc,CAAC,EAAE,SAAS,SAAS,KAAK,OAAO;AACpD;AAAA,IAAA;AAAA,EACR;AAAA;AAAA,EAIJ,KAAK,GAAU;AAAA,EAAA;AAAA,EAEf,MAAM,GAAU;AAAA,EAAA;AAAA,EAEhB,MAAM,GAAU;AAAA,EAAA;AAAA,EAEhB,MAAM,GAAU;AAAA,EAAA;AAAA,EAEhB,SAAS,GAAU;AAAA,EAAA;AAAA,EAEnB,OAAO,GAAU,UAAmB;AAAA,EAAA;AAExC;AACA,MAAM,UAAU,UAAU;AAC1B,MAAM,UAAU,WAAW,OAAO,SAAS;AA2B3C,MAAM,UAAU,QAAQ,QAAQ,QAAQ,OAAO,cAAc,CAAC,UAAU,UAAU,WAAW,QAAQ,QAAQ,UAAU,UAAU,UAAU,YAAY,QAAQ,YAAY,UAAU,SAAS,UAAU,CAAC;AACzM,MAAM,UAAU,QAAQ,eAAe,MAAM,UAAU,eAAe,MAAM,EAAE,UAAU,IAAM;ACjIvF,MAAM,kBAAkB,KAAK;AAAA,EAEhC,cAAc;AACJ,UAAA,GAEN,KAAK,OAAO;AAAA,EAAA;AAAA,EAKhB,OAAO,GAA+C;AAClD,UAAM,SAAS,MAAM,OAAO,MAAM,MAAM,SAAS;AACjD,QAAI,UAAU,QAAQ;AACZ,YAAA,SAAS,KAAK,UAAU;AAC9B,WAAK,OAAO,EAAE;AAAA,QAAI,CAAA,MAAK,OAAO,EAAE,GAAI,CAAA,KAAK,IAAI,MAAM,EAC9C,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,MAAO,CAAA,EACf,KAAK,EAAE,KAAM,CAAA;AAAA,MAAA,CACjB;AAAA,IAAA;AAEE,WAAA;AAAA,EAAA;AAAA,EAKX,KAAK,GAAqB;AACtB,QAAI,CAAC,UAAU,OAAQ,QAAO,MAAM,KAAK;AAErC,QADE,MAAA,KAAK,EAAE,CAAC,CAAC,GACX,EAAE,CAAC,GAAG;AAEA,YAAA,SAAS,KAAK,OAAO,GACrB,WAAW,EAAE,CAAC,EAAE,KAAK,UAAU,MAAM;AAC3C,UAAI,IAAI;AACR,iBAAW,OAAO;AACP,eAAA,CAAC,EAAE,KAAK,GAAG,GAChB,EAAA;AAAA,IACN;AAEG,WAAA;AAAA,EAAA;AAGf;AACA,UAAU,UAAU,UAAU;AC3CvB,MAAM,mBAAmB,WAAW;AAAA,EAKvC,cAAc;AACJ,UAAA;AALV,yCAAgB,CAAC;AACjB,yCAAgB,CAAC;AACjB,sCAAa,CAAC;AAIV,WAAO,KAAK,IAAI,GAEhB,KAAK,OAAO;AAAA,EAAA;AAAA,EAGhB,MAAM,SAAS,SAAS;AACd,UAAA,MAAM,SAAS,OAAO,GAEvB,KAAA,cAAc,CAAC,IAAI,QAAQ,OAAO,OAAO,EACzC,KAAK,OAAO,KAAK,OAAO,QAAQ,EAChC,MAAM,cAAc,KAAK,mBAAmB,IAAI,YAAY,QAAQ,GAGzE,KAAK,cAAc,KAAK,QAAQ,OAAO,OAAO,EACzC,KAAK,MAAM,KAAK,GAAG,IAAI,YAAY,EACnC,KAAK,QAAQ,KAAK,KAAA,CAAM,CAAC,GAC9B,KAAK,cAAc,KAAK,QAAQ,OAAO,OAAO,EACzC,KAAK,MAAM,KAAK,GAAG,IAAI,YAAY,EACnC,KAAK,QAAQ,KAAK,KAAA,CAAM,CAAC;AAE9B,UAAM,UAAU;AAChB,SAAK,cAAc,QAAQ,SAAU,GAAG,KAAK;AACzC,QAAE,KAAK,QAAQ,QAAQ,KAAA,CAAM,GAC3B,EAAA,GAAG,SAAS,SAAU,GAAG;AACvB,UAAE,MAAM,CAAC;AAAA,MAAA,CACZ,GACC,EAAA,GAAG,QAAQ,SAAU,GAAG;AACtB,UAAE,KAAK,CAAC;AAAA,MAAA,CACX,GACC,EAAA,GAAG,UAAU,SAAU,GAAG;AACxB,gBAAQ,WAAW,GAAG,IAAI,EAAE,SAAS,OAAO,GACpC,QAAA,MAAM,QAAQ,UAAU,GAC9B,EAAA,OAAO,GAAG,EAAI;AAAA,MAAA,CACnB;AAAA,IAAA,CACJ;AAAA,EAAA;AAAA,EAGL,OAAO,SAAS,SAAS;AACf,UAAA,OAAO,SAAS,OAAO,GAE7B,KAAK,cAAc,CAAC,EACf,MAAM,cAAc,KAAK,mBAAA,IAAuB,YAAY,QAAQ,EACpE,KAAK,KAAK,aAAa,GAGvB,KAAA,aAAa,KAAK,MAAM,GAC7B,KAAK,cAAc,QAAQ,SAAU,GAAG,KAAK;AACzC,QACK,KAAK,QAAQ,KAAK,KAAM,CAAA,EACxB,SAAS,SAAS,KAAK,WAAW,SAAS,MAAM,KAAK,WAAW,GAAG,IAAI,EAAE;AAAA,OAChF,IAAI;AAAA,EAAA;AAEf;AACA,WAAW,UAAU,UAAU;AAC/B,WAAW,UAAU,WAAW,OAAO,SAAS;AA0BhD,WAAW,UAAU,QAAQ,QAAQ,QAAQ,OAAO,mBAAmB,CAAC,UAAU,QAAQ,QAAQ,QAAQ,YAAY,QAAQ,CAAC;AAC/H,WAAW,UAAU,QAAQ,eAAe,MAAM,UAAU,oBAAoB,MAAM,EAAE,UAAU,IAAM;AACxG,WAAW,UAAU,QAAQ,SAAS,CAAC,IAAI,EAAE,GAAG,SAAS,uBAAuB,MAAM,EAAE,UAAU,IAAM;ACzFjG,MAAM,cAAc,WAAW;AAAA,EAIlC,cAAc;AACJ,UAAA;AAJV,yCAAgB,CAAC;AACjB;AAII,WAAO,KAAK,IAAI,GAEhB,KAAK,OAAO;AAAA,EAAA;AAAA,EAGhB,MAAM,SAAS,SAAS;AACd,UAAA,MAAM,SAAS,OAAO,GACpB,QAAA,QAAQ,eAAe,EAAI;AACnC,UAAM,UAAU;AACX,SAAA,SAAS,QAAQ,OAAO,OAAO,EAC/B,KAAK,SAAS,sBAAsB,EACpC,KAAK,QAAQ,UAAU,EACvB,KAAK,MAAM,KAAK,GAAG,IAAI,QAAQ,EAC/B,GAAG,SAAS,SAAU,GAAG;AACtB,QAAE,MAAM,CAAC;AAAA,IACZ,CAAA,EACA,GAAG,QAAQ,SAAU,GAAG;AACrB,QAAE,KAAK,CAAC;AAAA,IACX,CAAA,EACA,GAAG,UAAU,SAAU,GAAG;AACvB,YAAM,OAAO,CAAC;AACd,cAAQ,cAAc,QAAQ,SAAU,GAAG,KAAK;AACxC,QAAA,EAAE,SAAS,SAAS,KACpB,KAAK,KAAK,EAAE,SAAS,OAAO,CAAC;AAAA,MACjC,CACH,GACD,QAAQ,MAAM,IAAI,GAChB,EAAA,OAAO,GAAG,EAAI;AAAA,IAAA,CACnB;AAEL,UAAM,QAAQ,QAAQ,OAAO,OAAO,EAC/B,KAAK,SAAS,mBAAmB,EACjC,KAAK,OAAO,KAAK,GAAA,IAAO,QAAQ,GAE/B,QAAQ,MAAM,OAAO,KAAK,EAC3B,KAAK,SAAS,mBAAmB;AAEtC,UAAM,OAAO,KAAK,EACb,KAAK,SAAS,qBAAqB,EACnC,MAAM,iBAAkB,KAAK,oBAAoB,IAAK,IAAI,EAC1D,KAAK,KAAK,SAAS,GAElB,MAAA,OAAO,KAAK,EACb,KAAK,SAAS,oBAAoB,EAClC,MAAM,gBAAiB,KAAK,gBAAA,IAAoB,IAAK,IAAI,EACzD,MAAM,SAAS,eAAgB,KAAK,gBAAgB,IAAI,CAAE,KAAK,EAC/D,KAAK,KAAK,OAAA,CAAQ,GAEvB,MAAM,OAAO,KAAK,EACb,KAAK,SAAS,oBAAoB;AAAA,EAAA;AAAA,EAI3C,OAAO,SAAS,SAAS;AACf,UAAA,OAAO,SAAS,OAAO,GAC7B,KAAK,OACA,KAAK,QAAQ,KAAK,MAAM,GAE7B,QACK,MAAM,eAAe,KAAK,eAAe,IAAI,EAC7C,MAAM,iBAAiB,KAAK,aAAa,IAAI,IAAI,EACjD,MAAM,SAAS,KAAK,aAAa,IAAI;AAG1C,UAAM,eAAe,KAAK,UAAe,IAAA,KAAK,WAAW;AAEjD,YAAA,OAAO,qBAAqB,EAC/B,MAAM,UAAU,eAAe,IAAI,EACnC,MAAM,SAAS,eAAe,IAAI,EAClC,MAAM,OAAQ,KAAK,WAAW,IAAK,IAAI,IAAI,EAC3C,MAAM,iBAAiB,KAAK,aAAa,IAAI,IAAI,GAE9C,QAAA,OAAO,oBAAoB,EAC9B,MAAM,cAAc,KAAK,cAAc,IAAI,GAExC,QAAA,OAAO,oBAAoB,EAC9B,MAAM,iBAAiB,KAAK,oBAAoB,IAAI,GAEzD,QAAQ,OAAO,sBAAsB,EAChC,MAAM,SAAS,KAAK,aAAa,CAAC,EAClC,MAAM,oBAAoB,KAAK,UAAU,GAE9C,QAAQ,OAAO,qBAAqB,EAC/B,MAAM,SAAS,KAAK,YAAY,CAAC,EACjC,MAAM,oBAAoB,KAAK,SAAS;AAAA,EAAA;AAGrD;AACA,MAAM,UAAU,UAAU;AA6C1B,MAAM,UAAU,WAAW,OAAO,SAAS;AAE3C,MAAM,UAAU,QAAQ,cAAc,GAAG,UAAU,sBAAsB;AACzE,MAAM,UAAU,QAAQ,gBAAgB,GAAG,UAAU,wBAAwB;AAC7E,MAAM,UAAU,QAAQ,YAAY,KAAK,UAAU,iCAAiC;AACpF,MAAM,UAAU,QAAQ,aAAa,IAAI,UAAU,kCAAkC;AACrF,MAAM,UAAU,QAAQ,UAAU,GAAG,UAAU,mDAAmD;AAClG,MAAM,UAAU,QAAQ,UAAU,QAAQ,UAAU,2BAA2B;AAC/E,MAAM,UAAU,QAAQ,WAAW,cAAc,UAAU,4BAA4B;AACvF,MAAM,UAAU,QAAQ,gBAAgB,IAAI,UAAU,kCAAkC;AACxF,MAAM,UAAU,QAAQ,mBAAmB,IAAI,UAAU,iCAAiC;AAC1F,MAAM,UAAU,QAAQ,WAAW,WAAW,cAAc,4BAA4B;AACxF,MAAM,UAAU,QAAQ,YAAY,WAAW,cAAc,6BAA6B;AAC1F,MAAM,UAAU,QAAQ,eAAe,WAAW,cAAc,sBAAsB;AACtF,MAAM,UAAU,QAAQ,gBAAgB,WAAW,cAAc,uBAAuB;ACzJjF,MAAM,cAAc,WAAW;AAAA,EAElC,cAAc;AACJ,UAAA;AAFV,yCAAgB,CAAC;AAGb,WAAO,KAAK,IAAI,GAEhB,KAAK,OAAO;AAAA,EAAA;AAAA,EAGhB,MAAM,SAAS,SAAS;AACd,UAAA,MAAM,SAAS,OAAO;AAE5B,UAAM,UAAU,MAEV,iBAAiB,QAAQ,OAAO,IAAI;AAC1C,IAAK,KAAK,cAAc,EAAE,UACjB,KAAA,cAAA,EAAgB,KAAK,EAAE,GAEhC,KAAK,cAAc,EAAE,QAAQ,SAAU,KAAK,KAAK;AAC7C,cAAQ,cAAc,GAAG,IAAI,eAAe,OAAO,IAAI,EAAE,OAAO,OAAO,EAAE,KAAK,QAAQ,OAAO,GACrF,QAAA,cAAc,GAAG,EAAE,KAAA,EAAO,mBAAmB,YAAY,WAAW,MAAM,SAAS;AAAA,IAAA,CAC9F,GAED,KAAK,cAAc,QAAQ,SAAU,GAAG,KAAK;AACzC,QAAE,KAAK,QAAQ,QAAQ,KAAA,CAAM,GAC3B,EAAA,GAAG,SAAS,SAAU,GAAG;AACvB,UAAE,MAAM,CAAC;AAAA,MAAA,CACZ,GACC,EAAA,GAAG,QAAQ,SAAU,GAAG;AACtB,UAAE,KAAK,CAAC;AAAA,MAAA,CACX,GACC,EAAA,GAAG,UAAU,SAAU,GAAG;AACxB,gBAAQ,MAAM,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,GACjC,EAAA,OAAO,GAAG,EAAI;AAAA,MAAA,CACnB;AAAA,IAAA,CACJ;AAAA,EAAA;AAAA,EAGL,OAAO,SAAS,SAAS;AACf,UAAA,OAAO,SAAS,OAAO;AAE7B,UAAM,UAAU;AAEhB,SAAK,cAAc,QAAQ,SAAU,GAAG,KAAK;AACzC,QAAE,SAAS,SAAS,QAAQ,cAAc,EAAE,GAAG,CAAC,GAC5C,QAAQ,MAAA,EAAQ,QAAQ,QAAQ,cAAc,EAAE,GAAG,CAAC,MAAM,MAAM,QAAQ,MAAA,MAAY,UAClF,EAAA,SAAS,WAAW,EAAI,IAExB,EAAA,SAAS,WAAW,EAAK;AAAA,IAC/B,CACH;AAAA,EAAA;AAET;AACA,MAAM,UAAU,UAAU;AAC1B,MAAM,UAAU,WAAW,OAAO,SAAS;AAuB3C,MAAM,UAAU,QAAQ,iBAAiB,CAAA,GAAI,SAAS,+CAA+C;AC5E9F,MAAM,cAAc,WAAW;AAAA,EAGlC,cAAc;AACJ,UAAA;AAHV,yCAAgB,CAAC;AAKb,WAAO,KAAK,IAAI,GAEhB,KAAK,OAAO;AAAA,EAAA;AAAA,EAGhB,MAAM,SAAS,SAAS;AACd,UAAA,MAAM,SAAS,OAAO;AAE5B,UAAM,UAAU;AAEX,SAAA,cAAc,CAAC,IAAI,QAAQ,OAAO,OAAO,EAAE,KAAK,QAAQ,OAAO,GAC/D,KAAA,cAAc,CAAC,IAAI,QAAQ,OAAO,OAAO,EAAE,KAAK,QAAQ,QAAQ,GAErE,KAAK,cAAc,QAAQ,SAAU,GAAG,KAAK;AACzC,QAAE,KAAK,QAAQ,QAAQ,KAAA,CAAM,GAC3B,EAAA,GAAG,SAAS,SAAU,GAAG;AACvB,UAAE,MAAM,CAAC;AAAA,MAAA,CACZ,GACC,EAAA,GAAG,QAAQ,SAAU,GAAG;AACtB,UAAE,KAAK,CAAC;AAAA,MAAA,CACX,GACC,EAAA,GAAG,UAAU,SAAU,GAAG;AACxB,QAAI,QAAQ,KACR,QAAQ,cAAc,CAAC,EAAE,SAAS,SAASD,IAAM,QAAQ,cAAc,CAAC,EAAE,SAAS,OAAO,CAAC,EAAE,UAAU,GACvG,QAAQ,MAAM,QAAQ,cAAc,CAAC,EAAE,SAAS,OAAO,CAAC,MAEhD,QAAA,cAAc,CAAC,EAAE,SAAS,SAAS,QAAQ,cAAc,CAAC,EAAE,SAAS,OAAO,CAAC,GAC7E,QAAA,MAAMA,IAAM,QAAQ,cAAc,CAAC,EAAE,SAAS,OAAO,CAAC,EAAE,SAAA,CAAU,IAE5E,EAAA,OAAO,GAAG,EAAI;AAAA,MAAA,CACnB;AAAA,IAAA,CACJ;AAAA,EAAA;AAAA,EAGL,OAAO,SAAS,SAAS;AACf,UAAA,OAAO,SAAS,OAAO,GAE7B,KAAK,cAAc,CAAC,EAAE,KAAK,QAAQ,OAAO,GAC1C,KAAK,cAAc,CAAC,EAAE,SAAS,SAAS,KAAK,OAAO,GACpD,KAAK,cAAc,CAAC,EAAE,KAAK,OAAO,KAAK,KAAK,GAC5C,KAAK,cAAc,CAAC,EAAE,KAAK,OAAO,KAAK,MAAM,GAC7C,KAAK,cAAc,CAAC,EAAE,KAAK,QAAQ,KAAK,MAAM,GAC9C,KAAK,cAAc,CAAC,EAAE,KAAK,QAAQ,QAAQ,GAC3C,KAAK,cAAc,CAAC,EAAE,SAAS,SAAS,KAAK,OAAO,GACpD,KAAK,cAAc,CAAC,EAAE,KAAK,OAAO,KAAK,KAAK,GAC5C,KAAK,cAAc,CAAC,EAAE,KAAK,OAAO,KAAK,MAAM,GAC7C,KAAK,cAAc,CAAC,EAAE,KAAK,QAAQ,KAAK,MAAM;AAAA,EAAA;AAAA,EAGlD,oBAAoB,YAAY;AAC5B,QAAI,aAAa;AACb,IAAA,WAAW,SAAS,IACT,WAAA,QAAQ,SAAU,KAAK;AAC9B,YAAM,MAAO,eAAe,QAAQ,IAAI,CAAC,IAAI,KACvC,OAAQ,eAAe,QAAS,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAK;AACpD,oBAAA,oBAAoB,MAAM,OAAO,OAAO;AAAA,IAAA,CACzD,IAEa,cAAA,0CAElB,KAAK,cAAc,CAAC,EAAE,KAAK,UAAU;AAAA,EAAA;AAE7C;AACA,MAAM,UAAU,UAAU;AAC1B,MAAM,UAAU,WAAW,OAAO,SAAS;AAmC3C,MAAM,UAAU,QAAQ,QAAQ,QAAQ,OAAO,cAAc,CAAC,cAAc,UAAU,YAAY,UAAU,UAAU,YAAY,QAAQ,QAAQ,SAAS,UAAU,SAAS,QAAQ,UAAU,CAAC;AACjM,MAAM,UAAU,QAAQ,iBAAiB,CAAA,GAAI,SAAS,+CAA+C;AACrG,MAAM,UAAU,QAAQ,OAAO,MAAM,UAAU,+BAA+B;AAC9E,MAAM,UAAU,QAAQ,QAAQ,MAAM,UAAU,+BAA+B;AAC/E,MAAM,UAAU,QAAQ,QAAQ,MAAM,UAAU,4BAA4B;AC9GrE,MAAM,eAAe,WAAW;AAAA,EAGnC,cAAc;AACJ,UAAA;AAHV,yCAAgB,CAAC;AAKb,WAAO,KAAK,IAAI,GAEhB,KAAK,OAAO;AAAA,EAAA;AAAA,EAGhB,MAAM,SAAS,SAAS;AACd,UAAA,MAAM,SAAS,OAAO;AAE5B,UAAM,UAAU;AAEhB,SAAK,cAAc,CAAC,IAAI,QAAQ,OAAO,QAAQ,EAC1C,KAAK,QAAQ,KAAK,KAAM,CAAA,EACxB,GAAG,SAAS,SAAU,GAAG;AACtB,QAAE,MAAM,CAAC;AAAA,IACZ,CAAA,EACA,GAAG,QAAQ,SAAU,GAAG;AACrB,QAAE,KAAK,CAAC;AAAA,IACX,CAAA,EACA,GAAG,UAAU,SAAU,GAAG;AACf,cAAA,MAAM,CAAC,QAAQ,cAAc,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,GACxD,EAAA,OAAO,GAAG,EAAI;AAAA,IAAA,CACnB;AAAA,EAAA;AAAA,EAIT,OAAO,SAAS,SAAS;AACf,UAAA,OAAO,SAAS,OAAO,GAExB,KAAA,oBAAoB,KAAK,eAAe,GAC7C,KAAK,cAAc,CAAC,EACf,SAAS,SAAS,KAAK,OAAO,EAC9B,MAAM,aAAa,KAAK,gBAAgB,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI;AAAA,EAAA;AAAA,EAIlF,oBAAoB,YAAY;AAC5B,QAAI,aAAa;AACb,IAAA,WAAW,SAAS,IACT,WAAA,QAAQ,SAAU,KAAK;AAC9B,YAAM,MAAO,eAAe,QAAQ,IAAI,CAAC,IAAI,KACvC,OAAQ,eAAe,QAAS,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAK;AACpD,oBAAA,oBAAoB,MAAM,OAAO,OAAO;AAAA,IAAA,CACzD,IAEa,cAAA,0CAElB,KAAK,cAAc,CAAC,EAAE,KAAK,UAAU;AAAA,EAAA;AAE7C;AACA,OAAO,UAAU,UAAU;AAC3B,OAAO,UAAU,WAAW,OAAO,SAAS;AA0B5C,OAAO,UAAU,QAAQ,iBAAiB,CAAA,GAAI,SAAS,+CAA+C;AACtG,OAAO,UAAU,QAAQ,YAAY,KAAK,UAAU,SAAS,MAAM,EAAE,UAAU,IAAM;AC/E9E,MAAM,eAAe,UAAU;AAAA,EAkBlC,cAAc;AACJ,UAAA;AAlBV;AAEA;AACA;AAEA;AAEA;AAEA;AACA,yCAAwB;AACxB;AAEA;AACA,0CAAyB;AACzB;AA8NA,sCAAa,SAAU,GAAG;AAChB,YAAA,IAAI,EAAE,MAAM,MACZ,IAAI,IAAI,IAAI,IACZ,UAAU,KAAK,WAAW,IAAI,MAAM,GACpC,IAAI;AACN,UAAA,SAAS,MAAO,UAAU,IAAK,MAAM,IACrC,cAAc,IAAI,MAAO,MAAM,IAAK,OAAO,IAAI,KAC/C,OAAO,IAAI,IAAI,KACf,cAAc,IAAI,MAAO,UAAU,IAAK,MAAO,IAAI;AAEnD,aAAA,KAAK,eACL,UAAU,OACC,MAAM,IAAK,OAAO,IAAI,KAC7B,OAAO,IAAI,IAAI,KACf,MAAO,MAAM,IAAK,OAAO,IAAI,KAC7B,OAAO,IAAI,IAAI,KAGT,UAAA,MAAO,IAAI,IAAK,OAAO,IAAI,KACjC,OAAO,IAAI,IAAI,IAGhB;AAAA,IACX;AAjPI,WAAO,KAAK,IAAI;AAAA,EAAA;AAAA,EAGpB,MAAM,SAAS,SAAS;AAUpB,QATM,MAAA,MAAM,SAAS,OAAO,GACvB,KAAA,OAAO,EAAE,OAAO,KAAK,SAAS,QAAQ,IAAI,GAE/C,KAAK,SAASE,cACT,MAAM,EAAI,GAEf,KAAK,SAAS,QAAQ,OAAO,GAAG,EAC3B,KAAK,SAAS,QAAQ,GAEvB,KAAK,UAAU,QAAQ,KAAK,WAAW,QACnC,KAAK,kBAAkB,QAAQ,KAAK,mBAAmB,MAAM;AACvD,YAAA,cAAcC,UAAY,KAAK,gBAAgB,KAAK,gBAAgB,IAAI;AAC9E,WAAK,IAAI,YAAY,KAAK,YAAa,CAAA,EAAE,SAAS,GAClD,KAAK,KAAK,YAAY,KAAK,aAAc,CAAA,EAAE,SAAS;AAAA,IAAA;AAGvD,SAAA,OAAO,OAAO,MAAM,EACpB,KAAK,SAAS,OAAO,EACrB,OAAO,WAAY;AAAE,aAAO,KAAK,WAAW,YAAY,KAAK,UAAU,EAAI,CAAC;AAAA,IAAI,CAAA,EAChF,KAAK,SAAS,aAAa,EAC3B,OAAO,WAAY;AAAE,aAAO,KAAK,WAAW,YAAY,KAAK,UAAU,EAAI,CAAC;AAAA,IAAA,CAAI,EAChF,KAAK,SAAS,eAAe,EAC7B,KAAKC,KAAO,EACR,GAAG,SAAS,MAAM;AACf,YAAM,QAAQ,QAAQ;AACtB,WAAK,eAAe,MAAM,GAC1B,KAAK,qBAAqB,KAAK,eAC/B,KAAK,sBAAsB,KAAK,gBAC5B,KAAK,gBAAgB,KAAK,iBAAiB,MAAM,KAAK,MAAM,KAAK,KAAK,iBACtE,KAAK,WAAW,SACT,KAAK,IAAI,MAAM,IAAI,KAAK,aAAa,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,cAAc,IACtF,KAAK,WAAW,SAEhB,KAAK,WAAW,SAEf,KAAA,aAAa,MAAM,CAAC;AAAA,IAAA,CAC5B,EACA,GAAG,QAAQ,MAAM;AACT,WAAA,aAAa,QAAQ,EAAE,CAAC;AAAA,IAAA,CAChC,EACA,GAAG,OAAO,MAAM;AACR,WAAA,aAAa,QAAQ,EAAE,CAAC,GAC7B,KAAK,KAAK,CAAC,CAAC,KAAK,OAAO,OAAO,KAAK,aAAa,GAAG,KAAK,OAAO,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,GAC7F,KAAK,kBAAkB;AAAA,IAAA,CAC1B,CAAC,GAEV,KAAK,OAAO,OAAO,KAAK,gBAAgB,EACnC,KAAK,SAAS,OAAO,EACrB,KAAK,aAAa,gBAAgB,KAAK,SAAS,IAAK,KAAK,WAAW,IAAI,CAAE,GAAG,GAG9E,KAAA,cAAc,KAAK,OAAO,OAAO,QAAQ,gBAAgB,EACzD,KAAK,SAAS,QAAQ,GAGtB,KAAA,aAAa,KAAK,OAAO,OAAO,QAAQ,gBAAgB,EACxD,KAAK,SAAS,QAAQ;AAAA,EAAA;AAAA,EAI/B,OAAO,SAAS,SAAS;AACf,UAAA,OAAO,SAAS,OAAO;AAC7B,UAAM,UAAU;AACX,SAAA,OACA,OAAO,CAAC,KAAK,OAAO,KAAK,MAAM,CAAC,EAChC,MAAM,CAAC,GAAG,KAAK,MAAA,IAAU,KAAK,QAAA,IAAY,CAAC,CAAC,GAGjD,KAAK,OACA,KAAK,aAAa,gBAAgB,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,KAAK,KAAa,GAErF,KAAA,OAAO,UAAU,gDAAgD,EACjE,KAAK,MAAM,KAAK,OAAO,MAAM,EAAE,CAAC,CAAC,EACjC,KAAK,MAAM,KAAK,OAAO,QAAQ,CAAC,CAAC;AAGhC,UAAA,cAAc,KAAK,MAAW,IAAA,KAAK,QAAY,IAAA,MAAO,KAAK,UAAA,IAAc,IAEzE,gBAAgB,CAAC;AACvB,QAAI,KAAK,qBAAqB,QAAQ,KAAK,kBAAkB,MAAM;AACzD,YAAA,WAAWD,UAAY,IAAI,GAC3B,iBAAiBE,WAAa,KAAK,eAAA,CAAgB,GACnD,gBAAgB,KAAK,SAAS,KAAK,IAAI,MAAM,KAAK,UAAc,IAAA;AACtE,eAAS,IAAI,GAAG,IAAI,KAAK,UAAA,GAAa,KAAK;AACvC,cAAM,gBAAgB,MAAM,KAAK,QAAS,eAAe,IACnD,cAAc,SAAS,aAAa;AAC5B,sBAAA,KAAK,eAAe,WAAW,CAAC;AAAA,MAAA;AAAA,IAClD,OACG;AACH,YAAM,kBAAkBC,OAAS,KAAK,gBAAA,CAAiB,GACjD,iBAAiB,KAAK,SAAS,KAAK,IAAI,MAAM,KAAK,UAAc,IAAA;AACvE,eAAS,IAAI,GAAG,IAAI,KAAK,UAAA,GAAa,KAAK;AACvC,cAAM,aAAa,KAAK,IAAI,IAAK,gBAAgB;AACnC,sBAAA,KAAK,gBAAgB,UAAU,CAAC;AAAA,MAAA;AAAA,IAClD;AAEJ,UAAM,WAAW,KAAK,OAAO,UAAU,QAAQ,EAAE,KAAK,aAAa,GAC7D,gBAAgB,SAAS,QAAQ,OAAO,GAAG,EAAE,KAAK,SAAS,MAAM;AAEvE,kBAAc,OAAO,MAAM,EAAE,KAAK,SAAS,WAAW,GACtD,cAAc,OAAO,MAAM,EAAE,KAAK,SAAS,WAAW,GACtD,cACK,MAAM,QAAQ,EACd,KAAK,SAAU,GAAG,GAAG;AAClB,YAAM,IAAI,aAAa;AAEvBL,aAAS,IAAI,EAAE,OAAO,gBAAgB,EACjC,MAAM,aAAa,QAAQ,SAAU,CAAA,EACrC,KAAK,KAAK,WAAY;AACf,eAAA,MAAM,IAAU,IAAI,IACjB,MAAM,QAAQ,UAAA,IAAc,IAAI,IAAI,IAAI;AAAA,MAAA,CAClD,EACA,KAAK,KAAK,QAAQ,eAAgB,QAAQ,eAAe,IAAK,QAAQ,SAAA,CAAU,EAChF,KAAK,gBAAgB,kBAAkB,EACvC,KAAK,eAAe,WAAY;AACzB,eAAA,MAAM,IAAU,UACb,MAAM,QAAQ,UAAU,IAAI,IAAI,QAAQ;AAAA,MAAA,CAClD,EACA,KAAK,MAAM,CAAC,GAGjBA,OAAS,IAAI,EAAE,OAAO,gBAAgB,EACjC,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,QAAQ,WAAe,IAAA,CAAC,EACnC,KAAK,MAAM,QAAQ,eAAe,QAAQ,WAAY,CAAA,EACtD,MAAM,UAAU,MAAM,EACtB,MAAM,gBAAgB,CAAC;AAAA,IAAA,CAE/B,GACL,KAAK,OAAO,KAAK,EAAE,YAAY,KAAK,YAAY,MAAM,GACtD,KAAK,OAAO,KAAK,EAAE,YAAY,KAAK,WAAW,MAAM,GAChD,KAAA,gBAAgB,KAAK,OAAO,GAC5B,KAAA,iBAAiB,KAAK,QAAQ,GACnC,KAAK,cAAc,GACnB,KAAK,kBAAkB;AAAA,EAAA;AAAA,EAG3B,oBAAoB;AACZ,IAAA,KAAK,cAAc,KAAK,WAAW,OAAO,KAAK,YAAc,OAC7D,KAAK,OAAO,IAAI,GAEf,KAAA,YAAY,KAAK,MAAM;AAAA,EAAA;AAAA,EAGhC,gBAAgB;AACZ,SAAK,WACA,KAAK,aAAa,aAAa,KAAK,aAAa,QAAQ,EACzD,KAAK,KAAK,CAAC,MAAM,KAAK,WAAW,GAAG,CAAC,GAE1C,KAAK,YACA,KAAK,aAAa,aAAa,KAAK,cAAc,QAAQ,EAC1D,KAAK,KAAK,CAAC,MAAM,KAAK,WAAW,GAAG,CAAC;AAAA,EAAA;AAAA,EAI9C,SAAiB;AACT,QAAA,OAAO,CAAC,CAAC,KAAK,OAAO,KAAK,KAAK,CAAC,CAAC;AACjC,WAAA,KAAK,OAAO,SAAS,KAAK,OAAO,KAAK,KAAK,EAAE,CAAC,EAAE,CAAC,KAAM,YAAY,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC,KAAM,aAChG,OAAO,KAAK,KAAK,IAEd,KAAK,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC;AAAA,EAAA;AAAA,EAGjC,UAAkB;AACV,QAAA,OAAO,CAAC,CAAC,KAAK,OAAO,KAAK,KAAK,CAAC,CAAC;AACjC,WAAA,KAAK,OAAO,SAAS,KAAK,OAAO,KAAK,KAAK,EAAE,CAAC,EAAE,CAAC,KAAM,YAAY,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC,KAAM,aAChG,OAAO,KAAK,KAAK,IAEd,KAAK,OAAO,KAAK,CAAC,EAAE,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC;AAAA,EAAA;AAAA,EAGzD,aAAa,KAAK;AACV,QAAA,KAAK;AACL,cAAQ,KAAK,UAAU;AAAA,QACnB,KAAK;AACD,eAAK,gBAAgB,KAAK,qBAAqB,MAAM,KAAK,cAC1D,KAAK,iBAAiB,KAAK,sBAAsB,MAAM,KAAK;AAC5D;AAAA,QACJ,KAAK;AACD,eAAK,gBAAgB,KACjB,KAAK,gBAAgB,KAAK,mBAC1B,KAAK,iBAAiB,KAAK;AAE/B;AAAA,QACJ,KAAK;AACD,eAAK,iBAAiB,KAClB,KAAK,iBAAiB,KAAK,kBAC3B,KAAK,gBAAgB,KAAK;AAE9B;AAAA,MAAA;AAAA;AAGH,WAAA,gBAAgB,KAAK,iBAAiB;AAG/C,SAAK,gBAAgB,KAAK,UAAU,KAAK,aAAa,GACtD,KAAK,iBAAiB,KAAK,UAAU,KAAK,cAAc,GACnD,KAAA,MAAM,KAAK,WAAW,IAAI,CAAC,KAAK,OAAO,OAAO,KAAK,aAAa,GAAG,KAAK,OAAO,OAAO,KAAK,cAAc,CAAC,IAAI,KAAK,OAAO,OAAO,KAAK,aAAa,CAAC,GACzJ,KAAK,cAAc;AAAA,EAAA;AAAA,EAGvB,UAAU,KAAqB;AACrB,UAAA,QAAQ,KAAK,OAAO,MAAM;AAChC,WAAI,MAAM,MAAM,CAAC,MAAG,MAAM,MAAM,CAAC,IAC7B,MAAM,MAAM,CAAC,MAAG,MAAM,MAAM,CAAC,IAC1B,KAAK,YAAY,GAAG;AAAA,EAAA;AAAA,EAG/B,YAAY,KAAK;AACb,UAAMM,SAAQ,KAAK,OAAO,OAAO,GAAG;AACpC,WAAO,KAAK,OAAO,KAAK,IAAI,IAAI,KAAK,OAAOA,SAAQ,KAAK,SAAS,KAAK,KAAM,CAAA,IAAI,KAAK,MAAM;AAAA,EAAA;AA4BpG;AACA,OAAO,UAAU,UAAU;AAC3B,OAAO,UAAU,WAAW,OAAO,SAAS;AAmE5C,OAAO,UAAU,QAAQ,WAAW,IAAI,UAAU,iBAAiB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAA,CAAG;AAC5F,OAAO,UAAU,QAAQ,YAAY,IAAI,UAAU,aAAa,MAAM,EAAE,MAAM,CAAC,OAAO,EAAA,CAAG;AACzF,OAAO,UAAU,QAAQ,cAAc,MAAM,UAAU,aAAa,MAAM,EAAE,MAAM,CAAC,OAAO,EAAA,CAAG;AAC7F,OAAO,UAAU,QAAQ,aAAa,MAAM,cAAc,cAAc,MAAM,EAAE,MAAM,CAAC,OAAO,EAAA,CAAG;AAEjG,OAAO,UAAU,QAAQ,cAAc,IAAO,WAAW,yBAAyB,MAAM,EAAE,MAAM,CAAC,cAAc,EAAA,CAAG;AAClH,OAAO,UAAU,QAAQ,OAAO,MAAM,UAAU,OAAO,MAAM,EAAE,MAAM,CAAC,cAAc,EAAA,CAAG;AACvF,OAAO,UAAU,QAAQ,QAAQ,MAAM,UAAU,QAAQ,MAAM,EAAE,MAAM,CAAC,cAAc,EAAA,CAAG;AACzF,OAAO,UAAU,QAAQ,QAAQ,IAAI,UAAU,QAAQ,MAAM,EAAE,MAAM,CAAC,cAAc,EAAA,CAAG;AACvF,OAAO,UAAU,QAAQ,eAAe,MAAM,UAAU,OAAO,MAAM,EAAE,MAAM,CAAC,cAAc,EAAA,CAAG;AAC/F,OAAO,UAAU,QAAQ,gBAAgB,MAAM,UAAU,QAAQ,MAAM,EAAE,MAAM,CAAC,cAAc,EAAA,CAAG;AACjG,OAAO,UAAU,QAAQ,kBAAkB,IAAI,UAAU,mBAAmB,MAAM,EAAE,MAAM,CAAC,cAAc,EAAA,CAAG;AAE5G,OAAO,UAAU,QAAQ,eAAe,YAAY,QAAQ;AAE5D,OAAO,UAAU,QAAQ,aAAa,IAAI,QAAQ;AAClD,OAAO,UAAU,QAAQ,cAAc,GAAG,QAAQ;AAClD,OAAO,UAAU,QAAQ,cAAc,GAAG,QAAQ;AAClD,OAAO,UAAU,QAAQ,kBAAkB,MAAM,QAAQ;AACzD,OAAO,UAAU,QAAQ,mBAAmB,QAAQ,QAAQ;AAE5D,MAAM,OAAO,OAAO,UAAU;AAC9B,OAAO,UAAU,OAAO,SAAU,GAAc;AAC5C,QAAM,SAAS,KAAK,MAAM,MAAM,SAAS;AACzC,MAAI,UAAU,QAAQ;AAClB,UAAM,MAAM,aAAa,QAAQ,IAAI,CAAC,CAAC;AACvC,cAAU,UAAU,QAAQ,KAAK,MAAM,GAAG;AAAA,EAAA;AAEvC,SAAA;AACX;AAEA,MAAM,QAAQ,OAAO,UAAU;AAC/B,OAAO,UAAU,QAAQ,SAAU,GAAc;AAC7C,QAAM,SAAS,MAAM,MAAM,MAAM,SAAS;AACtC,MAAC,UAAU;AAMX,cAAU,UAAU,KAAK,KAAK,MAAM,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA;AALhE,WAAC,KAAK,eAGH,UAAU,UAAU,KAAK,KAAK,IAAI,EAAE,CAAC,IAFjC,UAAU,UAAU,KAAK,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;AAMhD,SAAA;AACX;AC9XO,MAAM,iBAAiB,MAAM;AAAA,EAChC,cAAc;AACJ,UAAA,GAEN,KAAK,OAAO,OACZ,KAAK,KAAK,UAAU;AAAA,EAAA;AAAA,EAGxB,MAAM,SAAS,SAAS;AACd,UAAA,MAAM,SAAS,OAAO;AAAA,EAAA;AAAA,EAGhC,aAAa;AACF,WAAA,KAAK,IAAI,KAAK,iBAAiB,IAAI,KAAK,cAAc,GAAG,KAAK,OAAA,CAAQ;AAAA,EAAA;AAAA,EAGjF,OAAO,SAAS,SAAS;AACf,UAAA,OAAO,SAAS,OAAO,GAC7B,KAAK,cAAc,CAAC,EACf,KAAK,QAAQ,KAAK,KAAM,CAAA,EACxB,KAAK,QAAQ,KAAK,KAAM,CAAA,EACxB,KAAK,QAAQ,KAAK,KAAK,CAAC,EACxB,KAAK,cAAc,KAAK,WAAA,CAAY,EACpC,MAAM,UAAU,KAAK,WAAA,IAAe,IAAI;AAAA,EAAA;AAIrD;AACA,SAAS,UAAU,UAAU;AAoB7B,SAAS,UAAU,QAAQ,QAAQ,MAAM,UAAU,QAAQ,MAAM,EAAE,UAAU,IAAM;AACnF,SAAS,UAAU,QAAQ,QAAQ,MAAM,UAAU,WAAW,MAAM,EAAE,UAAU,IAAM;AACtF,SAAS,UAAU,QAAQ,QAAQ,OAAO,OAAO,QAAQ,CAAC,OAAO,IAAI,CAAC;AACtE,SAAS,UAAU,QAAQ,aAAa,MAAM,UAAU,kBAAkB,MAAM,EAAE,UAAU,IAAM;AAClG,SAAS,UAAU,QAAQ,cAAc,MAAM,WAAW,wBAAwB,EAAE,UAAU,IAAM;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.cjs","sources":["../src/__package__.ts","../src/Button.ts","../src/CheckBox.ts","../src/ColorInput.ts","../src/Form.ts","../src/Input.ts","../src/FieldForm.ts","../src/InputRange.ts","../src/OnOff.ts","../src/Radio.ts","../src/Range.ts","../src/Select.ts","../src/Slider.ts","../src/TextArea.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/form\";\nexport const PKG_VERSION = \"3.1.0\";\nexport const BUILD_VERSION = \"3.2.1\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Button extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n this._inputElement[0] = element.append(\"button\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].text(this.value());\n }\n}\nButton.prototype._class += \" form_Button\";\nButton.prototype.implements(IInput.prototype);\n\nexport interface Button {\n name(): string;\n name(_: string): Button;\n label(): string;\n label(_: string): Button;\n value(): any;\n value(_: any): Button;\n validate(): string;\n validate(_: string): Button;\n}\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class CheckBox extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n const checkboxContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = checkboxContainer.append(\"li\").append(\"input\").attr(\"type\", \"checkbox\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nCheckBox.prototype._class += \" form_CheckBox\";\nCheckBox.prototype.implements(IInput.prototype);\n\nexport interface CheckBox {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nCheckBox.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class ColorInput extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"text\");\n this._inputElement[0].classed(\"color-text\", true);\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"color\");\n\n this._inputElement.forEach(function (e, idx) {\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n this._inputElement.forEach(function (e) {\n e.attr(\"name\", context.name());\n });\n\n this._inputElement[0].attr(\"type\", \"text\");\n this._inputElement[1].attr(\"type\", \"color\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[1].property(\"value\", d3Rgb(this.value()).toString());\n\n const bbox = this._inputElement[0].node().getBoundingClientRect();\n this._inputElement[1].style(\"height\", (bbox.height - 2) + \"px\");\n\n }\n}\nColorInput.prototype._class += \" form_ColorInput\";\nColorInput.prototype.implements(IInput.prototype);\n\nexport interface ColorInput {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n}\n","import { d3Event, HTMLWidget, select as d3Select, SVGWidget, Widget, WidgetArray } from \"@hpcc-js/common\";\nimport { Button } from \"./Button.ts\";\n\nimport \"../src/Form.css\";\n\nexport class Form extends HTMLWidget {\n tbody;\n tfoot;\n btntd;\n _controls;\n _maxCols;\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) {\n const retVal = [];\n this.inputsForEach(function (input) {\n retVal.push(input.value());\n });\n return retVal;\n } else {\n this.inputsForEach(function (input, idx) {\n if (_ && _.length > idx) {\n input.value(_[idx]).render();\n }\n });\n }\n return this;\n }\n\n inputsForEach(callback, scope?) {\n let idx = 0;\n this.inputs().forEach(function (inp) {\n const inpArray = inp instanceof WidgetArray ? inp.content() : [inp];\n inpArray.forEach(function (inp2) {\n if (scope) {\n callback.call(scope, inp2, idx++);\n } else {\n callback(inp2, idx++);\n }\n });\n });\n }\n\n inputsMap(): { [name: string]: Widget } {\n const retVal: { [name: string]: Widget } = {};\n this.inputs().forEach(function (inp) {\n retVal[inp.name()] = inp;\n });\n return retVal;\n }\n\n calcMaxColumns() {\n let retVal = 0;\n this.inputs().forEach(function (inputWidget) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n if (inputWidgetArray.length > retVal) {\n retVal = inputWidgetArray.length;\n }\n });\n return retVal;\n }\n\n values(): any;\n values(_: any): this;\n values(_?: any): any | this {\n if (!arguments.length) {\n const dataArr = {};\n this.inputsForEach(function (inp) {\n const type = inp.type ? inp.type() : \"text\";\n const value = inp.value();\n if (value || !this.omitBlank()) {\n switch (type) {\n case \"checkbox\":\n dataArr[inp.name()] = inp.value_exists() ? !!inp.value() : undefined;\n break;\n case \"number\":\n const v = inp.value();\n dataArr[inp.name()] = v === \"\" ? undefined : +v;\n break;\n case \"text\":\n default:\n dataArr[inp.name()] = inp.value_exists() ? inp.value() : undefined;\n break;\n }\n }\n }, this);\n return dataArr;\n } else {\n this.inputsForEach(function (inp) {\n if (_[inp.name()]) {\n inp.value(_[inp.name()]);\n } else if (this.omitBlank()) {\n inp.value(\"\");\n }\n }, this);\n }\n return this;\n }\n\n submit() {\n let isValid = true;\n if (this.validate()) {\n isValid = this.checkValidation();\n }\n if (!this.allowEmptyRequest() && !this.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n })) {\n return;\n }\n this.click(isValid ? this.values() : null, null, isValid);\n }\n\n clear() {\n this.inputsForEach(function (inp) {\n switch (inp.classID()) {\n case \"form_Slider\":\n if (inp.allowRange()) {\n inp.value([inp.low(), inp.low()]).render();\n } else {\n inp.value(inp.low()).render();\n }\n break;\n case \"form_CheckBox\":\n inp.value(false).render();\n break;\n case \"form_Button\":\n /* skip */\n break;\n default:\n inp.value(undefined).render();\n break;\n }\n });\n }\n\n checkValidation() {\n let ret = true;\n const msgArr = [];\n this.inputsForEach(function (inp) {\n if (!inp.isValid()) {\n msgArr.push(\"'\" + inp.label() + \"'\" + \" value is invalid.\");\n }\n });\n if (msgArr.length > 0) {\n alert(msgArr.join(\"\\n\"));\n ret = false;\n }\n return ret;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.on(\"submit\", function () {\n d3Event().preventDefault();\n });\n\n this._placeholderElement.style(\"overflow\", \"auto\");\n const table = element\n .append(\"table\")\n ;\n this.tbody = table.append(\"tbody\");\n this.tfoot = table.append(\"tfoot\");\n this.btntd = this.tfoot.append(\"tr\").append(\"td\")\n .attr(\"colspan\", 2)\n ;\n\n const context = this;\n this._controls = [\n new Button()\n .classed({ default: true })\n .value(\"Submit\")\n .on(\"click\", function () {\n context.submit();\n }, true),\n new Button()\n .value(\"Clear\")\n .on(\"click\", function () {\n context.clear();\n }, true)\n ];\n const rightJust = context.btntd\n .append(\"div\")\n .style(\"float\", \"right\")\n ;\n this._controls.forEach(function (w) {\n const leftJust = rightJust\n .append(\"span\")\n .style(\"float\", \"left\")\n ;\n w.target(leftJust.node()).render();\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._maxCols = this.calcMaxColumns();\n\n const context = this;\n const rows = this.tbody.selectAll(\"tr\").data(this.inputs());\n rows.enter().append(\"tr\")\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.append(\"td\")\n .attr(\"class\", \"prompt\")\n ;\n const input = element2.append(\"td\")\n .attr(\"class\", \"input\")\n ;\n if (idx === inputWidgetArray.length - 1 && inputWidgetArray.length < context._maxCols) {\n input.attr(\"colspan\", (context._maxCols - inputWidgetArray.length + 1) * 2);\n }\n inputWidget2.target(input.node()).render();\n if (inputWidget2 instanceof SVGWidget) {\n const bbox = inputWidget2.element().node().getBBox();\n input.style(\"height\", bbox.height + \"px\");\n inputWidget2.resize().render();\n }\n\n if (inputWidget2._inputElement instanceof Array) {\n inputWidget2._inputElement.forEach(function (e) {\n e.on(\"keyup.form\", function (w) {\n setTimeout(function () {\n\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w2) {\n if (w2._class.indexOf(\"WidgetArray\") !== -1) {\n return w2.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w2.hasValue();\n }));\n }, 100);\n });\n });\n }\n });\n })\n .merge(rows)\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.select(\"td.prompt\")\n .text(inputWidget2.label() + \":\")\n ;\n });\n })\n ;\n rows.each(function (inputWidget, i) {\n if (i === 0 && inputWidget.setFocus) {\n inputWidget.setFocus();\n }\n });\n rows.exit()\n .each(function (inputWidget, i) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n inputWidget2.target(null);\n });\n })\n .remove()\n ;\n\n this.tfoot\n .style(\"display\", this.showSubmit() ? \"table-footer-group\" : \"none\")\n ;\n this.btntd\n .attr(\"colspan\", this._maxCols * 2)\n ;\n\n // Disable Submit unless there is data\n if (!this.allowEmptyRequest()) {\n setTimeout(function () {\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n }));\n }, 100);\n }\n\n }\n\n exit(domNode, element) {\n this.inputsForEach(input => input.target(null));\n super.exit(domNode, element);\n }\n\n click(row, col, sel) {\n }\n}\nForm.prototype._class += \" form_Form\";\n\nexport interface Form {\n validate(): boolean;\n validate(_: boolean): this;\n validate_exists(): boolean;\n inputs(): any[];\n inputs(_: any[]): this;\n inputs_exists(): boolean;\n inputs_reset(): void;\n showSubmit(): boolean;\n showSubmit(_: boolean): this;\n showSubmit_exists(): boolean;\n omitBlank(): boolean;\n omitBlank(_: boolean): this;\n omitBlank_exists(): boolean;\n allowEmptyRequest(): boolean;\n allowEmptyRequest(_: boolean): this;\n allowEmptyRequest_exists(): boolean;\n}\n\nForm.prototype.publish(\"validate\", true, \"boolean\", \"Enable/Disable input validation\");\nForm.prototype.publish(\"inputs\", [], \"widgetArray\", \"Array of input widgets\", null, { render: false });\nForm.prototype.publish(\"showSubmit\", true, \"boolean\", \"Show Submit/Cancel Controls\");\nForm.prototype.publish(\"omitBlank\", false, \"boolean\", \"Drop Blank Fields From Submit\");\nForm.prototype.publish(\"allowEmptyRequest\", false, \"boolean\", \"Allow Blank Form to be Submitted\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { Database, HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Input extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n checked(_) {\n if (!arguments.length) return this._inputElement[0] ? this._inputElement[0].property(\"checked\") : false;\n if (this._inputElement[0]) {\n this._inputElement[0].property(\"checked\", _);\n }\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n const context = this;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0] = element.append(\"button\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n case \"textarea\":\n this._inputElement[0] = element.append(\"textarea\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n default:\n this._inputElement[0] = element.append(\"input\")\n .attr(\"id\", this.id() + \"_input\")\n .attr(\"type\", this.type())\n ;\n break;\n }\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w: Input) {\n w.click(w);\n });\n e.on(\"blur\", function (w: Input) {\n w.blur(w);\n });\n e.on(\"change\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n e.on(\"keyup\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, false);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0].text(this.value());\n break;\n case \"textarea\":\n this._inputElement[0].property(\"value\", this.value());\n break;\n default:\n this._inputElement[0].attr(\"type\", this.type());\n this._inputElement[0].property(\"value\", this.value());\n break;\n }\n }\n\n // IInput Events ---\n blur(w: Input) {\n }\n keyup(w: Input) {\n }\n focus(w: Input) {\n }\n click(w: Input) {\n }\n dblclick(w: Input) {\n }\n change(w: Input, complete: boolean) {\n }\n}\nInput.prototype._class += \" form_Input\";\nInput.prototype.implements(IInput.prototype);\n\nexport interface Input {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\";\n type(_: Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\"): this;\n type_exists(): boolean;\n type_default(): string;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInput.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"string\", \"number\", \"boolean\", \"date\", \"time\", \"hidden\", \"nested\", \"button\", \"checkbox\", \"text\", \"textarea\", \"search\", \"email\", \"datetime\"]);\nInput.prototype.publish(\"inlineLabel\", null, \"string\", \"Input Label\", null, { optional: true });\n","import { Database } from \"@hpcc-js/common\";\nimport { Form } from \"./Form.ts\";\nimport { Input } from \"./Input.ts\";\n\nimport \"../src/Form.css\";\n\nexport class FieldForm extends Form {\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n const retVal = super.fields.apply(this, arguments);\n if (arguments.length) {\n const inpMap = this.inputsMap();\n this.inputs(_.map(f => inpMap[f.id()] || new Input()\n .name(f.id())\n .label(f.label())\n .type(f.type())\n ));\n }\n return retVal;\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) return super.data();\n super.data(_[0]);\n if (_[0]) {\n // Update input \"name\" with the __lparam ids ---\n const inputs = this.inputs();\n const __lparam = _[0][this.columns().length];\n let i = 0;\n for (const key in __lparam) {\n inputs[i].name(key);\n ++i;\n }\n }\n return this;\n }\n\n}\nFieldForm.prototype._class += \" form_FieldForm\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class InputRange extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n _rangeData = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_min\")\n .attr(\"type\", this.type()));\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_max\")\n .attr(\"type\", this.type()));\n\n const context = this;\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context._rangeData[idx] = e.property(\"value\");\n context.value(context._rangeData);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n\n this._rangeData = this.value();\n this._inputElement.forEach(function (e, idx) {\n e\n .attr(\"type\", this.type())\n .property(\"value\", this._rangeData.length > idx ? this._rangeData[idx] : \"\");\n }, this);\n }\n}\nInputRange.prototype._class += \" form_InputRange\";\nInputRange.prototype.implements(IInput.prototype);\n\nexport interface InputRange {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any[];\n value(_: any[]): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInputRange.prototype.publish(\"type\", \"text\", \"set\", \"InputRange type\", [\"number\", \"date\", \"text\", \"time\", \"datetime\", \"hidden\"]);\nInputRange.prototype.publish(\"inlineLabel\", null, \"string\", \"InputRange Label\", null, { optional: true });\nInputRange.prototype.publish(\"value\", [\"\", \"\"], \"array\", \"Input Current Value\", null, { override: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/OnOff.css\";\n\nexport class OnOff extends HTMLWidget {\n _inputElement = [];\n _input;\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.classed(\"onoffswitch\", true);\n const context = this;\n this._input = element.append(\"input\")\n .attr(\"class\", \"onoffswitch-checkbox\")\n .attr(\"type\", \"checkbox\")\n .attr(\"id\", this.id() + \"_onOff\")\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d, idx) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n })\n ;\n const label = element.append(\"label\")\n .attr(\"class\", \"onoffswitch-label\")\n .attr(\"for\", this.id() + \"_onOff\")\n ;\n const inner = label.append(\"div\")\n .attr(\"class\", \"onoffswitch-inner\")\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-offText\")\n .style(\"padding-right\", (this.containerRadius() / 2) + \"px\")\n .text(this.offText())\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-onText\")\n .style(\"padding-left\", (this.containerRadius() / 2) + \"px\")\n .style(\"width\", `calc(100% - ${(this.containerRadius() / 2)}px)`)\n .text(this.onText())\n ;\n label.append(\"div\")\n .attr(\"class\", \"onoffswitch-switch\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._input\n .attr(\"name\", this.name())\n ;\n element\n .style(\"margin-left\", this.marginLeft() + \"px\")\n .style(\"margin-bottom\", this.marginBottom() + \"px\")\n .style(\"width\", this.minWidth() + \"px\")\n ;\n\n const _switch_size = this.minHeight() - (this.gutter() * 4);\n\n element.select(\".onoffswitch-switch\")\n .style(\"height\", _switch_size + \"px\")\n .style(\"width\", _switch_size + \"px\")\n .style(\"top\", (this.gutter() * 2) + 1 + \"px\")\n .style(\"border-radius\", this.switchRadius() + \"px\")\n ;\n element.select(\".onoffswitch-inner\")\n .style(\"min-height\", this.minHeight() + \"px\")\n ;\n element.select(\".onoffswitch-label\")\n .style(\"border-radius\", this.containerRadius() + \"px\")\n ;\n element.select(\".onoffswitch-offText\")\n .style(\"color\", this.offFontColor())\n .style(\"background-color\", this.offColor())\n ;\n element.select(\".onoffswitch-onText\")\n .style(\"color\", this.onFontColor())\n .style(\"background-color\", this.onColor())\n ;\n }\n}\nOnOff.prototype._class += \" form_OnOff\";\nexport interface OnOff {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n marginLeft(): number;\n marginLeft(_: number): this;\n marginBottom(): number;\n marginBottom(_: number): this;\n minWidth(): number;\n minWidth(_: number): this;\n minHeight(): number;\n minHeight(_: number): this;\n gutter(): number;\n gutter(_: number): this;\n offText(): string;\n offText(_: string): this;\n onText(): string;\n onText(_: string): this;\n switchRadius(): number;\n switchRadius(_: number): this;\n containerRadius(): number;\n containerRadius(_: number): this;\n offColor(): string;\n offColor(_: string): this;\n onColor(): string;\n onColor(_: string): this;\n offFontColor(): string;\n offFontColor(_: string): this;\n onFontColor(): string;\n onFontColor(_: string): this;\n\n}\nOnOff.prototype.implements(IInput.prototype);\n\nOnOff.prototype.publish(\"marginLeft\", 0, \"number\", \"Margin left of OnOff\");\nOnOff.prototype.publish(\"marginBottom\", 0, \"number\", \"Margin bottom of OnOff\");\nOnOff.prototype.publish(\"minWidth\", 100, \"number\", \"Minimum width of OnOff (pixels)\");\nOnOff.prototype.publish(\"minHeight\", 20, \"number\", \"Minimum height of OnOff (pixels)\");\nOnOff.prototype.publish(\"gutter\", 1, \"number\", \"Space between switch and border of OnOff (pixels)\");\nOnOff.prototype.publish(\"onText\", \"Save\", \"string\", \"Text to display when 'ON'\");\nOnOff.prototype.publish(\"offText\", \"Properties\", \"string\", \"Text to display when 'OFF'\");\nOnOff.prototype.publish(\"switchRadius\", 10, \"number\", \"Border radius of switch (pixels)\");\nOnOff.prototype.publish(\"containerRadius\", 10, \"number\", \"Border radius of OnOff (pixels)\");\nOnOff.prototype.publish(\"onColor\", \"#2ecc71\", \"html-color\", \"Background color when 'ON'\");\nOnOff.prototype.publish(\"offColor\", \"#ecf0f1\", \"html-color\", \"Background color when 'OFF'\");\nOnOff.prototype.publish(\"onFontColor\", \"#2c3e50\", \"html-color\", \"Font color when 'ON'\");\nOnOff.prototype.publish(\"offFontColor\", \"#7f8c8d\", \"html-color\", \"Font color when 'OFF'\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Radio extends HTMLWidget {\n _inputElement = [];\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n const radioContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = radioContainer.append(\"li\").append(\"input\").attr(\"type\", \"radio\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n}\nRadio.prototype._class += \" form_Radio\";\nRadio.prototype.implements(IInput.prototype);\n\nexport interface Radio {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nRadio.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class Range extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"range\");\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"number\");\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].attr(\"type\", \"range\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[0].attr(\"min\", this.low());\n this._inputElement[0].attr(\"max\", this.high());\n this._inputElement[0].attr(\"step\", this.step());\n this._inputElement[1].attr(\"type\", \"number\");\n this._inputElement[1].property(\"value\", this.value());\n this._inputElement[1].attr(\"min\", this.low());\n this._inputElement[1].attr(\"max\", this.high());\n this._inputElement[1].attr(\"step\", this.step());\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nRange.prototype._class += \" form_Range\";\nRange.prototype.implements(IInput.prototype);\n\nexport interface Range {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n low(): number;\n low(_: number): this;\n low_exists(): boolean;\n high(): number;\n high(_: number): this;\n high_exists(): boolean;\n step(): number;\n step(_: number): this;\n step_exists(): boolean;\n}\n\nRange.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"html-color\", \"number\", \"checkbox\", \"button\", \"select\", \"textarea\", \"date\", \"text\", \"range\", \"search\", \"email\", \"time\", \"datetime\"]);\nRange.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nRange.prototype.publish(\"low\", null, \"number\", \"Minimum value for Range input\");\nRange.prototype.publish(\"high\", null, \"number\", \"Maximum value for Range input\");\nRange.prototype.publish(\"step\", null, \"number\", \"Step value for Range input\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Select extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"select\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this.insertSelectOptions(this.selectOptions());\n this._inputElement[0]\n .property(\"value\", this.value())\n .style(\"max-width\", this.maxWidth_exists() ? this.maxWidth() + \"px\" : null)\n ;\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nSelect.prototype._class += \" form_Select\";\nSelect.prototype.implements(IInput.prototype);\n\nexport interface Select {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n maxWidth(): number;\n maxWidth(_: number): this;\n maxWidth_exists(): boolean;\n}\n\nSelect.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nSelect.prototype.publish(\"maxWidth\", 120, \"number\", \"Width\", null, { optional: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { d3Event, select as d3Select, SVGWidget } from \"@hpcc-js/common\";\nimport { drag as d3Drag } from \"d3-drag\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/Slider.css\";\n\nexport class Slider extends SVGWidget {\n xScale;\n\n moveMode: \"both\" | \"left\" | \"right\";\n moveStartPos: number;\n\n prevValue;\n\n slider;\n\n handleLeft;\n handleLeftPos: number = 0;\n handleLeftStartPos: number;\n\n handleRight;\n handleRightPos: number = 0;\n handleRightStartPos: number;\n\n constructor() {\n super();\n IInput.call(this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.resize({ width: this.width(), height: 50 });\n\n this.xScale = d3ScaleLinear()\n .clamp(true);\n\n this.slider = element.append(\"g\")\n .attr(\"class\", \"slider\")\n ;\n if (this.low() === null && this.high() === null) {\n if (this.lowDatetime() !== null && this.highDatetime() !== null) {\n const time_parser = d3TimeParse(this.timePattern() ? this.timePattern() : \"%Q\");\n this.low(time_parser(this.lowDatetime()).getTime());\n this.high(time_parser(this.highDatetime()).getTime());\n }\n }\n this.slider.append(\"line\")\n .attr(\"class\", \"track\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-inset\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-overlay\")\n .call(d3Drag()\n .on(\"start\", () => {\n const event = d3Event();\n this.moveStartPos = event.x;\n this.handleLeftStartPos = this.handleLeftPos;\n this.handleRightStartPos = this.handleRightPos;\n if (this.allowRange() && this.handleLeftPos <= event.x && event.x <= this.handleRightPos) {\n this.moveMode = \"both\";\n } else if (Math.abs(event.x - this.handleLeftPos) < Math.abs(event.x - this.handleRightPos)) {\n this.moveMode = \"left\";\n } else {\n this.moveMode = \"right\";\n }\n this.moveHandleTo(event.x);\n })\n .on(\"drag\", () => {\n this.moveHandleTo(d3Event().x);\n })\n .on(\"end\", () => {\n this.moveHandleTo(d3Event().x);\n this.data([[this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)]]);\n this.checkChangedValue();\n }));\n\n this.slider.insert(\"g\", \".track-overlay\")\n .attr(\"class\", \"ticks\")\n .attr(\"transform\", `translate(0, ${this.fontSize() + (this.tickHeight() / 2)})`)\n ;\n\n this.handleRight = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n\n this.handleLeft = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n this.xScale\n .domain([this.low(), this.high()])\n .range([0, this.width() - this.padding() * 2])\n ;\n\n this.slider\n .attr(\"transform\", \"translate(\" + (-this.width() / 2 + this.padding()) + \",\" + 0 + \")\");\n\n this.slider.selectAll(\"line.track,line.track-inset,line.track-overlay\")\n .attr(\"x1\", this.xScale.range()[0])\n .attr(\"x2\", this.xScale.range()[1])\n ;\n\n const x_distance = (this.width() - (this.padding() * 2)) / (this.tickCount() - 1);\n\n const tick_text_arr = [];\n if (this.tickDateFormat() !== null && this.timePattern() !== null) {\n const Q_parser = d3TimeParse(\"%Q\");\n const time_formatter = d3TimeFormat(this.tickDateFormat());\n const time_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const date_to_parse = \"\" + (this.low() + (time_segment * i));\n const parsed_date = Q_parser(date_to_parse);\n tick_text_arr.push(time_formatter(parsed_date));\n }\n } else {\n const value_formatter = d3Format(this.tickValueFormat());\n const value_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const tick_value = this.low() + (value_segment * i);\n tick_text_arr.push(value_formatter(tick_value));\n }\n }\n const tickText = this.slider.selectAll(\"g.tick\").data(tick_text_arr);\n const tickTextEnter = tickText.enter().append(\"g\").attr(\"class\", \"tick\");\n\n tickTextEnter.append(\"text\").attr(\"class\", \"tick-text\");\n tickTextEnter.append(\"line\").attr(\"class\", \"tick-line\");\n tickTextEnter\n .merge(tickText)\n .each(function (d, i) {\n const x = x_distance * i;\n\n d3Select(this).select(\"text.tick-text\")\n .style(\"font-size\", context.fontSize())\n .attr(\"x\", function () {\n if (i === 0) return x - 2;\n return i === context.tickCount() - 1 ? x + 2 : x;\n })\n .attr(\"y\", context.tickHeight() + (context.tickOffset() / 2) + context.fontSize())\n .attr(\"text-basline\", \"text-before-edge\")\n .attr(\"text-anchor\", function () {\n if (i === 0) return \"start\";\n return i === context.tickCount() - 1 ? \"end\" : \"middle\";\n })\n .text(() => d)\n ;\n\n d3Select(this).select(\"line.tick-line\")\n .attr(\"x1\", x)\n .attr(\"x2\", x)\n .attr(\"y1\", context.tickOffset() - 1)\n .attr(\"y2\", context.tickOffset() + context.tickHeight())\n .style(\"stroke\", \"#000\")\n .style(\"stroke-width\", 1)\n ;\n });\n this.slider.node().appendChild(this.handleRight.node());\n this.slider.node().appendChild(this.handleLeft.node());\n this.handleLeftPos = this.lowPos();\n this.handleRightPos = this.highPos();\n this.updateHandles();\n this.checkChangedValue();\n }\n\n checkChangedValue() {\n if (this.prevValue !== this.value() && typeof this.prevValue !== \"undefined\") {\n this.change(this);\n }\n this.prevValue = this.value();\n }\n\n updateHandles() {\n this.handleLeft\n .attr(\"transform\", `translate(${this.handleLeftPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"l\"))\n ;\n this.handleRight\n .attr(\"transform\", `translate(${this.handleRightPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"r\"))\n ;\n }\n\n lowPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][0]);\n }\n\n highPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][this.allowRange() ? 1 : 0]);\n }\n\n moveHandleTo(pos) {\n if (this.allowRange()) {\n switch (this.moveMode) {\n case \"both\":\n this.handleLeftPos = this.handleLeftStartPos + pos - this.moveStartPos;\n this.handleRightPos = this.handleRightStartPos + pos - this.moveStartPos;\n break;\n case \"left\":\n this.handleLeftPos = pos;\n if (this.handleLeftPos > this.handleRightPos) {\n this.handleRightPos = this.handleLeftPos;\n }\n break;\n case \"right\":\n this.handleRightPos = pos;\n if (this.handleRightPos < this.handleLeftPos) {\n this.handleLeftPos = this.handleRightPos;\n }\n break;\n }\n } else {\n this.handleLeftPos = this.handleRightPos = pos;\n }\n\n this.handleLeftPos = this.constrain(this.handleLeftPos);\n this.handleRightPos = this.constrain(this.handleRightPos);\n this.value(this.allowRange() ? [this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)] : this.xScale.invert(this.handleLeftPos));\n this.updateHandles();\n }\n\n constrain(pos: number): number {\n const range = this.xScale.range();\n if (pos < range[0]) pos = range[0];\n if (pos > range[1]) pos = range[1];\n return this.nearestStep(pos);\n }\n\n nearestStep(pos) {\n const value = this.xScale.invert(pos);\n return this.xScale(this.low() + Math.round((value - this.low()) / this.step()) * this.step());\n }\n\n handlePath = function (d) {\n const e = +(d === \"r\");\n const x = e ? 1 : -1;\n const xOffset = this.allowRange() ? 0.5 : 0.0;\n const y = 18;\n let retVal = \"M\" + (xOffset * x) + \",\" + y +\n \"A6,6 0 0 \" + e + \" \" + (6.5 * x) + \",\" + (y + 6) +\n \"V\" + (2 * y - 6) +\n \"A6,6 0 0 \" + e + \" \" + (xOffset * x) + \",\" + (2 * y)\n ;\n if (this.allowRange()) {\n retVal += \"Z\" +\n \"M\" + (2.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8) +\n \"M\" + (4.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n } else {\n retVal += \"M\" + (1 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n }\n return retVal;\n };\n\n}\nSlider.prototype._class += \" form_Slider\";\nSlider.prototype.implements(IInput.prototype);\n\nexport interface Slider {\n // IInput ---\n name(): string;\n name(_: string): this;\n change(_: Slider): void;\n\n // Properties ---\n padding(): number;\n padding(_: number): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontColor(): string;\n fontColor(_: string): this;\n allowRange(): boolean;\n allowRange(_: boolean): this;\n low(): number;\n low(_: number): this;\n high(): number;\n high(_: number): this;\n step(): number;\n step(_: number): this;\n lowDatetime(): string;\n lowDatetime(_: string): this;\n highDatetime(): string;\n highDatetime(_: string): this;\n stepDatetime(): number;\n stepDatetime(_: number): this;\n selectionLabel(): string;\n selectionLabel(_: string): this;\n label(): string;\n label(_: string): this;\n value(): any;\n value(_: any): this;\n validate(): string;\n validate(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n tickOffset(): number;\n tickOffset(_: number): this;\n tickHeight(): number;\n tickHeight(_: number): this;\n tickDateFormat(): string;\n tickDateFormat(_: string): this;\n tickValueFormat(): string;\n tickValueFormat(_: string): this;\n timePattern(): string;\n timePattern(_: string): this;\n\n padding_exists(): boolean;\n fontSize_exists(): boolean;\n fontFamily_exists(): boolean;\n fontColor_exists(): boolean;\n allowRange_exists(): boolean;\n low_exists(): boolean;\n step_exists(): boolean;\n high_exists(): boolean;\n selectionLabel_exists(): boolean;\n name_exists(): boolean;\n label_exists(): boolean;\n value_exists(): boolean;\n validate_exists(): boolean;\n}\n\nSlider.prototype.publish(\"padding\", 16, \"number\", \"Outer Padding\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontSize\", 12, \"number\", \"Font Size\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontFamily\", null, \"string\", \"Font Name\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontColor\", null, \"html-color\", \"Font Color\", null, { tags: [\"Basic\"] });\n\nSlider.prototype.publish(\"allowRange\", false, \"boolean\", \"Allow Range Selection\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"low\", null, \"number\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"high\", null, \"number\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"step\", 10, \"number\", \"Step\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"lowDatetime\", null, \"string\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"highDatetime\", null, \"string\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"selectionLabel\", \"\", \"string\", \"Selection Label\", null, { tags: [\"Intermediate\"] });\n\nSlider.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\");\n\nSlider.prototype.publish(\"tickCount\", 10, \"number\");\nSlider.prototype.publish(\"tickOffset\", 5, \"number\");\nSlider.prototype.publish(\"tickHeight\", 8, \"number\");\nSlider.prototype.publish(\"tickDateFormat\", null, \"string\");\nSlider.prototype.publish(\"tickValueFormat\", \",.0f\", \"string\");\n\nconst name = Slider.prototype.name;\nSlider.prototype.name = function (_?: any): any {\n const retVal = name.apply(this, arguments);\n if (arguments.length) {\n const val = _ instanceof Array ? _ : [_];\n SVGWidget.prototype.columns.call(this, val);\n }\n return retVal;\n};\n\nconst value = Slider.prototype.value;\nSlider.prototype.value = function (_?: any): any {\n const retVal = value.apply(this, arguments);\n if (!arguments.length) {\n if (!this.allowRange()) {\n return SVGWidget.prototype.data.call(this)[0][0];\n }\n return SVGWidget.prototype.data.call(this)[0];\n } else {\n SVGWidget.prototype.data.call(this, [this.allowRange() ? _ : [_, _]]);\n }\n return retVal;\n};\n","import { Input } from \"./Input.ts\";\n\nexport class TextArea extends Input {\n constructor() {\n super();\n\n this._tag = \"div\";\n this.type(\"textarea\");\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n calcHeight() {\n return Math.max(this.minHeight_exists() ? this.minHeight() : 0, this.height());\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._inputElement[0]\n .attr(\"rows\", this.rows())\n .attr(\"cols\", this.cols())\n .attr(\"wrap\", this.wrap())\n .attr(\"spellcheck\", this.spellcheck())\n .style(\"height\", this.calcHeight() + \"px\")\n ;\n }\n\n}\nTextArea.prototype._class += \" form_TextArea\";\n\nexport interface TextArea {\n rows(): number;\n rows(_: number): this;\n rows_exists(): boolean;\n cols(): number;\n cols(_: number): this;\n cols_exists(): boolean;\n wrap(): string;\n wrap(_: string): this;\n wrap_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n spellcheck(): boolean;\n spellcheck(_: boolean): this;\n spellcheck_exists(): boolean;\n}\n\nTextArea.prototype.publish(\"rows\", null, \"number\", \"Rows\", null, { optional: true });\nTextArea.prototype.publish(\"cols\", null, \"number\", \"Columns\", null, { optional: true });\nTextArea.prototype.publish(\"wrap\", \"off\", \"set\", \"Wrap\", [\"off\", \"on\"]);\nTextArea.prototype.publish(\"minHeight\", null, \"number\", \"Minimum Height\", null, { optional: true });\nTextArea.prototype.publish(\"spellcheck\", null, \"boolean\", \"Input spell checking\", { optional: true });\n"],"names":["HTMLWidget","IInput","d3Rgb","WidgetArray","d3Event","d3Select","SVGWidget","d3ScaleLinear","d3TimeParse","d3Drag","d3TimeFormat","d3Format","value"],"mappings":"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"}
1
+ {"version":3,"file":"index.umd.cjs","sources":["../src/__package__.ts","../src/Button.ts","../src/CheckBox.ts","../src/ColorInput.ts","../src/Form.ts","../src/Input.ts","../src/FieldForm.ts","../src/InputRange.ts","../src/OnOff.ts","../src/Radio.ts","../src/Range.ts","../src/Select.ts","../src/Slider.ts","../src/TextArea.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/form\";\nexport const PKG_VERSION = \"3.1.0\";\nexport const BUILD_VERSION = \"3.2.1\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Button extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n this._inputElement[0] = element.append(\"button\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].text(this.value());\n }\n}\nButton.prototype._class += \" form_Button\";\nButton.prototype.implements(IInput.prototype);\n\nexport interface Button {\n name(): string;\n name(_: string): Button;\n label(): string;\n label(_: string): Button;\n value(): any;\n value(_: any): Button;\n validate(): string;\n validate(_: string): Button;\n}\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class CheckBox extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n const checkboxContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = checkboxContainer.append(\"li\").append(\"input\").attr(\"type\", \"checkbox\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nCheckBox.prototype._class += \" form_CheckBox\";\nCheckBox.prototype.implements(IInput.prototype);\n\nexport interface CheckBox {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nCheckBox.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class ColorInput extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"text\");\n this._inputElement[0].classed(\"color-text\", true);\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"color\");\n\n this._inputElement.forEach(function (e, idx) {\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n this._inputElement.forEach(function (e) {\n e.attr(\"name\", context.name());\n });\n\n this._inputElement[0].attr(\"type\", \"text\");\n this._inputElement[1].attr(\"type\", \"color\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[1].property(\"value\", d3Rgb(this.value()).toString());\n\n const bbox = this._inputElement[0].node().getBoundingClientRect();\n this._inputElement[1].style(\"height\", (bbox.height - 2) + \"px\");\n\n }\n}\nColorInput.prototype._class += \" form_ColorInput\";\nColorInput.prototype.implements(IInput.prototype);\n\nexport interface ColorInput {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n}\n","import { d3Event, HTMLWidget, select as d3Select, SVGWidget, Widget, WidgetArray } from \"@hpcc-js/common\";\nimport { Button } from \"./Button.ts\";\n\nimport \"../src/Form.css\";\n\nexport class Form extends HTMLWidget {\n tbody;\n tfoot;\n btntd;\n _controls;\n _maxCols;\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) {\n const retVal = [];\n this.inputsForEach(function (input) {\n retVal.push(input.value());\n });\n return retVal;\n } else {\n this.inputsForEach(function (input, idx) {\n if (_ && _.length > idx) {\n input.value(_[idx]).render();\n }\n });\n }\n return this;\n }\n\n inputsForEach(callback, scope?) {\n let idx = 0;\n this.inputs().forEach(function (inp) {\n const inpArray = inp instanceof WidgetArray ? inp.content() : [inp];\n inpArray.forEach(function (inp2) {\n if (scope) {\n callback.call(scope, inp2, idx++);\n } else {\n callback(inp2, idx++);\n }\n });\n });\n }\n\n inputsMap(): { [name: string]: Widget } {\n const retVal: { [name: string]: Widget } = {};\n this.inputs().forEach(function (inp) {\n retVal[inp.name()] = inp;\n });\n return retVal;\n }\n\n calcMaxColumns() {\n let retVal = 0;\n this.inputs().forEach(function (inputWidget) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n if (inputWidgetArray.length > retVal) {\n retVal = inputWidgetArray.length;\n }\n });\n return retVal;\n }\n\n values(): any;\n values(_: any): this;\n values(_?: any): any | this {\n if (!arguments.length) {\n const dataArr = {};\n this.inputsForEach(function (inp) {\n const type = inp.type ? inp.type() : \"text\";\n const value = inp.value();\n if (value || !this.omitBlank()) {\n switch (type) {\n case \"checkbox\":\n dataArr[inp.name()] = inp.value_exists() ? !!inp.value() : undefined;\n break;\n case \"number\":\n const v = inp.value();\n dataArr[inp.name()] = v === \"\" ? undefined : +v;\n break;\n case \"text\":\n default:\n dataArr[inp.name()] = inp.value_exists() ? inp.value() : undefined;\n break;\n }\n }\n }, this);\n return dataArr;\n } else {\n this.inputsForEach(function (inp) {\n if (_[inp.name()]) {\n inp.value(_[inp.name()]);\n } else if (this.omitBlank()) {\n inp.value(\"\");\n }\n }, this);\n }\n return this;\n }\n\n submit() {\n let isValid = true;\n if (this.validate()) {\n isValid = this.checkValidation();\n }\n if (!this.allowEmptyRequest() && !this.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n })) {\n return;\n }\n this.click(isValid ? this.values() : null, null, isValid);\n }\n\n clear() {\n this.inputsForEach(function (inp) {\n switch (inp.classID()) {\n case \"form_Slider\":\n if (inp.allowRange()) {\n inp.value([inp.low(), inp.low()]).render();\n } else {\n inp.value(inp.low()).render();\n }\n break;\n case \"form_CheckBox\":\n inp.value(false).render();\n break;\n case \"form_Button\":\n /* skip */\n break;\n default:\n inp.value(undefined).render();\n break;\n }\n });\n }\n\n checkValidation() {\n let ret = true;\n const msgArr = [];\n this.inputsForEach(function (inp) {\n if (!inp.isValid()) {\n msgArr.push(\"'\" + inp.label() + \"'\" + \" value is invalid.\");\n }\n });\n if (msgArr.length > 0) {\n alert(msgArr.join(\"\\n\"));\n ret = false;\n }\n return ret;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.on(\"submit\", function () {\n d3Event().preventDefault();\n });\n\n this._placeholderElement.style(\"overflow\", \"auto\");\n const table = element\n .append(\"table\")\n ;\n this.tbody = table.append(\"tbody\");\n this.tfoot = table.append(\"tfoot\");\n this.btntd = this.tfoot.append(\"tr\").append(\"td\")\n .attr(\"colspan\", 2)\n ;\n\n const context = this;\n this._controls = [\n new Button()\n .classed({ default: true })\n .value(\"Submit\")\n .on(\"click\", function () {\n context.submit();\n }, true),\n new Button()\n .value(\"Clear\")\n .on(\"click\", function () {\n context.clear();\n }, true)\n ];\n const rightJust = context.btntd\n .append(\"div\")\n .style(\"float\", \"right\")\n ;\n this._controls.forEach(function (w) {\n const leftJust = rightJust\n .append(\"span\")\n .style(\"float\", \"left\")\n ;\n w.target(leftJust.node()).render();\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._maxCols = this.calcMaxColumns();\n\n const context = this;\n const rows = this.tbody.selectAll(\"tr\").data(this.inputs());\n rows.enter().append(\"tr\")\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.append(\"td\")\n .attr(\"class\", \"prompt\")\n ;\n const input = element2.append(\"td\")\n .attr(\"class\", \"input\")\n ;\n if (idx === inputWidgetArray.length - 1 && inputWidgetArray.length < context._maxCols) {\n input.attr(\"colspan\", (context._maxCols - inputWidgetArray.length + 1) * 2);\n }\n inputWidget2.target(input.node()).render();\n if (inputWidget2 instanceof SVGWidget) {\n const bbox = inputWidget2.element().node().getBBox();\n input.style(\"height\", bbox.height + \"px\");\n inputWidget2.resize().render();\n }\n\n if (inputWidget2._inputElement instanceof Array) {\n inputWidget2._inputElement.forEach(function (e) {\n e.on(\"keyup.form\", function (w) {\n setTimeout(function () {\n\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w2) {\n if (w2._class.indexOf(\"WidgetArray\") !== -1) {\n return w2.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w2.hasValue();\n }));\n }, 100);\n });\n });\n }\n });\n })\n .merge(rows)\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.select(\"td.prompt\")\n .text(inputWidget2.label() + \":\")\n ;\n });\n })\n ;\n rows.each(function (inputWidget, i) {\n if (i === 0 && inputWidget.setFocus) {\n inputWidget.setFocus();\n }\n });\n rows.exit()\n .each(function (inputWidget, i) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n inputWidget2.target(null);\n });\n })\n .remove()\n ;\n\n this.tfoot\n .style(\"display\", this.showSubmit() ? \"table-footer-group\" : \"none\")\n ;\n this.btntd\n .attr(\"colspan\", this._maxCols * 2)\n ;\n\n // Disable Submit unless there is data\n if (!this.allowEmptyRequest()) {\n setTimeout(function () {\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n }));\n }, 100);\n }\n\n }\n\n exit(domNode, element) {\n this.inputsForEach(input => input.target(null));\n super.exit(domNode, element);\n }\n\n click(row, col, sel) {\n }\n}\nForm.prototype._class += \" form_Form\";\n\nexport interface Form {\n validate(): boolean;\n validate(_: boolean): this;\n validate_exists(): boolean;\n inputs(): any[];\n inputs(_: any[]): this;\n inputs_exists(): boolean;\n inputs_reset(): void;\n showSubmit(): boolean;\n showSubmit(_: boolean): this;\n showSubmit_exists(): boolean;\n omitBlank(): boolean;\n omitBlank(_: boolean): this;\n omitBlank_exists(): boolean;\n allowEmptyRequest(): boolean;\n allowEmptyRequest(_: boolean): this;\n allowEmptyRequest_exists(): boolean;\n}\n\nForm.prototype.publish(\"validate\", true, \"boolean\", \"Enable/Disable input validation\");\nForm.prototype.publish(\"inputs\", [], \"widgetArray\", \"Array of input widgets\", null, { render: false });\nForm.prototype.publish(\"showSubmit\", true, \"boolean\", \"Show Submit/Cancel Controls\");\nForm.prototype.publish(\"omitBlank\", false, \"boolean\", \"Drop Blank Fields From Submit\");\nForm.prototype.publish(\"allowEmptyRequest\", false, \"boolean\", \"Allow Blank Form to be Submitted\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { Database, HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Input extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n checked(_) {\n if (!arguments.length) return this._inputElement[0] ? this._inputElement[0].property(\"checked\") : false;\n if (this._inputElement[0]) {\n this._inputElement[0].property(\"checked\", _);\n }\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n const context = this;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0] = element.append(\"button\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n case \"textarea\":\n this._inputElement[0] = element.append(\"textarea\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n default:\n this._inputElement[0] = element.append(\"input\")\n .attr(\"id\", this.id() + \"_input\")\n .attr(\"type\", this.type())\n ;\n break;\n }\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w: Input) {\n w.click(w);\n });\n e.on(\"blur\", function (w: Input) {\n w.blur(w);\n });\n e.on(\"change\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n e.on(\"keyup\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, false);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0].text(this.value());\n break;\n case \"textarea\":\n this._inputElement[0].property(\"value\", this.value());\n break;\n default:\n this._inputElement[0].attr(\"type\", this.type());\n this._inputElement[0].property(\"value\", this.value());\n break;\n }\n }\n\n // IInput Events ---\n blur(w: Input) {\n }\n keyup(w: Input) {\n }\n focus(w: Input) {\n }\n click(w: Input) {\n }\n dblclick(w: Input) {\n }\n change(w: Input, complete: boolean) {\n }\n}\nInput.prototype._class += \" form_Input\";\nInput.prototype.implements(IInput.prototype);\n\nexport interface Input {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\";\n type(_: Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\"): this;\n type_exists(): boolean;\n type_default(): string;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInput.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"string\", \"number\", \"boolean\", \"date\", \"time\", \"hidden\", \"nested\", \"button\", \"checkbox\", \"text\", \"textarea\", \"search\", \"email\", \"datetime\"]);\nInput.prototype.publish(\"inlineLabel\", null, \"string\", \"Input Label\", null, { optional: true });\n","import { Database } from \"@hpcc-js/common\";\nimport { Form } from \"./Form.ts\";\nimport { Input } from \"./Input.ts\";\n\nimport \"../src/Form.css\";\n\nexport class FieldForm extends Form {\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n const retVal = super.fields.apply(this, arguments);\n if (arguments.length) {\n const inpMap = this.inputsMap();\n this.inputs(_.map(f => inpMap[f.id()] || new Input()\n .name(f.id())\n .label(f.label())\n .type(f.type())\n ));\n }\n return retVal;\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) return super.data();\n super.data(_[0]);\n if (_[0]) {\n // Update input \"name\" with the __lparam ids ---\n const inputs = this.inputs();\n const __lparam = _[0][this.columns().length];\n let i = 0;\n for (const key in __lparam) {\n inputs[i].name(key);\n ++i;\n }\n }\n return this;\n }\n\n}\nFieldForm.prototype._class += \" form_FieldForm\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class InputRange extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n _rangeData = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_min\")\n .attr(\"type\", this.type()));\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_max\")\n .attr(\"type\", this.type()));\n\n const context = this;\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context._rangeData[idx] = e.property(\"value\");\n context.value(context._rangeData);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n\n this._rangeData = this.value();\n this._inputElement.forEach(function (e, idx) {\n e\n .attr(\"type\", this.type())\n .property(\"value\", this._rangeData.length > idx ? this._rangeData[idx] : \"\");\n }, this);\n }\n}\nInputRange.prototype._class += \" form_InputRange\";\nInputRange.prototype.implements(IInput.prototype);\n\nexport interface InputRange {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any[];\n value(_: any[]): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInputRange.prototype.publish(\"type\", \"text\", \"set\", \"InputRange type\", [\"number\", \"date\", \"text\", \"time\", \"datetime\", \"hidden\"]);\nInputRange.prototype.publish(\"inlineLabel\", null, \"string\", \"InputRange Label\", null, { optional: true });\nInputRange.prototype.publish(\"value\", [\"\", \"\"], \"array\", \"Input Current Value\", null, { override: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/OnOff.css\";\n\nexport class OnOff extends HTMLWidget {\n _inputElement = [];\n _input;\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.classed(\"onoffswitch\", true);\n const context = this;\n this._input = element.append(\"input\")\n .attr(\"class\", \"onoffswitch-checkbox\")\n .attr(\"type\", \"checkbox\")\n .attr(\"id\", this.id() + \"_onOff\")\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d, idx) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n })\n ;\n const label = element.append(\"label\")\n .attr(\"class\", \"onoffswitch-label\")\n .attr(\"for\", this.id() + \"_onOff\")\n ;\n const inner = label.append(\"div\")\n .attr(\"class\", \"onoffswitch-inner\")\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-offText\")\n .style(\"padding-right\", (this.containerRadius() / 2) + \"px\")\n .text(this.offText())\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-onText\")\n .style(\"padding-left\", (this.containerRadius() / 2) + \"px\")\n .style(\"width\", `calc(100% - ${(this.containerRadius() / 2)}px)`)\n .text(this.onText())\n ;\n label.append(\"div\")\n .attr(\"class\", \"onoffswitch-switch\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._input\n .attr(\"name\", this.name())\n ;\n element\n .style(\"margin-left\", this.marginLeft() + \"px\")\n .style(\"margin-bottom\", this.marginBottom() + \"px\")\n .style(\"width\", this.minWidth() + \"px\")\n ;\n\n const _switch_size = this.minHeight() - (this.gutter() * 4);\n\n element.select(\".onoffswitch-switch\")\n .style(\"height\", _switch_size + \"px\")\n .style(\"width\", _switch_size + \"px\")\n .style(\"top\", (this.gutter() * 2) + 1 + \"px\")\n .style(\"border-radius\", this.switchRadius() + \"px\")\n ;\n element.select(\".onoffswitch-inner\")\n .style(\"min-height\", this.minHeight() + \"px\")\n ;\n element.select(\".onoffswitch-label\")\n .style(\"border-radius\", this.containerRadius() + \"px\")\n ;\n element.select(\".onoffswitch-offText\")\n .style(\"color\", this.offFontColor())\n .style(\"background-color\", this.offColor())\n ;\n element.select(\".onoffswitch-onText\")\n .style(\"color\", this.onFontColor())\n .style(\"background-color\", this.onColor())\n ;\n }\n}\nOnOff.prototype._class += \" form_OnOff\";\nexport interface OnOff {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n marginLeft(): number;\n marginLeft(_: number): this;\n marginBottom(): number;\n marginBottom(_: number): this;\n minWidth(): number;\n minWidth(_: number): this;\n minHeight(): number;\n minHeight(_: number): this;\n gutter(): number;\n gutter(_: number): this;\n offText(): string;\n offText(_: string): this;\n onText(): string;\n onText(_: string): this;\n switchRadius(): number;\n switchRadius(_: number): this;\n containerRadius(): number;\n containerRadius(_: number): this;\n offColor(): string;\n offColor(_: string): this;\n onColor(): string;\n onColor(_: string): this;\n offFontColor(): string;\n offFontColor(_: string): this;\n onFontColor(): string;\n onFontColor(_: string): this;\n\n}\nOnOff.prototype.implements(IInput.prototype);\n\nOnOff.prototype.publish(\"marginLeft\", 0, \"number\", \"Margin left of OnOff\");\nOnOff.prototype.publish(\"marginBottom\", 0, \"number\", \"Margin bottom of OnOff\");\nOnOff.prototype.publish(\"minWidth\", 100, \"number\", \"Minimum width of OnOff (pixels)\");\nOnOff.prototype.publish(\"minHeight\", 20, \"number\", \"Minimum height of OnOff (pixels)\");\nOnOff.prototype.publish(\"gutter\", 1, \"number\", \"Space between switch and border of OnOff (pixels)\");\nOnOff.prototype.publish(\"onText\", \"Save\", \"string\", \"Text to display when 'ON'\");\nOnOff.prototype.publish(\"offText\", \"Properties\", \"string\", \"Text to display when 'OFF'\");\nOnOff.prototype.publish(\"switchRadius\", 10, \"number\", \"Border radius of switch (pixels)\");\nOnOff.prototype.publish(\"containerRadius\", 10, \"number\", \"Border radius of OnOff (pixels)\");\nOnOff.prototype.publish(\"onColor\", \"#2ecc71\", \"html-color\", \"Background color when 'ON'\");\nOnOff.prototype.publish(\"offColor\", \"#ecf0f1\", \"html-color\", \"Background color when 'OFF'\");\nOnOff.prototype.publish(\"onFontColor\", \"#2c3e50\", \"html-color\", \"Font color when 'ON'\");\nOnOff.prototype.publish(\"offFontColor\", \"#7f8c8d\", \"html-color\", \"Font color when 'OFF'\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Radio extends HTMLWidget {\n _inputElement = [];\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n const radioContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = radioContainer.append(\"li\").append(\"input\").attr(\"type\", \"radio\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n}\nRadio.prototype._class += \" form_Radio\";\nRadio.prototype.implements(IInput.prototype);\n\nexport interface Radio {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nRadio.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class Range extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"range\");\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"number\");\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].attr(\"type\", \"range\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[0].attr(\"min\", this.low());\n this._inputElement[0].attr(\"max\", this.high());\n this._inputElement[0].attr(\"step\", this.step());\n this._inputElement[1].attr(\"type\", \"number\");\n this._inputElement[1].property(\"value\", this.value());\n this._inputElement[1].attr(\"min\", this.low());\n this._inputElement[1].attr(\"max\", this.high());\n this._inputElement[1].attr(\"step\", this.step());\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nRange.prototype._class += \" form_Range\";\nRange.prototype.implements(IInput.prototype);\n\nexport interface Range {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n low(): number;\n low(_: number): this;\n low_exists(): boolean;\n high(): number;\n high(_: number): this;\n high_exists(): boolean;\n step(): number;\n step(_: number): this;\n step_exists(): boolean;\n}\n\nRange.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"html-color\", \"number\", \"checkbox\", \"button\", \"select\", \"textarea\", \"date\", \"text\", \"range\", \"search\", \"email\", \"time\", \"datetime\"]);\nRange.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nRange.prototype.publish(\"low\", null, \"number\", \"Minimum value for Range input\");\nRange.prototype.publish(\"high\", null, \"number\", \"Maximum value for Range input\");\nRange.prototype.publish(\"step\", null, \"number\", \"Step value for Range input\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Select extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"select\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this.insertSelectOptions(this.selectOptions());\n this._inputElement[0]\n .property(\"value\", this.value())\n .style(\"max-width\", this.maxWidth_exists() ? this.maxWidth() + \"px\" : null)\n ;\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nSelect.prototype._class += \" form_Select\";\nSelect.prototype.implements(IInput.prototype);\n\nexport interface Select {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n maxWidth(): number;\n maxWidth(_: number): this;\n maxWidth_exists(): boolean;\n}\n\nSelect.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nSelect.prototype.publish(\"maxWidth\", 120, \"number\", \"Width\", null, { optional: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { d3Event, select as d3Select, SVGWidget } from \"@hpcc-js/common\";\nimport { drag as d3Drag } from \"d3-drag\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/Slider.css\";\n\nexport class Slider extends SVGWidget {\n xScale;\n\n moveMode: \"both\" | \"left\" | \"right\";\n moveStartPos: number;\n\n prevValue;\n\n slider;\n\n handleLeft;\n handleLeftPos: number = 0;\n handleLeftStartPos: number;\n\n handleRight;\n handleRightPos: number = 0;\n handleRightStartPos: number;\n\n constructor() {\n super();\n IInput.call(this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.resize({ width: this.width(), height: 50 });\n\n this.xScale = d3ScaleLinear()\n .clamp(true);\n\n this.slider = element.append(\"g\")\n .attr(\"class\", \"slider\")\n ;\n if (this.low() === null && this.high() === null) {\n if (this.lowDatetime() !== null && this.highDatetime() !== null) {\n const time_parser = d3TimeParse(this.timePattern() ? this.timePattern() : \"%Q\");\n this.low(time_parser(this.lowDatetime()).getTime());\n this.high(time_parser(this.highDatetime()).getTime());\n }\n }\n this.slider.append(\"line\")\n .attr(\"class\", \"track\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-inset\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-overlay\")\n .call(d3Drag()\n .on(\"start\", () => {\n const event = d3Event();\n this.moveStartPos = event.x;\n this.handleLeftStartPos = this.handleLeftPos;\n this.handleRightStartPos = this.handleRightPos;\n if (this.allowRange() && this.handleLeftPos <= event.x && event.x <= this.handleRightPos) {\n this.moveMode = \"both\";\n } else if (Math.abs(event.x - this.handleLeftPos) < Math.abs(event.x - this.handleRightPos)) {\n this.moveMode = \"left\";\n } else {\n this.moveMode = \"right\";\n }\n this.moveHandleTo(event.x);\n })\n .on(\"drag\", () => {\n this.moveHandleTo(d3Event().x);\n })\n .on(\"end\", () => {\n this.moveHandleTo(d3Event().x);\n this.data([[this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)]]);\n this.checkChangedValue();\n }));\n\n this.slider.insert(\"g\", \".track-overlay\")\n .attr(\"class\", \"ticks\")\n .attr(\"transform\", `translate(0, ${this.fontSize() + (this.tickHeight() / 2)})`)\n ;\n\n this.handleRight = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n\n this.handleLeft = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n this.xScale\n .domain([this.low(), this.high()])\n .range([0, this.width() - this.padding() * 2])\n ;\n\n this.slider\n .attr(\"transform\", \"translate(\" + (-this.width() / 2 + this.padding()) + \",\" + 0 + \")\");\n\n this.slider.selectAll(\"line.track,line.track-inset,line.track-overlay\")\n .attr(\"x1\", this.xScale.range()[0])\n .attr(\"x2\", this.xScale.range()[1])\n ;\n\n const x_distance = (this.width() - (this.padding() * 2)) / (this.tickCount() - 1);\n\n const tick_text_arr = [];\n if (this.tickDateFormat() !== null && this.timePattern() !== null) {\n const Q_parser = d3TimeParse(\"%Q\");\n const time_formatter = d3TimeFormat(this.tickDateFormat());\n const time_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const date_to_parse = \"\" + (this.low() + (time_segment * i));\n const parsed_date = Q_parser(date_to_parse);\n tick_text_arr.push(time_formatter(parsed_date));\n }\n } else {\n const value_formatter = d3Format(this.tickValueFormat());\n const value_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const tick_value = this.low() + (value_segment * i);\n tick_text_arr.push(value_formatter(tick_value));\n }\n }\n const tickText = this.slider.selectAll(\"g.tick\").data(tick_text_arr);\n const tickTextEnter = tickText.enter().append(\"g\").attr(\"class\", \"tick\");\n\n tickTextEnter.append(\"text\").attr(\"class\", \"tick-text\");\n tickTextEnter.append(\"line\").attr(\"class\", \"tick-line\");\n tickTextEnter\n .merge(tickText)\n .each(function (d, i) {\n const x = x_distance * i;\n\n d3Select(this).select(\"text.tick-text\")\n .style(\"font-size\", context.fontSize())\n .attr(\"x\", function () {\n if (i === 0) return x - 2;\n return i === context.tickCount() - 1 ? x + 2 : x;\n })\n .attr(\"y\", context.tickHeight() + (context.tickOffset() / 2) + context.fontSize())\n .attr(\"text-basline\", \"text-before-edge\")\n .attr(\"text-anchor\", function () {\n if (i === 0) return \"start\";\n return i === context.tickCount() - 1 ? \"end\" : \"middle\";\n })\n .text(() => d)\n ;\n\n d3Select(this).select(\"line.tick-line\")\n .attr(\"x1\", x)\n .attr(\"x2\", x)\n .attr(\"y1\", context.tickOffset() - 1)\n .attr(\"y2\", context.tickOffset() + context.tickHeight())\n .style(\"stroke\", \"#000\")\n .style(\"stroke-width\", 1)\n ;\n });\n this.slider.node().appendChild(this.handleRight.node());\n this.slider.node().appendChild(this.handleLeft.node());\n this.handleLeftPos = this.lowPos();\n this.handleRightPos = this.highPos();\n this.updateHandles();\n this.checkChangedValue();\n }\n\n checkChangedValue() {\n if (this.prevValue !== this.value() && typeof this.prevValue !== \"undefined\") {\n this.change(this);\n }\n this.prevValue = this.value();\n }\n\n updateHandles() {\n this.handleLeft\n .attr(\"transform\", `translate(${this.handleLeftPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"l\"))\n ;\n this.handleRight\n .attr(\"transform\", `translate(${this.handleRightPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"r\"))\n ;\n }\n\n lowPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][0]);\n }\n\n highPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][this.allowRange() ? 1 : 0]);\n }\n\n moveHandleTo(pos) {\n if (this.allowRange()) {\n switch (this.moveMode) {\n case \"both\":\n this.handleLeftPos = this.handleLeftStartPos + pos - this.moveStartPos;\n this.handleRightPos = this.handleRightStartPos + pos - this.moveStartPos;\n break;\n case \"left\":\n this.handleLeftPos = pos;\n if (this.handleLeftPos > this.handleRightPos) {\n this.handleRightPos = this.handleLeftPos;\n }\n break;\n case \"right\":\n this.handleRightPos = pos;\n if (this.handleRightPos < this.handleLeftPos) {\n this.handleLeftPos = this.handleRightPos;\n }\n break;\n }\n } else {\n this.handleLeftPos = this.handleRightPos = pos;\n }\n\n this.handleLeftPos = this.constrain(this.handleLeftPos);\n this.handleRightPos = this.constrain(this.handleRightPos);\n this.value(this.allowRange() ? [this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)] : this.xScale.invert(this.handleLeftPos));\n this.updateHandles();\n }\n\n constrain(pos: number): number {\n const range = this.xScale.range();\n if (pos < range[0]) pos = range[0];\n if (pos > range[1]) pos = range[1];\n return this.nearestStep(pos);\n }\n\n nearestStep(pos) {\n const value = this.xScale.invert(pos);\n return this.xScale(this.low() + Math.round((value - this.low()) / this.step()) * this.step());\n }\n\n handlePath = function (d) {\n const e = +(d === \"r\");\n const x = e ? 1 : -1;\n const xOffset = this.allowRange() ? 0.5 : 0.0;\n const y = 18;\n let retVal = \"M\" + (xOffset * x) + \",\" + y +\n \"A6,6 0 0 \" + e + \" \" + (6.5 * x) + \",\" + (y + 6) +\n \"V\" + (2 * y - 6) +\n \"A6,6 0 0 \" + e + \" \" + (xOffset * x) + \",\" + (2 * y)\n ;\n if (this.allowRange()) {\n retVal += \"Z\" +\n \"M\" + (2.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8) +\n \"M\" + (4.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n } else {\n retVal += \"M\" + (1 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n }\n return retVal;\n };\n\n}\nSlider.prototype._class += \" form_Slider\";\nSlider.prototype.implements(IInput.prototype);\n\nexport interface Slider {\n // IInput ---\n name(): string;\n name(_: string): this;\n change(_: Slider): void;\n\n // Properties ---\n padding(): number;\n padding(_: number): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontColor(): string;\n fontColor(_: string): this;\n allowRange(): boolean;\n allowRange(_: boolean): this;\n low(): number;\n low(_: number): this;\n high(): number;\n high(_: number): this;\n step(): number;\n step(_: number): this;\n lowDatetime(): string;\n lowDatetime(_: string): this;\n highDatetime(): string;\n highDatetime(_: string): this;\n stepDatetime(): number;\n stepDatetime(_: number): this;\n selectionLabel(): string;\n selectionLabel(_: string): this;\n label(): string;\n label(_: string): this;\n value(): any;\n value(_: any): this;\n validate(): string;\n validate(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n tickOffset(): number;\n tickOffset(_: number): this;\n tickHeight(): number;\n tickHeight(_: number): this;\n tickDateFormat(): string;\n tickDateFormat(_: string): this;\n tickValueFormat(): string;\n tickValueFormat(_: string): this;\n timePattern(): string;\n timePattern(_: string): this;\n\n padding_exists(): boolean;\n fontSize_exists(): boolean;\n fontFamily_exists(): boolean;\n fontColor_exists(): boolean;\n allowRange_exists(): boolean;\n low_exists(): boolean;\n step_exists(): boolean;\n high_exists(): boolean;\n selectionLabel_exists(): boolean;\n name_exists(): boolean;\n label_exists(): boolean;\n value_exists(): boolean;\n validate_exists(): boolean;\n}\n\nSlider.prototype.publish(\"padding\", 16, \"number\", \"Outer Padding\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontSize\", 12, \"number\", \"Font Size\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontFamily\", null, \"string\", \"Font Name\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontColor\", null, \"html-color\", \"Font Color\", null, { tags: [\"Basic\"] });\n\nSlider.prototype.publish(\"allowRange\", false, \"boolean\", \"Allow Range Selection\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"low\", null, \"number\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"high\", null, \"number\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"step\", 10, \"number\", \"Step\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"lowDatetime\", null, \"string\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"highDatetime\", null, \"string\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"selectionLabel\", \"\", \"string\", \"Selection Label\", null, { tags: [\"Intermediate\"] });\n\nSlider.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\");\n\nSlider.prototype.publish(\"tickCount\", 10, \"number\");\nSlider.prototype.publish(\"tickOffset\", 5, \"number\");\nSlider.prototype.publish(\"tickHeight\", 8, \"number\");\nSlider.prototype.publish(\"tickDateFormat\", null, \"string\");\nSlider.prototype.publish(\"tickValueFormat\", \",.0f\", \"string\");\n\nconst name = Slider.prototype.name;\nSlider.prototype.name = function (_?: any): any {\n const retVal = name.apply(this, arguments);\n if (arguments.length) {\n const val = _ instanceof Array ? _ : [_];\n SVGWidget.prototype.columns.call(this, val);\n }\n return retVal;\n};\n\nconst value = Slider.prototype.value;\nSlider.prototype.value = function (_?: any): any {\n const retVal = value.apply(this, arguments);\n if (!arguments.length) {\n if (!this.allowRange()) {\n return SVGWidget.prototype.data.call(this)[0][0];\n }\n return SVGWidget.prototype.data.call(this)[0];\n } else {\n SVGWidget.prototype.data.call(this, [this.allowRange() ? _ : [_, _]]);\n }\n return retVal;\n};\n","import { Input } from \"./Input.ts\";\n\nexport class TextArea extends Input {\n constructor() {\n super();\n\n this._tag = \"div\";\n this.type(\"textarea\");\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n calcHeight() {\n return Math.max(this.minHeight_exists() ? this.minHeight() : 0, this.height());\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._inputElement[0]\n .attr(\"rows\", this.rows())\n .attr(\"cols\", this.cols())\n .attr(\"wrap\", this.wrap())\n .attr(\"spellcheck\", this.spellcheck())\n .style(\"height\", this.calcHeight() + \"px\")\n ;\n }\n\n}\nTextArea.prototype._class += \" form_TextArea\";\n\nexport interface TextArea {\n rows(): number;\n rows(_: number): this;\n rows_exists(): boolean;\n cols(): number;\n cols(_: number): this;\n cols_exists(): boolean;\n wrap(): string;\n wrap(_: string): this;\n wrap_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n spellcheck(): boolean;\n spellcheck(_: boolean): this;\n spellcheck_exists(): boolean;\n}\n\nTextArea.prototype.publish(\"rows\", null, \"number\", \"Rows\", null, { optional: true });\nTextArea.prototype.publish(\"cols\", null, \"number\", \"Columns\", null, { optional: true });\nTextArea.prototype.publish(\"wrap\", \"off\", \"set\", \"Wrap\", [\"off\", \"on\"]);\nTextArea.prototype.publish(\"minHeight\", null, \"number\", \"Minimum Height\", null, { optional: true });\nTextArea.prototype.publish(\"spellcheck\", null, \"boolean\", \"Input spell checking\", { optional: true });\n"],"names":["HTMLWidget","IInput","d3Rgb","WidgetArray","d3Event","d3Select","SVGWidget","d3ScaleLinear","d3TimeParse","d3Drag","d3TimeFormat","d3Format","value"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hpcc-js/form",
3
- "version": "3.2.0",
3
+ "version": "3.2.1",
4
4
  "description": "hpcc-js - Viz Form",
5
5
  "type": "module",
6
6
  "main": "./dist/index.umd.cjs",
@@ -37,12 +37,12 @@
37
37
  "update-major": "npx --yes npm-check-updates -u"
38
38
  },
39
39
  "dependencies": {
40
- "@hpcc-js/api": "^3.3.0",
41
- "@hpcc-js/chart": "^3.3.0",
42
- "@hpcc-js/common": "^3.3.0"
40
+ "@hpcc-js/api": "^3.3.1",
41
+ "@hpcc-js/chart": "^3.3.1",
42
+ "@hpcc-js/common": "^3.3.1"
43
43
  },
44
44
  "devDependencies": {
45
- "@hpcc-js/esbuild-plugins": "^1.4.0",
45
+ "@hpcc-js/esbuild-plugins": "^1.4.1",
46
46
  "d3-brush": "^1",
47
47
  "d3-color": "3.1.0",
48
48
  "d3-drag": "^1",
@@ -60,5 +60,5 @@
60
60
  "url": "https://github.com/hpcc-systems/Visualization/issues"
61
61
  },
62
62
  "homepage": "https://github.com/hpcc-systems/Visualization",
63
- "gitHead": "145a4d4c8189c70f08e9804e63959d6dd398bd9f"
63
+ "gitHead": "521692e7cfd01c274d5cfff0c54e79d1686d3dd6"
64
64
  }