!function a(r,s,l){function c(t,e){if(!s[t]){if(!r[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(u)return u(t,!0);var i=new Error("Cannot find module '"+t+"'");throw i.code="MODULE_NOT_FOUND",i}var o=s[t]={exports:{}};r[t][0].call(o.exports,function(e){return c(r[t][1][e]||e)},o,o.exports,a,r,s,l)}return s[t].exports}for(var u="function"==typeof require&&require,e=0;e$(window).height()?s.body_scroll_to(this.container_elem,"top",function(){$('[auto_focus="true"]').focus()}):s.body_scroll_to(this.container_elem,"bottom",function(){$('[auto_focus="true"]').focus()}))}},{key:"_activate_form",value:function(e,t){var n=this,i=this.form_ctrls.get_value(e),o=i[i.length-1];if(o===t||void 0===t)return o.element.show(l.state.ShowDuration,function(){n._after_show_form()});this.form_ctrls.move_to_top(e),t.element.hide(100,function(){var e=n.form_ctrls.get_top();e&&e[e.length-1].element.show(l.state.ShowDuration,function(){n._after_show_form()})})}},{key:"handle_message",value:function(e){var t=this,n=this.form_ctrls.get_top(),i=n&&n[n.length-1],o=this.form_ctrls.get_value(e.task_id);if(void 0===o&&(this.form_ctrls.push(e.task_id,[]),o=this.form_ctrls.get_value(e.task_id)),e.command in s.make_set(["input","input_group"])){var a=new d(this.session,e.task_id,e.spec);o.push(a),this.container_elem.append(a.create_element()),this._activate_form(e.task_id,i)}else if(e.command in s.make_set(["update_input"])){if(0===o.length)return console.error("No form to current message. task_id:%s",e.task_id);o[o.length-1].dispatch_ctrl_message(e.spec)}else if("destroy_form"===e.command){if(0===o.length)return console.error("No form to current message. task_id:%s",e.task_id);var r=o.pop();0===o.length&&this.form_ctrls.remove(e.task_id),n===o?r.element.hide(100,function(){r.element.remove();var e=t.form_ctrls.get_top();e&&e[e.length-1].element.show(l.state.ShowDuration,function(){t._after_show_form()})}):r.element.remove()}}}]),u);function u(e,t){a(this,u),this.session=e,this.container_elem=t,this.form_ctrls=new s.LRUMap}(n.InputAreaController=c).accept_command=["input","input_group","update_input","destroy_form"];var d=(i(p,[{key:"create_element",value:function(){var t=this,e=Mustache.render('\n ',{label:this.spec.label,cancelable:this.spec.cancelable}),n=$(e);n.find(".pywebio_cancel_btn").on("click",function(e){t.session.send_message({event:"from_cancel",task_id:t.task_id,data:null})}),this.spec.inputs.length&&"actions"===this.spec.inputs[this.spec.inputs.length-1].type&&n.find(".ws-form-submit-btns").hide();var i=n.find(".input-container");for(var o in this.spec.inputs){var a=this.spec.inputs[o];if(!(a.type in p.input_items))throw new Error("Unknown input type '"+a.type+"'");var r=new p.input_items[a.type](this.session,this.task_id,a);this.name2input[a.name]=r,i.append(r.create_element())}return n.on("submit","form",function(e){e.preventDefault();var n={};$.each(t.name2input,function(e,t){n[e]=t.get_value()}),t.session.send_message({event:"from_submit",task_id:t.task_id,data:n})}),this.element=n}},{key:"dispatch_ctrl_message",value:function(e){if(!(e.target_name in this.name2input))return console.error("Can't find input[name=%s] element in curr form!",e.target_name);this.name2input[e.target_name].update_input(e)}}],[{key:"register_inputitem",value:function(e){var t=!0,n=!1,i=void 0;try{for(var o,a=e.accept_input_types[Symbol.iterator]();!(t=(o=a.next()).done);t=!0){var r=o.value;if(r in this.input_items)throw new Error("duplicated accept_input_types:["+r+"] in "+e+" and "+this.input_items[r]);this.input_items[r]=e}}catch(e){n=!0,i=e}finally{try{!t&&a.return&&a.return()}finally{if(n)throw i}}}}]),p);function p(e,t,n){a(this,p),this.element=null,this.name2input={},this.session=e,this.task_id=t,this.spec=n}var f=!0,_=!(d.input_items={}),h=void 0;try{for(var v,m=r.all_input_items[Symbol.iterator]();!(f=(v=m.next()).done);f=!0){var b=v.value;d.register_inputitem(b)}}catch(e){_=!0,h=e}finally{try{!f&&m.return&&m.return()}finally{if(_)throw h}}},{"./models/input":7,"./state":13,"./utils":14}],2:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var s=e("./state"),r=e("./session"),l=e("./utils"),c=e("./input"),u=e("./output"),i=e("./models/output");window.WebIO={startWebIOClient:function(n,i,e){for(var t in e)s.config[t]=e[t];var o,a=(o=new URLSearchParams(window.location.search).get("pywebio_api")||"./io",new URL(o,window.location.href).href);r.is_http_backend(a).then(function(e){var t=void 0;(function(t,e,n){(s.state.CurrentSession=t).on_session_close(function(){$("#favicon32").attr("href","data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAByElEQVRYR82XLUzDUBDH/9emYoouYHAYMGCAYJAYEhxiW2EOSOYwkKBQKBIwuIUPN2g7gSPBIDF8GWbA4DAjG2qitEfesi6lbGxlXd5q393/fr333t07QpdfPp8f0nV9CcACEU0DGAOgN9yrAN6Y+QnATbVavcrlcp/dSFMnI9M0J1RV3WHmFQCJTvaN9RoRXbiuu28YxstfPm0BbNtOMPMeEW0C0LoMHDZzmPmIiHbT6XStlUZLgEKhMK5p2iWAyX8GDruVHMdZzmazr+GFXwCmac4oinINYCSm4L5M2fO8RcMwHoO6PwAaf37bh+BNCMdx5oOZaAKIPQdwF2Pa2yWwBGDOPxNNAMuyDohoK+a0t5Rj5sNMJrMtFusA4qopivLcw2mPyu14njclrmgdoFgsnjLzWlSVXuyJ6CyVSq2TqHDJZPI9QpHpJW7Qt1apVEbJsqwVIjqPSzWKDjOvCoBjItqI4hiXLTOfkG3b9wBm4xKNqPMgAMoAhiM6xmX+IQC+AKhxKUbUcQcCQPoWyD2E0q+h9EIkvRRLb0YD0Y4FhNQHiQCQ/iQTEFIfpX4Nl/os9yGkDiY+hNTRLNhSpQ2n4b7er/H8G7N6BRSbHvW5AAAAAElFTkSuQmCC"),$("#favicon16").attr("href","data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA0ElEQVQ4T62TPQrCQBCF30tA8BZW9mJtY+MNEtKr2HkWK0Xtw+4NbGysxVorbyEKyZMNRiSgmJ/tZufNNzO7M0ThxHHc8zxvSnIIoPNyXyXt0zRdR1F0+gxhblhr25IWJMcA3vcFviRtSc6DILg5XyZ0wQB2AAbFir7YBwAjB8kAxpg1ycmfwZlM0iYMwyldz77vH3+U/Y2rJEn6NMYsSc7KZM+1kla01p4BdKsAAFwc4A6gVRHwaARQr4Xaj1j7G2sPUiOjnEMqL9PnDJRd5ycpJXsd2f2NIAAAAABJRU5ErkJggg==")});var i=new u.OutputController(t,e),o=new c.InputAreaController(t,n),a=l.make_set(u.OutputController.accept_command),r=l.make_set(c.InputAreaController.accept_command);t.on_server_message(function(e){e.command in r?o.handle_message(e):e.command in a?i.handle_message(e):"close_session"===e.command?t.close_session():console.error("Unknown command:%s",e.command)})})(t=e?new r.HttpSession(a):new r.WebSocketSession(a),n,i),t.start_session(s.config.debug)})},DisplayAreaButtonOnClick:i.DisplayAreaButtonOnClick}},{"./input":1,"./models/output":10,"./output":11,"./session":12,"./state":13,"./utils":14}],3:[function(e,t,n){"use strict";var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n\n {{#label}}
{{/label}} \n {{#buttons}}\n \n {{/buttons}}\n
{{invalid_feedback}}
\x3c!-- input 添加 is-invalid 类 --\x3e\n
{{valid_feedback}}
\x3c!-- input 添加 is-valid 类 --\x3e\n {{help_text}}\n',this.spec);this.element=$(r);var s=this;return this.element.find("button").on("click",function(e){var t=$(this);"submit"===t.data("type")?s.submit_value=t.val():"reset"===t.data("type")?t.parents("form").trigger("reset"):"cancel"===t.data("type")?s.session.send_message({event:"from_cancel",task_id:s.task_id,data:null}):console.error("`actions` input: unknown button type '%s'",t.data("type"))}),this.element}},{key:"update_input",value:function(t){var e=t.attributes,n=-1;"target_value"in t&&this.element.find("button").each(function(e){if($(this).val()===t.target_value)return n=e,!1}),this.update_input_helper(n,e)}},{key:"get_value",value:function(){return this.submit_value}}]),s);function s(e,t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,s);var i=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(s.__proto__||Object.getPrototypeOf(s)).call(this,e,t,n));return i.submit_value=null,i}(n.Actions=r).accept_input_types=["actions"]},{"./base":4}],4:[function(e,t,n){"use strict";var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n\n {{#label}}{{/label}}\n {{#inline}}
{{/inline}}\n {{#options}}\n
\n \n \n
{{invalid_feedback}}
\x3c!-- input 添加 is-invalid 类 --\x3e\n
{{valid_feedback}}
\x3c!-- input 添加 is-valid 类 --\x3e\n
\n {{/options}}\n {{help_text}}\n',e),o=$(i);this.element=o;for(var a={value:"",label:"",selected:""},r=0;r\n {{#label}}{{/label}}\n
\n \n \n
{{invalid_feedback}}
\x3c!-- input 添加 is-invalid 类 --\x3e\n
{{valid_feedback}}
\x3c!-- input 添加 is-valid 类 --\x3e\n {{help_text}}\n
\n',e);this.element=$(n);var i=this.element.find('input[type="file"]'),o={label:"",invalid_feedback:"",valid_feedback:"",help_text:"",placeholder:""};for(var a in this.spec)a in o||i.attr(a,this.spec[a]);var r=this;return i.on("change",function(){var e=i[0].files[0],t=new FileReader;t.onload=function(){r.data_url_value={filename:e.name,dataurl:t.result},console.log(r.data_url_value)},t.readAsDataURL(e)}),setTimeout(bsCustomFileInput.init,l.state.ShowDuration+100),this.element}},{key:"update_input",value:function(e){var t=e.attributes;this.update_input_helper(-1,t)}},{key:"get_value",value:function(){return this.data_url_value}}]),c);function c(e,t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,c);var i=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(c.__proto__||Object.getPrototypeOf(c)).call(this,e,t,n));return i.data_url_value=null,i}(n.File=r).accept_input_types=["file"]},{"../../state":13,"../../utils":14,"./base":4}],7:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i=e("./input"),o=e("./actions"),a=e("./checkbox_radio"),r=e("./textarea"),s=e("./file");n.all_input_items=[i.Input,o.Actions,a.CheckboxRadio,r.Textarea,s.File]},{"./actions":3,"./checkbox_radio":5,"./file":6,"./input":8,"./textarea":9}],8:[function(e,t,n){"use strict";var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n\n {{#label}}{{/label}}\n \n
{{invalid_feedback}}
\n
{{valid_feedback}}
\n {{help_text}}\n',e):Mustache.render('\n
\n {{#label}}{{/label}}\n \n \n {{#datalist}} \n \n {{/datalist}}\n \n
{{invalid_feedback}}
\x3c!-- input 添加 is-invalid 类 --\x3e\n
{{valid_feedback}}
\x3c!-- input 添加 is-valid 类 --\x3e\n {{help_text}}\n
',e);this.element=$(i);var o=this.element.find("#"+n);o.on("blur",function(e){t.send_value_listener(t,e)});var a={type:"",label:"",invalid_feedback:"",valid_feedback:"",help_text:"",options:"",datalist:"",multiple:""};for(var r in this.spec)r in a||o.attr(r,this.spec[r]);return this.element}},{key:"update_input",value:function(e){var t=e.attributes;this.update_input_helper(-1,t)}},{key:"get_value",value:function(){return this.element.find("input,select").val()}}]),l);function l(e,t,n){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(l.__proto__||Object.getPrototypeOf(l)).call(this,e,t,n))}(n.Input=r).accept_input_types=["text","password","number","color","date","range","time","select"]},{"../../utils":14,"./base":4}],9:[function(e,t,n){"use strict";var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n\n {{#label}}{{/label}}\n \n
{{invalid_feedback}}
\x3c!-- input 添加 is-invalid 类 --\x3e\n
{{valid_feedback}}
\x3c!-- input 添加 is-valid 类 --\x3e\n {{help_text}}\n',t);this.element=$(i);var o=this.element.find("#"+n),a=c.make_set(["value","type","label","invalid_feedback","valid_feedback","help_text","rows","code"]);for(var r in this.spec)r in a||o.attr(r,this.spec[r]);if(t.code){CodeMirror.modeURL=u.config.codeMirrorModeURL;var s={theme:"base16-light",mode:"python",lineNumbers:!0,indentUnit:4,styleActiveLine:!0,matchBrackets:!0,lineWrapping:!0};for(var l in e.spec.code)s[l]=e.spec.code[l];s.theme&&"base16-light"!==s.theme&&d.load_codemirror_theme(s.theme),setTimeout(function(){e.code_mirror=CodeMirror.fromTextArea(e.element.find("textarea")[0],s),CodeMirror.autoLoadMode(e.code_mirror,s.mode),e.code_mirror.setSize(null,20*e.spec.rows)},100),setTimeout(function(){e.element.parents(".card").height("auto")},u.state.ShowDuration)}return this.element}},{key:"update_input",value:function(e){var t=e.attributes;this.update_input_helper.call(this,-1,t)}},{key:"get_value",value:function(){return this.element.find("textarea").val()}}],[{key:"load_codemirror_theme",value:function(e,t){var n,i,o=1"):$("

");e.content=e.content.replace(/ /g," ");for(var n=(e.content||"").split("\n"),i=0;i");return t.append(document.createTextNode(n[n.length-1])),t}},r=new Mditor.Parser,s={handle_type:"markdown",get_element:function(e){return $(r.parse(e.content))}},l={handle_type:"html",get_element:function(e){var t=$.parseHTML(e.content,null,!0);return 1
").append(t):1===t.length?$(t[0]):$(t)}},c={handle_type:"buttons",get_element:function(e){var t=Mustache.render('
{{#buttons}}\n \n {{/buttons}}
',e);return $(t)}};n.DisplayAreaButtonOnClick=function(e,t){if(null===i.state.CurrentSession)return console.error("can't invoke DisplayAreaButtonOnClick when WebIOController is not instantiated");if(i.state.CurrentSession.closed())return alert("与服务器连接已断开,请刷新页面重新操作");var n=$(e).val();i.state.CurrentSession.send_message({event:"callback",task_id:t,data:n})};var u={handle_type:"file",get_element:function(t){var e='
",n=$(e),i=o.b64toBlob(t.content);return n.on("click","button",function(e){saveAs(i,t.name,{},!1)}),n}},d={handle_type:"table",get_element:function(e){var t=[];for(var n in e.data){t.push([]);var i=e.data[n];for(var o in i){var a=e.data[n][o];if("object"===(void 0===a?"undefined":v(a))){var r="";try{var s=m[a.type](a),l=!0,c=!1,u=void 0;try{for(var d,p=s[Symbol.iterator]();!(l=(d=p.next()).done);l=!0){r+=d.value.outerHTML||""}}catch(e){c=!0,u=e}finally{try{!l&&p.return&&p.return()}finally{if(c)throw u}}}catch(e){console.error("Get sub widget html error,",e,a)}a=r}t[n].push(Object.assign({data:a},e.span[n+","+o]||{}))}}var f=t[0],_=t.slice(1),h=Mustache.render('\n\n \n {{#header}} \n {{& data}} \n {{/header}}\n \n {{#tdata}} \n \n {{# . }} \n {{& data}} \n {{/ . }} \n \n {{/tdata}}\n \n
',{header:f,tdata:_});return $(h)}};n.all_widgets=[a,s,l,c,u,d];var m={},p=!0,f=!1,_=void 0;try{for(var h,b=n.all_widgets[Symbol.iterator]();!(p=(h=b.next()).done);p=!0){var y=h.value;m[y.handle_type]=y.get_element}}catch(e){f=!0,_=e}finally{try{!p&&b.return&&b.return()}finally{if(f)throw _}}},{"../state":13,"../utils":14}],11:[function(e,t,n){"use strict";var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n
')),void 0!==e.spec.clear_before&&this.container_elem.find("#"+e.spec.clear_before).prevAll().remove(),void 0!==e.spec.clear_after&&this.container_elem.find("#"+e.spec.clear_after+"~*").remove(),void 0!==e.spec.scroll_to&&((t=$("#"+e.spec.scroll_to)).length?a.state.OutputFixedHeight?r.box_scroll_to(t,this.container_parent,e.spec.position):r.body_scroll_to(t,e.spec.position):console.error("Anchor "+e.spec.scroll_to+" not found")),void 0!==e.spec.clear_range&&this.container_elem.find("#"+e.spec.clear_range[0]).length&&this.container_elem.find("#"+e.spec.clear_range[1]).length&&(i=!(n=[]),this.container_elem.find("#"+e.spec.clear_range[0]+"~*").each(function(){if(this.id===e.spec.clear_range[1])return!(i=!0);n.push(this)}),i?$(n).remove():console.warn("clear_range not valid: can't find "+e.spec.clear_range[1]+" after "+e.spec.clear_range[0])),void 0!==e.spec.remove&&this.container_elem.find("#"+e.spec.remove).remove()}}],[{key:"add_widget",value:function(e){this.widgets[e.handle_type]=e}}]),c);function c(e,t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,c),this.md_parser=new Mditor.Parser,this.body=$("html,body"),this.session=e,this.container_elem=t,this.container_parent=this.container_elem.parent()}(n.OutputController=l).accept_command=["output","output_ctl"];var u=!0,d=!(l.widgets={}),p=void 0;try{for(var f,_=s.all_widgets[Symbol.iterator]();!(u=(f=_.next()).done);u=!0){var h=f.value;l.add_widget(h)}}catch(e){d=!0,p=e}finally{try{!u&&_.return&&_.return()}finally{if(d)throw p}}},{"./models/output":10,"./state":13,"./utils":14}],12:[function(e,t,n){"use strict";var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n>>",t),i._on_server_message(t)}}},{key:"send_message",value:function(e){if(null===this.ws)return console.error("WebSocketWebIOSession.ws is null when invoke WebSocketWebIOSession.send_message. Please call WebSocketWebIOSession.start_session first");this.ws.send(JSON.stringify(e)),this.debug&&console.info("<<<",e)}},{key:"close_session",value:function(){this._closed=!0,this._on_session_close.call(this.ws,null);try{this.ws.close()}catch(e){}}},{key:"closed",value:function(){return this._closed}}]),s);function s(e){a(this,s),this.ws_api=e,this._on_session_create=function(){},this._on_session_close=function(){},this._on_server_message=function(){},this.ws=null,this.debug=!1,this._closed=!1;var t,n=new URL(e);"wss:"!==n.protocol&&"ws:"!==n.protocol&&(t=n.protocol||window.location.protocol,n.protocol=t.replace("https","wss").replace("http","ws")),this.ws_api=n.href}n.WebSocketSession=r;var l=(i(c,[{key:"on_session_create",value:function(e){this._on_session_create=e}},{key:"on_session_close",value:function(e){this._on_session_close=e}},{key:"on_server_message",value:function(e){this._on_server_message=e}},{key:"start_session",value:function(e){var t=0>>",c),this._on_server_message(c)}}catch(e){a=!0,r=e}finally{try{!o&&l.return&&l.return()}finally{if(a)throw r}}}},{key:"send_message",value:function(e){this.debug&&console.info("<<<",e),$.ajax({type:"POST",url:this.api_url,data:JSON.stringify(e),contentType:"application/json; charset=utf-8",dataType:"json",headers:{"webio-session-id":this.webio_session_id},success:this._on_request_success.bind(this),error:function(){console.error("Http push event failed, event data: %s",e)}})}},{key:"close_session",value:function(){this._closed=!0,this._on_session_close(),clearInterval(this.interval_pull_id)}},{key:"closed",value:function(){return this._closed}}]),c);function c(e){var t=1