You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
9.8 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./src/createPage/ext.isekai.createPage.js":
/*!*************************************************!*\
!*** ./src/createPage/ext.isekai.createPage.js ***!
\*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _moduleRegister__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../moduleRegister */ \"./src/moduleRegister.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nvar CreatePageWidget = /*#__PURE__*/function () {\n function CreatePageWidget(dom) {\n _classCallCheck(this, CreatePageWidget);\n this.baseDom = dom;\n this.pageUrl = null;\n this.api = new mw.Api();\n this.hasError = false;\n this.initDom();\n }\n _createClass(CreatePageWidget, [{\n key: \"initDom\",\n value: function initDom() {\n this.pageNameInput = new OO.ui.TextInputWidget({\n placeholder: mw.message('isekai-createpage-page-title').parse()\n });\n this.pageNameInput.on('enter', this.createPage.bind(this));\n this.pageNameInput.on('change', this.onPageNameChange.bind(this));\n this.createButton = new OO.ui.ButtonWidget({\n label: mw.message('isekai-createpage-create-page-button').parse(),\n flags: ['primary', 'progressive']\n });\n this.createButton.on('click', this.createPage.bind(this));\n this.formGroup = new OO.ui.ActionFieldLayout(this.pageNameInput, this.createButton, {\n align: 'top'\n });\n this.baseDom.find('.card-body .card-content').append(this.formGroup.$element);\n }\n }, {\n key: \"createPage\",\n value: function createPage() {\n var _this = this;\n var title = this.pageNameInput.getValue();\n if (this.hasError) {\n this.clearError(); //清除errors\n }\n\n if (title.trim().length > 0) {\n this.createButton.setDisabled(true);\n this.pageExists(title).then(function (exists) {\n if (exists) {\n _this.createButton.setDisabled(false);\n _this.setError(mw.message('isekai-createpage-page-exists').parse()); //提示页面已经存在\n } else {\n var targetUrl = mw.util.getUrl(title, {\n veaction: 'edit'\n });\n _this.formGroup.setSuccess([mw.message('isekai-createpage-redirecting').parse()]); //提示正在跳转\n location.href = targetUrl;\n }\n });\n } else {\n this.setError(mw.message('isekai-createpage-title-empty').parse());\n }\n }\n }, {\n key: \"onPageNameChange\",\n value: function onPageNameChange() {\n if (this.hasError) {\n this.clearError();\n }\n var value = this.pageNameInput.getValue();\n if (value.indexOf('') !== -1 || value.indexOf('`') !== -1) {\n var range = this.pageNameInput.getRange();\n value = value.replace(//g, ':').replace(/`/g, '·');\n this.pageNameInput.setValue(value);\n this.pageNameInput.selectRange(range.from, range.to);\n }\n }\n }, {\n key: \"setError\",\n value: function setError(msg) {\n this.formGroup.setErrors([msg]); //提示页面已经存在\n this.hasError = true;\n }\n }, {\n key: \"clearError\",\n value: function clearError() {\n this.formGroup.setErrors([]);\n this.hasError = false;\n }\n }, {\n key: \"pageExists\",\n value: function pageExists(title) {\n var _this2 = this;\n return new Promise(function (resolve, reject) {\n _this2.api.get({\n action: 'query',\n titles: title\n }).done(function (data) {\n if (data.query && data.query.pages) {\n if (data.query.pages[\"-1\"]) {\n resolve(false);\n } else {\n resolve(true);\n }\n } else {\n resolve(false);\n }\n }).fail(reject);\n });\n }\n }, {\n key: \"setTitle\",\n value: function setTitle(title) {\n this.title.text(title);\n }\n }]);\n return CreatePageWidget;\n}();\n(0,_moduleRegister__WEBPACK_IMPORTED_MODULE_0__.registerModule)('ui.CreatePageWidget', CreatePageWidget);\n\n//# sourceURL=webpack://isekai-widgets/./src/createPage/ext.isekai.createPage.js?");
/***/ }),
/***/ "./src/moduleRegister.js":
/*!*******************************!*\
!*** ./src/moduleRegister.js ***!
\*******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"registerModule\": () => (/* binding */ registerModule)\n/* harmony export */ });\nfunction registerModule(namespace, func) {\n var nsList = namespace.split('.');\n if (!('isekai' in window)) {\n window.isekai = {};\n }\n var obj = window.isekai;\n for (var i = 0; i < nsList.length - 1; i++) {\n var ns = nsList[i];\n if (!(ns in obj)) {\n obj[ns] = {};\n }\n obj = obj[ns];\n }\n obj[nsList[i]] = func;\n}\n\n//# sourceURL=webpack://isekai-widgets/./src/moduleRegister.js?");
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module can't be inlined because the eval devtool is used.
/******/ var __webpack_exports__ = __webpack_require__("./src/createPage/ext.isekai.createPage.js");
/******/
/******/ })()
;