// ==UserScript==
// @name linuxdo-next
// @namespace linuxdo-next
// @version 0.1.0
// @author delph1s
// @description 一个呼吸顺畅的 linux.do 论坛
// @license GPLv2
// @iconURL https://cdn.linux.do/uploads/default/original/1X/3a18b4b0da3e8cf96f7eea15241c3d251f28a39b.png
// @match *://linux.do/
// @match *://linux.do/*
// @require https://cdn.jsdelivr.net/npm/[email protected]/umd/react.production.min.js
// @require https://cdn.jsdelivr.net/npm/[email protected]/umd/react-dom.production.min.js
// @grant GM_addStyle
// @run-at document-end
// ==/UserScript==
(i=>{if(typeof GM_addStyle=="function"){GM_addStyle(i);return}const t=document.createElement("style");t.textContent=i,document.head.append(t)})(" #linuxdo-next-plugin div{display:inline-block}div#linuxdo-next-plugin{display:inline-block;visibility:visible;position:absolute;top:120px;right:10px} ");
(function (require$$0, require$$0$1) {
'use strict';
var jsxRuntime = { exports: {} };
var reactJsxRuntime_production_min = {};
/**
* @license React
* react-jsx-runtime.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var f = require$$0, k = Symbol.for("react.element"), l = Symbol.for("react.fragment"), m$1 = Object.prototype.hasOwnProperty, n = f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, p = { key: true, ref: true, __self: true, __source: true };
function q(c, a, g) {
var b, d = {}, e = null, h = null;
void 0 !== g && (e = "" + g);
void 0 !== a.key && (e = "" + a.key);
void 0 !== a.ref && (h = a.ref);
for (b in a)
m$1.call(a, b) && !p.hasOwnProperty(b) && (d[b] = a[b]);
if (c && c.defaultProps)
for (b in a = c.defaultProps, a)
void 0 === d[b] && (d[b] = a[b]);
return { $$typeof: k, type: c, key: e, ref: h, props: d, _owner: n.current };
}
reactJsxRuntime_production_min.Fragment = l;
reactJsxRuntime_production_min.jsx = q;
reactJsxRuntime_production_min.jsxs = q;
{
jsxRuntime.exports = reactJsxRuntime_production_min;
}
var jsxRuntimeExports = jsxRuntime.exports;
var client = {};
var m = require$$0$1;
{
client.createRoot = m.createRoot;
client.hydrateRoot = m.hydrateRoot;
}
function Modal(props) {
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "modal-container", children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
"div",
{
id: "ember628",
className: "ember-view modal d-modal create-invite-modal",
"data-keyboard": "false",
"aria-modal": "true",
role: "dialog",
"aria-labelledby": "discourse-modal-title",
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "d-modal__container", children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "d-modal__header", children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "d-modal__title", children: /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { id: "discourse-modal-title", className: "d-modal__title-text", children: "创建邀请" }) }),
/* @__PURE__ */ jsxRuntimeExports.jsx(
"button",
{
className: "btn no-text btn-icon btn-transparent modal-close",
title: "关闭",
type: "button",
onClick: () => props.setModalVisible(false),
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
"svg",
{
className: "fa d-icon d-icon-times svg-icon svg-string",
xmlns: "http://www.w3.org/2000/svg",
children: /* @__PURE__ */ jsxRuntimeExports.jsx("use", { href: "#times" })
}
)
}
)
] }),
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "d-modal__body", tabIndex: -1, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("form", { children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "input-group input-email", children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { htmlFor: "invite-email", children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
"svg",
{
className: "fa d-icon d-icon-envelope svg-icon svg-string",
xmlns: "http://www.w3.org/2000/svg",
children: /* @__PURE__ */ jsxRuntimeExports.jsx("use", { href: "#envelope" })
}
),
"限制为"
] }),
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "invite-email-container", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
"input",
{
id: "invite-email",
className: "ember-text-field ember-view",
placeholder: "[email protected] 或者 example.com",
type: "text"
}
) })
] }),
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "input-group invite-max-redemptions", children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { htmlFor: "invite-max-redemptions", children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
"svg",
{
className: "fa d-icon d-icon-users svg-icon svg-string",
xmlns: "http://www.w3.org/2000/svg",
children: /* @__PURE__ */ jsxRuntimeExports.jsx("use", { href: "#users" })
}
),
"最大使用次数"
] }),
/* @__PURE__ */ jsxRuntimeExports.jsx(
"input",
{
id: "invite-max-redemptions",
className: "ember-text-field ember-view",
min: "1",
max: "10",
type: "number"
}
)
] }),
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "input-group input-expires-at", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
"svg",
{
className: "fa d-icon d-icon-far-clock svg-icon svg-string",
xmlns: "http://www.w3.org/2000/svg",
children: /* @__PURE__ */ jsxRuntimeExports.jsx("use", { href: "#far-clock" })
}
),
"于 3 天过期"
] }) })
] }) }),
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "d-modal__footer", children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("button", { className: "btn btn-icon-text btn-primary save-invite", type: "button", children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
"svg",
{
className: "fa d-icon d-icon-link svg-icon svg-string",
xmlns: "http://www.w3.org/2000/svg",
children: /* @__PURE__ */ jsxRuntimeExports.jsx("use", { href: "#link" })
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "d-button-label", children: "保存邀请" })
] }),
/* @__PURE__ */ jsxRuntimeExports.jsxs(
"button",
{
className: "btn btn-icon-text btn-primary send-invite",
disabled: false,
title: "限制只允许电子邮件邀请并发送邀请电子邮件",
type: "button",
children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
"svg",
{
className: "fa d-icon d-icon-envelope svg-icon svg-string",
xmlns: "http://www.w3.org/2000/svg",
children: /* @__PURE__ */ jsxRuntimeExports.jsx("use", { href: "#envelope" })
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "d-button-label", children: "保存并发送电子邮件" })
]
}
)
] })
] })
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "d-modal__backdrop" })
] });
}
function App() {
const [logModalVisible, setLogModalVisible] = require$$0.useState(false);
require$$0.useEffect(() => {
const containerSelector = "header.d-header div.contents div.panel ul";
document.querySelector(containerSelector);
document.createElement("li");
}, []);
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
/* @__PURE__ */ jsxRuntimeExports.jsx(
"button",
{
className: "btn btn-default create reply-to-post no-text btn-icon",
title: "开始进行自动点赞",
type: "button",
onClick: () => setLogModalVisible(true),
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
"svg",
{
className: "fa d-icon d-icon-paper-plane svg-icon prefix-icon svg-string",
xmlns: "http://www.w3.org/2000/svg",
children: /* @__PURE__ */ jsxRuntimeExports.jsx("use", { href: "#paper-plane" })
}
)
}
),
logModalVisible && /* @__PURE__ */ jsxRuntimeExports.jsx(Modal, { setModalVisible: setLogModalVisible })
] });
}
const appendLinuxDoNext = () => {
const app = document.createElement("div");
app.setAttribute("id", "linuxdo-next-plugin");
document.body.append(app);
return app;
};
client.createRoot(appendLinuxDoNext()).render(
/* @__PURE__ */ jsxRuntimeExports.jsx(require$$0.StrictMode, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(App, {}) })
);
})(React, ReactDOM);