Compare commits

...

5 Commits

Author SHA1 Message Date
Gabe Yuan
340bd6dd80 fix bug 2023-08-07 16:00:54 +08:00
Gabe Yuan
20617c158f new tag 2023-08-07 15:34:23 +08:00
Gabe Yuan
32f338137c fix mobile bug 2023-08-07 14:07:50 +08:00
Gabe Yuan
c61b9e3910 development env 2023-08-07 12:30:49 +08:00
Gabe Yuan
9d51ad5f44 development env 2023-08-07 12:28:05 +08:00
13 changed files with 59 additions and 21 deletions

2
.env
View File

@@ -1,7 +1,7 @@
GENERATE_SOURCEMAP=false GENERATE_SOURCEMAP=false
REACT_APP_NAME=KISS Translator REACT_APP_NAME=KISS Translator
REACT_APP_VERSION=1.3.3 REACT_APP_VERSION=1.3.5
REACT_APP_HOMEPAGE=https://github.com/fishjar/kiss-translator REACT_APP_HOMEPAGE=https://github.com/fishjar/kiss-translator
REACT_APP_OPTIONSPAGE=https://kiss-translator.rayjar.com/options REACT_APP_OPTIONSPAGE=https://kiss-translator.rayjar.com/options
REACT_APP_OPTIONSPAGE2=https://fishjar.github.io/kiss-translator/options.html REACT_APP_OPTIONSPAGE2=https://fishjar.github.io/kiss-translator/options.html

View File

@@ -4,6 +4,8 @@ const { WebpackManifestPlugin } = require("webpack-manifest-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const webpack = require("webpack"); const webpack = require("webpack");
console.log("process.env.REACT_APP_CLIENT", process.env.REACT_APP_CLIENT);
// 扩展 // 扩展
const extWebpack = (config, env) => { const extWebpack = (config, env) => {
const isEnvProduction = env === "production"; const isEnvProduction = env === "production";
@@ -126,11 +128,17 @@ const webWebpack = (config, env) => {
config.entry = { config.entry = {
main: paths.appSrc + "/userscriptIndex.js", main: paths.appSrc + "/userscriptIndex.js",
options: paths.appSrc + "/userscriptOptions.js", options:
paths.appSrc +
(env === "development" ? "/options.js" : "/userscriptOptions.js"),
}; };
if (env === "development") {
config.entry.content = paths.appSrc + "/userscript.js";
}
config.output.filename = "[name].js"; config.output.filename = "[name].js";
config.output.publicPath = "./"; config.output.publicPath = env === "development" ? "/" : "./";
config.plugins = config.plugins.filter( config.plugins = config.plugins.filter(
(plugin) => !names.includes(plugin.constructor.name) (plugin) => !names.includes(plugin.constructor.name)
@@ -151,6 +159,17 @@ const webWebpack = (config, env) => {
}) })
); );
if (env === "development") {
config.plugins.push(
new HtmlWebpackPlugin({
inject: true,
chunks: ["content"],
template: paths.appPublic + "/content.html",
filename: "content.html",
})
);
}
return config; return config;
}; };

View File

@@ -2,7 +2,7 @@
"manifest_version": 3, "manifest_version": 3,
"name": "__MSG_app_name__", "name": "__MSG_app_name__",
"description": "__MSG_app_description__", "description": "__MSG_app_description__",
"version": "1.3.3", "version": "1.3.5",
"default_locale": "zh", "default_locale": "zh",
"author": "Gabe<yugang2002@gmail.com>", "author": "Gabe<yugang2002@gmail.com>",
"homepage_url": "https://github.com/fishjar/kiss-translator", "homepage_url": "https://github.com/fishjar/kiss-translator",

View File

@@ -2,7 +2,7 @@
"manifest_version": 3, "manifest_version": 3,
"name": "__MSG_app_name__", "name": "__MSG_app_name__",
"description": "__MSG_app_description__", "description": "__MSG_app_description__",
"version": "1.3.3", "version": "1.3.5",
"default_locale": "zh", "default_locale": "zh",
"author": "Gabe<yugang2002@gmail.com>", "author": "Gabe<yugang2002@gmail.com>",
"homepage_url": "https://github.com/fishjar/kiss-translator", "homepage_url": "https://github.com/fishjar/kiss-translator",

