File Control frontend
This commit is contained in:
1 parent
48a3932451
commit
9337faab97
9 files changed
+447
-199
No files matched your search
@@ -115,7 +115,7 @@ namespace Api {
|
||||
$files = array();
|
||||
foreach ($res as $row) {
|
||||
if ($row["uid"] === null) continue;
|
||||
$fileId = (string)$row["uid"];
|
||||
$fileId = $row["uid"];
|
||||
$parentId = $row["parentId"];
|
||||
$fileName = $row["name"];
|
||||
$isDirectory = $row["directory"];
|
||||
@@ -377,7 +377,6 @@ namespace Api\File {
|
||||
'parentId' => new Parameter('parentId', Parameter::TYPE_INT, true, null)
|
||||
));
|
||||
$this->loginRequired = true;
|
||||
$this->csrfTokenRequired = false;
|
||||
}
|
||||
|
||||
public function execute($values = array()) {
|
||||
|
||||
@@ -57,6 +57,18 @@ export default class API {
|
||||
return this.apiCall("file/revokeToken", { token: token });
|
||||
}
|
||||
|
||||
createDownloadToken(durability, files) {
|
||||
return this.apiCall("file/createDownloadToken", { files: files, durability: durability });
|
||||
}
|
||||
|
||||
createUploadToken(durability, parentId=null, maxFiles=0, maxSize=0, extensions = "") {
|
||||
return this.apiCall("file/createUploadToken", { parentId: parentId, durability: durability, maxFiles: maxFiles, maxSize: maxSize, extensions: extensions });
|
||||
}
|
||||
|
||||
createDirectory(name, parentId = null) {
|
||||
return this.apiCall("file/createDirectory", { name: name, parentId: parentId });
|
||||
}
|
||||
|
||||
async upload(files, token = null, parentId = null) {
|
||||
const csrf_token = this.csrfToken();
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
import Icon from "./icon";
|
||||
import React from "react";
|
||||
|
||||
export default function Alert(props) {
|
||||
|
||||
const onClose = props.onClose || null;
|
||||
const title = props.title || "Untitled Alert";
|
||||
const message = props.message || "Alert message";
|
||||
const type = props.type || "danger";
|
||||
|
||||
let icon = "ban";
|
||||
if (type === "warning") {
|
||||
icon = "exclamation-triangle";
|
||||
} else if(type === "success") {
|
||||
icon = "check";
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={"alert alert-" + type + " alert-dismissible"}>
|
||||
{onClose ? <button type="button" className={"close"} data-dismiss={"alert"} aria-hidden={"true"} onClick={onClose}>×</button> : null}
|
||||
<h5><Icon icon={icon} className={"icon"} /> {title}</h5>
|
||||
{message}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -60,6 +60,10 @@
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.token-table td:nth-child(4) > i {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.file-table td:nth-child(n+3), .file-table th:nth-child(n+3) {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@@ -2,22 +2,23 @@ import * as React from "react";
|
||||
import "./file-browser.css";
|
||||
import Dropzone from "react-dropzone";
|
||||
import Icon from "./icon";
|
||||
import Alert from "./alert";
|
||||
import {Popup} from "./popup";
|
||||
import {useState} from "react";
|
||||
|
||||
export class FileBrowser extends React.Component {
|
||||
export function FileBrowser(props) {
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
let files = props.files || { };
|
||||
let api = props.api;
|
||||
let tokenObj = props.token || { valid: false };
|
||||
let onSelectFile = props.onSelectFile || function() { };
|
||||
let onFetchFiles = props.onFetchFiles || function() { };
|
||||
|
||||
this.state = {
|
||||
api: props.api,
|
||||
files: props.files,
|
||||
token: props.token,
|
||||
filesToUpload: [],
|
||||
alerts: []
|
||||
}
|
||||
}
|
||||
let [popup, setPopup] = useState({ visible: false, directoryName: "" });
|
||||
let [alerts, setAlerts] = useState( []);
|
||||
let [filesToUpload, setFilesToUpload] = useState([]);
|
||||
|
||||
svgMiddle(indentation, scale=1.0) {
|
||||
function svgMiddle(indentation, scale=1.0) {
|
||||
let width = 48 * scale;
|
||||
let height = 64 * scale;
|
||||
let style = (indentation > 1 ? { marginLeft: ((indentation-1)*width) + "px" } : {});
|
||||
@@ -33,7 +34,7 @@ export class FileBrowser extends React.Component {
|
||||
</svg>;
|
||||
}
|
||||
|
||||
svgEnd(indentation, scale=1.0) {
|
||||
function svgEnd(indentation, scale=1.0) {
|
||||
let width = 48 * scale;
|
||||
let height = 64 * scale;
|
||||
let style = (indentation > 1 ? { marginLeft: ((indentation-1)*width) + "px" } : {});
|
||||
@@ -51,7 +52,7 @@ export class FileBrowser extends React.Component {
|
||||
</svg>;
|
||||
}
|
||||
|
||||
createFileIcon(mimeType, size=2) {
|
||||
function createFileIcon(mimeType, size=2) {
|
||||
let icon = "";
|
||||
if (mimeType !== null) {
|
||||
mimeType = mimeType.toLowerCase().trim();
|
||||
@@ -89,7 +90,7 @@ export class FileBrowser extends React.Component {
|
||||
return <Icon icon={icon} type={"far"} className={"p-1 align-middle fa-" + size + "x"} />
|
||||
}
|
||||
|
||||
formatSize(size) {
|
||||
function formatSize(size) {
|
||||
const suffixes = ["B","KiB","MiB","GiB","TiB"];
|
||||
let i = 0;
|
||||
for (; i < suffixes.length && size >= 1024; i++) {
|
||||
@@ -103,78 +104,32 @@ export class FileBrowser extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
canUpload() {
|
||||
return this.state.api.loggedIn || (this.state.token.valid && this.state.token.type === "upload");
|
||||
function canUpload() {
|
||||
return api.loggedIn || (tokenObj.valid && tokenObj.type === "upload");
|
||||
}
|
||||
|
||||
onAddUploadFiles(acceptedFiles) {
|
||||
let files = this.state.filesToUpload.slice();
|
||||
function onAddUploadFiles(acceptedFiles) {
|
||||
let files = filesToUpload.slice();
|
||||
files.push(...acceptedFiles);
|
||||
this.setState({ ...this.state, filesToUpload: files });
|
||||
setFilesToUpload(files);
|
||||
}
|
||||
|
||||
getSelectedIds(items = null, recursive = true) {
|
||||
function getSelectedIds(items = null, recursive = true) {
|
||||
let ids = [];
|
||||
items = items || this.state.files;
|
||||
items = items || files;
|
||||
for (const fileItem of Object.values(items)) {
|
||||
if (fileItem.selected) {
|
||||
ids.push(fileItem.uid);
|
||||
}
|
||||
if (recursive && fileItem.isDirectory) {
|
||||
ids.push(...this.getSelectedIds(fileItem.items));
|
||||
ids.push(...getSelectedIds(fileItem.items));
|
||||
}
|
||||
}
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
onSelectAll(selected, items) {
|
||||
for (const fileElement of Object.values(items)) {
|
||||
fileElement.selected = selected;
|
||||
if (fileElement.isDirectory) {
|
||||
this.onSelectAll(selected, fileElement.items);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onSelectFile(e, uid, items=null) {
|
||||
|
||||
let found = false;
|
||||
let updatedFiles = (items === null) ? {...this.state.files} : items;
|
||||
if (updatedFiles.hasOwnProperty(uid)) {
|
||||
let fileElement = updatedFiles[uid];
|
||||
found = true;
|
||||
fileElement.selected = e.target.checked;
|
||||
if (fileElement.isDirectory) {
|
||||
this.onSelectAll(fileElement.selected, fileElement.items);
|
||||
}
|
||||
} else {
|
||||
for (const fileElement of Object.values(updatedFiles)) {
|
||||
if (fileElement.isDirectory) {
|
||||
if (this.onSelectFile(e, uid, fileElement.items)) {
|
||||
if (!e.target.checked) {
|
||||
fileElement.selected = false;
|
||||
} else if (this.getSelectedIds(fileElement.items, false).length === Object.values(fileElement.items).length) {
|
||||
fileElement.selected = true;
|
||||
}
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (items === null) {
|
||||
this.setState({
|
||||
...this.state,
|
||||
files: updatedFiles
|
||||
});
|
||||
}
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
createFileList(elements, indentation=0) {
|
||||
function createFileList(elements, indentation=0) {
|
||||
let rows = [];
|
||||
let i = 0;
|
||||
const values = Object.values(elements);
|
||||
@@ -182,15 +137,15 @@ export class FileBrowser extends React.Component {
|
||||
let name = fileElement.name;
|
||||
let uid = fileElement.uid;
|
||||
let type = (fileElement.isDirectory ? "Directory" : fileElement.mimeType);
|
||||
let size = (fileElement.isDirectory ? "" : this.formatSize(fileElement.size));
|
||||
let size = (fileElement.isDirectory ? "" : formatSize(fileElement.size));
|
||||
let mimeType = (fileElement.isDirectory ? "application/x-directory" : fileElement.mimeType);
|
||||
let token = (this.state.token && this.state.token.valid ? "&token=" + this.state.token.value : "");
|
||||
let token = (tokenObj && tokenObj.valid ? "&token=" + tokenObj.value : "");
|
||||
let svg = <></>;
|
||||
if (indentation > 0) {
|
||||
if (i === values.length - 1) {
|
||||
svg = this.svgEnd(indentation, 0.75);
|
||||
svg = svgEnd(indentation, 0.75);
|
||||
} else {
|
||||
svg = this.svgMiddle(indentation, 0.75);
|
||||
svg = svgMiddle(indentation, 0.75);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,7 +153,7 @@ export class FileBrowser extends React.Component {
|
||||
<tr key={"file-" + uid} data-id={uid} className={"file-row"}>
|
||||
<td>
|
||||
{ svg }
|
||||
{ this.createFileIcon(mimeType) }
|
||||
{ createFileIcon(mimeType) }
|
||||
</td>
|
||||
<td>
|
||||
{fileElement.isDirectory ? name :
|
||||
@@ -209,53 +164,49 @@ export class FileBrowser extends React.Component {
|
||||
<td>{size}</td>
|
||||
<td>
|
||||
<input type={"checkbox"} checked={!!fileElement.selected}
|
||||
onChange={(e) => this.onSelectFile(e, uid)}
|
||||
onChange={(e) => onSelectFile(e, uid)}
|
||||
/>
|
||||
</td>
|
||||
</tr>
|
||||
);
|
||||
|
||||
if (fileElement.isDirectory) {
|
||||
rows.push(...this.createFileList(fileElement.items, indentation + 1));
|
||||
rows.push(...createFileList(fileElement.items, indentation + 1));
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return rows;
|
||||
}
|
||||
|
||||
render() {
|
||||
|
||||
let rows = this.createFileList(this.state.files);
|
||||
let selectedIds = this.getSelectedIds();
|
||||
let rows = createFileList(files);
|
||||
let selectedIds = getSelectedIds();
|
||||
let selectedCount = selectedIds.length;
|
||||
let uploadZone = <></>;
|
||||
let writePermissions = this.canUpload();
|
||||
let writePermissions = canUpload();
|
||||
let uploadedFiles = [];
|
||||
let alerts = [];
|
||||
let alertElements = [];
|
||||
|
||||
let i = 0;
|
||||
for (const alert of this.state.alerts) {
|
||||
alerts.push(
|
||||
<div key={"alert-" + i++} className={"alert alert-" + alert.type}>
|
||||
{ alert.text }
|
||||
</div>
|
||||
for (let i = 0; i < alerts.length; i++) {
|
||||
const alert = alerts[i];
|
||||
alertElements.push(
|
||||
<Alert key={"alert-" + i} {...alert} onClose={() => removeAlert(i)} />
|
||||
);
|
||||
}
|
||||
|
||||
if (writePermissions) {
|
||||
|
||||
for(let i = 0; i < this.state.filesToUpload.length; i++) {
|
||||
const file = this.state.filesToUpload[i];
|
||||
for(let i = 0; i < filesToUpload.length; i++) {
|
||||
const file = filesToUpload[i];
|
||||
uploadedFiles.push(
|
||||
<span className={"uploaded-file"} key={i}>
|
||||
{ this.createFileIcon(file.type, 3) }
|
||||
{ createFileIcon(file.type, 3) }
|
||||
<span>{file.name}</span>
|
||||
<Icon icon={"times"} onClick={(e) => this.onRemoveUploadedFile(e, i)}/>
|
||||
<Icon icon={"times"} onClick={(e) => onRemoveUploadedFile(e, i)}/>
|
||||
</span>
|
||||
);
|
||||
}
|
||||
|
||||
uploadZone = <><Dropzone onDrop={this.onAddUploadFiles.bind(this)}>
|
||||
uploadZone = <><Dropzone onDrop={onAddUploadFiles}>
|
||||
{({getRootProps, getInputProps}) => (
|
||||
<section className={"file-upload-container"}>
|
||||
<div {...getRootProps()}>
|
||||
@@ -273,7 +224,10 @@ export class FileBrowser extends React.Component {
|
||||
}
|
||||
|
||||
return <>
|
||||
<h4>File Browser</h4>
|
||||
<h4>
|
||||
<Icon icon={"sync"} className={"mx-3 clickable small"} onClick={fetchFiles}/>
|
||||
File Browser
|
||||
</h4>
|
||||
<table className={"table data-table file-table"}>
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -285,17 +239,23 @@ export class FileBrowser extends React.Component {
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{ rows }
|
||||
{ rows.length > 0 ? rows :
|
||||
<tr>
|
||||
<td colSpan={4} className={"text-center text-black-50"}>
|
||||
No files uploaded yet
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
<div className={"file-control-buttons"}>
|
||||
<button type={"button"} className={"btn btn-success"} disabled={selectedCount === 0}
|
||||
onClick={() => this.onDownload(selectedIds)}>
|
||||
onClick={() => onDownload(selectedIds)}>
|
||||
<Icon icon={"download"} className={"mr-1"}/>
|
||||
Download Selected Files ({selectedCount})
|
||||
</button>
|
||||
{ this.state.api.loggedIn ?
|
||||
<button type={"button"} className={"btn btn-info"}>
|
||||
{ api.loggedIn ?
|
||||
<button type={"button"} className={"btn btn-info"} onClick={onPopupOpen}>
|
||||
<Icon icon={"plus"} className={"mr-1"}/>
|
||||
Create Directory
|
||||
</button> :
|
||||
@@ -305,12 +265,12 @@ export class FileBrowser extends React.Component {
|
||||
writePermissions ?
|
||||
<>
|
||||
<button type={"button"} className={"btn btn-primary"} disabled={uploadedFiles.length === 0}
|
||||
onClick={this.onUpload.bind(this)}>
|
||||
onClick={onUpload}>
|
||||
<Icon icon={"upload"} className={"mr-1"}/>
|
||||
Upload
|
||||
</button>
|
||||
<button type={"button"} className={"btn btn-danger"} disabled={selectedCount === 0}
|
||||
onClick={() => this.deleteFiles(selectedIds)}>
|
||||
onClick={() => deleteFiles(selectedIds)}>
|
||||
<Icon icon={"trash"} className={"mr-1"}/>
|
||||
Delete Selected Files ({selectedCount})
|
||||
</button>
|
||||
@@ -320,72 +280,113 @@ export class FileBrowser extends React.Component {
|
||||
</div>
|
||||
{ uploadZone }
|
||||
<div>
|
||||
{ alerts }
|
||||
{ alertElements }
|
||||
</div>
|
||||
<Popup title={"Create Directory"} visible={popup.visible} buttons={["Ok","Cancel"]} onClose={onPopupClose} onClick={onPopupButton}>
|
||||
<div className={"form-group"}>
|
||||
<label>Directory Name</label>
|
||||
<input type={"text"} className={"form-control"} value={popup.directoryName} maxLength={32} placeholder={"Enter name…"}
|
||||
onChange={(e) => onPopupChange(e, "directoryName")}/>
|
||||
</div>
|
||||
</Popup>
|
||||
</>;
|
||||
|
||||
function onPopupOpen() {
|
||||
setPopup({ ...popup, visible: true });
|
||||
}
|
||||
|
||||
fetchFiles() {
|
||||
if (this.state.token.valid) {
|
||||
this.state.api.validateToken(this.state.token.value).then((res) => {
|
||||
if (res) {
|
||||
this.setState({ ...this.state, files: res.files });
|
||||
function onPopupClose() {
|
||||
setPopup({ ...popup, visible: false });
|
||||
}
|
||||
|
||||
function onPopupChange(e, key) {
|
||||
setPopup({ ...popup, [key]: e.target.value });
|
||||
}
|
||||
|
||||
function onPopupButton(btn) {
|
||||
|
||||
if (btn === "Ok") {
|
||||
api.createDirectory(popup.directoryName, null).then((res) => {
|
||||
if (!res.success) {
|
||||
pushAlert(res, "Error creating directory");
|
||||
} else {
|
||||
this.pushAlert(res);
|
||||
fetchFiles();
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
onPopupClose();
|
||||
}
|
||||
|
||||
function fetchFiles() {
|
||||
if (tokenObj.valid) {
|
||||
api.validateToken(tokenObj.value).then((res) => {
|
||||
if (res) {
|
||||
onFetchFiles(res.files);
|
||||
} else {
|
||||
pushAlert(res);
|
||||
}
|
||||
});
|
||||
} else if (this.state.api.loggedIn) {
|
||||
this.state.api.listFiles().then((res) => {
|
||||
} else if (api.loggedIn) {
|
||||
api.listFiles().then((res) => {
|
||||
if (res) {
|
||||
this.setState({ ...this.state, files: res.files });
|
||||
onFetchFiles(res.files);
|
||||
} else {
|
||||
this.pushAlert(res);
|
||||
pushAlert(res);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
onRemoveUploadedFile(e, i) {
|
||||
function onRemoveUploadedFile(e, i) {
|
||||
e.stopPropagation();
|
||||
let files = this.state.filesToUpload.slice();
|
||||
let files = filesToUpload.slice();
|
||||
files.splice(i, 1);
|
||||
this.setState({ ...this.state, filesToUpload: files });
|
||||
setFilesToUpload(files);
|
||||
}
|
||||
|
||||
pushAlert(res) {
|
||||
let newAlerts = this.state.alerts.slice();
|
||||
newAlerts.push({ type: "danger", text: res.msg });
|
||||
this.setState({ ...this.state, alerts: newAlerts });
|
||||
function pushAlert(res, title) {
|
||||
let newAlerts = alerts.slice();
|
||||
newAlerts.push({ type: "danger", message: res.msg, title: title });
|
||||
setAlerts(newAlerts);
|
||||
}
|
||||
|
||||
deleteFiles(selectedIds) {
|
||||
function removeAlert(i) {
|
||||
if (i >= 0 && i < alerts.length) {
|
||||
let newAlerts = alerts.slice();
|
||||
newAlerts.splice(i, 1);
|
||||
setAlerts(newAlerts);
|
||||
}
|
||||
}
|
||||
|
||||
function deleteFiles(selectedIds) {
|
||||
if (selectedIds && selectedIds.length > 0) {
|
||||
let token = (this.state.api.loggedIn ? null : this.state.token.value);
|
||||
this.state.api.delete(selectedIds, token).then((res) => {
|
||||
let token = (api.loggedIn ? null : tokenObj.value);
|
||||
api.delete(selectedIds, token).then((res) => {
|
||||
if (res.success) {
|
||||
this.fetchFiles();
|
||||
fetchFiles();
|
||||
} else {
|
||||
this.pushAlert(res);
|
||||
pushAlert(res);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
onUpload() {
|
||||
let token = (this.state.api.loggedIn ? null : this.state.token.value);
|
||||
this.state.api.upload(this.state.filesToUpload, token).then((res) => {
|
||||
function onUpload() {
|
||||
let token = (api.loggedIn ? null : tokenObj.value);
|
||||
api.upload(filesToUpload, token).then((res) => {
|
||||
if (res.success) {
|
||||
this.setState({ ...this.state, filesToUpload: [] })
|
||||
this.fetchFiles();
|
||||
setFilesToUpload([]);
|
||||
fetchFiles();
|
||||
} else {
|
||||
this.pushAlert(res);
|
||||
pushAlert(res);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onDownload(selectedIds) {
|
||||
function onDownload(selectedIds) {
|
||||
if (selectedIds && selectedIds.length > 0) {
|
||||
let token = (this.state.api.loggedIn ? "" : "&token=" + this.state.token.value);
|
||||
let token = (api.loggedIn ? "" : "&token=" + tokenObj.value);
|
||||
let ids = selectedIds.map(id => "id[]=" + id).join("&");
|
||||
let downloadUrl = "/api/file/download?" + ids + token;
|
||||
fetch(downloadUrl)
|
||||
|
||||
@@ -1,37 +1,46 @@
|
||||
import React from 'react';
|
||||
|
||||
class Popup extends React.Component {
|
||||
export function Popup(props) {
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
title: props.title || "Title",
|
||||
content: props.content || "Content",
|
||||
buttons: props.buttons || ["Ok", "Cancel"]
|
||||
}
|
||||
let buttonNames = props.buttons || ["Ok", "Cancel"];
|
||||
let onClick = props.onClick || function () { };
|
||||
let visible = !!props.visible;
|
||||
let title = props.title || "Popup Title";
|
||||
let onClose = props.onClose || function() { };
|
||||
|
||||
let buttons = [];
|
||||
const colors = ["primary", "secondary", "success", "warning", "danger"];
|
||||
for (let i = 0; i < buttonNames.length; i++) {
|
||||
let name = buttonNames[i];
|
||||
let color = colors[i % colors.length];
|
||||
buttons.push(
|
||||
<button key={"btn-" + i} type={"button"} className={"btn btn-" + color} data-dismiss={"modal"}
|
||||
onClick={() => onClick(name)}>
|
||||
{name}
|
||||
</button>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
render() {
|
||||
return <div className="modal" tabIndex="-1" role="dialog">
|
||||
return <>
|
||||
<div className={"modal fade" + (visible ? " show" : "")} tabIndex="-1" role="dialog" style={{display: (visible) ? "block" : "none"}}>
|
||||
<div className="modal-dialog" role="document">
|
||||
<div className="modal-content">
|
||||
<div className="modal-header">
|
||||
<h5 className="modal-title">{this.state.title}</h5>
|
||||
<button type="button" className="close" data-dismiss="modal" aria-label="Close">
|
||||
<h5 className="modal-title">{title}</h5>
|
||||
<button type="button" className="close" aria-label="Close" onClick={onClose}>
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div className="modal-body">
|
||||
<p>Modal body text goes here.</p>
|
||||
{props.children}
|
||||
</div>
|
||||
<div className="modal-footer">
|
||||
<button type="button" className="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||
<button type="button" className="btn btn-primary">Save changes</button>
|
||||
{buttons}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>;
|
||||
}
|
||||
</div>
|
||||
{visible ? <div className={"modal-backdrop fade show"}/> : <></>}
|
||||
</>;
|
||||
|
||||
}
|
||||
@@ -1,31 +1,49 @@
|
||||
import * as React from "react";
|
||||
import Icon from "./icon";
|
||||
import moment from "moment";
|
||||
import Popup from "react-popup";
|
||||
import {Popup} from "./popup";
|
||||
import Alert from "./alert";
|
||||
import {useState} from "react";
|
||||
|
||||
export class TokenList extends React.Component {
|
||||
export function TokenList(props) {
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
let api = props.api;
|
||||
let selectedFiles = props.selectedFiles || [];
|
||||
|
||||
this.state = {
|
||||
api: props.api,
|
||||
tokens: null,
|
||||
alerts: []
|
||||
let [tokens, setTokens] = useState(null);
|
||||
let [alerts, setAlerts] = useState([]);
|
||||
let [hideRevoked, setHideRevoked] = useState(true);
|
||||
let [popup, setPopup] = useState({
|
||||
tokenType: "download",
|
||||
maxFiles: 0,
|
||||
maxSize: 0,
|
||||
extensions: "",
|
||||
durability: 24 * 60 * 2,
|
||||
visible: false
|
||||
});
|
||||
|
||||
function fetchTokens() {
|
||||
api.listTokens().then((res) => {
|
||||
if (res) {
|
||||
setTokens(res.tokens);
|
||||
} else {
|
||||
pushAlert(res, "Error fetching tokens");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
|
||||
let rows = [];
|
||||
if (this.state.tokens === null) {
|
||||
this.state.api.listTokens().then((res) => {
|
||||
this.setState({ ...this.state, tokens: res.tokens });
|
||||
});
|
||||
if (tokens === null) {
|
||||
fetchTokens();
|
||||
} else {
|
||||
for (const token of this.state.tokens) {
|
||||
for (const token of tokens) {
|
||||
const validUntil = token.valid_until;
|
||||
const revoked = validUntil !== null && moment(validUntil).isSameOrBefore(new Date());
|
||||
if (revoked && hideRevoked) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const timeStr = (validUntil === null ? "Forever" : moment(validUntil).format("Do MMM YYYY, HH:mm"));
|
||||
|
||||
rows.push(
|
||||
@@ -35,26 +53,36 @@ export class TokenList extends React.Component {
|
||||
<td>{timeStr}</td>
|
||||
<td>
|
||||
<Icon icon={"times"} className={"clickable text-" + (revoked ? "secondary" : "danger")}
|
||||
onClick={() => (revoked ? null : this.onRevokeToken(token.token) )}
|
||||
disabled={revoked} />
|
||||
onClick={() => (revoked ? null : onRevokeToken(token.token))}
|
||||
disabled={revoked}/>
|
||||
<Icon icon={"save"} className={"clickable text-" + (revoked ? "secondary" : "info")}
|
||||
onClick={() => (revoked ? null : onCopyToken(token.token))}
|
||||
disabled={revoked}/>
|
||||
</td>
|
||||
</tr>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
let alerts = [];
|
||||
let i = 0;
|
||||
for (const alert of this.state.alerts) {
|
||||
alerts.push(
|
||||
<div key={"alert-" + i++} className={"alert alert-" + alert.type}>
|
||||
{ alert.text }
|
||||
</div>
|
||||
let alertElements = [];
|
||||
for (let i = 0; i < alerts.length; i++) {
|
||||
const alert = alerts[i];
|
||||
alertElements.push(
|
||||
<Alert key={"alert-" + i} {...alert} onClose={() => removeAlert(i)}/>
|
||||
);
|
||||
}
|
||||
|
||||
return <>
|
||||
<h4>Tokens</h4>
|
||||
<h4>
|
||||
<Icon icon={"sync"} className={"mx-3 clickable small"} onClick={fetchTokens}/>
|
||||
Tokens
|
||||
</h4>
|
||||
<div className={"form-check p-3 ml-3"}>
|
||||
<input type={"checkbox"} checked={hideRevoked} name={"hide-revoked"}
|
||||
className={"form-check-input"} style={{marginTop: "0.2rem"}}
|
||||
onChange={(e) => setHideRevoked(e.target.checked)}/>
|
||||
<label htmlFor={"hide-revoked"} className={"form-check-label pl-2"}>Hide revoked</label>
|
||||
</div>
|
||||
<table className={"table token-table"}>
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -65,41 +93,144 @@ export class TokenList extends React.Component {
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{ rows }
|
||||
{rows.length > 0 ? rows :
|
||||
<tr>
|
||||
<td colSpan={4} className={"text-center text-black-50"}>
|
||||
No active tokens connected with this account
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
<div>
|
||||
<button type={"button"} className={"btn btn-success m-2"} onClick={this.onCreateToken.bind(this)}>
|
||||
<button type={"button"} className={"btn btn-success m-2"} onClick={onPopupOpen}>
|
||||
<Icon icon={"plus"} className={"mr-1"}/>
|
||||
Create Token
|
||||
</button>
|
||||
</div>
|
||||
<div>
|
||||
{ alerts }
|
||||
{alertElements}
|
||||
</div>
|
||||
<Popup title={"Create Token"} visible={popup.visible} buttons={["Ok", "Cancel"]}
|
||||
onClose={onPopupClose} onClick={onPopupButton}>
|
||||
<div className={"form-group"}>
|
||||
<label>Token Durability in minutes (0 = forever):</label>
|
||||
<input type={"number"} min={0} className={"form-control"}
|
||||
value={popup.durability} onChange={(e) => onPopupChange(e, "durability")}/>
|
||||
</div>
|
||||
<div className="form-group">
|
||||
<label>Token Type:</label>
|
||||
<select value={popup.tokenType} className={"form-control"}
|
||||
onChange={(e) => onPopupChange(e, "tokenType")}>
|
||||
<option value={"upload"}>Upload</option>
|
||||
<option value={"download"}>Download</option>
|
||||
</select>
|
||||
</div>
|
||||
{popup.tokenType === "upload" ?
|
||||
<>
|
||||
<b>Upload Restrictions:</b>
|
||||
<div className={"form-group"}>
|
||||
<label>Max. Files (0 = unlimited):</label>
|
||||
<input type={"number"} min={0} max={25} className={"form-control"}
|
||||
value={popup.maxFiles}
|
||||
onChange={(e) => onPopupChange(e, "maxFiles")}/>
|
||||
</div>
|
||||
<div className={"form-group"}>
|
||||
<label>Max. Size per file in MB (0 = unlimited):</label>
|
||||
<input type={"number"} min={0} max={10} className={"form-control"}
|
||||
value={popup.maxSize} onChange={(e) => onPopupChange(e, "maxSize")}/>
|
||||
</div>
|
||||
<div className={"form-group"}>
|
||||
<label>Allowed Extensions:</label>
|
||||
<input type={"text"} placeholder={"(no restrictions)"} maxLength={256}
|
||||
className={"form-control"}
|
||||
value={popup.extensions}
|
||||
onChange={(e) => onPopupChange(e, "extensions")}/>
|
||||
</div>
|
||||
</> :
|
||||
<></>
|
||||
}
|
||||
</Popup>
|
||||
</>;
|
||||
|
||||
function pushAlert(res, title) {
|
||||
let newAlerts = alerts.slice();
|
||||
newAlerts.push({type: "danger", message: res.msg, title: title});
|
||||
setAlerts(newAlerts);
|
||||
}
|
||||
|
||||
onRevokeToken(token) {
|
||||
this.state.api.revokeToken(token).then((res) => {
|
||||
function removeAlert(i) {
|
||||
if (i >= 0 && i < alerts.length) {
|
||||
let newAlerts = alerts.slice();
|
||||
newAlerts.splice(i, 1);
|
||||
setAlerts(newAlerts);
|
||||
}
|
||||
}
|
||||
|
||||
function onRevokeToken(token) {
|
||||
api.revokeToken(token).then((res) => {
|
||||
if (res.success) {
|
||||
let newTokens = this.state.tokens.slice();
|
||||
let newTokens = tokens.slice();
|
||||
for (const tokenObj of newTokens) {
|
||||
if (tokenObj.token === token) {
|
||||
tokenObj.valid_until = moment();
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.setState({ ...this.state, tokens: newTokens });
|
||||
setTokens(newTokens);
|
||||
} else {
|
||||
let newAlerts = this.state.alerts.slice();
|
||||
newAlerts.push({ type: "danger", text: res.msg });
|
||||
this.setState({ ...this.state, alerts: newAlerts });
|
||||
pushAlert(res, "Error revoking token");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onCreateToken() {
|
||||
Popup.alert('I am alert, nice to meet you');
|
||||
function onPopupOpen() {
|
||||
setPopup({...popup, visible: true});
|
||||
}
|
||||
|
||||
function onPopupClose() {
|
||||
setPopup({...popup, visible: false});
|
||||
}
|
||||
|
||||
function onPopupChange(e, key) {
|
||||
setPopup({...popup, [key]: e.target.value});
|
||||
}
|
||||
|
||||
function onPopupButton(btn) {
|
||||
|
||||
if (btn === "Ok") {
|
||||
let durability = popup.durability;
|
||||
let validUntil = (durability === 0 ? null : moment().add(durability, "hours").format("YYYY-MM-DD HH:mm:ss"));
|
||||
if (popup.tokenType === "download") {
|
||||
api.createDownloadToken(durability, selectedFiles).then((res) => {
|
||||
if (!res.success) {
|
||||
pushAlert(res, "Error creating token");
|
||||
} else {
|
||||
let newTokens = tokens.slice();
|
||||
newTokens.push({token: res.token, valid_until: validUntil, type: "download"});
|
||||
setTokens(newTokens);
|
||||
}
|
||||
});
|
||||
} else if (popup.tokenType === "upload") {
|
||||
api.createUploadToken(durability, null, popup.maxFiles, popup.maxSize, popup.extensions).then((res) => {
|
||||
if (!res.success) {
|
||||
pushAlert(res, "Error creating token");
|
||||
} else {
|
||||
let newTokens = tokens.slice();
|
||||
newTokens.push({uid: res.tokenId, token: res.token, valid_until: validUntil, type: "upload"});
|
||||
setTokens(newTokens);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
onPopupClose();
|
||||
}
|
||||
|
||||
function onCopyToken(token) {
|
||||
let url = window.location.href;
|
||||
if (!url.endsWith("/")) url += "/";
|
||||
url += token;
|
||||
navigator.clipboard.writeText(url);
|
||||
}
|
||||
}
|
||||
@@ -16,10 +16,75 @@ class FileControlPanel extends React.Component {
|
||||
errorMessage: "",
|
||||
user: { },
|
||||
token: { valid: false, value: "", validUntil: null, type: null },
|
||||
files: [],
|
||||
files: {}
|
||||
};
|
||||
}
|
||||
|
||||
onFetchFiles(files) {
|
||||
this.setState({ ...this.state, files: files });
|
||||
}
|
||||
|
||||
getSelectedIds(items = null, recursive = true) {
|
||||
let ids = [];
|
||||
items = items || this.state.files;
|
||||
for (const fileItem of Object.values(items)) {
|
||||
if (fileItem.selected) {
|
||||
ids.push(fileItem.uid);
|
||||
}
|
||||
if (recursive && fileItem.isDirectory) {
|
||||
ids.push(...this.getSelectedIds(fileItem.items));
|
||||
}
|
||||
}
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
onSelectAll(selected, items) {
|
||||
for (const fileElement of Object.values(items)) {
|
||||
fileElement.selected = selected;
|
||||
if (fileElement.isDirectory) {
|
||||
this.onSelectAll(selected, fileElement.items);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onSelectFile(e, uid, items=null) {
|
||||
|
||||
let found = false;
|
||||
let updatedFiles = (items === null) ? {...this.state.files} : items;
|
||||
if (updatedFiles.hasOwnProperty(uid)) {
|
||||
let fileElement = updatedFiles[uid];
|
||||
found = true;
|
||||
fileElement.selected = e.target.checked;
|
||||
if (fileElement.isDirectory) {
|
||||
this.onSelectAll(fileElement.selected, fileElement.items);
|
||||
}
|
||||
} else {
|
||||
for (const fileElement of Object.values(updatedFiles)) {
|
||||
if (fileElement.isDirectory) {
|
||||
if (this.onSelectFile(e, uid, fileElement.items)) {
|
||||
if (!e.target.checked) {
|
||||
fileElement.selected = false;
|
||||
} else if (this.getSelectedIds(fileElement.items, false).length === Object.values(fileElement.items).length) {
|
||||
fileElement.selected = true;
|
||||
}
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (items === null) {
|
||||
this.setState({
|
||||
...this.state,
|
||||
files: updatedFiles
|
||||
});
|
||||
}
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
onValidateToken(token = null) {
|
||||
if (token === null) {
|
||||
this.setState({ ...this.state, validatingToken: true, errorMessage: "" });
|
||||
@@ -58,7 +123,6 @@ class FileControlPanel extends React.Component {
|
||||
let start = (pathName.startsWith("/files/") ? ("/files/").length : 1);
|
||||
let token = pathName.substr(start, end);
|
||||
if (token) {
|
||||
// this.setState({ ...this.state, loaded: true, token: { ...this.state.token, value: token } });
|
||||
this.onValidateToken(token);
|
||||
checkUser = false;
|
||||
}
|
||||
@@ -78,10 +142,11 @@ class FileControlPanel extends React.Component {
|
||||
|
||||
return <>Loading… <Icon icon={"spinner"} /></>;
|
||||
} else if (this.api.loggedIn || this.state.token.valid) {
|
||||
let selectedIds = this.getSelectedIds();
|
||||
let tokenList = (this.api.loggedIn) ?
|
||||
<div className={"row"}>
|
||||
<div className={"col-lg-8 col-md-10 col-sm-12 mx-auto"}>
|
||||
<TokenList api={this.api} />
|
||||
<TokenList api={this.api} selectedFiles={selectedIds} />
|
||||
</div>
|
||||
</div> :
|
||||
<></>;
|
||||
@@ -91,7 +156,9 @@ class FileControlPanel extends React.Component {
|
||||
<div className={"row"}>
|
||||
<div className={"col-lg-8 col-md-10 col-sm-12 mx-auto"}>
|
||||
<h2>File Control Panel</h2>
|
||||
<FileBrowser files={this.state.files} token={this.state.token} api={this.api} />
|
||||
<FileBrowser files={this.state.files} token={this.state.token} api={this.api}
|
||||
onSelectFile={this.onSelectFile.bind(this)}
|
||||
onFetchFiles={this.onFetchFiles.bind(this)}/>
|
||||
</div>
|
||||
</div>
|
||||
{ tokenList }
|
||||
|
||||
Vendored
+7
-7
@@ -1,11 +1,11 @@
|
||||
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}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 a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));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=497)}([function(e,t,n){"use strict";e.exports=n(274)},function(e,t,n){(function(e){e.exports=function(){"use strict";var t,r;function a(){return t.apply(null,arguments)}function i(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function o(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function u(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(s(e,t))return!1;return!0}function l(e){return void 0===e}function d(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function c(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function f(e,t){var n,r=[];for(n=0;n<e.length;++n)r.push(t(e[n],n));return r}function _(e,t){for(var n in t)s(t,n)&&(e[n]=t[n]);return s(t,"toString")&&(e.toString=t.toString),s(t,"valueOf")&&(e.valueOf=t.valueOf),e}function m(e,t,n,r){return wt(e,t,n,r,!0).utc()}function h(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function p(e){if(null==e._isValid){var t=h(e),n=r.call(t.parsedDateParts,(function(e){return null!=e})),a=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidEra&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(a=a&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return a;e._isValid=a}return e._isValid}function y(e){var t=m(NaN);return null!=e?_(h(t),e):h(t).userInvalidated=!0,t}r=Array.prototype.some?Array.prototype.some:function(e){var t,n=Object(this),r=n.length>>>0;for(t=0;t<r;t++)if(t in n&&e.call(this,n[t],t,n))return!0;return!1};var v=a.momentProperties=[],M=!1;function g(e,t){var n,r,a;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=h(t)),l(t._locale)||(e._locale=t._locale),v.length>0)for(n=0;n<v.length;n++)l(a=t[r=v[n]])||(e[r]=a);return e}function L(e){g(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===M&&(M=!0,a.updateOffset(this),M=!1)}function b(e){return e instanceof L||null!=e&&null!=e._isAMomentObject}function k(e){!1===a.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function Y(e,t){var n=!0;return _((function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,e),n){var r,i,o,u=[];for(i=0;i<arguments.length;i++){if(r="","object"==typeof arguments[i]){for(o in r+="\n["+i+"] ",arguments[0])s(arguments[0],o)&&(r+=o+": "+arguments[0][o]+", ");r=r.slice(0,-2)}else r=arguments[i];u.push(r)}k(e+"\nArguments: "+Array.prototype.slice.call(u).join("")+"\n"+(new Error).stack),n=!1}return t.apply(this,arguments)}),t)}var w,T={};function D(e,t){null!=a.deprecationHandler&&a.deprecationHandler(e,t),T[e]||(k(t),T[e]=!0)}function S(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function x(e,t){var n,r=_({},e);for(n in t)s(t,n)&&(o(e[n])&&o(t[n])?(r[n]={},_(r[n],e[n]),_(r[n],t[n])):null!=t[n]?r[n]=t[n]:delete r[n]);for(n in e)s(e,n)&&!s(t,n)&&o(e[n])&&(r[n]=_({},r[n]));return r}function j(e){null!=e&&this.set(e)}function E(e,t,n){var r=""+Math.abs(e),a=t-r.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+r}a.suppressDeprecationWarnings=!1,a.deprecationHandler=null,w=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)s(e,t)&&n.push(t);return n};var O=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?Line truncated
|
||||
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}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 a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));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=486)}([function(e,t,n){"use strict";e.exports=n(271)},function(e,t,n){(function(e){e.exports=function(){"use strict";var t,r;function a(){return t.apply(null,arguments)}function i(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function o(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function u(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(s(e,t))return!1;return!0}function l(e){return void 0===e}function d(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function c(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function f(e,t){var n,r=[];for(n=0;n<e.length;++n)r.push(t(e[n],n));return r}function _(e,t){for(var n in t)s(t,n)&&(e[n]=t[n]);return s(t,"toString")&&(e.toString=t.toString),s(t,"valueOf")&&(e.valueOf=t.valueOf),e}function m(e,t,n,r){return wt(e,t,n,r,!0).utc()}function h(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function p(e){if(null==e._isValid){var t=h(e),n=r.call(t.parsedDateParts,(function(e){return null!=e})),a=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidEra&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(a=a&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return a;e._isValid=a}return e._isValid}function y(e){var t=m(NaN);return null!=e?_(h(t),e):h(t).userInvalidated=!0,t}r=Array.prototype.some?Array.prototype.some:function(e){var t,n=Object(this),r=n.length>>>0;for(t=0;t<r;t++)if(t in n&&e.call(this,n[t],t,n))return!0;return!1};var M=a.momentProperties=[],v=!1;function g(e,t){var n,r,a;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=h(t)),l(t._locale)||(e._locale=t._locale),M.length>0)for(n=0;n<M.length;n++)l(a=t[r=M[n]])||(e[r]=a);return e}function L(e){g(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===v&&(v=!0,a.updateOffset(this),v=!1)}function k(e){return e instanceof L||null!=e&&null!=e._isAMomentObject}function b(e){!1===a.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function Y(e,t){var n=!0;return _((function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,e),n){var r,i,o,u=[];for(i=0;i<arguments.length;i++){if(r="","object"==typeof arguments[i]){for(o in r+="\n["+i+"] ",arguments[0])s(arguments[0],o)&&(r+=o+": "+arguments[0][o]+", ");r=r.slice(0,-2)}else r=arguments[i];u.push(r)}b(e+"\nArguments: "+Array.prototype.slice.call(u).join("")+"\n"+(new Error).stack),n=!1}return t.apply(this,arguments)}),t)}var w,D={};function T(e,t){null!=a.deprecationHandler&&a.deprecationHandler(e,t),D[e]||(b(t),D[e]=!0)}function S(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function x(e,t){var n,r=_({},e);for(n in t)s(t,n)&&(o(e[n])&&o(t[n])?(r[n]={},_(r[n],e[n]),_(r[n],t[n])):null!=t[n]?r[n]=t[n]:delete r[n]);for(n in e)s(e,n)&&!s(t,n)&&o(e[n])&&(r[n]=_({},r[n]));return r}function j(e){null!=e&&this.set(e)}function E(e,t,n){var r=""+Math.abs(e),a=t-r.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+r}a.suppressDeprecationWarnings=!1,a.deprecationHandler=null,w=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)s(e,t)&&n.push(t);return n};var H=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?Line truncated
|
||||
//! moment.js
|
||||
a.version="2.29.1",t=Tt,a.fn=yn,a.min=function(){var e=[].slice.call(arguments,0);return xt("isBefore",e)},a.max=function(){var e=[].slice.call(arguments,0);return xt("isAfter",e)},a.now=function(){return Date.now?Date.now():+new Date},a.utc=m,a.unix=function(e){return Tt(1e3*e)},a.months=function(e,t){return Ln(e,t,"months")},a.isDate=c,a.locale=ot,a.invalid=y,a.duration=It,a.isMoment=b,a.weekdays=function(e,t,n){return bn(e,t,n,"weekdays")},a.parseZone=function(){return Tt.apply(null,arguments).parseZone()},a.localeData=ut,a.isDuration=Ot,a.monthsShort=function(e,t){return Ln(e,t,"monthsShort")},a.weekdaysMin=function(e,t,n){return bn(e,t,n,"weekdaysMin")},a.defineLocale=st,a.updateLocale=function(e,t){if(null!=t){var n,r,a=et;null!=tt[e]&&null!=tt[e].parentLocale?tt[e].set(x(tt[e]._config,t)):(null!=(r=it(e))&&(a=r._config),t=x(a,t),null==r&&(t.abbr=e),(n=new j(t)).parentLocale=tt[e],tt[e]=n),ot(e)}else null!=tt[e]&&(null!=tt[e].parentLocale?(tt[e]=tt[e].parentLocale,e===ot()&&ot(e)):null!=tt[e]&&delete tt[e]);return tt[e]},a.locales=function(){return w(tt)},a.weekdaysShort=function(e,t,n){return bn(e,t,n,"weekdaysShort")},a.normalizeUnits=z,a.relativeTimeRounding=function(e){return void 0===e?Bn:"function"==typeof e&&(Bn=e,!0)},a.relativeTimeThreshold=function(e,t){return void 0!==Gn[e]&&(void 0===t?Gn[e]:(Gn[e]=t,"s"===e&&(Gn.ss=t-1),!0))},a.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},a.prototype=yn,a.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},a}()}).call(this,n(487)(e))},function(e,t,n){var r=n(4),a=n(21),i=n(14),o=n(15),s=n(22),u=function(e,t,n){var l,d,c,f,_=e&u.F,m=e&u.G,h=e&u.S,p=e&u.P,y=e&u.B,v=m?r:h?r[t]||(r[t]={}):(r[t]||{}).prototype,M=m?a:a[t]||(a[t]={}),g=M.prototype||(M.prototype={});for(l in m&&(n=t),n)c=((d=!_&&v&&void 0!==v[l])?v:n)[l],f=y&&d?s(c,r):p&&"function"==typeof c?s(Function.call,c):c,v&&o(v,l,c,e&u.U),M[l]!=c&&i(M,l,f),p&&g[l]!=c&&(g[l]=c)};r.core=a,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,e.exports=u},function(e,t,n){var r=n(6);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){e.exports=n(485)()},function(e,t,n){var r=n(50)("wks"),a=n(36),i=n(4).Symbol,o="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=o&&i[e]||(o?i:a)("Symbol."+e))}).store=r},function(e,t,n){var r=n(24),a=Math.min;e.exports=function(e){return e>0?a(r(e),9007199254740991):0}},function(e,t,n){e.exports=!n(5)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,t,n){var r=n(3),a=n(98),i=n(26),o=Object.defineProperty;t.f=n(10)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),a)try{return o(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var r=n(27);e.exports=function(e){return Object(r(e))}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var r=n(11),a=n(35);e.exports=n(10)?function(e,t,n){return r.f(e,t,a(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(4),a=n(14),i=n(17),o=n(36)("src"),s=n(281),u=(""+s).split("toString");n(21).inspectSource=function(e){return s.call(e)},(e.exports=function(e,t,n,s){var l="function"==typeof n;l&&(i(n,"name")||a(n,"name",t)),e[t]!==n&&(l&&(i(n,o)||a(n,o,e[t]?""+e[t]:u.join(String(t)))),e===r?e[t]=n:s?e[t]?e[t]=n:a(e,t,n):(delete e[t],a(e,t,n)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[o]||s.call(this)}))},function(e,t,n){var r=n(2),a=n(5),i=n(27),o=/"/g,s=function(e,t,n,r){var a=String(i(e)),s="<"+t;return""!==n&&(s+=" "+n+'="'+String(r).replace(o,""")+'"'),s+">"+a+"</"+t+">"};e.exports=function(e,t){var n={};n[e]=t(s),r(r.P+r.F*a((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3})),"String",n)}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(51),a=n(27);e.exports=function(e){return r(a(e))}},function(e,t,n){var r=n(52),a=n(35),i=n(18),o=n(26),s=n(17),u=n(98),l=Object.getOwnPropertyDescriptor;t.f=n(10)?l:function(e,t){if(e=i(e),t=o(t,!0),u)try{return l(e,t)}catch(e){}if(s(e,t))return a(!r.f.call(e,t),e[t])}},function(e,t,n){var r=n(17),a=n(12),i=n(71)("IE_PROTO"),o=Object.proLine truncated
|
||||
a.version="2.29.1",t=Dt,a.fn=yn,a.min=function(){var e=[].slice.call(arguments,0);return xt("isBefore",e)},a.max=function(){var e=[].slice.call(arguments,0);return xt("isAfter",e)},a.now=function(){return Date.now?Date.now():+new Date},a.utc=m,a.unix=function(e){return Dt(1e3*e)},a.months=function(e,t){return Ln(e,t,"months")},a.isDate=c,a.locale=ot,a.invalid=y,a.duration=It,a.isMoment=k,a.weekdays=function(e,t,n){return kn(e,t,n,"weekdays")},a.parseZone=function(){return Dt.apply(null,arguments).parseZone()},a.localeData=ut,a.isDuration=Ht,a.monthsShort=function(e,t){return Ln(e,t,"monthsShort")},a.weekdaysMin=function(e,t,n){return kn(e,t,n,"weekdaysMin")},a.defineLocale=st,a.updateLocale=function(e,t){if(null!=t){var n,r,a=et;null!=tt[e]&&null!=tt[e].parentLocale?tt[e].set(x(tt[e]._config,t)):(null!=(r=it(e))&&(a=r._config),t=x(a,t),null==r&&(t.abbr=e),(n=new j(t)).parentLocale=tt[e],tt[e]=n),ot(e)}else null!=tt[e]&&(null!=tt[e].parentLocale?(tt[e]=tt[e].parentLocale,e===ot()&&ot(e)):null!=tt[e]&&delete tt[e]);return tt[e]},a.locales=function(){return w(tt)},a.weekdaysShort=function(e,t,n){return kn(e,t,n,"weekdaysShort")},a.normalizeUnits=R,a.relativeTimeRounding=function(e){return void 0===e?Bn:"function"==typeof e&&(Bn=e,!0)},a.relativeTimeThreshold=function(e,t){return void 0!==Gn[e]&&(void 0===t?Gn[e]:(Gn[e]=t,"s"===e&&(Gn.ss=t-1),!0))},a.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},a.prototype=yn,a.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},a}()}).call(this,n(484)(e))},function(e,t,n){var r=n(4),a=n(21),i=n(14),o=n(15),s=n(22),u=function(e,t,n){var l,d,c,f,_=e&u.F,m=e&u.G,h=e&u.S,p=e&u.P,y=e&u.B,M=m?r:h?r[t]||(r[t]={}):(r[t]||{}).prototype,v=m?a:a[t]||(a[t]={}),g=v.prototype||(v.prototype={});for(l in m&&(n=t),n)c=((d=!_&&M&&void 0!==M[l])?M:n)[l],f=y&&d?s(c,r):p&&"function"==typeof c?s(Function.call,c):c,M&&o(M,l,c,e&u.U),v[l]!=c&&i(v,l,f),p&&g[l]!=c&&(g[l]=c)};r.core=a,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,e.exports=u},function(e,t,n){var r=n(6);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){var r=n(50)("wks"),a=n(36),i=n(4).Symbol,o="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=o&&i[e]||(o?i:a)("Symbol."+e))}).store=r},function(e,t,n){var r=n(24),a=Math.min;e.exports=function(e){return e>0?a(r(e),9007199254740991):0}},function(e,t,n){e.exports=n(482)()},function(e,t,n){e.exports=!n(5)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,t,n){var r=n(3),a=n(98),i=n(26),o=Object.defineProperty;t.f=n(10)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),a)try{return o(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var r=n(27);e.exports=function(e){return Object(r(e))}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var r=n(11),a=n(35);e.exports=n(10)?function(e,t,n){return r.f(e,t,a(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(4),a=n(14),i=n(17),o=n(36)("src"),s=n(278),u=(""+s).split("toString");n(21).inspectSource=function(e){return s.call(e)},(e.exports=function(e,t,n,s){var l="function"==typeof n;l&&(i(n,"name")||a(n,"name",t)),e[t]!==n&&(l&&(i(n,o)||a(n,o,e[t]?""+e[t]:u.join(String(t)))),e===r?e[t]=n:s?e[t]?e[t]=n:a(e,t,n):(delete e[t],a(e,t,n)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[o]||s.call(this)}))},function(e,t,n){var r=n(2),a=n(5),i=n(27),o=/"/g,s=function(e,t,n,r){var a=String(i(e)),s="<"+t;return""!==n&&(s+=" "+n+'="'+String(r).replace(o,""")+'"'),s+">"+a+"</"+t+">"};e.exports=function(e,t){var n={};n[e]=t(s),r(r.P+r.F*a((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3})),"String",n)}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(51),a=n(27);e.exports=function(e){return r(a(e))}},function(e,t,n){var r=n(52),a=n(35),i=n(18),o=n(26),s=n(17),u=n(98),l=Object.getOwnPropertyDescriptor;t.f=n(10)?l:function(e,t){if(e=i(e),t=o(t,!0),u)try{return l(e,t)}catch(e){}if(s(e,t))return a(!r.f.call(e,t),e[t])}},function(e,t,n){var r=n(17),a=n(12),i=n(71)("IE_PROTO"),o=Object.proLine truncated
|
||||
/*
|
||||
object-assign
|
||||
(c) Sindre Sorhus
|
||||
@license MIT
|
||||
*/var r=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function o(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,u=o(e),l=1;l<arguments.length;l++){for(var d in n=Object(arguments[l]))a.call(n,d)&&(u[d]=n[d]);if(r){s=r(n);for(var c=0;c<s.length;c++)i.call(n,s[c])&&(u[s[c]]=n[s[c]])}}return u}},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,n){e.exports=!n(10)&&!n(5)((function(){return 7!=Object.defineProperty(n(69)("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){t.f=n(8)},function(e,t,n){var r=n(17),a=n(18),i=n(55)(!1),o=n(71)("IE_PROTO");e.exports=function(e,t){var n,s=a(e),u=0,l=[];for(n in s)n!=o&&r(s,n)&&l.push(n);for(;t.length>u;)r(s,n=t[u++])&&(~i(l,n)||l.push(n));return l}},function(e,t,n){var r=n(11),a=n(3),i=n(37);e.exports=n(10)?Object.defineProperties:function(e,t){a(e);for(var n,o=i(t),s=o.length,u=0;s>u;)r.f(e,n=o[u++],t[n]);return e}},function(e,t,n){var r=n(18),a=n(40).f,i={}.toString,o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return o&&"[object Window]"==i.call(e)?function(e){try{return a(e)}catch(e){return o.slice()}}(e):a(r(e))}},function(e,t,n){"use strict";var r=n(10),a=n(37),i=n(56),o=n(52),s=n(12),u=n(51),l=Object.assign;e.exports=!l||n(5)((function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach((function(e){t[e]=e})),7!=l({},e)[n]||Object.keys(l({},t)).join("")!=r}))?function(e,t){for(var n=s(e),l=arguments.length,d=1,c=i.f,f=o.f;l>d;)for(var _,m=u(arguments[d++]),h=c?a(m).concat(c(m)):a(m),p=h.length,y=0;p>y;)_=h[y++],r&&!f.call(m,_)||(n[_]=m[_]);return n}:l},function(e,t){e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},function(e,t,n){"use strict";var r=n(13),a=n(6),i=n(106),o=[].slice,s={},u=function(e,t,n){if(!(t in s)){for(var r=[],a=0;a<t;a++)r[a]="a["+a+"]";s[t]=Function("F,a","return new F("+r.join(",")+")")}return s[t](e,n)};e.exports=Function.bind||function(e){var t=r(this),n=o.call(arguments,1),s=function(){var r=n.concat(o.call(arguments));return this instanceof s?u(t,r.length,r):i(t,r,e)};return a(t.prototype)&&(s.prototype=t.prototype),s}},function(e,t){e.exports=function(e,t,n){var r=void 0===n;switch(t.length){case 0:return r?e():e.call(n);case 1:return r?e(t[0]):e.call(n,t[0]);case 2:return r?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return r?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return r?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},function(e,t,n){var r=n(4).parseInt,a=n(48).trim,i=n(75),o=/^[-+]?0[xX]/;e.exports=8!==r(i+"08")||22!==r(i+"0x16")?function(e,t){var n=a(String(e),3);return r(n,t>>>0||(o.test(n)?16:10))}:r},function(e,t,n){var r=n(4).parseFloat,a=n(48).trim;e.exports=1/r(n(75)+"-0")!=-1/0?function(e){var t=a(String(e),3),n=r(t);return 0===n&&"-"==t.charAt(0)?-0:n}:r},function(e,t,n){var r=n(23);e.exports=function(e,t){if("number"!=typeof e&&"Number"!=r(e))throw TypeError(t);return+e}},function(e,t,n){var r=n(6),a=Math.floor;e.exports=function(e){return!r(e)&&isFinite(e)&&a(e)===e}},function(e,t){e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:Math.log(1+e)}},function(e,t,n){var r=n(78),a=Math.pow,i=a(2,-52),o=a(2,-23),s=a(2,127)*(2-o),u=a(2,-126);e.exports=Math.fround||function(e){var t,n,a=Math.abs(e),l=r(e);return a<u?l*(a/u/o+1/i-1/i)*u*o:(n=(t=(1+o/i)*a)-(t-a))>s||n!=n?l*(1/0):l*n}},function(e,t,n){var r=n(3);e.exports=function(e,t,n,a){try{return a?t(r(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&r(i.call(e)),t}}},function(e,t,n){var r=n(13),a=n(12),i=n(51),o=n(9);e.exports=function(e,t,n,s,u){r(t);var l=a(e),d=i(l),c=o(l.length),f=u?c-1:0,_=u?-1:1;if(n<2)for(;;){if(f in d){s=d[f],f+=_;break}if(f+=_,u?f<0:c<=f)throw TypeError("Reduce of empty array with no initial value")}for(;u?f>=0:c>f;f+=_)f in d&&(s=t(s,d[f],f,l));return s}},function(e,t,n){"use strict";var r=n(12),a=n(38),i=n(9);e.exports=[].copyWithin||function(e,t){var n=r(this),o=i(n.length),s=a(e,o),u=a(t,o),l=arguments.length>2?arguments[2]:void 0,d=Math.min((void 0===l?o:a(l,o))-u,o-s),c=1;for(u<s&&s<u+d&&(c=-1,u+=d-1,s+=d-1);d-- >0;)u in n?n[s]=n[u]:delete n[s],s+=c,u+=c;return n}},function(e,t){e.exports=function(e,t){return{value:t,done:!Line truncated
|
||||
*/var r=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function o(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,u=o(e),l=1;l<arguments.length;l++){for(var d in n=Object(arguments[l]))a.call(n,d)&&(u[d]=n[d]);if(r){s=r(n);for(var c=0;c<s.length;c++)i.call(n,s[c])&&(u[s[c]]=n[s[c]])}}return u}},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,n){e.exports=!n(10)&&!n(5)((function(){return 7!=Object.defineProperty(n(69)("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){t.f=n(7)},function(e,t,n){var r=n(17),a=n(18),i=n(55)(!1),o=n(71)("IE_PROTO");e.exports=function(e,t){var n,s=a(e),u=0,l=[];for(n in s)n!=o&&r(s,n)&&l.push(n);for(;t.length>u;)r(s,n=t[u++])&&(~i(l,n)||l.push(n));return l}},function(e,t,n){var r=n(11),a=n(3),i=n(37);e.exports=n(10)?Object.defineProperties:function(e,t){a(e);for(var n,o=i(t),s=o.length,u=0;s>u;)r.f(e,n=o[u++],t[n]);return e}},function(e,t,n){var r=n(18),a=n(40).f,i={}.toString,o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return o&&"[object Window]"==i.call(e)?function(e){try{return a(e)}catch(e){return o.slice()}}(e):a(r(e))}},function(e,t,n){"use strict";var r=n(10),a=n(37),i=n(56),o=n(52),s=n(12),u=n(51),l=Object.assign;e.exports=!l||n(5)((function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach((function(e){t[e]=e})),7!=l({},e)[n]||Object.keys(l({},t)).join("")!=r}))?function(e,t){for(var n=s(e),l=arguments.length,d=1,c=i.f,f=o.f;l>d;)for(var _,m=u(arguments[d++]),h=c?a(m).concat(c(m)):a(m),p=h.length,y=0;p>y;)_=h[y++],r&&!f.call(m,_)||(n[_]=m[_]);return n}:l},function(e,t){e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},function(e,t,n){"use strict";var r=n(13),a=n(6),i=n(106),o=[].slice,s={},u=function(e,t,n){if(!(t in s)){for(var r=[],a=0;a<t;a++)r[a]="a["+a+"]";s[t]=Function("F,a","return new F("+r.join(",")+")")}return s[t](e,n)};e.exports=Function.bind||function(e){var t=r(this),n=o.call(arguments,1),s=function(){var r=n.concat(o.call(arguments));return this instanceof s?u(t,r.length,r):i(t,r,e)};return a(t.prototype)&&(s.prototype=t.prototype),s}},function(e,t){e.exports=function(e,t,n){var r=void 0===n;switch(t.length){case 0:return r?e():e.call(n);case 1:return r?e(t[0]):e.call(n,t[0]);case 2:return r?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return r?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return r?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},function(e,t,n){var r=n(4).parseInt,a=n(48).trim,i=n(75),o=/^[-+]?0[xX]/;e.exports=8!==r(i+"08")||22!==r(i+"0x16")?function(e,t){var n=a(String(e),3);return r(n,t>>>0||(o.test(n)?16:10))}:r},function(e,t,n){var r=n(4).parseFloat,a=n(48).trim;e.exports=1/r(n(75)+"-0")!=-1/0?function(e){var t=a(String(e),3),n=r(t);return 0===n&&"-"==t.charAt(0)?-0:n}:r},function(e,t,n){var r=n(23);e.exports=function(e,t){if("number"!=typeof e&&"Number"!=r(e))throw TypeError(t);return+e}},function(e,t,n){var r=n(6),a=Math.floor;e.exports=function(e){return!r(e)&&isFinite(e)&&a(e)===e}},function(e,t){e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:Math.log(1+e)}},function(e,t,n){var r=n(78),a=Math.pow,i=a(2,-52),o=a(2,-23),s=a(2,127)*(2-o),u=a(2,-126);e.exports=Math.fround||function(e){var t,n,a=Math.abs(e),l=r(e);return a<u?l*(a/u/o+1/i-1/i)*u*o:(n=(t=(1+o/i)*a)-(t-a))>s||n!=n?l*(1/0):l*n}},function(e,t,n){var r=n(3);e.exports=function(e,t,n,a){try{return a?t(r(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&r(i.call(e)),t}}},function(e,t,n){var r=n(13),a=n(12),i=n(51),o=n(8);e.exports=function(e,t,n,s,u){r(t);var l=a(e),d=i(l),c=o(l.length),f=u?c-1:0,_=u?-1:1;if(n<2)for(;;){if(f in d){s=d[f],f+=_;break}if(f+=_,u?f<0:c<=f)throw TypeError("Reduce of empty array with no initial value")}for(;u?f>=0:c>f;f+=_)f in d&&(s=t(s,d[f],f,l));return s}},function(e,t,n){"use strict";var r=n(12),a=n(38),i=n(8);e.exports=[].copyWithin||function(e,t){var n=r(this),o=i(n.length),s=a(e,o),u=a(t,o),l=arguments.length>2?arguments[2]:void 0,d=Math.min((void 0===l?o:a(l,o))-u,o-s),c=1;for(u<s&&s<u+d&&(c=-1,u+=d-1,s+=d-1);d-- >0;)u in n?n[s]=n[u]:delete n[s],s+=c,u+=c;return n}},function(e,t){e.exports=function(e,t){return{value:t,done:!Line truncated
|
||||
//! moment.js locale configuration
|
||||
e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";
|
||||
//! moment.js locale configuration
|
||||
@@ -275,7 +275,7 @@ e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月
|
||||
//! moment.js locale configuration
|
||||
e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(1))},function(e,t,n){!function(e){"use strict";
|
||||
//! moment.js locale configuration
|
||||
e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(1))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={SHOW:"SHOW",CLOSE:"CLOSE",REFRESH:"REFRESH"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.element=t.modifier=void 0;t.element=function(e,t){return"".concat(t,"__").concat(e)};t.modifier=function(e,t){if(!e)return null;var n=[];return e.split(" ").forEach((function(e){n.push("".concat(t,"--").concat(e))})),n.join(" ")}},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(275)},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(e&&t){var n=Array.isArray(t)?t:t.split(","),r=e.name||"",a=(e.type||"").toLowerCase(),i=a.replace(/\/.*$/,"");return n.some((function(e){var t=e.trim().toLowerCase();return"."===t.charAt(0)?r.toLowerCase().endsWith(t):t.endsWith("/*")?i===t.replace(/\/.*$/,""):a===t}))}return!0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a.default}});var r,a=(r=n(489))&&r.__esModule?r:{default:r}},function(e,t,n){"use strict";
|
||||
e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(1))},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(272)},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(e&&t){var n=Array.isArray(t)?t:t.split(","),r=e.name||"",a=(e.type||"").toLowerCase(),i=a.replace(/\/.*$/,"");return n.some((function(e){var t=e.trim().toLowerCase();return"."===t.charAt(0)?r.toLowerCase().endsWith(t):t.endsWith("/*")?i===t.replace(/\/.*$/,""):a===t}))}return!0}},function(e,t,n){"use strict";
|
||||
/** @license React v16.14.0
|
||||
* react.production.min.js
|
||||
*
|
||||
@@ -283,7 +283,7 @@ e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月
|
||||
*
|
||||
* 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(96),a="function"==typeof Symbol&&Symbol.for,i=a?Symbol.for("react.element"):60103,o=a?Symbol.for("react.portal"):60106,s=a?Symbol.for("react.fragment"):60107,u=a?Symbol.for("react.strict_mode"):60108,l=a?Symbol.for("react.profiler"):60114,d=a?Symbol.for("react.provider"):60109,c=a?Symbol.for("react.context"):60110,f=a?Symbol.for("react.forward_ref"):60112,_=a?Symbol.for("react.suspense"):60113,m=a?Symbol.for("react.memo"):60115,h=a?Symbol.for("react.lazy"):60116,p="function"==typeof Symbol&&Symbol.iterator;function y(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var v={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},M={};function g(e,t,n){this.props=e,this.context=t,this.refs=M,this.updater=n||v}function L(){}function b(e,t,n){this.props=e,this.context=t,this.refs=M,this.updater=n||v}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(y(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},L.prototype=g.prototype;var k=b.prototype=new L;k.constructor=b,r(k,g.prototype),k.isPureReactComponent=!0;var Y={current:null},w=Object.prototype.hasOwnProperty,T={key:!0,ref:!0,__self:!0,__source:!0};function D(e,t,n){var r,a={},o=null,s=null;if(null!=t)for(r in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(o=""+t.key),t)w.call(t,r)&&!T.hasOwnProperty(r)&&(a[r]=t[r]);var u=arguments.length-2;if(1===u)a.children=n;else if(1<u){for(var l=Array(u),d=0;d<u;d++)l[d]=arguments[d+2];a.children=l}if(e&&e.defaultProps)for(r in u=e.defaultProps)void 0===a[r]&&(a[r]=u[r]);return{$$typeof:i,type:e,key:o,ref:s,props:a,_owner:Y.current}}function S(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var x=/\/+/g,j=[];function E(e,t,n,r){if(j.length){var a=j.pop();return a.result=e,a.keyPrefix=t,a.func=n,a.context=r,a.count=0,a}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function O(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>j.length&&j.push(e)}function H(e,t,n){return null==e?0:function e(t,n,r,a){var s=typeof t;"undefined"!==s&&"boolean"!==s||(t=null);var u=!1;if(null===t)u=!0;else switch(s){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case o:u=!0}}if(u)return r(a,t,""===n?"."+P(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var l=0;l<t.length;l++){var d=n+P(s=t[l],l);u+=e(s,d,r,a)}else if(null===t||"object"!=typeof t?d=null:d="function"==typeof(d=p&&t[p]||t["@@iterator"])?d:null,"function"==typeof d)for(t=d.call(t),l=0;!(s=t.next()).done;)u+=e(s=s.value,d=n+P(s,l++),r,a);else if("object"===s)throw r=""+t,Error(y(31,"[object Object]"===r?"object with keys {"+Object.keys(t).join(", ")+"}":r,""));return u}(e,"",t,n)}function P(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function C(e,t){e.func.call(e.context,t,e.count++)}function F(e,t,n){var r=e.result,a=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?A(e,r,n,(function(e){return e})):null!=e&&(S(e)&&(e=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,a+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(x,"$&/")+"/")+n)),r.push(e))}function A(e,t,n,r,a){var i="";null!=n&&(i=(""+n).replace(x,"$&/")+"/"),H(e,F,t=E(t,i,r,a)),O(t)}var N={current:null};function W(){var e=N.current;if(null===e)throw Error(y(321));return e}var R={ReactCurrentDispatcher:N,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:Y,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:function(e,t,n){if(null==e)return e;var r=[];return A(e,r,null,t,n),r},forEach:function(e,t,n){if(null==e)return e;H(e,C,t=E(null,null,t,n)),O(t)},count:function(e){return H(e,(function(){return null}),null)},toArray:function(e){var t=[];return A(e,t,null,(function(e){return e})),t},only:function(e){if(!S(e))throw Error(y(143));return e}},t.Component=g,t.Fragment=s,t.Profiler=l,t.PureComponent=b,t.StrictMode=u,t.Suspense=_,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=R,t.cloneElement=function(e,t,n){if(null==e)throw Error(y(267,e));var a=r({},e.props),o=e.key,s=e.ref,u=e._owner;if(null!=t){if(void 0!==t.ref&&(s=t.ref,u=Y.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(d in t)w.call(t,d)&&!T.hasOwnProperty(d)&&(a[d]=void 0===t[d]&&void 0!==l?l[d]:t[d])}var d=arguments.length-2;if(1===d)a.children=n;else if(1<d){l=Array(d);for(var c=0;c<d;c++)l[c]=arguments[c+2];a.children=l}return{$$typeof:i,tyLine truncated
|
||||
*/var r=n(96),a="function"==typeof Symbol&&Symbol.for,i=a?Symbol.for("react.element"):60103,o=a?Symbol.for("react.portal"):60106,s=a?Symbol.for("react.fragment"):60107,u=a?Symbol.for("react.strict_mode"):60108,l=a?Symbol.for("react.profiler"):60114,d=a?Symbol.for("react.provider"):60109,c=a?Symbol.for("react.context"):60110,f=a?Symbol.for("react.forward_ref"):60112,_=a?Symbol.for("react.suspense"):60113,m=a?Symbol.for("react.memo"):60115,h=a?Symbol.for("react.lazy"):60116,p="function"==typeof Symbol&&Symbol.iterator;function y(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var M={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},v={};function g(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||M}function L(){}function k(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||M}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(y(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},L.prototype=g.prototype;var b=k.prototype=new L;b.constructor=k,r(b,g.prototype),b.isPureReactComponent=!0;var Y={current:null},w=Object.prototype.hasOwnProperty,D={key:!0,ref:!0,__self:!0,__source:!0};function T(e,t,n){var r,a={},o=null,s=null;if(null!=t)for(r in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(o=""+t.key),t)w.call(t,r)&&!D.hasOwnProperty(r)&&(a[r]=t[r]);var u=arguments.length-2;if(1===u)a.children=n;else if(1<u){for(var l=Array(u),d=0;d<u;d++)l[d]=arguments[d+2];a.children=l}if(e&&e.defaultProps)for(r in u=e.defaultProps)void 0===a[r]&&(a[r]=u[r]);return{$$typeof:i,type:e,key:o,ref:s,props:a,_owner:Y.current}}function S(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var x=/\/+/g,j=[];function E(e,t,n,r){if(j.length){var a=j.pop();return a.result=e,a.keyPrefix=t,a.func=n,a.context=r,a.count=0,a}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function H(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>j.length&&j.push(e)}function O(e,t,n){return null==e?0:function e(t,n,r,a){var s=typeof t;"undefined"!==s&&"boolean"!==s||(t=null);var u=!1;if(null===t)u=!0;else switch(s){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case o:u=!0}}if(u)return r(a,t,""===n?"."+P(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var l=0;l<t.length;l++){var d=n+P(s=t[l],l);u+=e(s,d,r,a)}else if(null===t||"object"!=typeof t?d=null:d="function"==typeof(d=p&&t[p]||t["@@iterator"])?d:null,"function"==typeof d)for(t=d.call(t),l=0;!(s=t.next()).done;)u+=e(s=s.value,d=n+P(s,l++),r,a);else if("object"===s)throw r=""+t,Error(y(31,"[object Object]"===r?"object with keys {"+Object.keys(t).join(", ")+"}":r,""));return u}(e,"",t,n)}function P(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function F(e,t){e.func.call(e.context,t,e.count++)}function A(e,t,n){var r=e.result,a=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?N(e,r,n,(function(e){return e})):null!=e&&(S(e)&&(e=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,a+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(x,"$&/")+"/")+n)),r.push(e))}function N(e,t,n,r,a){var i="";null!=n&&(i=(""+n).replace(x,"$&/")+"/"),O(e,A,t=E(t,i,r,a)),H(t)}var C={current:null};function W(){var e=C.current;if(null===e)throw Error(y(321));return e}var z={ReactCurrentDispatcher:C,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:Y,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:function(e,t,n){if(null==e)return e;var r=[];return N(e,r,null,t,n),r},forEach:function(e,t,n){if(null==e)return e;O(e,F,t=E(null,null,t,n)),H(t)},count:function(e){return O(e,(function(){return null}),null)},toArray:function(e){var t=[];return N(e,t,null,(function(e){return e})),t},only:function(e){if(!S(e))throw Error(y(143));return e}},t.Component=g,t.Fragment=s,t.Profiler=l,t.PureComponent=k,t.StrictMode=u,t.Suspense=_,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=z,t.cloneElement=function(e,t,n){if(null==e)throw Error(y(267,e));var a=r({},e.props),o=e.key,s=e.ref,u=e._owner;if(null!=t){if(void 0!==t.ref&&(s=t.ref,u=Y.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(d in t)w.call(t,d)&&!D.hasOwnProperty(d)&&(a[d]=void 0===t[d]&&void 0!==l?l[d]:t[d])}var d=arguments.length-2;if(1===d)a.children=n;else if(1<d){l=Array(d);for(var c=0;c<d;c++)l[c]=arguments[c+2];a.children=l}return{$$typeof:i,tyLine truncated
|
||||
/** @license React v16.14.0
|
||||
* react-dom.production.min.js
|
||||
*
|
||||
@@ -291,7 +291,7 @@ e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月
|
||||
*
|
||||
* 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),a=n(96),i=n(276);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(o(227));function s(e,t,n,r,a,i,o,s,u){var l=Array.prototype.slice.call(arguments,3);try{t.apply(n,l)}catch(e){this.onError(e)}}var u=!1,l=null,d=!1,c=null,f={onError:function(e){u=!0,l=e}};function _(e,t,n,r,a,i,o,d,c){u=!1,l=null,s.apply(f,arguments)}var m=null,h=null,p=null;function y(e,t,n){var r=e.type||"unknown-event";e.currentTarget=p(n),function(e,t,n,r,a,i,s,f,m){if(_.apply(this,arguments),u){if(!u)throw Error(o(198));var h=l;u=!1,l=null,d||(d=!0,c=h)}}(r,t,void 0,e),e.currentTarget=null}var v=null,M={};function g(){if(v)for(var e in M){var t=M[e],n=v.indexOf(e);if(!(-1<n))throw Error(o(96,e));if(!b[n]){if(!t.extractEvents)throw Error(o(97,e));for(var r in b[n]=t,n=t.eventTypes){var a=void 0,i=n[r],s=t,u=r;if(k.hasOwnProperty(u))throw Error(o(99,u));k[u]=i;var l=i.phasedRegistrationNames;if(l){for(a in l)l.hasOwnProperty(a)&&L(l[a],s,u);a=!0}else i.registrationName?(L(i.registrationName,s,u),a=!0):a=!1;if(!a)throw Error(o(98,r,e))}}}}function L(e,t,n){if(Y[e])throw Error(o(100,e));Y[e]=t,w[e]=t.eventTypes[n].dependencies}var b=[],k={},Y={},w={};function T(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var r=e[t];if(!M.hasOwnProperty(t)||M[t]!==r){if(M[t])throw Error(o(102,t));M[t]=r,n=!0}}n&&g()}var D=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),S=null,x=null,j=null;function E(e){if(e=h(e)){if("function"!=typeof S)throw Error(o(280));var t=e.stateNode;t&&(t=m(t),S(e.stateNode,e.type,t))}}function O(e){x?j?j.push(e):j=[e]:x=e}function H(){if(x){var e=x,t=j;if(j=x=null,E(e),t)for(e=0;e<t.length;e++)E(t[e])}}function P(e,t){return e(t)}function C(e,t,n,r,a){return e(t,n,r,a)}function F(){}var A=P,N=!1,W=!1;function R(){null===x&&null===j||(F(),H())}function z(e,t,n){if(W)return e(t,n);W=!0;try{return A(e,t,n)}finally{W=!1,R()}}var I=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,U=Object.prototype.hasOwnProperty,J={},V={};function B(e,t,n,r,a,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i}var G={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){G[e]=new B(e,0,!1,e,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];G[t]=new B(t,1,!1,e[1],null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){G[e]=new B(e,2,!1,e.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){G[e]=new B(e,2,!1,e,null,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){G[e]=new B(e,3,!1,e.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(e){G[e]=new B(e,3,!0,e,null,!1)})),["capture","download"].forEach((function(e){G[e]=new B(e,4,!1,e,null,!1)})),["cols","rows","size","span"].forEach((function(e){G[e]=new B(e,6,!1,e,null,!1)})),["rowSpan","start"].forEach((function(e){G[e]=new B(e,5,!1,e.toLowerCase(),null,!1)}));var K=/[\-:]([a-z])/g;function $(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-raLine truncated
|
||||
*/var r=n(0),a=n(96),i=n(273);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(o(227));function s(e,t,n,r,a,i,o,s,u){var l=Array.prototype.slice.call(arguments,3);try{t.apply(n,l)}catch(e){this.onError(e)}}var u=!1,l=null,d=!1,c=null,f={onError:function(e){u=!0,l=e}};function _(e,t,n,r,a,i,o,d,c){u=!1,l=null,s.apply(f,arguments)}var m=null,h=null,p=null;function y(e,t,n){var r=e.type||"unknown-event";e.currentTarget=p(n),function(e,t,n,r,a,i,s,f,m){if(_.apply(this,arguments),u){if(!u)throw Error(o(198));var h=l;u=!1,l=null,d||(d=!0,c=h)}}(r,t,void 0,e),e.currentTarget=null}var M=null,v={};function g(){if(M)for(var e in v){var t=v[e],n=M.indexOf(e);if(!(-1<n))throw Error(o(96,e));if(!k[n]){if(!t.extractEvents)throw Error(o(97,e));for(var r in k[n]=t,n=t.eventTypes){var a=void 0,i=n[r],s=t,u=r;if(b.hasOwnProperty(u))throw Error(o(99,u));b[u]=i;var l=i.phasedRegistrationNames;if(l){for(a in l)l.hasOwnProperty(a)&&L(l[a],s,u);a=!0}else i.registrationName?(L(i.registrationName,s,u),a=!0):a=!1;if(!a)throw Error(o(98,r,e))}}}}function L(e,t,n){if(Y[e])throw Error(o(100,e));Y[e]=t,w[e]=t.eventTypes[n].dependencies}var k=[],b={},Y={},w={};function D(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var r=e[t];if(!v.hasOwnProperty(t)||v[t]!==r){if(v[t])throw Error(o(102,t));v[t]=r,n=!0}}n&&g()}var T=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),S=null,x=null,j=null;function E(e){if(e=h(e)){if("function"!=typeof S)throw Error(o(280));var t=e.stateNode;t&&(t=m(t),S(e.stateNode,e.type,t))}}function H(e){x?j?j.push(e):j=[e]:x=e}function O(){if(x){var e=x,t=j;if(j=x=null,E(e),t)for(e=0;e<t.length;e++)E(t[e])}}function P(e,t){return e(t)}function F(e,t,n,r,a){return e(t,n,r,a)}function A(){}var N=P,C=!1,W=!1;function z(){null===x&&null===j||(A(),O())}function R(e,t,n){if(W)return e(t,n);W=!0;try{return N(e,t,n)}finally{W=!1,z()}}var I=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,U=Object.prototype.hasOwnProperty,J={},V={};function B(e,t,n,r,a,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i}var G={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){G[e]=new B(e,0,!1,e,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];G[t]=new B(t,1,!1,e[1],null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){G[e]=new B(e,2,!1,e.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){G[e]=new B(e,2,!1,e,null,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){G[e]=new B(e,3,!1,e.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(e){G[e]=new B(e,3,!0,e,null,!1)})),["capture","download"].forEach((function(e){G[e]=new B(e,4,!1,e,null,!1)})),["cols","rows","size","span"].forEach((function(e){G[e]=new B(e,6,!1,e,null,!1)})),["rowSpan","start"].forEach((function(e){G[e]=new B(e,5,!1,e.toLowerCase(),null,!1)}));var $=/[\-:]([a-z])/g;function K(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-raLine truncated
|
||||
/** @license React v0.19.1
|
||||
* scheduler.production.min.js
|
||||
*
|
||||
@@ -299,4 +299,4 @@ e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/var r,a,i,o,s;if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,l=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(e){throw setTimeout(d,0),e}},c=Date.now();t.unstable_now=function(){return Date.now()-c},r=function(e){null!==u?setTimeout(r,0,e):(u=e,setTimeout(d,0))},a=function(e,t){l=setTimeout(e,t)},i=function(){clearTimeout(l)},o=function(){return!1},s=t.unstable_forceFrameRate=function(){}}else{var f=window.performance,_=window.Date,m=window.setTimeout,h=window.clearTimeout;if("undefined"!=typeof console){var p=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof p&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof f&&"function"==typeof f.now)t.unstable_now=function(){return f.now()};else{var y=_.now();t.unstable_now=function(){return _.now()-y}}var v=!1,M=null,g=-1,L=5,b=0;o=function(){return t.unstable_now()>=b},s=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):L=0<e?Math.floor(1e3/e):5};var k=new MessageChannel,Y=k.port2;k.port1.onmessage=function(){if(null!==M){var e=t.unstable_now();b=e+L;try{M(!0,e)?Y.postMessage(null):(v=!1,M=null)}catch(e){throw Y.postMessage(null),e}}else v=!1},r=function(e){M=e,v||(v=!0,Y.postMessage(null))},a=function(e,n){g=m((function(){e(t.unstable_now())}),n)},i=function(){h(g),g=-1}}function w(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<S(a,t)))break e;e[r]=t,e[n]=a,n=r}}function T(e){return void 0===(e=e[0])?null:e}function D(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var i=2*(r+1)-1,o=e[i],s=i+1,u=e[s];if(void 0!==o&&0>S(o,n))void 0!==u&&0>S(u,o)?(e[r]=u,e[s]=n,r=s):(e[r]=o,e[i]=n,r=i);else{if(!(void 0!==u&&0>S(u,n)))break e;e[r]=u,e[s]=n,r=s}}}return t}return null}function S(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var x=[],j=[],E=1,O=null,H=3,P=!1,C=!1,F=!1;function A(e){for(var t=T(j);null!==t;){if(null===t.callback)D(j);else{if(!(t.startTime<=e))break;D(j),t.sortIndex=t.expirationTime,w(x,t)}t=T(j)}}function N(e){if(F=!1,A(e),!C)if(null!==T(x))C=!0,r(W);else{var t=T(j);null!==t&&a(N,t.startTime-e)}}function W(e,n){C=!1,F&&(F=!1,i()),P=!0;var r=H;try{for(A(n),O=T(x);null!==O&&(!(O.expirationTime>n)||e&&!o());){var s=O.callback;if(null!==s){O.callback=null,H=O.priorityLevel;var u=s(O.expirationTime<=n);n=t.unstable_now(),"function"==typeof u?O.callback=u:O===T(x)&&D(x),A(n)}else D(x);O=T(x)}if(null!==O)var l=!0;else{var d=T(j);null!==d&&a(N,d.startTime-n),l=!1}return l}finally{O=null,H=r,P=!1}}function R(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var z=s;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){C||P||(C=!0,r(W))},t.unstable_getCurrentPriorityLevel=function(){return H},t.unstable_getFirstCallbackNode=function(){return T(x)},t.unstable_next=function(e){switch(H){case 1:case 2:case 3:var t=3;break;default:t=H}var n=H;H=t;try{return e()}finally{H=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=z,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=H;H=e;try{return t()}finally{H=n}},t.unstable_scheduleCallback=function(e,n,o){var s=t.unstable_now();if("object"==typeof o&&null!==o){var u=o.delay;u="number"==typeof u&&0<u?s+u:s,o="number"==typeof o.timeout?o.timeout:R(e)}else o=R(e),u=s;return e={id:E++,callback:n,priorityLevel:e,startTime:u,expirationTime:o=u+o,sortIndex:-1},u>s?(e.sortIndex=u,w(j,e),null===T(x)&&e===T(j)&&(F?i():F=!0,a(N,u-s))):(e.sortIndex=o,w(x,e),C||P||(C=!0,r(W))),e},t.unstable_shouldYield=function(){var e=t.unstable_now();A(e);var n=T(x);return n!==O&&null!==O&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime<O.expirationTime||o()},t.unstable_wrapCallback=function(e){var t=H;return function(){var n=H;H=t;try{return e.apply(this,arguments)}finally{H=n}}}},function(e,t,n){"use strict";(function(e){if(n(279),n(476),n(477),e._babelPolyfill)throw new Error("only one instance of babel-polyfill is allowed");e._babelPolyfill=!0;function t(e,t,n){e[t]||Object.defineProperty(e,t,{writable:!0,configurable:!0,value:n})}t(String.prototype,"padLeft","".padStart),t(String.prototype,"padRight","".padEnd),"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,
Line truncated
|
||||
*/var r,a,i,o,s;if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,l=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(e){throw setTimeout(d,0),e}},c=Date.now();t.unstable_now=function(){return Date.now()-c},r=function(e){null!==u?setTimeout(r,0,e):(u=e,setTimeout(d,0))},a=function(e,t){l=setTimeout(e,t)},i=function(){clearTimeout(l)},o=function(){return!1},s=t.unstable_forceFrameRate=function(){}}else{var f=window.performance,_=window.Date,m=window.setTimeout,h=window.clearTimeout;if("undefined"!=typeof console){var p=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof p&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof f&&"function"==typeof f.now)t.unstable_now=function(){return f.now()};else{var y=_.now();t.unstable_now=function(){return _.now()-y}}var M=!1,v=null,g=-1,L=5,k=0;o=function(){return t.unstable_now()>=k},s=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):L=0<e?Math.floor(1e3/e):5};var b=new MessageChannel,Y=b.port2;b.port1.onmessage=function(){if(null!==v){var e=t.unstable_now();k=e+L;try{v(!0,e)?Y.postMessage(null):(M=!1,v=null)}catch(e){throw Y.postMessage(null),e}}else M=!1},r=function(e){v=e,M||(M=!0,Y.postMessage(null))},a=function(e,n){g=m((function(){e(t.unstable_now())}),n)},i=function(){h(g),g=-1}}function w(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<S(a,t)))break e;e[r]=t,e[n]=a,n=r}}function D(e){return void 0===(e=e[0])?null:e}function T(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var i=2*(r+1)-1,o=e[i],s=i+1,u=e[s];if(void 0!==o&&0>S(o,n))void 0!==u&&0>S(u,o)?(e[r]=u,e[s]=n,r=s):(e[r]=o,e[i]=n,r=i);else{if(!(void 0!==u&&0>S(u,n)))break e;e[r]=u,e[s]=n,r=s}}}return t}return null}function S(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var x=[],j=[],E=1,H=null,O=3,P=!1,F=!1,A=!1;function N(e){for(var t=D(j);null!==t;){if(null===t.callback)T(j);else{if(!(t.startTime<=e))break;T(j),t.sortIndex=t.expirationTime,w(x,t)}t=D(j)}}function C(e){if(A=!1,N(e),!F)if(null!==D(x))F=!0,r(W);else{var t=D(j);null!==t&&a(C,t.startTime-e)}}function W(e,n){F=!1,A&&(A=!1,i()),P=!0;var r=O;try{for(N(n),H=D(x);null!==H&&(!(H.expirationTime>n)||e&&!o());){var s=H.callback;if(null!==s){H.callback=null,O=H.priorityLevel;var u=s(H.expirationTime<=n);n=t.unstable_now(),"function"==typeof u?H.callback=u:H===D(x)&&T(x),N(n)}else T(x);H=D(x)}if(null!==H)var l=!0;else{var d=D(j);null!==d&&a(C,d.startTime-n),l=!1}return l}finally{H=null,O=r,P=!1}}function z(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var R=s;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){F||P||(F=!0,r(W))},t.unstable_getCurrentPriorityLevel=function(){return O},t.unstable_getFirstCallbackNode=function(){return D(x)},t.unstable_next=function(e){switch(O){case 1:case 2:case 3:var t=3;break;default:t=O}var n=O;O=t;try{return e()}finally{O=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=R,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=O;O=e;try{return t()}finally{O=n}},t.unstable_scheduleCallback=function(e,n,o){var s=t.unstable_now();if("object"==typeof o&&null!==o){var u=o.delay;u="number"==typeof u&&0<u?s+u:s,o="number"==typeof o.timeout?o.timeout:z(e)}else o=z(e),u=s;return e={id:E++,callback:n,priorityLevel:e,startTime:u,expirationTime:o=u+o,sortIndex:-1},u>s?(e.sortIndex=u,w(j,e),null===D(x)&&e===D(j)&&(A?i():A=!0,a(C,u-s))):(e.sortIndex=o,w(x,e),F||P||(F=!0,r(W))),e},t.unstable_shouldYield=function(){var e=t.unstable_now();N(e);var n=D(x);return n!==H&&null!==H&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime<H.expirationTime||o()},t.unstable_wrapCallback=function(e){var t=O;return function(){var n=O;O=t;try{return e.apply(this,arguments)}finally{O=n}}}},function(e,t,n){"use strict";(function(e){if(n(276),n(473),n(474),e._babelPolyfill)throw new Error("only one instance of babel-polyfill is allowed");e._babelPolyfill=!0;function t(e,t,n){e[t]||Object.defineProperty(e,t,{writable:!0,configurable:!0,value:n})}t(String.prototype,"padLeft","".padStart),t(String.prototype,"padRight","".padEnd),"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,
Line truncated
|
||||
Reference in new issue
Block a user