From da1c3643c668951a2f89392275af5b5b4488867f Mon Sep 17 00:00:00 2001 From: afeiship <1290657123@qq.com> Date: Mon, 1 Mar 2021 18:43:17 +0800 Subject: [PATCH] chore: use jswork scope --- .babelrc | 11 ++- .gitignore | 4 + .npmignore | 7 +- .prettierrc | 1 + .release-it.json | 14 +++ Gemfile | 5 - LICENSE.txt | 21 ++++ README.md | 96 ++++++++++++++----- Rakefile | 4 - bin/docs.rb | 48 ++++++++++ build/TEMPLATE.md | 52 ++++++++++ build/{index.js => base.js} | 16 +++- build/build.js | 22 ----- build/{dev.js => development.js} | 4 +- build/docs.js | 20 +++- build/markdown.js | 30 ++++++ build/production.js | 22 +++++ build/release.js | 6 -- dist/index.js | 11 ++- dist/style.scss | 1 + docs/assets/bundle.8dff18f332d107732144.js | 76 +++++++++++++++ docs/assets/bundle.bbeba195c690e7363e69.js | 40 -------- .../styles/main.92e195126882936e52ab.css | 2 + .../styles/main.ba48d493ef40dffe3696.css | 2 - docs/index.html | 17 +--- docs/sw.js | 3 + jsconfig.json | 5 + package.json | 83 +++++++++------- public/assets/style.scss | 37 ++----- public/index.ejs | 7 +- public/index.js | 40 ++++++-- src/components/index.js | 18 +++- src/components/style.scss | 1 + webpack.config.babel.js | 3 +- 34 files changed, 521 insertions(+), 208 deletions(-) create mode 100644 .release-it.json delete mode 100644 Gemfile create mode 100644 LICENSE.txt delete mode 100644 Rakefile create mode 100755 bin/docs.rb create mode 100644 build/TEMPLATE.md rename build/{index.js => base.js} (54%) delete mode 100644 build/build.js rename build/{dev.js => development.js} (64%) create mode 100644 build/markdown.js create mode 100644 build/production.js delete mode 100644 build/release.js create mode 100644 docs/assets/bundle.8dff18f332d107732144.js delete mode 100644 docs/assets/bundle.bbeba195c690e7363e69.js create mode 100644 docs/assets/styles/main.92e195126882936e52ab.css delete mode 100644 docs/assets/styles/main.ba48d493ef40dffe3696.css create mode 100644 docs/sw.js create mode 100644 jsconfig.json diff --git a/.babelrc b/.babelrc index 07dc70e..ed26ba0 100644 --- a/.babelrc +++ b/.babelrc @@ -1,7 +1,14 @@ { - "presets": ["@babel/preset-env", "@babel/react"], + "presets": [[ + "@babel/preset-env", + { + "targets": { "browsers": [ "last 2 versions" ] } + } + ], "@babel/react"], "plugins": [ [ "@babel/plugin-proposal-decorators", { "legacy": true } ], - [ "@babel/plugin-proposal-class-properties", { "loose": true } ] + [ "@babel/plugin-proposal-class-properties", { "loose": true } ], + "@babel/plugin-proposal-optional-chaining", + "@babel/plugin-transform-parameters" ] } diff --git a/.gitignore b/.gitignore index 736ebbc..dfc9f5b 100644 --- a/.gitignore +++ b/.gitignore @@ -7,5 +7,9 @@ Gemfile.lock yarn-error.log package-lock.json .DS_Store +dist + +# editor .idea .vscode +.history diff --git a/.npmignore b/.npmignore index 26a435e..6289597 100644 --- a/.npmignore +++ b/.npmignore @@ -9,6 +9,7 @@ Rakefile **/npm-debug.log **/node_modules +bin src docs build @@ -20,6 +21,10 @@ webpack.config.babel.js example examples +# vscode +jsconfig.json +.history + # tests test __test__ @@ -27,4 +32,4 @@ __tests__ jest.config.js jest.setup.js - +.release-it.json diff --git a/.prettierrc b/.prettierrc index cc1879e..afe7997 100644 --- a/.prettierrc +++ b/.prettierrc @@ -6,6 +6,7 @@ "jsxBracketSameLine": true, "tabWidth": 2, "semi": true, + "quoteProps": "consistent", "singleQuote": true, "overrides": [ { diff --git a/.release-it.json b/.release-it.json new file mode 100644 index 0000000..ed9a004 --- /dev/null +++ b/.release-it.json @@ -0,0 +1,14 @@ +{ + "hooks": { + "after:init": [ + "t2k" + ], + "after:bump": [ + "npm run docs", + "npm run build" + ] + }, + "github": { + "release": true + } +} \ No newline at end of file diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 2b5ea5a..0000000 --- a/Gemfile +++ /dev/null @@ -1,5 +0,0 @@ -source 'https://rubygems.org' - -gem 'fileutils' -gem 'sshkit' -gem 'semver' diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..be1fbb9 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 afei <1290657123@qq.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md index 61439dd..b323b89 100644 --- a/README.md +++ b/README.md @@ -1,52 +1,102 @@ # react-textarea > Textarea with text limit for react. -## installation -```shell -npm install -S @feizheng/react-textarea -``` +[![version][version-image]][version-url] +[![license][license-image]][license-url] +[![size][size-image]][size-url] +[![download][download-image]][download-url] -## update +## installation ```shell -npm update @feizheng/react-textarea +npm install -S @jswork/react-textarea ``` ## properties -| property | type | default | description | -| --------- | ------ | ------- | ----------- | -| className | String | - | - | -| value | - | - | - | -| onChange | - | - | - | +| Name | Type | Required | Default | Description | +| --------- | ------ | -------- | ------- | ------------------------------------- | +| className | string | false | - | The extended className for component. | +| autosize | bool | false | - | If auto height. | +| onChange | func | false | noop | The handler when value change. | +| value | string | false | - | The runtime value. | + ## usage 1. import css ```scss - @import "~@feizheng/react-textarea/dist/style.scss"; + @import "~@jswork/react-textarea/dist/style.css"; + + // or use sass + @import "~@jswork/react-textarea/dist/style.scss"; // customize your styles: $react-textarea-options: () ``` 2. import js ```js + import ReactDemokit from '@jswork/react-demokit'; import React from 'react'; import ReactDOM from 'react-dom'; - import ReactTextarea from '@feizheng/react-textarea'; - - // your app: - class App extends React.Component{ - render(){ + import ReactTextarea from '@jswork/react-textarea'; + import './assets/style.scss'; + + class App extends React.Component { + state = { value: '' }; + + handleChange = (inEvent) => { + this.setState({ value: inEvent.target.value }); + }; + + handleSubmit = (inEvent) => { + console.log({ value: this.state.value }); + }; + + render() { return ( - - ) + +
+
Preview:
+
+ + +
+
+
+
Value changed:
+
{JSON.stringify(this.state.value)}
+
+
+ ); } } - // render to dom: - ReactDOM.render(, document.getElementById('app')); + ReactDOM.render(, document.getElementById('app')); + ``` ## documentation - https://afeiship.github.io/react-textarea/ -## resources -- https://github.com/jackmoore/autosize + +## license +Code released under [the MIT license](https://github.com/afeiship/react-textarea/blob/master/LICENSE.txt). + +[version-image]: https://img.shields.io/npm/v/@jswork/react-textarea +[version-url]: https://npmjs.org/package/@jswork/react-textarea + +[license-image]: https://img.shields.io/npm/l/@jswork/react-textarea +[license-url]: https://github.com/afeiship/react-textarea/blob/master/LICENSE.txt + +[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/react-textarea +[size-url]: https://github.com/afeiship/react-textarea/blob/master/dist/react-textarea.min.js + +[download-image]: https://img.shields.io/npm/dm/@jswork/react-textarea +[download-url]: https://www.npmjs.com/package/@jswork/react-textarea diff --git a/Rakefile b/Rakefile deleted file mode 100644 index 178e979..0000000 --- a/Rakefile +++ /dev/null @@ -1,4 +0,0 @@ - -Dir["./node_modules/@feizheng/rake-*/index.rake"].each do |task| - load task -end diff --git a/bin/docs.rb b/bin/docs.rb new file mode 100755 index 0000000..2f71903 --- /dev/null +++ b/bin/docs.rb @@ -0,0 +1,48 @@ +#!/usr/bin/env ruby +require "net/http" +require "json" + +TOKEN = ENV["GITHUB_API_TOKEN"] + +class DocApp + def initialize + @uri = URI("https://api.github.com/repos/afeiship/react-textarea/pages") + @http = Net::HTTP.new(@uri.host, @uri.port) + @http.use_ssl = true + + @header = { + 'Accept': "application/vnd.github.switcheroo-preview+json", + 'Authorization': "token #{TOKEN}", + 'Content-Type': "application/vnd.api+json", + } + + @data = { + "source": { + "branch": "master", + "path": "/docs", + }, + } + end + + def del + @req = Net::HTTP::Delete.new(@uri.path, @header) + @http.request(@req) + end + + def create + @req = Net::HTTP::Post.new(@uri.path, @header) + @req.body = @data.to_json + @http.request(@req) + end + + def set_doc + del + create + + puts "Has set master/docs to gh-pages!" + end +end + +# start app: +app = DocApp.new +app.set_doc diff --git a/build/TEMPLATE.md b/build/TEMPLATE.md new file mode 100644 index 0000000..d5cc322 --- /dev/null +++ b/build/TEMPLATE.md @@ -0,0 +1,52 @@ +# react-textarea +> Textarea with text limit for react. + +[![version][version-image]][version-url] +[![license][license-image]][license-url] +[![size][size-image]][size-url] +[![download][download-image]][download-url] + +## installation +```shell +npm install -S @jswork/react-textarea +``` + +## properties +__GENERATE_DOCS__ + +## usage +1. import css + ```scss + @import "~@jswork/react-textarea/dist/style.css"; + + // or use sass + @import "~@jswork/react-textarea/dist/style.scss"; + + // customize your styles: + $react-textarea-options: () + ``` +2. import js + ```js +__GENERATE_DAPP__ + ``` +## resources +- https://github.com/jackmoore/autosize + +## documentation +- https://afeiship.github.io/react-textarea/ + + +## license +Code released under [the MIT license](https://github.com/afeiship/react-textarea/blob/master/LICENSE.txt). + +[version-image]: https://img.shields.io/npm/v/@jswork/react-textarea +[version-url]: https://npmjs.org/package/@jswork/react-textarea + +[license-image]: https://img.shields.io/npm/l/@jswork/react-textarea +[license-url]: https://github.com/afeiship/react-textarea/blob/master/LICENSE.txt + +[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/react-textarea +[size-url]: https://github.com/afeiship/react-textarea/blob/master/dist/react-textarea.min.js + +[download-image]: https://img.shields.io/npm/dm/@jswork/react-textarea +[download-url]: https://www.npmjs.com/package/@jswork/react-textarea diff --git a/build/index.js b/build/base.js similarity index 54% rename from build/index.js rename to build/base.js index ec51903..b0af4d4 100644 --- a/build/index.js +++ b/build/base.js @@ -1,10 +1,10 @@ import { configs, inputs, - outputs, loaders, + outputs, plugins -} from '@feizheng/webpack-lib-kits'; +} from '@jswork/webpack-lib-kits'; export default { mode: configs.mode(), @@ -15,7 +15,15 @@ export default { alias: configs.alias() }, module: { - rules: [loaders.babel(), loaders.image(), loaders.sass(), loaders.version()] + rules: [ + loaders.babel(), + loaders.image(), + loaders.sass(), + loaders.version() + ] }, - plugins: [plugins.minCssExtract()] + plugins: [ + plugins.progressBar(), + plugins.minCssExtract() + ] }; diff --git a/build/build.js b/build/build.js deleted file mode 100644 index 039a4b8..0000000 --- a/build/build.js +++ /dev/null @@ -1,22 +0,0 @@ -import baseConfig from '.'; -import merge from 'webpack-merge'; -import { - configs, - inputs, - outputs, - loaders, - plugins, - externals -} from '@feizheng/webpack-lib-kits'; - -export default merge(baseConfig, { - entry: inputs.build(), - output: outputs.build({ - library: 'ReactTextarea' - }), - externals: externals.base({ - '@feizheng/noop': '@feizheng/noop', - 'autosize': 'autosize', - }), - plugins: [plugins.clean(), plugins.copyStyles()] -}); diff --git a/build/dev.js b/build/development.js similarity index 64% rename from build/dev.js rename to build/development.js index 6a0a187..2307ba7 100644 --- a/build/dev.js +++ b/build/development.js @@ -1,6 +1,6 @@ -import baseConfig from '.'; +import baseConfig from './base'; import merge from 'webpack-merge'; -import { configs, inputs, outputs, loaders, plugins } from '@feizheng/webpack-lib-kits'; +import { configs, inputs, outputs, loaders, plugins } from '@jswork/webpack-lib-kits'; export default merge(baseConfig, { entry: inputs.docs(), diff --git a/build/docs.js b/build/docs.js index 94c2fcd..d40e8e4 100644 --- a/build/docs.js +++ b/build/docs.js @@ -1,9 +1,23 @@ -import baseConfig from '.'; +import { + inputs, + outputs, + + plugins +} from '@jswork/webpack-lib-kits'; +import OfflinePlugin from 'offline-plugin'; import merge from 'webpack-merge'; -import { configs, inputs, outputs, loaders, plugins } from '@feizheng/webpack-lib-kits'; +import baseConfig from './base'; export default merge(baseConfig, { entry: inputs.docs(), output: outputs.docs(), - plugins: [plugins.clean(), plugins.html()] + plugins: [ + plugins.clean(), + plugins.html(), + new OfflinePlugin({ + ServiceWorker: { + events: true + } + }) + ] }); diff --git a/build/markdown.js b/build/markdown.js new file mode 100644 index 0000000..b89c346 --- /dev/null +++ b/build/markdown.js @@ -0,0 +1,30 @@ +const rmp = require('@jswork/react-markdown-props'); +const fs = require('fs'); +const indentString = require('indent-string'); + +require('@jswork/next'); +require('@jswork/next-replace-in-file'); + +nx.declare({ + statics: { + init: function() { + var instance = new this(); + instance.reset(); + instance.replace(); + } + }, + methods: { + reset: function() { + fs.copyFileSync('./build/TEMPLATE.md', './README.md'); + }, + replace: function() { + const docApp = fs.readFileSync('./public/index.js').toString(); + + nx.replaceInFile('README.md', [ + ['__GENERATE_DOCS__', rmp('./src/components/index.js')], + ['__GENERATE_DAPP__', indentString(docApp, 2)], + ['../src/main', '@jswork/react-textarea'] + ]); + } + } +}); diff --git a/build/production.js b/build/production.js new file mode 100644 index 0000000..6f82a47 --- /dev/null +++ b/build/production.js @@ -0,0 +1,22 @@ +import { + externals, + inputs, + outputs, + plugins +} from '@jswork/webpack-lib-kits'; +import merge from 'webpack-merge'; +import baseConfig from './base'; + +export default merge(baseConfig, { + entry: inputs.build(), + output: outputs.build({ + library: 'ReactTextarea' + }), + devtool: 'source-map', + externals: externals.node(), + plugins: [ + plugins.banner(), + plugins.clean(), + plugins.copyStyles(), + ] +}); diff --git a/build/release.js b/build/release.js deleted file mode 100644 index e7523f4..0000000 --- a/build/release.js +++ /dev/null @@ -1,6 +0,0 @@ -import buildConfig from './build'; -import merge from 'webpack-merge'; -import { configs, inputs, outputs, loaders, plugins } from '@feizheng/webpack-lib-kits'; -export default merge(buildConfig, { - plugins: [plugins.semver()] -}); diff --git a/dist/index.js b/dist/index.js index 26824e3..b5f1ce0 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1 +1,10 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("prop-types"),require("react"),require("classnames"),require("@feizheng/noop"),require("autosize"),require("react-dom"),require("object-assign")):"function"==typeof define&&define.amd?define(["prop-types","react","classnames","@feizheng/noop","autosize","react-dom","object-assign"],t):"object"==typeof exports?exports.ReactTextarea=t(require("prop-types"),require("react"),require("classnames"),require("@feizheng/noop"),require("autosize"),require("react-dom"),require("object-assign")):e.ReactTextarea=t(e["prop-types"],e.react,e.classnames,e["@feizheng/noop"],e.autosize,e["react-dom"],e["object-assign"])}(window,(function(e,t,r,n,o,u,i){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=7)}([function(t,r){t.exports=e},function(e,r){e.exports=t},function(e,t){e.exports=r},function(e,t){e.exports=n},function(e,t){e.exports=o},function(e,t){e.exports=u},function(e,t){e.exports=i},function(e,t,r){"use strict";r.r(t);var n=r(1),o=r.n(n),u=(r(5),r(0)),i=r.n(u),a=r(2),c=r.n(a),f=r(3),s=r.n(f),p=r(4),l=r.n(p);r(6);function y(e){return(y="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)}function b(){return(b=Object.assign||function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function m(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function g(e,t){for(var r=0;r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function m(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,["className","children","element","url","title","description"]);return h.a.createElement("div",y({"data-component":"react-demokit",className:s()("react-demokit",t)},f),h.a.createElement("header",{className:"is-header"},r,h.a.createElement("h1",null,a),h.a.createElement("h2",null,c)),h.a.createElement("div",{className:"is-body"},n),h.a.createElement(u.a,{value:this.state.hasUpdate}),h.a.createElement(l.a,{value:o}),h.a.createElement("footer",{className:"is-footer"},"v",i.version))}}])&&g(t.prototype,n),i}(p.Component);x.displayName="react-demokit",x.version="1.0.2",x.propTypes={className:d.a.string,url:d.a.string,title:d.a.string,description:d.a.string,element:d.a.element},x.defaultProps={element:h.a.createElement("img",{width:"160",src:"https://create-react-app.dev/img/logo.svg"})},t.default=x}])},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}}(),e.exports=n(18)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){};e.exports=r,t.default=r,t.NOOP_STRING="",t.NOOP_ARRAY=[],t.NOOP_OBJECT={}},function(e,t,n){var r,o,i; +/*! + autosize 4.0.2 + license: MIT + http://www.jacklmoore.com/autosize +*/o=[e,t],void 0===(i="function"==typeof(r=function(e,t){"use strict";var n,r,o="function"==typeof Map?new Map:(n=[],r=[],{has:function(e){return n.indexOf(e)>-1},get:function(e){return r[n.indexOf(e)]},set:function(e,t){-1===n.indexOf(e)&&(n.push(e),r.push(t))},delete:function(e){var t=n.indexOf(e);t>-1&&(n.splice(t,1),r.splice(t,1))}}),i=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){i=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}function l(e){if(e&&e.nodeName&&"TEXTAREA"===e.nodeName&&!o.has(e)){var t,n=null,r=null,l=null,a=function(){e.clientWidth!==r&&f()},u=function(t){window.removeEventListener("resize",a,!1),e.removeEventListener("input",f,!1),e.removeEventListener("keyup",f,!1),e.removeEventListener("autosize:destroy",u,!1),e.removeEventListener("autosize:update",f,!1),Object.keys(t).forEach((function(n){e.style[n]=t[n]})),o.delete(e)}.bind(e,{height:e.style.height,resize:e.style.resize,overflowY:e.style.overflowY,overflowX:e.style.overflowX,wordWrap:e.style.wordWrap});e.addEventListener("autosize:destroy",u,!1),"onpropertychange"in e&&"oninput"in e&&e.addEventListener("keyup",f,!1),window.addEventListener("resize",a,!1),e.addEventListener("input",f,!1),e.addEventListener("autosize:update",f,!1),e.style.overflowX="hidden",e.style.wordWrap="break-word",o.set(e,{destroy:u,update:f}),"vertical"===(t=window.getComputedStyle(e,null)).resize?e.style.resize="none":"both"===t.resize&&(e.style.resize="horizontal"),n="content-box"===t.boxSizing?-(parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)):parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),isNaN(n)&&(n=0),f()}function c(t){var n=e.style.width;e.style.width="0px",e.offsetWidth,e.style.width=n,e.style.overflowY=t}function s(){if(0!==e.scrollHeight){var t=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}(e),o=document.documentElement&&document.documentElement.scrollTop;e.style.height="",e.style.height=e.scrollHeight+n+"px",r=e.clientWidth,t.forEach((function(e){e.node.scrollTop=e.scrollTop})),o&&(document.documentElement.scrollTop=o)}}function f(){s();var t=Math.round(parseFloat(e.style.height)),n=window.getComputedStyle(e,null),r="content-box"===n.boxSizing?Math.round(parseFloat(n.height)):e.offsetHeight;if(rN.length&&N.push(e)}function M(e,t,n){return null==e?0:function e(t,n,r,o){var a=typeof t;"undefined"!==a&&"boolean"!==a||(t=null);var u=!1;if(null===t)u=!0;else switch(a){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case l:u=!0}}if(u)return r(o,t,""===n?"."+j(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;c-1?h.defineBombMethod(t,n,o,r):h["define"+e](t,n,o,r)}))},function(){var e=1,t=0;function n(e,t){this.type=e,this.meta=t,this.base=t.extends||h.RootClass,this.$base=this.base.prototype,this.__class_meta__={},this.__class__=null,this.__constructor__=null}n.prototype={constructor:n,initMetaProcessor:function(){var t=this.meta,n=t.methods||{},r=t.statics||{};h.mix(this.__class_meta__,{__type__:this.type,__meta__:t,__base__:this.base,__class_id__:e++,__method_init__:n.init||this.base.__method_init__,__static_init__:r.init||this.base.__static_init__,__static__:!t.methods&&!!t.statics})},createClassProcessor:function(){var e=this;this.__class__=function(){this.__id__=t++,e.__constructor__.apply(this,arguments),e.registerDebug(this)}},inheritProcessor:function(){var e=this.__class_meta__;this.inheritedClass(e),this.defineMethods(e,!0),this.defineMethods(e,!1),this.defineProperties(e)},inheritedClass:function(e){var t=function(){},n=this.__class__;t.prototype=this.$base,n.prototype=new t,n.prototype.$base=this.$base,n.prototype.constructor=n},defineMethods:function(e,t){var n=t?"statics":"methods",r="__"+n+"__",o=t?this.__class__:this.__class__.prototype,i=(t?this.base:this.base.prototype)[r]||{};h.forIn(this.meta[n],(function(e,t){i[e]&&"function"==typeof t&&(t.__base__=i[e])})),o[r]=h.mix(e[r],i,this.meta[n]),h.defineMembers("Method",o,o[r],t)},defineProperties:function(e){var t=e.__static__,n=t?this.__class__:this.__class__.prototype,r=t?this.base:this.base.prototype;n.__properties__=h.mix(null,r.__properties__,e.__properties__,this.meta.properties),h.defineMembers("Property",n,n.__properties__,t)},methodsConstructorProcessor:function(){var e=this.__class_meta__;this.__constructor__=function(){e.__method_init__.apply(this,arguments)}},staticsConstructorProcessor:function(){this.__class_meta__.__static_init__.call(this.__class__)},registerProcessor:function(){var e=this.__class__,t=this.type,n=this.__class_meta__;h.mix(e.prototype,n),h.mix(e,n),-1===t.indexOf("nx.Anonymous")&&h.set(h.GLOBAL,t,e)},registerDebug:function(e){h.DEBUG&&(h.set(h,"__instances__."+(t-1),e),h.set(h,"__instances__.length",t))}},h.declare=function(t,r){var o=new n("string"==typeof t?t:"nx.Anonymous"+e,r||t);return o.initMetaProcessor(),o.createClassProcessor(),o.inheritProcessor(),o.methodsConstructorProcessor(),o.staticsConstructorProcessor(),o.registerProcessor(),o.__class__}}()}).call(this)}).call(this,n(13),n(14)(e))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){function n(){return"serviceWorker"in navigator&&("https:"===window.location.protocol||"localhost"===window.location.hostname||0===window.location.hostname.indexOf("127."))}t.install=function(e){if(e||(e={}),n()){var t=navigator.serviceWorker.register("sw.js",{}),r=function(e){var t,n,r=e.installing||e.waiting;r&&!r.onstatechange&&(e.active?(i(),n=i):(l(),n=l),e.waiting&&(t=!0),r.onstatechange=n);function i(){switch(r.state){case"redundant":o("onUpdateFailed"),r.onstatechange=null;break;case"installing":0;break;case"installed":t||o("onUpdateReady");break;case"activated":o("onUpdated"),r.onstatechange=null}}function l(){switch(r.state){case"redundant":r.onstatechange=null;break;case"installing":case"installed":break;case"activated":o("onInstalled"),r.onstatechange=null}}},o=function(t){"function"==typeof e[t]&&e[t]({source:"ServiceWorker"})};t.then((function(e){e&&(r(e),e.onupdatefound=function(){r(e)})})).catch((function(e){return o("onError"),Promise.reject(e)}))}else;},t.applyUpdate=function(e,t){n()&&navigator.serviceWorker.getRegistration().then((function(n){n&&n.waiting?(n.waiting.postMessage({action:"skipWaiting"}),e&&e()):t&&t()}))},t.update=function(){n()&&navigator.serviceWorker.getRegistration().then((function(e){if(e)return e.update()}))}},function(e,t,n){ +/*! + * name: @jswork/react-github-corner + * description: Github corner for react. + * homepage: https://github.com/afeiship/react-github-corner#readme + * version: 1.0.0 + * date: 2020-11-17T12:20:29.492Z + * license: MIT + */ +window,e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(e,t){e.exports=n(0)},function(e,t){e.exports=n(1)},function(e,t){e.exports=n(2)},function(e,t,n){"use strict";n.r(t);var r=n(2),o=n.n(r),i=n(1),l=n.n(i),a=n(0),u=n.n(a);function c(e){return(c="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)}function s(){return(s=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,["className","value"]);return u.a.createElement("a",s({href:n,"data-component":"react-github-corner",className:o()("react-github-corner",t)},r,{target:"_blank",rel:"noopener noreferrer"}),u.a.createElement("svg",{width:"80",height:"80",viewBox:"0 0 250 250"},u.a.createElement("path",{d:"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"}),u.a.createElement("path",{d:"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2",fill:"currentColor",className:"octo-arm",style:{transformOrigin:"130px 106px"}}),u.a.createElement("path",{d:"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z",fill:"currentColor",className:"octo-body"})))}}])&&d(t.prototype,n),i}(a.Component);y.displayName="react-github-corner",y.version="1.0.0",y.propTypes={className:l.a.string,value:l.a.string},y.defaultProps={},t.default=y}])},function(e,t,n){ +/*! + * name: @jswork/react-sw-update-tips + * description: Update tips for service-worker. + * homepage: https://github.com/afeiship/react-sw-update-tips#readme + * version: 1.0.0 + * date: 2020-11-17T12:48:18.893Z + * license: MIT + */ +window,e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=4)}([function(e,t){e.exports=n(1)},function(e,t){e.exports=n(0)},function(e,t){e.exports=n(4)},function(e,t){e.exports=n(2)},function(e,t,n){"use strict";n.r(t);var r=n(2),o=n.n(r),i=n(3),l=n.n(i),a=n(0),u=n.n(a),c=n(1),s=n.n(c);function f(e){return(f="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)}function d(){return(d=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(t,["className","value","text","hidden"]));return r&&s.a.createElement("div",d({className:l()(v,n),hidden:this.state.hidden},i),s.a.createElement("a",{onClick:this.onClick},s.a.createElement("span",{className:"".concat(v,"__text")},o)),s.a.createElement("a",{className:"".concat(v,"__close"),onClick:function(){e.setState({hidden:!0})}},"ㄨ"))}}])&&p(t.prototype,n),o}(c.Component);g.displayName=v,g.version="1.0.0",g.propTypes={className:u.a.string,text:u.a.oneOfType([u.a.string,u.a.element]),value:u.a.bool,hidden:u.a.bool,onChange:u.a.func},g.defaultProps={text:"↺ 有新版本更新啦,点击刷新",hidden:!1,value:!1,onChange:function(){o.a.update()}},t.default=g}])},function(e,t,n){"use strict"; +/** @license React v16.14.0 + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var r=n(0),o=n(3),i=n(19);function l(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n