@hanzogui/tauri 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/TitleBar.cjs +97 -0
- package/dist/cjs/TitleBar.native.js +109 -0
- package/dist/cjs/TitleBar.native.js.map +1 -0
- package/dist/cjs/index.cjs +41 -0
- package/dist/cjs/index.native.js +44 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/isTauri.cjs +30 -0
- package/dist/cjs/isTauri.native.js +33 -0
- package/dist/cjs/isTauri.native.js.map +1 -0
- package/dist/cjs/shortcuts.cjs +70 -0
- package/dist/cjs/shortcuts.native.js +73 -0
- package/dist/cjs/shortcuts.native.js.map +1 -0
- package/dist/cjs/system.cjs +65 -0
- package/dist/cjs/system.native.js +68 -0
- package/dist/cjs/system.native.js.map +1 -0
- package/dist/cjs/window.cjs +81 -0
- package/dist/cjs/window.native.js +106 -0
- package/dist/cjs/window.native.js.map +1 -0
- package/dist/esm/TitleBar.mjs +72 -0
- package/dist/esm/TitleBar.mjs.map +1 -0
- package/dist/esm/TitleBar.native.js +81 -0
- package/dist/esm/TitleBar.native.js.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.mjs +7 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +7 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/isTauri.mjs +5 -0
- package/dist/esm/isTauri.mjs.map +1 -0
- package/dist/esm/isTauri.native.js +5 -0
- package/dist/esm/isTauri.native.js.map +1 -0
- package/dist/esm/shortcuts.mjs +32 -0
- package/dist/esm/shortcuts.mjs.map +1 -0
- package/dist/esm/shortcuts.native.js +32 -0
- package/dist/esm/shortcuts.native.js.map +1 -0
- package/dist/esm/system.mjs +27 -0
- package/dist/esm/system.mjs.map +1 -0
- package/dist/esm/system.native.js +27 -0
- package/dist/esm/system.native.js.map +1 -0
- package/dist/esm/window.mjs +44 -0
- package/dist/esm/window.mjs.map +1 -0
- package/dist/esm/window.native.js +66 -0
- package/dist/esm/window.native.js.map +1 -0
- package/package.json +53 -0
- package/src/TitleBar.tsx +71 -0
- package/src/index.ts +13 -0
- package/src/isTauri.ts +12 -0
- package/src/shortcuts.ts +37 -0
- package/src/system.ts +27 -0
- package/src/window.ts +51 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
28
|
+
value: mod,
|
|
29
|
+
enumerable: true
|
|
30
|
+
}) : target, mod));
|
|
31
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
32
|
+
value: true
|
|
33
|
+
}), mod);
|
|
34
|
+
var window_exports = {};
|
|
35
|
+
__export(window_exports, {
|
|
36
|
+
useWindowControls: () => useWindowControls,
|
|
37
|
+
windowControls: () => windowControls
|
|
38
|
+
});
|
|
39
|
+
module.exports = __toCommonJS(window_exports);
|
|
40
|
+
var import_react = require("react");
|
|
41
|
+
var import_isTauri = require("./isTauri.cjs");
|
|
42
|
+
async function currentWindow() {
|
|
43
|
+
if (!(0, import_isTauri.isTauri)()) return null;
|
|
44
|
+
const {
|
|
45
|
+
getCurrentWindow
|
|
46
|
+
} = await import("@tauri-apps/api/window");
|
|
47
|
+
return getCurrentWindow();
|
|
48
|
+
}
|
|
49
|
+
const windowControls = {
|
|
50
|
+
minimize: async () => (await currentWindow())?.minimize(),
|
|
51
|
+
toggleMaximize: async () => (await currentWindow())?.toggleMaximize(),
|
|
52
|
+
close: async () => (await currentWindow())?.close(),
|
|
53
|
+
hide: async () => (await currentWindow())?.hide(),
|
|
54
|
+
startDragging: async () => (await currentWindow())?.startDragging(),
|
|
55
|
+
isMaximized: async () => (await currentWindow())?.isMaximized() ?? false,
|
|
56
|
+
setFullscreen: async v => (await currentWindow())?.setFullscreen(v)
|
|
57
|
+
};
|
|
58
|
+
function useWindowControls() {
|
|
59
|
+
const [isMaximized, setIsMaximized] = (0, import_react.useState)(false);
|
|
60
|
+
(0, import_react.useEffect)(() => {
|
|
61
|
+
if (!(0, import_isTauri.isTauri)()) return;
|
|
62
|
+
let unlisten;
|
|
63
|
+
let active = true;
|
|
64
|
+
(async () => {
|
|
65
|
+
const win = await currentWindow();
|
|
66
|
+
if (!win || !active) return;
|
|
67
|
+
setIsMaximized(await win.isMaximized());
|
|
68
|
+
unlisten = await win.onResized(async () => {
|
|
69
|
+
setIsMaximized(await win.isMaximized());
|
|
70
|
+
});
|
|
71
|
+
})();
|
|
72
|
+
return () => {
|
|
73
|
+
active = false;
|
|
74
|
+
unlisten?.();
|
|
75
|
+
};
|
|
76
|
+
}, []);
|
|
77
|
+
return {
|
|
78
|
+
...windowControls,
|
|
79
|
+
isMaximized
|
|
80
|
+
};
|
|
81
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all) __defProp(target, name, {
|
|
11
|
+
get: all[name],
|
|
12
|
+
enumerable: true
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
18
|
+
get: () => from[key],
|
|
19
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
25
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
26
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
27
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
28
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
29
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
30
|
+
value: mod,
|
|
31
|
+
enumerable: true
|
|
32
|
+
}) : target, mod));
|
|
33
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
34
|
+
value: true
|
|
35
|
+
}), mod);
|
|
36
|
+
var window_exports = {};
|
|
37
|
+
__export(window_exports, {
|
|
38
|
+
useWindowControls: () => useWindowControls,
|
|
39
|
+
windowControls: () => windowControls
|
|
40
|
+
});
|
|
41
|
+
module.exports = __toCommonJS(window_exports);
|
|
42
|
+
var import_react = require("react");
|
|
43
|
+
var import_isTauri = require("./isTauri.native.js");
|
|
44
|
+
async function currentWindow() {
|
|
45
|
+
if (!(0, import_isTauri.isTauri)()) return null;
|
|
46
|
+
var {
|
|
47
|
+
getCurrentWindow
|
|
48
|
+
} = await import("@tauri-apps/api/window");
|
|
49
|
+
return getCurrentWindow();
|
|
50
|
+
}
|
|
51
|
+
var windowControls = {
|
|
52
|
+
minimize: async function () {
|
|
53
|
+
var _this;
|
|
54
|
+
return (_this = await currentWindow()) === null || _this === void 0 ? void 0 : _this.minimize();
|
|
55
|
+
},
|
|
56
|
+
toggleMaximize: async function () {
|
|
57
|
+
var _this;
|
|
58
|
+
return (_this = await currentWindow()) === null || _this === void 0 ? void 0 : _this.toggleMaximize();
|
|
59
|
+
},
|
|
60
|
+
close: async function () {
|
|
61
|
+
var _this;
|
|
62
|
+
return (_this = await currentWindow()) === null || _this === void 0 ? void 0 : _this.close();
|
|
63
|
+
},
|
|
64
|
+
hide: async function () {
|
|
65
|
+
var _this;
|
|
66
|
+
return (_this = await currentWindow()) === null || _this === void 0 ? void 0 : _this.hide();
|
|
67
|
+
},
|
|
68
|
+
startDragging: async function () {
|
|
69
|
+
var _this;
|
|
70
|
+
return (_this = await currentWindow()) === null || _this === void 0 ? void 0 : _this.startDragging();
|
|
71
|
+
},
|
|
72
|
+
isMaximized: async function () {
|
|
73
|
+
var _this;
|
|
74
|
+
var _isMaximized;
|
|
75
|
+
return (_isMaximized = (_this = await currentWindow()) === null || _this === void 0 ? void 0 : _this.isMaximized()) !== null && _isMaximized !== void 0 ? _isMaximized : false;
|
|
76
|
+
},
|
|
77
|
+
setFullscreen: async function (v) {
|
|
78
|
+
var _this;
|
|
79
|
+
return (_this = await currentWindow()) === null || _this === void 0 ? void 0 : _this.setFullscreen(v);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
function useWindowControls() {
|
|
83
|
+
var [isMaximized, setIsMaximized] = (0, import_react.useState)(false);
|
|
84
|
+
(0, import_react.useEffect)(function () {
|
|
85
|
+
if (!(0, import_isTauri.isTauri)()) return;
|
|
86
|
+
var unlisten;
|
|
87
|
+
var active = true;
|
|
88
|
+
(async function () {
|
|
89
|
+
var win = await currentWindow();
|
|
90
|
+
if (!win || !active) return;
|
|
91
|
+
setIsMaximized(await win.isMaximized());
|
|
92
|
+
unlisten = await win.onResized(async function () {
|
|
93
|
+
setIsMaximized(await win.isMaximized());
|
|
94
|
+
});
|
|
95
|
+
})();
|
|
96
|
+
return function () {
|
|
97
|
+
active = false;
|
|
98
|
+
unlisten === null || unlisten === void 0 ? void 0 : unlisten();
|
|
99
|
+
};
|
|
100
|
+
}, []);
|
|
101
|
+
return {
|
|
102
|
+
...windowControls,
|
|
103
|
+
isMaximized
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=window.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","window_exports","__export","useWindowControls","windowControls","module","exports","import_react","require","import_isTauri","currentWindow","isTauri","getCurrentWindow","minimize","_this","toggleMaximize","close","hide","startDragging","isMaximized","_isMaximized","setFullscreen","v"],"sources":["../../src/window.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,cAAA;AAAAC,QAAA,CAAAD,cAAA;EAAAE,iBAAA,EAAAA,CAAA,KAAAA,iBAAA;EAAAC,cAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAV,YAAoC,CAAAK,cAAA;AACpC,IAAAM,YAAA,GAAAC,OAAwB;AAOxB,IAAAC,cAAe,GAAAD,OAAA,sBAAgB;AAC7B,eAAKE,cAAA;EACL,MAAM,GAAED,cAAA,CAAAE,OAAqB,KAAM,OAAO;EAC1C;IAAAC;EAAO,CAAiB;EAC1B,OAAAA,gBAAA;AAEO;AAAuB,IAC5BR,cAAU;EACVS,QAAA,iBAAAA,CAAA,EAAgB;IAChB,IAAAC,KAAO;IACP,OAAM,CAAAA,KAAA,SAAaJ,aAAM,EAAc,MAAI,IAAK,IAAAI,KAAA,uBAAAA,KAAA,CAAAD,QAAA;EAChD;EACAE,cAAa,iBAAAA,CAAA,EAAmB;IAChC,IAAAD,KAAA;IACF,QAAAA,KAAA,SAAAJ,aAAA,gBAAAI,KAAA,uBAAAA,KAAA,CAAAC,cAAA;EAMO;EACLC,KAAA,EAAO,eAAAA,CAAA,EAAa;IAEpB,IAAAF,KAAA;IACE,OAAI,CAAAA,KAAC,SAAAJ,aAAW,gBAAAI,KAAA,uBAAAA,KAAA,CAAAE,KAAA;EAChB;EACAC,IAAA,EAAI,eAAAA,CAAA,EAAS;IACZ,IAACH,KAAA;IACA,QAAMA,KAAA,GAAM,MAAMJ,aAAc,gBAAAI,KAAA,uBAAAA,KAAA,CAAAG,IAAA;EAChC;EACAC,aAAA,iBAAAA,CAAA,EAAyB;IACzB,IAAAJ,KAAA;IACE,QAAAA,KAAA,SAAeJ,aAAU,QAAa,QAAAI,KAAA,uBAAAA,KAAA,CAAAI,aAAA;EAAA;EACvCC,WACA,iBAAAA,CAAA;IACH,IAAAL,KAAO;IACL,IAAAM,YAAS;IACT,QAAAA,YAAW,IAAAN,KAAA,SAAAJ,aAAA,gBAAAI,KAAA,uBAAAA,KAAA,CAAAK,WAAA,gBAAAC,YAAA,cAAAA,YAAA;EAAA;EAEfC,aAAK,iBAAAA,CAAAC,CAAA;IAEL,IAAAR,KAAS;IACX,QAAAA,KAAA,SAAAJ,aAAA,gBAAAI,KAAA,uBAAAA,KAAA,CAAAO,aAAA,CAAAC,CAAA","ignoreList":[]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Text, XStack, styled } from "@hanzo/gui";
|
|
2
|
+
import { useWindowControls } from "./window.mjs";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
const Control = styled(XStack, {
|
|
5
|
+
width: 46,
|
|
6
|
+
height: 32,
|
|
7
|
+
alignItems: "center",
|
|
8
|
+
justifyContent: "center",
|
|
9
|
+
cursor: "pointer",
|
|
10
|
+
hoverStyle: {
|
|
11
|
+
backgroundColor: "$color4"
|
|
12
|
+
},
|
|
13
|
+
pressStyle: {
|
|
14
|
+
backgroundColor: "$color5"
|
|
15
|
+
},
|
|
16
|
+
animation: "quick"
|
|
17
|
+
});
|
|
18
|
+
const Glyph = styled(Text, {
|
|
19
|
+
fontFamily: "$mono",
|
|
20
|
+
fontSize: 13,
|
|
21
|
+
lineHeight: 13,
|
|
22
|
+
color: "$color11"
|
|
23
|
+
});
|
|
24
|
+
function TitleBar({
|
|
25
|
+
title = ""
|
|
26
|
+
}) {
|
|
27
|
+
const {
|
|
28
|
+
minimize,
|
|
29
|
+
toggleMaximize,
|
|
30
|
+
close
|
|
31
|
+
} = useWindowControls();
|
|
32
|
+
return /* @__PURE__ */jsxs(XStack, {
|
|
33
|
+
"data-tauri-drag-region": true,
|
|
34
|
+
height: 40,
|
|
35
|
+
alignItems: "center",
|
|
36
|
+
backgroundColor: "$background",
|
|
37
|
+
borderBottomWidth: 1,
|
|
38
|
+
borderBottomColor: "$borderColor",
|
|
39
|
+
userSelect: "none",
|
|
40
|
+
children: [/* @__PURE__ */jsx(Text, {
|
|
41
|
+
flex: 1,
|
|
42
|
+
paddingLeft: "$3",
|
|
43
|
+
fontFamily: "$body",
|
|
44
|
+
fontSize: 13,
|
|
45
|
+
color: "$color11",
|
|
46
|
+
"data-tauri-drag-region": true,
|
|
47
|
+
children: title
|
|
48
|
+
}), /* @__PURE__ */jsxs(XStack, {
|
|
49
|
+
children: [/* @__PURE__ */jsx(Control, {
|
|
50
|
+
onPress: () => minimize(),
|
|
51
|
+
children: /* @__PURE__ */jsx(Glyph, {
|
|
52
|
+
children: "\u2014"
|
|
53
|
+
})
|
|
54
|
+
}), /* @__PURE__ */jsx(Control, {
|
|
55
|
+
onPress: () => toggleMaximize(),
|
|
56
|
+
children: /* @__PURE__ */jsx(Glyph, {
|
|
57
|
+
children: "\u25A2"
|
|
58
|
+
})
|
|
59
|
+
}), /* @__PURE__ */jsx(Control, {
|
|
60
|
+
onPress: () => close(),
|
|
61
|
+
hoverStyle: {
|
|
62
|
+
backgroundColor: "$red9"
|
|
63
|
+
},
|
|
64
|
+
children: /* @__PURE__ */jsx(Glyph, {
|
|
65
|
+
children: "\u2715"
|
|
66
|
+
})
|
|
67
|
+
})]
|
|
68
|
+
})]
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
export { TitleBar };
|
|
72
|
+
//# sourceMappingURL=TitleBar.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Text","XStack","styled","useWindowControls","jsx","jsxs","Control","width","height","alignItems","justifyContent","cursor","hoverStyle","backgroundColor","pressStyle","animation","Glyph","fontFamily","fontSize","lineHeight","color","TitleBar","title","minimize","toggleMaximize","close","borderBottomWidth","borderBottomColor","userSelect","children","flex","paddingLeft","onPress"],"sources":["../../src/TitleBar.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,IAAA,EAAMC,MAAA,EAAQC,MAAA,QAAc;AACrC,SAASC,iBAAA,QAAyB;AA4C5B,SAAAC,GAAA,EAYAC,IAAA,QAZA;AApCN,MAAMC,OAAA,GAAUJ,MAAA,CAAOD,MAAA,EAAQ;EAC7BM,KAAA,EAAO;EACPC,MAAA,EAAQ;EACRC,UAAA,EAAY;EACZC,cAAA,EAAgB;EAChBC,MAAA,EAAQ;EACRC,UAAA,EAAY;IAAEC,eAAA,EAAiB;EAAU;EACzCC,UAAA,EAAY;IAAED,eAAA,EAAiB;EAAU;EACzCE,SAAA,EAAW;AACb,CAAC;AAED,MAAMC,KAAA,GAAQd,MAAA,CAAOF,IAAA,EAAM;EACzBiB,UAAA,EAAY;EACZC,QAAA,EAAU;EACVC,UAAA,EAAY;EACZC,KAAA,EAAO;AACT,CAAC;AAMM,SAASC,SAAS;EAAEC,KAAA,GAAQ;AAAG,GAAkB;EACtD,MAAM;IAAEC,QAAA;IAAUC,cAAA;IAAgBC;EAAM,IAAItB,iBAAA,CAAkB;EAE9D,OACE,eAAAE,IAAA,CAACJ,MAAA;IAEC,0BAAsB;IACtBO,MAAA,EAAQ;IACRC,UAAA,EAAW;IACXI,eAAA,EAAgB;IAChBa,iBAAA,EAAmB;IACnBC,iBAAA,EAAkB;IAClBC,UAAA,EAAW;IAEXC,QAAA,kBAAAzB,GAAA,CAACJ,IAAA;MACC8B,IAAA,EAAM;MACNC,WAAA,EAAY;MACZd,UAAA,EAAW;MACXC,QAAA,EAAU;MACVE,KAAA,EAAM;MAEN,0BAAsB;MAErBS,QAAA,EAAAP;IAAA,CACH,GAEA,eAAAjB,IAAA,CAACJ,MAAA;MACC4B,QAAA,kBAAAzB,GAAA,CAACE,OAAA;QAAQ0B,OAAA,EAASA,CAAA,KAAMT,QAAA,CAAS;QAC/BM,QAAA,iBAAAzB,GAAA,CAACY,KAAA;UAAMa,QAAA;QAAA,CAAC;MAAA,CACV,GACA,eAAAzB,GAAA,CAACE,OAAA;QAAQ0B,OAAA,EAASA,CAAA,KAAMR,cAAA,CAAe;QACrCK,QAAA,iBAAAzB,GAAA,CAACY,KAAA;UAAMa,QAAA;QAAA,CAAC;MAAA,CACV,GACA,eAAAzB,GAAA,CAACE,OAAA;QAAQ0B,OAAA,EAASA,CAAA,KAAMP,KAAA,CAAM;QAAGb,UAAA,EAAY;UAAEC,eAAA,EAAiB;QAAQ;QACtEgB,QAAA,iBAAAzB,GAAA,CAACY,KAAA;UAAMa,QAAA;QAAA,CAAC;MAAA,CACV;IAAA,CACF;EAAA,CACF;AAEJ","ignoreList":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Text, XStack, styled } from "@hanzo/gui";
|
|
3
|
+
import { useWindowControls } from "./window.native.js";
|
|
4
|
+
var Control = styled(XStack, {
|
|
5
|
+
width: 46,
|
|
6
|
+
height: 32,
|
|
7
|
+
alignItems: "center",
|
|
8
|
+
justifyContent: "center",
|
|
9
|
+
cursor: "pointer",
|
|
10
|
+
hoverStyle: {
|
|
11
|
+
backgroundColor: "$color4"
|
|
12
|
+
},
|
|
13
|
+
pressStyle: {
|
|
14
|
+
backgroundColor: "$color5"
|
|
15
|
+
},
|
|
16
|
+
animation: "quick"
|
|
17
|
+
});
|
|
18
|
+
var Glyph = styled(Text, {
|
|
19
|
+
fontFamily: "$mono",
|
|
20
|
+
fontSize: 13,
|
|
21
|
+
lineHeight: 13,
|
|
22
|
+
color: "$color11"
|
|
23
|
+
});
|
|
24
|
+
function TitleBar(param) {
|
|
25
|
+
var {
|
|
26
|
+
title = ""
|
|
27
|
+
} = param;
|
|
28
|
+
var {
|
|
29
|
+
minimize,
|
|
30
|
+
toggleMaximize,
|
|
31
|
+
close
|
|
32
|
+
} = useWindowControls();
|
|
33
|
+
return /* @__PURE__ */_jsxs(XStack, {
|
|
34
|
+
// @ts-expect-error — Tauri drag region is a raw DOM attribute (web/webview)
|
|
35
|
+
"data-tauri-drag-region": true,
|
|
36
|
+
height: 40,
|
|
37
|
+
alignItems: "center",
|
|
38
|
+
backgroundColor: "$background",
|
|
39
|
+
borderBottomWidth: 1,
|
|
40
|
+
borderBottomColor: "$borderColor",
|
|
41
|
+
userSelect: "none",
|
|
42
|
+
children: [/* @__PURE__ */_jsx(Text, {
|
|
43
|
+
flex: 1,
|
|
44
|
+
paddingLeft: "$3",
|
|
45
|
+
fontFamily: "$body",
|
|
46
|
+
fontSize: 13,
|
|
47
|
+
color: "$color11",
|
|
48
|
+
// @ts-expect-error — raw DOM attribute so clicks on the title still drag
|
|
49
|
+
"data-tauri-drag-region": true,
|
|
50
|
+
children: title
|
|
51
|
+
}), /* @__PURE__ */_jsxs(XStack, {
|
|
52
|
+
children: [/* @__PURE__ */_jsx(Control, {
|
|
53
|
+
onPress: function () {
|
|
54
|
+
return minimize();
|
|
55
|
+
},
|
|
56
|
+
children: /* @__PURE__ */_jsx(Glyph, {
|
|
57
|
+
children: "\u2014"
|
|
58
|
+
})
|
|
59
|
+
}), /* @__PURE__ */_jsx(Control, {
|
|
60
|
+
onPress: function () {
|
|
61
|
+
return toggleMaximize();
|
|
62
|
+
},
|
|
63
|
+
children: /* @__PURE__ */_jsx(Glyph, {
|
|
64
|
+
children: "\u25A2"
|
|
65
|
+
})
|
|
66
|
+
}), /* @__PURE__ */_jsx(Control, {
|
|
67
|
+
onPress: function () {
|
|
68
|
+
return close();
|
|
69
|
+
},
|
|
70
|
+
hoverStyle: {
|
|
71
|
+
backgroundColor: "$red9"
|
|
72
|
+
},
|
|
73
|
+
children: /* @__PURE__ */_jsx(Glyph, {
|
|
74
|
+
children: "\u2715"
|
|
75
|
+
})
|
|
76
|
+
})]
|
|
77
|
+
})]
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
export { TitleBar };
|
|
81
|
+
//# sourceMappingURL=TitleBar.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Text","XStack","styled","useWindowControls","Control","width","height","alignItems","justifyContent","cursor","hoverStyle","backgroundColor","pressStyle","animation","Glyph","fontFamily","fontSize","lineHeight","color","TitleBar","param","title","minimize","toggleMaximize","close","borderBottomWidth","borderBottomColor","userSelect","children","flex","paddingLeft","onPress"],"sources":["../../src/TitleBar.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAA,IAAMC,IAAA,EAAAC,IAAQ,IAAAC,KAAA,QAAc;AACrC,SAASC,IAAA,EAAAC,MAAA,EAAAC,MAAA,QAAyB;AA4C5B,SAAAC,iBAAA;AApCN,IAAAC,OAAM,GAAAF,MAAU,CAAAD,MAAO;EACrBI,KAAA,EAAO;EACPC,MAAA,EAAQ;EACRC,UAAA,EAAY;EACZC,cAAA,EAAgB;EAChBC,MAAA,EAAQ;EACRC,UAAA,EAAY;IACZC,eAAc;EACd;EACDC,UAAA;IAEDD,eAAc,EAAO;EACnB;EACAE,SAAA,EAAU;AAAA,EACV;AAAY,IACZC,KAAO,GAAAZ,MAAA,CAAAF,IAAA;EACRe,UAAA;EAMMC,QAAS;EACdC,UAAQ;EAERC,KAAA,EACE;AAAA;AAAC,SAAAC,SAAAC,KAAA;EAAA,IAEC;IAAAC,KAAA;EAAA,IAAAD,KAAA;EAAsB,IACtB;IAAAE,QAAQ;IAAAC,cAAA;IAAAC;EAAA,IAAArB,iBAAA;EAAA,OACR,eAAWJ,KAAA,CAAAE,MAAA;IAAA;IACK,wBACG;IAAAK,MACnB;IAAkBC,UAClB,UAAW;IAAAI,eAEX;IAAAc,iBAAA;IAAAC,iBAAC;IAAAC,UAAA;IAAAC,QACC,GAAM,eACN/B,IAAY,CAAAG,IAAA;MAAA6B,IACZ;MAAWC,WACX,MAAU;MAAAf,UACV,EAAM;MAAAC,QAEN;MAAsBE,KAErB;MAAA;MACH;MAEAU,QAAA,EAAAP;IACE,IAEA,eACAtB,KAAA,CAAAE,MAAC;MAED2B,QACA,GAEA,eACF/B,IAAA,CAAAO,OAAA;QAAA2B,OAAA,WAAAA,CAAA;UAAA,OAAAT,QAAA;QACF;QAEJM,QAAA,iBAAA/B,IAAA,CAAAiB,KAAA","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { isTauri } from "./isTauri.mjs";
|
|
2
|
+
import { windowControls, useWindowControls } from "./window.mjs";
|
|
3
|
+
import { registerShortcut, unregisterShortcut, useGlobalShortcut } from "./shortcuts.mjs";
|
|
4
|
+
import { readTextFile, writeTextFile, openExternal } from "./system.mjs";
|
|
5
|
+
import { TitleBar } from "./TitleBar.mjs";
|
|
6
|
+
export { TitleBar, isTauri, openExternal, readTextFile, registerShortcut, unregisterShortcut, useGlobalShortcut, useWindowControls, windowControls, writeTextFile };
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isTauri","windowControls","useWindowControls","registerShortcut","unregisterShortcut","useGlobalShortcut","readTextFile","writeTextFile","openExternal","TitleBar"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAQA,SAASA,OAAA,QAAe;AACxB,SAASC,cAAA,EAAgBC,iBAAA,QAAyB;AAClD,SAASC,gBAAA,EAAkBC,kBAAA,EAAoBC,iBAAA,QAAyB;AACxE,SAASC,YAAA,EAAcC,aAAA,EAAeC,YAAA,QAAoB;AAC1D,SAASC,QAAA,QAAoC","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { isTauri } from "./isTauri.mjs";
|
|
2
|
+
import { windowControls, useWindowControls } from "./window.mjs";
|
|
3
|
+
import { registerShortcut, unregisterShortcut, useGlobalShortcut } from "./shortcuts.mjs";
|
|
4
|
+
import { readTextFile, writeTextFile, openExternal } from "./system.mjs";
|
|
5
|
+
import { TitleBar } from "./TitleBar.mjs";
|
|
6
|
+
export { TitleBar, isTauri, openExternal, readTextFile, registerShortcut, unregisterShortcut, useGlobalShortcut, useWindowControls, windowControls, writeTextFile };
|
|
7
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isTauri","windowControls","useWindowControls","registerShortcut","unregisterShortcut","useGlobalShortcut","readTextFile","writeTextFile","openExternal","TitleBar"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAQA,SAASA,OAAA,QAAe;AACxB,SAASC,cAAA,EAAgBC,iBAAA,QAAyB;AAClD,SAASC,gBAAA,EAAkBC,kBAAA,EAAoBC,iBAAA,QAAyB;AACxE,SAASC,YAAA,EAAcC,aAAA,EAAeC,YAAA,QAAoB;AAC1D,SAASC,QAAA,QAAoC","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { isTauri } from "./isTauri.native.js";
|
|
2
|
+
import { windowControls, useWindowControls } from "./window.native.js";
|
|
3
|
+
import { registerShortcut, unregisterShortcut, useGlobalShortcut } from "./shortcuts.native.js";
|
|
4
|
+
import { readTextFile, writeTextFile, openExternal } from "./system.native.js";
|
|
5
|
+
import { TitleBar } from "./TitleBar.native.js";
|
|
6
|
+
export { TitleBar, isTauri, openExternal, readTextFile, registerShortcut, unregisterShortcut, useGlobalShortcut, useWindowControls, windowControls, writeTextFile };
|
|
7
|
+
//# sourceMappingURL=index.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isTauri","windowControls","useWindowControls","registerShortcut","unregisterShortcut","useGlobalShortcut","readTextFile","writeTextFile","openExternal","TitleBar"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAQA,SAASA,OAAA,QAAe;AACxB,SAASC,cAAA,EAAgBC,iBAAA,QAAyB;AAClD,SAASC,gBAAA,EAAkBC,kBAAA,EAAoBC,iBAAA,QAAyB;AACxE,SAASC,YAAA,EAAcC,aAAA,EAAeC,YAAA,QAAoB;AAC1D,SAASC,QAAA,QAAoC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isTauri","window","__TAURI_INTERNALS__"],"sources":["../../src/isTauri.ts"],"sourcesContent":[null],"mappings":"AAMO,SAASA,QAAA,EAAmB;EACjC,OACE,OAAOC,MAAA,KAAW,gBACjB,CAAC,CAAEA,MAAA,CAAeC,mBAAA,IAAwBD,MAAA,CAAeD,OAAA,KAAY;AAE1E","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isTauri","window","__TAURI_INTERNALS__"],"sources":["../../src/isTauri.ts"],"sourcesContent":[null],"mappings":"AAMO,SAASA,QAAA,EAAmB;EACjC,OACE,OAAOC,MAAA,KAAW,gBACjB,CAAC,CAAEA,MAAA,CAAeC,mBAAA,IAAwBD,MAAA,CAAeD,OAAA,KAAY;AAE1E","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
import { isTauri } from "./isTauri.mjs";
|
|
3
|
+
async function registerShortcut(accelerator, handler) {
|
|
4
|
+
if (!isTauri()) return;
|
|
5
|
+
const {
|
|
6
|
+
register
|
|
7
|
+
} = await import("@tauri-apps/plugin-global-shortcut");
|
|
8
|
+
await register(accelerator, event => {
|
|
9
|
+
if (event.state === "Pressed") handler();
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
async function unregisterShortcut(accelerator) {
|
|
13
|
+
if (!isTauri()) return;
|
|
14
|
+
const {
|
|
15
|
+
unregister
|
|
16
|
+
} = await import("@tauri-apps/plugin-global-shortcut");
|
|
17
|
+
await unregister(accelerator);
|
|
18
|
+
}
|
|
19
|
+
function useGlobalShortcut(accelerator, handler) {
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (!isTauri()) return;
|
|
22
|
+
let cancelled = false;
|
|
23
|
+
registerShortcut(accelerator, handler).catch(() => {});
|
|
24
|
+
return () => {
|
|
25
|
+
cancelled = true;
|
|
26
|
+
void cancelled;
|
|
27
|
+
unregisterShortcut(accelerator).catch(() => {});
|
|
28
|
+
};
|
|
29
|
+
}, [accelerator, handler]);
|
|
30
|
+
}
|
|
31
|
+
export { registerShortcut, unregisterShortcut, useGlobalShortcut };
|
|
32
|
+
//# sourceMappingURL=shortcuts.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","isTauri","registerShortcut","accelerator","handler","register","event","state","unregisterShortcut","unregister","useGlobalShortcut","cancelled","catch"],"sources":["../../src/shortcuts.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AAC1B,SAASC,OAAA,QAAe;AAMxB,eAAsBC,iBACpBC,WAAA,EACAC,OAAA,EACe;EACf,IAAI,CAACH,OAAA,CAAQ,GAAG;EAChB,MAAM;IAAEI;EAAS,IAAI,MAAM,OAAO,oCAAoC;EACtE,MAAMA,QAAA,CAASF,WAAA,EAAcG,KAAA,IAAU;IACrC,IAAIA,KAAA,CAAMC,KAAA,KAAU,WAAWH,OAAA,CAAQ;EACzC,CAAC;AACH;AAEA,eAAsBI,mBAAmBL,WAAA,EAAoC;EAC3E,IAAI,CAACF,OAAA,CAAQ,GAAG;EAChB,MAAM;IAAEQ;EAAW,IAAI,MAAM,OAAO,oCAAoC;EACxE,MAAMA,UAAA,CAAWN,WAAW;AAC9B;AAGO,SAASO,kBAAkBP,WAAA,EAAqBC,OAAA,EAAqB;EAC1EJ,SAAA,CAAU,MAAM;IACd,IAAI,CAACC,OAAA,CAAQ,GAAG;IAChB,IAAIU,SAAA,GAAY;IAChBT,gBAAA,CAAiBC,WAAA,EAAaC,OAAO,EAAEQ,KAAA,CAAM,MAAM,CAAC,CAAC;IACrD,OAAO,MAAM;MACXD,SAAA,GAAY;MACZ,KAAKA,SAAA;MACLH,kBAAA,CAAmBL,WAAW,EAAES,KAAA,CAAM,MAAM,CAAC,CAAC;IAChD;EACF,GAAG,CAACT,WAAA,EAAaC,OAAO,CAAC;AAC3B","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
import { isTauri } from "./isTauri.native.js";
|
|
3
|
+
async function registerShortcut(accelerator, handler) {
|
|
4
|
+
if (!isTauri()) return;
|
|
5
|
+
var {
|
|
6
|
+
register
|
|
7
|
+
} = await import("@tauri-apps/plugin-global-shortcut");
|
|
8
|
+
await register(accelerator, function (event) {
|
|
9
|
+
if (event.state === "Pressed") handler();
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
async function unregisterShortcut(accelerator) {
|
|
13
|
+
if (!isTauri()) return;
|
|
14
|
+
var {
|
|
15
|
+
unregister
|
|
16
|
+
} = await import("@tauri-apps/plugin-global-shortcut");
|
|
17
|
+
await unregister(accelerator);
|
|
18
|
+
}
|
|
19
|
+
function useGlobalShortcut(accelerator, handler) {
|
|
20
|
+
useEffect(function () {
|
|
21
|
+
if (!isTauri()) return;
|
|
22
|
+
var cancelled = false;
|
|
23
|
+
registerShortcut(accelerator, handler).catch(function () {});
|
|
24
|
+
return function () {
|
|
25
|
+
cancelled = true;
|
|
26
|
+
void cancelled;
|
|
27
|
+
unregisterShortcut(accelerator).catch(function () {});
|
|
28
|
+
};
|
|
29
|
+
}, [accelerator, handler]);
|
|
30
|
+
}
|
|
31
|
+
export { registerShortcut, unregisterShortcut, useGlobalShortcut };
|
|
32
|
+
//# sourceMappingURL=shortcuts.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","isTauri","registerShortcut","accelerator","handler","register","event","state","unregisterShortcut","unregister","useGlobalShortcut","cancelled","catch"],"sources":["../../src/shortcuts.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AAC1B,SAASC,OAAA,QAAe;AAMxB,eAAsBC,iBACpBC,WAAA,EACAC,OAAA,EACe;EACf,IAAI,CAACH,OAAA,CAAQ,GAAG;EAChB;IAAMI;EAAE,IAAS,MAAI,MAAM,qCAAO;EAClC,MAAMA,QAAA,CAASF,WAAA,EAAa,UAACG,KAAU;IACrC,IAAIA,KAAA,CAAMC,KAAA,KAAU,WAAWH,OAAA,CAAQ;EACzC,CAAC;AACH;AAEA,eAAsBI,mBAAmBL,WAAA,EAAoC;EAC3E,IAAI,CAACF,OAAA,CAAQ,GAAG;EAChB;IAAMQ;EAAE,IAAW,MAAI,MAAM,qCAAO;EACpC,MAAMA,UAAA,CAAWN,WAAW;AAC9B;AAGO,SAASO,kBAAkBP,WAAA,EAAqBC,OAAA,EAAqB;EAC1EJ,SAAA,CAAU,YAAM;IACd,IAAI,CAACC,OAAA,CAAQ,GAAG;IAChB,IAAIU,SAAA,GAAY;IAChBT,gBAAA,CAAiBC,WAAA,EAAaC,OAAO,EAAEQ,KAAA,CAAM,YAAM,CAAC,CAAC;IACrD,OAAO,YAAM;MACXD,SAAA,GAAY;MACZ,KAAKA,SAAA;MACLH,kBAAA,CAAmBL,WAAW,EAAES,KAAA,CAAM,YAAM,CAAC,CAAC;IAChD;EACF,GAAG,CACLT,WAAA,E","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { isTauri } from "./isTauri.mjs";
|
|
2
|
+
async function readTextFile(path) {
|
|
3
|
+
if (!isTauri()) throw new Error("readTextFile is only available under Tauri");
|
|
4
|
+
const {
|
|
5
|
+
readTextFile: readTextFile2
|
|
6
|
+
} = await import("@tauri-apps/plugin-fs");
|
|
7
|
+
return readTextFile2(path);
|
|
8
|
+
}
|
|
9
|
+
async function writeTextFile(path, contents) {
|
|
10
|
+
if (!isTauri()) throw new Error("writeTextFile is only available under Tauri");
|
|
11
|
+
const {
|
|
12
|
+
writeTextFile: writeTextFile2
|
|
13
|
+
} = await import("@tauri-apps/plugin-fs");
|
|
14
|
+
return writeTextFile2(path, contents);
|
|
15
|
+
}
|
|
16
|
+
async function openExternal(url) {
|
|
17
|
+
if (!isTauri()) {
|
|
18
|
+
if (typeof window !== "undefined") window.open(url, "_blank", "noopener");
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const {
|
|
22
|
+
open
|
|
23
|
+
} = await import("@tauri-apps/plugin-shell");
|
|
24
|
+
await open(url);
|
|
25
|
+
}
|
|
26
|
+
export { openExternal, readTextFile, writeTextFile };
|
|
27
|
+
//# sourceMappingURL=system.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isTauri","readTextFile","path","Error","readTextFile2","writeTextFile","contents","writeTextFile2","openExternal","url","window","open"],"sources":["../../src/system.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAA,QAAe;AAMxB,eAAsBC,aAAaC,IAAA,EAA+B;EAChE,IAAI,CAACF,OAAA,CAAQ,GAAG,MAAM,IAAIG,KAAA,CAAM,4CAA4C;EAC5E,MAAM;IAAEF,YAAA,EAAAG;EAAa,IAAI,MAAM,OAAO,uBAAuB;EAC7D,OAAOH,aAAA,CAAaC,IAAI;AAC1B;AAEA,eAAsBG,cAAcH,IAAA,EAAcI,QAAA,EAAiC;EACjF,IAAI,CAACN,OAAA,CAAQ,GAAG,MAAM,IAAIG,KAAA,CAAM,6CAA6C;EAC7E,MAAM;IAAEE,aAAA,EAAAE;EAAc,IAAI,MAAM,OAAO,uBAAuB;EAC9D,OAAOF,cAAA,CAAcH,IAAA,EAAMI,QAAQ;AACrC;AAGA,eAAsBE,aAAaC,GAAA,EAA4B;EAC7D,IAAI,CAACT,OAAA,CAAQ,GAAG;IACd,IAAI,OAAOU,MAAA,KAAW,aAAaA,MAAA,CAAOC,IAAA,CAAKF,GAAA,EAAK,UAAU,UAAU;IACxE;EACF;EACA,MAAM;IAAEE;EAAK,IAAI,MAAM,OAAO,0BAA0B;EACxD,MAAMA,IAAA,CAAKF,GAAG;AAChB","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { isTauri } from "./isTauri.native.js";
|
|
2
|
+
async function readTextFile(path) {
|
|
3
|
+
if (!isTauri()) throw new Error("readTextFile is only available under Tauri");
|
|
4
|
+
var {
|
|
5
|
+
readTextFile: readTextFile2
|
|
6
|
+
} = await import("@tauri-apps/plugin-fs");
|
|
7
|
+
return readTextFile2(path);
|
|
8
|
+
}
|
|
9
|
+
async function writeTextFile(path, contents) {
|
|
10
|
+
if (!isTauri()) throw new Error("writeTextFile is only available under Tauri");
|
|
11
|
+
var {
|
|
12
|
+
writeTextFile: writeTextFile2
|
|
13
|
+
} = await import("@tauri-apps/plugin-fs");
|
|
14
|
+
return writeTextFile2(path, contents);
|
|
15
|
+
}
|
|
16
|
+
async function openExternal(url) {
|
|
17
|
+
if (!isTauri()) {
|
|
18
|
+
if (typeof window !== "undefined") window.open(url, "_blank", "noopener");
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
var {
|
|
22
|
+
open
|
|
23
|
+
} = await import("@tauri-apps/plugin-shell");
|
|
24
|
+
await open(url);
|
|
25
|
+
}
|
|
26
|
+
export { openExternal, readTextFile, writeTextFile };
|
|
27
|
+
//# sourceMappingURL=system.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isTauri","readTextFile","path","Error","readTextFile2","writeTextFile","contents","writeTextFile2","openExternal","url","window","open"],"sources":["../../src/system.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAA,QAAe;AAMxB,eAAsBC,aAAaC,IAAA,EAA+B;EAChE,IAAI,CAACF,OAAA,CAAQ,GAAG,MAAM,IAAIG,KAAA,CAAM,4CAA4C;EAC5E;IAAMF,YAAE,EAAAG;EAAA,IAAa,MAAI,MAAM,wBAAO;EACtC,OAAOH,aAAA,CAAaC,IAAI;AAC1B;AAEA,eAAsBG,cAAcH,IAAA,EAAcI,QAAA,EAAiC;EACjF,IAAI,CAACN,OAAA,CAAQ,GAAG,MAAM,IAAIG,KAAA,CAAM,6CAA6C;EAC7E;IAAME,aAAE,EAAAE;EAAA,IAAc,MAAI,MAAM,wBAAO;EACvC,OAAOF,cAAA,CAAcH,IAAA,EAAMI,QAAQ;AACrC;AAGA,eAAsBE,aAAaC,GAAA,EAA4B;EAC7D,IAAI,CAACT,OAAA,CAAQ,GAAG;IACd,IAAI,OAAOU,MAAA,KAAW,aAAaA,MAAA,CAAOC,IAAA,CAAKF,GAAA,EAAK,UAAU,UAAU;IACxE;EACF;EACA;IAAME;EAAE,IAAK,MAAI,MAAM,2BAAO;EAC9B,MAAMA,IAAA,CAAKF,GAAG;AAChB","ignoreList":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
import { isTauri } from "./isTauri.mjs";
|
|
3
|
+
async function currentWindow() {
|
|
4
|
+
if (!isTauri()) return null;
|
|
5
|
+
const {
|
|
6
|
+
getCurrentWindow
|
|
7
|
+
} = await import("@tauri-apps/api/window");
|
|
8
|
+
return getCurrentWindow();
|
|
9
|
+
}
|
|
10
|
+
const windowControls = {
|
|
11
|
+
minimize: async () => (await currentWindow())?.minimize(),
|
|
12
|
+
toggleMaximize: async () => (await currentWindow())?.toggleMaximize(),
|
|
13
|
+
close: async () => (await currentWindow())?.close(),
|
|
14
|
+
hide: async () => (await currentWindow())?.hide(),
|
|
15
|
+
startDragging: async () => (await currentWindow())?.startDragging(),
|
|
16
|
+
isMaximized: async () => (await currentWindow())?.isMaximized() ?? false,
|
|
17
|
+
setFullscreen: async v => (await currentWindow())?.setFullscreen(v)
|
|
18
|
+
};
|
|
19
|
+
function useWindowControls() {
|
|
20
|
+
const [isMaximized, setIsMaximized] = useState(false);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (!isTauri()) return;
|
|
23
|
+
let unlisten;
|
|
24
|
+
let active = true;
|
|
25
|
+
(async () => {
|
|
26
|
+
const win = await currentWindow();
|
|
27
|
+
if (!win || !active) return;
|
|
28
|
+
setIsMaximized(await win.isMaximized());
|
|
29
|
+
unlisten = await win.onResized(async () => {
|
|
30
|
+
setIsMaximized(await win.isMaximized());
|
|
31
|
+
});
|
|
32
|
+
})();
|
|
33
|
+
return () => {
|
|
34
|
+
active = false;
|
|
35
|
+
unlisten?.();
|
|
36
|
+
};
|
|
37
|
+
}, []);
|
|
38
|
+
return {
|
|
39
|
+
...windowControls,
|
|
40
|
+
isMaximized
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export { useWindowControls, windowControls };
|
|
44
|
+
//# sourceMappingURL=window.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useState","isTauri","currentWindow","getCurrentWindow","windowControls","minimize","toggleMaximize","close","hide","startDragging","isMaximized","setFullscreen","v","useWindowControls","setIsMaximized","unlisten","active","win","onResized"],"sources":["../../src/window.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,QAAA,QAAgB;AACpC,SAASC,OAAA,QAAe;AAOxB,eAAeC,cAAA,EAAgB;EAC7B,IAAI,CAACD,OAAA,CAAQ,GAAG,OAAO;EACvB,MAAM;IAAEE;EAAiB,IAAI,MAAM,OAAO,wBAAwB;EAClE,OAAOA,gBAAA,CAAiB;AAC1B;AAEO,MAAMC,cAAA,GAAiB;EAC5BC,QAAA,EAAU,MAAAA,CAAA,MAAa,MAAMH,aAAA,CAAc,IAAIG,QAAA,CAAS;EACxDC,cAAA,EAAgB,MAAAA,CAAA,MAAa,MAAMJ,aAAA,CAAc,IAAII,cAAA,CAAe;EACpEC,KAAA,EAAO,MAAAA,CAAA,MAAa,MAAML,aAAA,CAAc,IAAIK,KAAA,CAAM;EAClDC,IAAA,EAAM,MAAAA,CAAA,MAAa,MAAMN,aAAA,CAAc,IAAIM,IAAA,CAAK;EAChDC,aAAA,EAAe,MAAAA,CAAA,MAAa,MAAMP,aAAA,CAAc,IAAIO,aAAA,CAAc;EAClEC,WAAA,EAAa,MAAAA,CAAA,MAAa,MAAMR,aAAA,CAAc,IAAIQ,WAAA,CAAY,KAAK;EACnEC,aAAA,EAAe,MAAOC,CAAA,KAAgB,MAAMV,aAAA,CAAc,IAAIS,aAAA,CAAcC,CAAC;AAC/E;AAMO,SAASC,kBAAA,EAAoB;EAClC,MAAM,CAACH,WAAA,EAAaI,cAAc,IAAId,QAAA,CAAS,KAAK;EAEpDD,SAAA,CAAU,MAAM;IACd,IAAI,CAACE,OAAA,CAAQ,GAAG;IAChB,IAAIc,QAAA;IACJ,IAAIC,MAAA,GAAS;IACZ,CAAC,YAAY;MACZ,MAAMC,GAAA,GAAM,MAAMf,aAAA,CAAc;MAChC,IAAI,CAACe,GAAA,IAAO,CAACD,MAAA,EAAQ;MACrBF,cAAA,CAAe,MAAMG,GAAA,CAAIP,WAAA,CAAY,CAAC;MACtCK,QAAA,GAAW,MAAME,GAAA,CAAIC,SAAA,CAAU,YAAY;QACzCJ,cAAA,CAAe,MAAMG,GAAA,CAAIP,WAAA,CAAY,CAAC;MACxC,CAAC;IACH,GAAG;IACH,OAAO,MAAM;MACXM,MAAA,GAAS;MACTD,QAAA,GAAW;IACb;EACF,GAAG,EAAE;EAEL,OAAO;IAAE,GAAGX,cAAA;IAAgBM;EAAY;AAC1C","ignoreList":[]}
|