|
|
(()=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(t,i){for(var a=0;a<i.length;a++){var n=i[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,(void 0,r=function(t,i){if("object"!==e(t)||null===t)return t;var a=t[Symbol.toPrimitive];if(void 0!==a){var n=a.call(t,"string");if("object"!==e(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(n.key),"symbol"===e(r)?r:String(r)),n)}var r}!function(e,t){var i="ui.CreatePageWidget".split(".");"isekai"in window||(window.isekai={});for(var a=window.isekai,n=0;n<i.length-1;n++){var r=i[n];r in a||(a[r]={}),a=a[r]}a[i[n]]=t}(0,function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.baseDom=t,this.pageUrl=null,this.api=new mw.Api,this.hasErrors=!1,this.hasWarnings=!1,this.createButtonEnabled=!0,this.initDom()}var i,a;return i=e,a=[{key:"initDom",value:function(){var e=mw.config.get("wgIsekaiCreatePageTypes");Array.isArray(e)&&0!==e.length||(e=[{type:"default",name:"Main",prefix:""}]),this.selectPageTypeDropdown=new OO.ui.DropdownInputWidget({options:e.map((function(e){return{data:JSON.stringify(e),label:e.name}}))}),this.selectPageTypeDropdown.on("change",this.onPageTypeChange.bind(this)),this.pageNameInput=new isekai.ui.CreatePageInputWidget({placeholder:mw.message("isekai-createpage-page-title").parse(),align:"top"}),this.pageNameInput.on("enter",this.createPage.bind(this)),this.pageNameInput.on("change",this.onPageNameChange.bind(this)),this.createButton=new OO.ui.ButtonWidget({label:mw.message("isekai-createpage-create-page-button").parse(),flags:["primary","progressive"],align:"top"}),this.createButton.on("click",this.createPage.bind(this)),this.inputGroup=new OO.ui.ActionFieldLayout(this.pageNameInput,this.createButton,{align:"top"}),this.formGroup=new OO.ui.HorizontalLayout({items:[this.selectPageTypeDropdown,this.inputGroup]}),this.errorsContainer=$('<div class="errors-container">'),this.ignoreWarningsCheckbox=new OO.ui.CheckboxInputWidget({selected:!1}),this.ignoreWarningsCheckbox.on("change",this.refreshCreatePageBtnEnabled.bind(this)),this.ignoreWarningsCheckboxField=new OO.ui.FieldLayout(this.ignoreWarningsCheckbox,{align:"inline",label:mw.message("isekai-createpage-warning-ignore").parse(),helpInline:!0,help:mw.message("isekai-createpage-ignore-warnings-help").parse()}),this.ignoreWarningsCheckboxField.$element.addClass("isekai-createpage-ignore-warnings-field").hide(),this.cardContent=this.baseDom.find(".card-body .card-content"),this.cardContent.append(this.formGroup.$element),this.cardContent.append(this.errorsContainer),this.cardContent.append(this.ignoreWarningsCheckboxField.$element)}},{key:"createPage",value:function(){var e=this,t=this.pageNameInput.getValue(),i=this.selectPageTypeDropdown.getValue(),a=(i=JSON.parse(i||"{}")).id||"default",n=(i.prefix||"")+t;t.trim().length>0?(this.createButton.setDisabled(!0),this.hasWarnings&&this.ignoreWarningsCheckbox.isSelected()?this._doCreatePage(n):this.validateNewPageTitle(t,a).then((function(t){t&&e._doCreatePage(n)}))):this.setErrors([mw.message("isekai-createpage-title-empty").parse()])}},{key:"_doCreatePage",value:function(e){var t=mw.util.getUrl(e,{veaction:"edit"});window.open(t,"_blank"),this.pageNameInput.setValue(""),this.createButton.setDisabled(!1),this.clearErrorWarnings()}},{key:"onPageNameChange",value:function(){this.clearErrorWarnings();var e=this.pageNameInput.getValue();if(-1!==e.indexOf(":")||-1!==e.indexOf("`")){var t=this.pageNameInput.getRange();e=e.replace(/:/g,":").replace(/`/g,"·"),this.pageNameInput.setValue(e),this.pageNameInput.selectRange(t.from,t.to)}}},{key:"onPageTypeChange",value:function(){var e=this.selectPageTypeDropdown.getValue();this.pageNameInput.setPagePrefix(e.prefix),this.clearErrorWarnings()}},{key:"makeMessageRaw",value:function(e,t){var i=new OO.ui.MessageWidget({type:e,inline:!0,label:t}).$element;return i.find(".oo-ui-labelElement-label").html(t),i}},{key:"setErrors",value:function(e){var t=this;e.forEach((function(e){var i=t.makeMessageRaw("error",e);t.errorsContainer.append(i)})),this.hasErrors=!0,this.refreshCreatePageBtnEnabled(),this.refreshIgnoreWarningsCheckbox()}},{key:"setWarnings",value:function(e){var t=this;e.forEach((function(e){var i=t.makeMessageRaw("warning",e);t.errorsContainer.append(i)})),this.hasWarnings=!0,this.refreshCreatePageBtnEnabled(),this.refreshIgnoreWarningsCheckbox()}},{key:"clearErrorWarnings",value:function(){(this.hasErrors||this.hasWarnings)&&(this.errorsContainer.empty(),this.hasErrors=!1,this.hasWarnings=!1,this.refreshCreatePageBtnEnabled(),this.refreshIgnoreWarningsCheckbox())}},{key:"refreshCreatePageBtnEnabled",value:function(){var e=this;this.createButtonEnabled=!e.hasErrors&&(!e.hasWarnings||e.ignoreWarningsCheckbox.isSelected()),this.createButton.setDisabled(!this.createButtonEnabled)}},{key:"refreshIgnoreWarningsCheckbox",value:function(){this.hasWarnings&&!this.hasErrors?this.ignoreWarningsCheckboxField.$element.show():this.ignoreWarningsCheckboxField.$element.hide(),this.hasWarnings||this.hasErrors||this.ignoreWarningsCheckbox.setSelected(!1)}},{key:"validateNewPageTitle",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default";return new Promise((function(a,n){t.api.get({action:"isekaiwidgets",method:"createpagevalidatetitle",iwnewpagetitle:e,iwnewpagetype:i}).done((function(e){if(e.isekaiwidget&&e.isekaiwidget.createpagevalidatetitle){var i=e.isekaiwidget.createpagevalidatetitle;if(!i.hasError&&!i.hasWarning)return void a(!0);i.hasError&&t.setErrors(i.errors.map((function(e){return e.message}))),i.hasWarning&&t.setWarnings(i.warnings.map((function(e){return e.message}))),a(!1)}else a(!1)})).fail(n)}))}}],a&&t(i.prototype,a),Object.defineProperty(i,"prototype",{writable:!1}),e}())})(); |