您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Toast或Toast[type] 调用
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/411093/1081231/Toast.js
/******/ (() => { // webpackBootstrap /******/ "use strict"; var __webpack_exports__ = {}; ;// CONCATENATED MODULE: external "Vue" const external_Vue_namespaceObject = Vue; ;// CONCATENATED MODULE: ./src/helpers/toast.tsx /* Toast */ const toastTypes = ['info', 'success', 'warning', 'error']; function normalizeOptions(options, duration) { if (typeof options === 'string' || (0,external_Vue_namespaceObject.isVNode)(options)) { options = { content: options }; } options.duration = duration ?? options.duration; return options; } const Toast = function (_opts, duration) { const options = normalizeOptions(_opts, duration); const container = document.createElement('div'); const ToastConstructor = (0,external_Vue_namespaceObject.defineComponent)({ props: { content: { type: [String, Object], default: '' }, type: { type: String, validator: value => toastTypes.includes(value), default: 'info' }, closable: { type: Boolean, default: null }, duration: { type: Number, default: 3000 } }, setup(props, context) { const { expose } = context; const state = (0,external_Vue_namespaceObject.reactive)({ closable: props.duration === 0 && props.closable == null ? true : props.closable, // 0 时 closable 默认打开 visible: false }); (0,external_Vue_namespaceObject.onMounted)(() => { state.visible = true; if (props.duration > 0) { setTimeout(close, props.duration); } }); const close = () => { state.visible = false; }; const onAfterLeave = () => { // 销毁 (0,external_Vue_namespaceObject.render)(null, container); container.remove(); }; expose({ close }); return () => (0,external_Vue_namespaceObject.createVNode)(external_Vue_namespaceObject.Transition, { "name": "inject-toast-slide-fade", "appear": true, "onAfterLeave": onAfterLeave }, { default: () => [state.visible && (0,external_Vue_namespaceObject.createVNode)("div", { "class": "inject-toast" }, [(0,external_Vue_namespaceObject.createVNode)("div", { "class": ['inject-toast-content', `inject-toast-content--${props.type}`] }, [(0,external_Vue_namespaceObject.createVNode)("div", { "class": "inject-toast-content-text" }, [props.content]), state.closable && (0,external_Vue_namespaceObject.createVNode)("button", { "class": "inject-toast-content-close", "onClick": close }, [(0,external_Vue_namespaceObject.createTextVNode)("\xD7")])])])] }); } }); // toast const vm = (0,external_Vue_namespaceObject.createVNode)(ToastConstructor, options); (0,external_Vue_namespaceObject.render)(vm, container); insertElementInContainer(container); return { close: vm.component?.exposed?.close }; }; toastTypes.forEach(type => { Toast[type] = function (_opts, duration) { const options = { ...normalizeOptions(_opts, duration), type }; return Toast(options, duration); }; }); window.Toast = Toast; function safeAppendElement(cb) { document.body ? cb() : window.addEventListener('DOMContentLoaded', cb); } function insertElementInContainer(elememnt) { function getContainer() { const classname = 'inject-toast-container'; let containerEl = document.querySelector('.' + classname); if (containerEl == null) { containerEl = document.createElement('div'); containerEl.classList.add(classname); document.body.appendChild(containerEl); } return containerEl; } safeAppendElement(() => { getContainer().appendChild(elememnt); }); } (function addStyle() { const styleEl = document.createElement('style'); styleEl.appendChild(document.createTextNode(` .inject-toast-container { position: fixed; z-index: 99999; top: 80px; right: 0; left: 0; pointer-events: none; text-align: center; } .inject-toast { contain: content; max-height: 100vh; transition: all .3s ease-in-out; } |> { pointer-events: auto; display: inline-flex; justify-content: center; margin-bottom: 10px; padding: 8px 16px; max-width: 90vw; font-size: 14px; line-height: 1.5em; border: 1px solid; box-shadow: 0 2px 3px rgba(0,0,0,.1); } |>--info { color: #2e8bf0; background: #f0faff; border-color: #d4eeff; } |>--success { color: #19bf6c; background: #edfff3; border-color: #bbf2cf; } |>--warning { color: #f90; background: #fff9e6; border-color: #ffe7a3; } |>--error { color: #ed3f13; background: #ffefe6; border-color: #ffcfb8; } |>-text { flex: auto; } |>-close { flex: none; width: 20px; margin: 0 -8px 0 10px; padding: 0; font-size: 16px; color: #ababab; border: none; background: transparent; cursor: pointer; } /* 动画 */ .inject-toast-slide-fade-enter-active, .inject-toast-slide-fade-leave-active { transition: all .3s; } .inject-toast-slide-fade-enter-from { transform: translateY(-50%); opacity: 0; } .inject-toast-slide-fade-leave-to { transform: translateY(50%); max-height: 0; padding: 0; opacity: 0; } `.replace(/\|>/g, '.inject-toast-content'))); // fix: tampermonkey 偶尔会获取不到 head safeAppendElement(() => { document.head.appendChild(styleEl); }); })(); /******/ })() ;