Files
aza/AzA/_internal/webview/js/customize.js
2026-06-15 08:06:06 +02:00

124 lines
4.3 KiB
JavaScript

(function() {
var platform = window.pywebview.platform;
var disableText = '%(text_select)s' === 'False';
var disableTextCss = 'body {-webkit-user-select: none; -khtml-user-select: none; -ms-user-select: none; user-select: none; cursor: default;}'
if (platform == 'mshtml') {
window.alert = function(msg) {
window.external.alert(msg);
}
} else if (platform == 'edgechromium') {
window.alert = function (message) {
window.chrome.webview.postMessage(['_pywebviewAlert', pywebview.stringify(message), 'alert']);
}
} else if (platform == 'gtkwebkit2') {
window.alert = function (message) {
window.webkit.messageHandlers.jsBridge.postMessage(pywebview.stringify({funcName: '_pywebviewAlert', params: message, id: 'alert'}));
}
} else if (platform == 'cocoa') {
window.print = function() {
window.webkit.messageHandlers.browserDelegate.postMessage('print');
}
} else if (platform === 'qtwebengine') {
window.alert = function (message) {
window.pywebview._QWebChannel.objects.external.call('_pywebviewAlert', pywebview.stringify(message), 'alert');
}
} else if (platform === 'qtwebkit') {
window.alert = function (message) {
window.external.invoke(JSON.stringify(['_pywebviewAlert', message, 'alert']));
}
}
if (disableText) {
var css = document.createElement("style");
css.type = "text/css";
css.innerHTML = disableTextCss;
document.head.appendChild(css);
}
function disableTouchEvents() {
var initialX = 0;
var initialY = 0;
function onMouseMove(ev) {
var x = ev.screenX - initialX;
var y = ev.screenY - initialY;
window.pywebview._jsApiCallback('pywebviewMoveWindow', [x, y], 'move');
}
function onMouseUp() {
window.removeEventListener('mousemove', onMouseMove);
window.removeEventListener('mouseup', onMouseUp);
}
function onMouseDown(ev) {
if (
'%(drag_region_direct_target_only)s' === 'True' &&
!ev.target.matches('%(drag_selector)s')
) {
return
}
initialX = ev.clientX;
initialY = ev.clientY;
window.addEventListener('mouseup', onMouseUp);
window.addEventListener('mousemove', onMouseMove);
}
function onBodyMouseDown(event) {
var target = event.target;
var dragSelectorElements = document.querySelectorAll('%(drag_selector)s');
while (target && target !== document.body && target !== document.documentElement) {
if (target.nodeType === 1) {
// Check if target matches the drag selector
for (var i = 0; i < dragSelectorElements.length; i++) {
if (dragSelectorElements[i] === target) {
onMouseDown(event);
return;
}
}
}
// If it doesn't match, continue up the DOM tree
target = target.parentNode;
}
}
document.body.addEventListener('mousedown', onBodyMouseDown);
// easy drag for edge chromium
if ('%(easy_drag)s' === 'True') {
window.addEventListener('mousedown', onMouseDown);
}
if ('%(zoomable)s' === 'False') {
document.body.addEventListener('touchstart', function(e) {
if ((e.touches.length > 1) || e.targetTouches.length > 1) {
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
}
}, {passive: false});
window.addEventListener('wheel', function (e) {
if (e.ctrlKey) {
e.preventDefault();
}
}, {passive: false});
}
// draggable
if ('%(draggable)s' === 'False') {
document.addEventListener('dragstart', function(e) {
if (e.target.tagName === 'IMG' || e.target.tagName === 'A') {
e.preventDefault();
}
});
}
}
disableTouchEvents();
})();