}
};
+ const isSafari = () => {
+ // https://stackoverflow.com/questions/9847580
+ if (/constructor/i.test(String(window["HTMLElement"]))) {
+ return true;
+ }
+ if (!window.top["safari"]) {
+ return false;
+ }
+ return String(window.top["safari"].pushNotification) === "[object SafariRemoteNotification]";
+ };
+
+ const isIos = () => {
+ // https://stackoverflow.com/questions/9038625
+ // https://github.com/lancedikson/bowser/issues/329
+ return !!navigator.platform && (
+ /iPad|iPhone|iPod/.test(navigator.platform)
+ || (navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1 && !window["MSStream"])
+ );
+ };
+
const { terminal } = this;
switch (value) {
case 'webgl':
if (this.webglAddon) return;
- if (isWebGL2Available()) {
+ if (isWebGL2Available() && !isSafari() && !isIos()) {
this.webglAddon = new WebglAddon();
terminal.loadAddon(this.webglAddon);
console.log(`[ttyd] WebGL renderer enabled`);