View File

@@ -2,7 +2,7 @@
"manifest_version": 2, "manifest_version": 2,
"name": "__MSG_app_name__", "name": "__MSG_app_name__",
"description": "__MSG_app_description__", "description": "__MSG_app_description__",
"version": "1.3.3", "version": "1.3.5",
"default_locale": "zh", "default_locale": "zh",
"author": "Gabe<yugang2002@gmail.com>", "author": "Gabe<yugang2002@gmail.com>",
"homepage_url": "https://github.com/fishjar/kiss-translator", "homepage_url": "https://github.com/fishjar/kiss-translator",

View File

@@ -1,7 +1,7 @@
// ==UserScript== // ==UserScript==
// @name KISS Translator // @name KISS Translator
// @namespace https://github.com/fishjar/kiss-translator // @namespace https://github.com/fishjar/kiss-translator
// @version 1.3.3 // @version 1.3.5
// @description A minimalist bilingual translation extension. // @description A minimalist bilingual translation extension.
// @author Gabe<yugang2002@gmail.com> // @author Gabe<yugang2002@gmail.com>
// @homepageURL https://github.com/fishjar/kiss-translator // @homepageURL https://github.com/fishjar/kiss-translator
@@ -54567,8 +54567,10 @@ var Fab = /*#__PURE__*/react.forwardRef(function Fab(inProps, ref) {
/* harmony default export */ var Fab_Fab = (Fab); /* harmony default export */ var Fab_Fab = (Fab);
// EXTERNAL MODULE: ./node_modules/@mui/icons-material/Translate.js // EXTERNAL MODULE: ./node_modules/@mui/icons-material/Translate.js
var Translate = __webpack_require__(3578); var Translate = __webpack_require__(3578);
;// CONCATENATED MODULE: ./src/libs/mobile.js
var isMobile=("ontouchstart"in document.documentElement);
;// CONCATENATED MODULE: ./src/views/Action/Draggable.js ;// CONCATENATED MODULE: ./src/views/Action/Draggable.js
function Draggable(props){var _useState=(0,react.useState)(null),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),origin=_useState2[0],setOrigin=_useState2[1];var _useState3=(0,react.useState)({x:props.left,y:props.top}),_useState4=(0,slicedToArray/* default */.Z)(_useState3,2),position=_useState4[0],setPosition=_useState4[1];var handlePointerDown=function handlePointerDown(e){e.target.setPointerCapture(e.pointerId);props===null||props===void 0?void 0:props.onStart();setOrigin({x:position.x,y:position.y,px:e.clientX,py:e.clientY});};var handlePointerMove=function handlePointerMove(e){props===null||props===void 0?void 0:props.onMove();if(origin){var dx=e.clientX-origin.px;var dy=e.clientY-origin.py;var x=origin.x+dx;var y=origin.y+dy;var _props$windowSize=props.windowSize,w=_props$windowSize.w,h=_props$windowSize.h;x=limitNumber(x,0,w-props.width);y=limitNumber(y,0,h-props.height);setPosition({x:x,y:y});}};var handlePointerUp=function handlePointerUp(e){setOrigin(null);};var handleClick=function handleClick(e){e.stopPropagation();};(0,react.useEffect)(function(){var _props$windowSize2=props.windowSize,w=_props$windowSize2.w,h=_props$windowSize2.h;setPosition(function(_ref){var x=_ref.x,y=_ref.y;return{x:limitNumber(x,0,w-props.width),y:limitNumber(y,0,h-props.height)};});},[props.windowSize,props.width,props.height]);return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{position:"fixed",left:position.x,top:position.y,zIndex:2147483647},onClick:handleClick,children:[/*#__PURE__*/(0,jsx_runtime.jsx)("div",{onPointerDown:handlePointerDown,onPointerMove:handlePointerMove,onPointerUp:handlePointerUp,children:props.handler}),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{children:props.children})]});} function Draggable(props){var _useState=(0,react.useState)(null),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),origin=_useState2[0],setOrigin=_useState2[1];var _useState3=(0,react.useState)({x:props.left,y:props.top}),_useState4=(0,slicedToArray/* default */.Z)(_useState3,2),position=_useState4[0],setPosition=_useState4[1];var handlePointerDown=function handlePointerDown(e){!isMobile&&e.target.setPointerCapture(e.pointerId);props===null||props===void 0?void 0:props.onStart();var _ref=isMobile?e.targetTouches[0]:e,clientX=_ref.clientX,clientY=_ref.clientY;setOrigin({x:position.x,y:position.y,px:clientX,py:clientY});};var handlePointerMove=function handlePointerMove(e){props===null||props===void 0?void 0:props.onMove();var _ref2=isMobile?e.targetTouches[0]:e,clientX=_ref2.clientX,clientY=_ref2.clientY;if(origin){var dx=clientX-origin.px;var dy=clientY-origin.py;var x=origin.x+dx;var y=origin.y+dy;var _props$windowSize=props.windowSize,w=_props$windowSize.w,h=_props$windowSize.h;x=limitNumber(x,0,w-props.width);y=limitNumber(y,0,h-props.height);setPosition({x:x,y:y});}};var handlePointerUp=function handlePointerUp(e){setOrigin(null);};var handleClick=function handleClick(e){e.stopPropagation();};var touchProps=isMobile?{onTouchStart:handlePointerDown,onTouchMove:handlePointerMove,onTouchEnd:handlePointerUp}:{onPointerDown:handlePointerDown,onPointerMove:handlePointerMove,onPointerUp:handlePointerUp};(0,react.useEffect)(function(){var _props$windowSize2=props.windowSize,w=_props$windowSize2.w,h=_props$windowSize2.h;setPosition(function(_ref3){var x=_ref3.x,y=_ref3.y;return{x:limitNumber(x,0,w-props.width),y:limitNumber(y,0,h-props.height)};});},[props.windowSize,props.width,props.height]);return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{position:"fixed",left:position.x,top:position.y,zIndex:2147483647},onClick:handleClick,children:[/*#__PURE__*/(0,jsx_runtime.jsx)("div",_objectSpread2(_objectSpread2({style:{touchAction:"none"}},touchProps),{},{children:props.handler})),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{children:props.children})]});}
// EXTERNAL MODULE: ./node_modules/@mui/icons-material/Close.js // EXTERNAL MODULE: ./node_modules/@mui/icons-material/Close.js
var icons_material_Close = __webpack_require__(1198); var icons_material_Close = __webpack_require__(1198);
;// CONCATENATED MODULE: ./node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js ;// CONCATENATED MODULE: ./node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js

