123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 |
- // polyfills
- if (!String.prototype.startsWith) {
- String.prototype.startsWith = function (searchString, position) {
- position = position || 0;
- return this.substr(position, searchString.length) === searchString;
- };
- }
- (function () {
- function s4() {
- return Math.floor((1 + Math.random()) * 0x10000)
- .toString(16)
- .substring(1);
- }
- var uid = function () {
- return (
- s4() +
- s4() +
- "-" +
- s4() +
- "-" +
- s4() +
- "-" +
- s4() +
- "-" +
- s4() +
- s4() +
- s4()
- );
- };
- function ownKeys(object, enumerableOnly) {
- var keys = Object.keys(object);
- if (Object.getOwnPropertySymbols) {
- var symbols = Object.getOwnPropertySymbols(object);
- if (enumerableOnly)
- symbols = symbols.filter(function (sym) {
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
- });
- keys.push.apply(keys, symbols);
- }
- return keys;
- }
- function _objectSpread(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i] != null ? arguments[i] : {};
- if (i % 2) {
- ownKeys(source, true).forEach(function (key) {
- _defineProperty(target, key, source[key]);
- });
- } else if (Object.getOwnPropertyDescriptors) {
- Object.defineProperties(
- target,
- Object.getOwnPropertyDescriptors(source)
- );
- } else {
- ownKeys(source).forEach(function (key) {
- Object.defineProperty(
- target,
- key,
- Object.getOwnPropertyDescriptor(source, key)
- );
- });
- }
- }
- return target;
- }
- function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true,
- });
- } else {
- obj[key] = value;
- }
- return obj;
- }
- if (!window.__TAURI__) {
- window.__TAURI__ = {};
- }
- window.__TAURI__.transformCallback = function transformCallback(
- callback,
- once
- ) {
- var identifier = uid();
- window[identifier] = function (result) {
- if (once) {
- delete window[identifier];
- }
- return callback && callback(result);
- };
- return identifier;
- };
- window.__TAURI__.invoke = function invoke(cmd, args = {}) {
- var _this = this;
- return new Promise(function (resolve, reject) {
- var callback = _this.transformCallback(function (r) {
- resolve(r);
- delete window[error];
- }, true);
- var error = _this.transformCallback(function (e) {
- reject(e);
- delete window[callback];
- }, true);
- if (typeof cmd === "string") {
- args.cmd = cmd;
- } else if (typeof cmd === "object") {
- args = cmd;
- } else {
- return reject(new Error("Invalid argument type."));
- }
- if (window.rpc) {
- window.rpc.notify(
- cmd,
- _objectSpread(
- {
- callback: callback,
- error: error,
- },
- args
- )
- );
- } else {
- window.addEventListener("DOMContentLoaded", function () {
- window.rpc.notify(
- cmd,
- _objectSpread(
- {
- callback: callback,
- error: error,
- },
- args
- )
- );
- });
- }
- });
- };
- // open <a href="..."> links with the Tauri API
- function __openLinks() {
- document.querySelector("body").addEventListener(
- "click",
- function (e) {
- var target = e.target;
- while (target != null) {
- if (
- target.matches ? target.matches("a") : target.msMatchesSelector("a")
- ) {
- if (
- target.href &&
- target.href.startsWith("http") &&
- target.target === "_blank"
- ) {
- window.__TAURI__.invoke('tauri', {
- __tauriModule: "Shell",
- message: {
- cmd: "open",
- uri: target.href,
- },
- });
- e.preventDefault();
- }
- break;
- }
- target = target.parentElement;
- }
- },
- true
- );
- }
- if (
- document.readyState === "complete" ||
- document.readyState === "interactive"
- ) {
- __openLinks();
- } else {
- window.addEventListener(
- "DOMContentLoaded",
- function () {
- __openLinks();
- },
- true
- );
- }
- window.__TAURI__.invoke('tauri', {
- __tauriModule: "Event",
- message: {
- cmd: "listen",
- event: "tauri://window-created",
- handler: window.__TAURI__.transformCallback(function (event) {
- if (event.payload) {
- var windowLabel = event.payload.label;
- window.__TAURI__.__windows.push({ label: windowLabel });
- }
- }),
- },
- });
- let permissionSettable = false;
- let permissionValue = "default";
- function isPermissionGranted() {
- if (window.Notification.permission !== "default") {
- return Promise.resolve(window.Notification.permission === "granted");
- }
- return window.__TAURI__.invoke('tauri', {
- __tauriModule: "Notification",
- message: {
- cmd: "isNotificationPermissionGranted",
- },
- });
- }
- function setNotificationPermission(value) {
- permissionSettable = true;
- window.Notification.permission = value;
- permissionSettable = false;
- }
- function requestPermission() {
- return window.__TAURI__
- .invoke('tauri', {
- __tauriModule: "Notification",
- mainThread: true,
- message: {
- cmd: "requestNotificationPermission",
- },
- })
- .then(function (permission) {
- setNotificationPermission(permission);
- return permission;
- });
- }
- function sendNotification(options) {
- if (typeof options === "object") {
- Object.freeze(options);
- }
- isPermissionGranted().then(function (permission) {
- if (permission) {
- return window.__TAURI__.invoke('tauri', {
- __tauriModule: "Notification",
- message: {
- cmd: "notification",
- options:
- typeof options === "string"
- ? {
- title: options,
- }
- : options,
- },
- });
- }
- });
- }
- window.Notification = function (title, options) {
- var opts = options || {};
- sendNotification(
- Object.assign(opts, {
- title: title,
- })
- );
- };
- window.Notification.requestPermission = requestPermission;
- Object.defineProperty(window.Notification, "permission", {
- enumerable: true,
- get: function () {
- return permissionValue;
- },
- set: function (v) {
- if (!permissionSettable) {
- throw new Error("Readonly property");
- }
- permissionValue = v;
- },
- });
- isPermissionGranted().then(function (response) {
- if (response === null) {
- setNotificationPermission("default");
- } else {
- setNotificationPermission(response ? "granted" : "denied");
- }
- });
- window.alert = function (message) {
- window.__TAURI__.invoke('tauri', {
- __tauriModule: "Dialog",
- mainThread: true,
- message: {
- cmd: "messageDialog",
- message: message,
- },
- });
- };
- window.confirm = function (message) {
- return window.__TAURI__.invoke('tauri', {
- __tauriModule: "Dialog",
- mainThread: true,
- message: {
- cmd: "askDialog",
- message: message,
- },
- });
- };
- })();
|