View File

@@ -2,7 +2,7 @@
"manifest_version": 2, "manifest_version": 2,
"name": "__MSG_app_name__", "name": "__MSG_app_name__",
"description": "__MSG_app_description__", "description": "__MSG_app_description__",
"version": "1.3.3", "version": "1.3.5",
"default_locale": "zh", "default_locale": "zh",
"author": "Gabe<yugang2002@gmail.com>", "author": "Gabe<yugang2002@gmail.com>",
"homepage_url": "https://github.com/fishjar/kiss-translator", "homepage_url": "https://github.com/fishjar/kiss-translator",

View File

@@ -2,7 +2,7 @@
"manifest_version": 3, "manifest_version": 3,
"name": "__MSG_app_name__", "name": "__MSG_app_name__",
"description": "__MSG_app_description__", "description": "__MSG_app_description__",
"version": "1.3.3", "version": "1.3.5",
"default_locale": "zh", "default_locale": "zh",
"author": "Gabe<yugang2002@gmail.com>", "author": "Gabe<yugang2002@gmail.com>",
"homepage_url": "https://github.com/fishjar/kiss-translator", "homepage_url": "https://github.com/fishjar/kiss-translator",

View File

@@ -1,7 +1,7 @@
{ {
"name": "kiss-translator", "name": "kiss-translator",
"description": "A simple translator extension", "description": "A simple translator extension",
"version": "1.3.3", "version": "1.3.5",
"author": "Gabe<yugang2002@gmail.com>", "author": "Gabe<yugang2002@gmail.com>",
"private": true, "private": true,
"dependencies": { "dependencies": {

View File

@@ -2,7 +2,7 @@
"manifest_version": 2, "manifest_version": 2,
"name": "__MSG_app_name__", "name": "__MSG_app_name__",
"description": "__MSG_app_description__", "description": "__MSG_app_description__",
"version": "1.3.3", "version": "1.3.5",
"default_locale": "zh", "default_locale": "zh",
"author": "Gabe<yugang2002@gmail.com>", "author": "Gabe<yugang2002@gmail.com>",
"homepage_url": "https://github.com/fishjar/kiss-translator", "homepage_url": "https://github.com/fishjar/kiss-translator",

View File

@@ -2,7 +2,7 @@
"manifest_version": 3, "manifest_version": 3,
"name": "__MSG_app_name__", "name": "__MSG_app_name__",
"description": "__MSG_app_description__", "description": "__MSG_app_description__",
"version": "1.3.3", "version": "1.3.5",
"default_locale": "zh", "default_locale": "zh",
"author": "Gabe<yugang2002@gmail.com>", "author": "Gabe<yugang2002@gmail.com>",
"homepage_url": "https://github.com/fishjar/kiss-translator", "homepage_url": "https://github.com/fishjar/kiss-translator",

1
src/libs/mobile.js Normal file
View File

@@ -0,0 +1 @@
export const isMobile = "ontouchstart" in document.documentElement;

View File

@@ -1,5 +1,6 @@
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { limitNumber } from "../../libs/utils"; import { limitNumber } from "../../libs/utils";
import { isMobile } from "../../libs/mobile";
export default function Draggable(props) { export default function Draggable(props) {
const [origin, setOrigin] = useState(null); const [origin, setOrigin] = useState(null);
@@ -9,21 +10,23 @@ export default function Draggable(props) {
}); });
const handlePointerDown = (e) => { const handlePointerDown = (e) => {
e.target.setPointerCapture(e.pointerId); !isMobile && e.target.setPointerCapture(e.pointerId);
props?.onStart(); props?.onStart();
const { clientX, clientY } = isMobile ? e.targetTouches[0] : e;
setOrigin({ setOrigin({
x: position.x, x: position.x,
y: position.y, y: position.y,
px: e.clientX, px: clientX,
py: e.clientY, py: clientY,
}); });
}; };
const handlePointerMove = (e) => { const handlePointerMove = (e) => {
props?.onMove(); props?.onMove();
const { clientX, clientY } = isMobile ? e.targetTouches[0] : e;
if (origin) { if (origin) {
const dx = e.clientX - origin.px; const dx = clientX - origin.px;
const dy = e.clientY - origin.py; const dy = clientY - origin.py;
let x = origin.x + dx; let x = origin.x + dx;
let y = origin.y + dy; let y = origin.y + dy;
const { w, h } = props.windowSize; const { w, h } = props.windowSize;
@@ -41,6 +44,18 @@ export default function Draggable(props) {
e.stopPropagation(); e.stopPropagation();
}; };
const touchProps = isMobile
? {
onTouchStart: handlePointerDown,
onTouchMove: handlePointerMove,
onTouchEnd: handlePointerUp,
}
: {
onPointerDown: handlePointerDown,
onPointerMove: handlePointerMove,
onPointerUp: handlePointerUp,
};
useEffect(() => { useEffect(() => {
const { w, h } = props.windowSize; const { w, h } = props.windowSize;
setPosition(({ x, y }) => ({ setPosition(({ x, y }) => ({
@@ -60,9 +75,10 @@ export default function Draggable(props) {
onClick={handleClick} onClick={handleClick}
> >
<div <div
onPointerDown={handlePointerDown} style={{
onPointerMove={handlePointerMove} touchAction: "none",
onPointerUp={handlePointerUp} }}
{...touchProps}
> >
{props.handler} {props.handler}
</div> </div>