Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/webview/nativescript-webview-bridge-loader.android.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@

export const webViewBridge: string = "class e{constructor(){this.t={}}onNativeEvent(e,t){const n=this.t[e];if(null==n?void 0:n.length)for(const e of n)if(!1===(null==e?void 0:e(t)))break}on(e,t){if(!t)return;let n=this.t[e];n||(n=this.t[e]=[]),n.push(t)}addEventListener(e,t){this.on(e,t)}off(e,t){if(!e)return void(this.t={});let n=this.t[e];n&&(t?(n=this.t[e]=n.filter((e=>e!==t)),0===n.length&&delete this.t[e]):delete this.t[e])}removeEventListener(e,t){return this.off(e,t)}emit(e,t){this.emitEvent(e,JSON.stringify(t))}async injectJavaScriptFile(e){const t=this.elementIdFromHref(e);if(!document.getElementById(t))return new Promise(((n,i)=>{const r=document.createElement(\"script\");r.async=!0,r.setAttribute(\"id\",t),r.addEventListener(\"error\",(e=>{i(this.serializeError(e)),r.parentElement&&r.parentElement.removeChild(r)})),r.addEventListener(\"load\",(function(){window.requestAnimationFrame((()=>{n()})),r.parentElement&&r.parentElement.removeChild(r)})),r.src=e,document.body.appendChild(r)}))}async injectJavaScript(e,t){if(!document.getElementById(e))return new Promise(((n,i)=>{const r=document.createElement(\"script\");r.setAttribute(\"id\",e),r.addEventListener(\"error\",(function(e){i(e),r.parentElement&&r.parentElement.removeChild(r)})),r.text=t,document.body.appendChild(r),window.requestAnimationFrame((()=>n()))}))}async injectStyleSheetFile(e,t){const n=this.elementIdFromHref(e);if(!document.getElementById(n))return new Promise(((i,r)=>{const o=document.createElement(\"link\");o.addEventListener(\"error\",(e=>{r(e),o.parentElement&&o.parentElement.removeChild(o)})),o.addEventListener(\"load\",(()=>{window.requestAnimationFrame((()=>{i()}))})),o.setAttribute(\"id\",n),o.setAttribute(\"rel\",\"stylesheet\"),o.setAttribute(\"type\",\"text/css\"),o.setAttribute(\"href\",e),document.head&&(t&&document.head.childElementCount>0?document.head.insertBefore(o,document.head.firstElementChild):document.head.appendChild(o))}))}async injectStyleSheet(e,t,n){if(!document.getElementById(e))return new Promise(((i,r)=>{var o;const s=document.createElement(\"style\");s.addEventListener(\"error\",r),s.textContent=t,s.setAttribute(\"id\",e);const d=null!==(o=document.head)&&void 0!==o?o:document.body;d?(n&&d.childElementCount>0?document.head.insertBefore(s,d.firstElementChild):document.head.appendChild(s),i()):r(new Error(\"Couldn't find parent element\"))}))}async executePromise(e,t){try{const n=await e;this.emit(t,{data:n})}catch(e){this.emitError(e,t)}}emitError(e,t=\"web-error\"){\"object\"==typeof e&&(null==e?void 0:e.message)?this.emit(t,{err:this.serializeError(e)}):this.emit(t,{err:e})}elementIdFromHref(e){return e.replace(/^[:]*:\\/\\//,\"\").replace(/[^a-z0-9]/g,\"\")}serializeError(e){const{name:t,message:n,stack:i,...r}=e;return Object.keys(r).reduce(((e,t)=>{const n=r[t];return n instanceof HTMLElement||(e[t]=n),e}),{name:t,message:n,stack:i})}}class t extends e{get androidWebViewBridge(){if(\"undefined\"!=typeof androidWebViewBridge)return androidWebViewBridge}emitEvent(e,t){this.androidWebViewBridge.emitEvent(e,t)}}const n=\"ns-bridge-ready\",i=window;if(!i.nsWebViewBridge){i.nsWebViewBridge=new t;for(const e of[n,\"ns-brige-ready\"])\"undefined\"!=typeof CustomEvent?window.dispatchEvent(new CustomEvent(e,{detail:i.nsWebViewBridge})):window.dispatchEvent(new Event(e))}";
export const webViewBridge: string = '(function(){"use strict";' + "class e{constructor(){this.t={}}onNativeEvent(e,t){const n=this.t[e];if(null==n?void 0:n.length)for(const e of n)if(!1===(null==e?void 0:e(t)))break}on(e,t){if(!t)return;let n=this.t[e];n||(n=this.t[e]=[]),n.push(t)}addEventListener(e,t){this.on(e,t)}off(e,t){if(!e)return void(this.t={});let n=this.t[e];n&&(t?(n=this.t[e]=n.filter(e=>e!==t),0===n.length&&delete this.t[e]):delete this.t[e])}removeEventListener(e,t){return this.off(e,t)}emit(e,t){this.emitEvent(e,JSON.stringify(t))}async injectJavaScriptFile(e){const t=this.elementIdFromHref(e);if(!document.getElementById(t))return new Promise((n,i)=>{const r=document.createElement(\"script\");r.async=!0,r.setAttribute(\"id\",t),r.addEventListener(\"error\",e=>{i(this.serializeError(e)),r.parentElement&&r.parentElement.removeChild(r)}),r.addEventListener(\"load\",function(){window.requestAnimationFrame(()=>{n()}),r.parentElement&&r.parentElement.removeChild(r)}),r.src=e,document.body.appendChild(r)})}async injectJavaScript(e,t){if(!document.getElementById(e))return new Promise((n,i)=>{const r=document.createElement(\"script\");r.setAttribute(\"id\",e),r.addEventListener(\"error\",function(e){i(e),r.parentElement&&r.parentElement.removeChild(r)}),r.text=t,document.body.appendChild(r),window.requestAnimationFrame(()=>n())})}async injectStyleSheetFile(e,t){const n=this.elementIdFromHref(e);if(!document.getElementById(n))return new Promise((i,r)=>{const o=document.createElement(\"link\");o.addEventListener(\"error\",e=>{r(e),o.parentElement&&o.parentElement.removeChild(o)}),o.addEventListener(\"load\",()=>{window.requestAnimationFrame(()=>{i()})}),o.setAttribute(\"id\",n),o.setAttribute(\"rel\",\"stylesheet\"),o.setAttribute(\"type\",\"text/css\"),o.setAttribute(\"href\",e),document.head&&(t&&document.head.childElementCount>0?document.head.insertBefore(o,document.head.firstElementChild):document.head.appendChild(o))})}async injectStyleSheet(e,t,n){if(!document.getElementById(e))return new Promise((i,r)=>{var o;const s=document.createElement(\"style\");s.addEventListener(\"error\",r),s.textContent=t,s.setAttribute(\"id\",e);const d=null!==(o=document.head)&&void 0!==o?o:document.body;d?(n&&d.childElementCount>0?document.head.insertBefore(s,d.firstElementChild):document.head.appendChild(s),i()):r(new Error(\"Couldn't find parent element\"))})}async executePromise(e,t){try{const n=await e;this.emit(t,{data:n})}catch(e){this.emitError(e,t)}}emitError(e,t=\"web-error\"){\"object\"==typeof e&&(null==e?void 0:e.message)?this.emit(t,{err:this.serializeError(e)}):this.emit(t,{err:e})}elementIdFromHref(e){return e.replace(/^[:]*:\\/\\//,\"\").replace(/[^a-z0-9]/g,\"\")}serializeError(e){const{name:t,message:n,stack:i,...r}=e;return Object.keys(r).reduce((e,t)=>{const n=r[t];return n instanceof HTMLElement||(e[t]=n),e},{name:t,message:n,stack:i})}}class t extends e{get androidWebViewBridge(){if(\"undefined\"!=typeof androidWebViewBridge)return androidWebViewBridge}emitEvent(e,t){this.androidWebViewBridge.emitEvent(e,t)}}const n=\"ns-bridge-ready\",i=window;if(!i.nsWebViewBridge){i.nsWebViewBridge=new t;for(const e of[n,\"ns-brige-ready\"])\"undefined\"!=typeof CustomEvent?window.dispatchEvent(new CustomEvent(e,{detail:i.nsWebViewBridge})):window.dispatchEvent(new Event(e))}" + '})();';
export const metadataViewPort: string = "!function(e){const i={initialScale:1},a=e.document;let t=a.querySelector('head meta[name=\"viewport\"]');t||(t=a.createElement(\"meta\"),t.setAttribute(\"name\",\"viewport\"),a.head.appendChild(t));let l=\"<%= VIEW_PORT %>\";l&&\"string\"!=typeof l||(l=i);const{initialScale:n=i.initialScale,width:s,height:c,userScalable:m,minimumScale:o,maximumScale:u}=l,r=[`initial-scale=${n}`];if(s&&r.push(`width=${s}`),c&&r.push(`height=${c}`),\"boolean\"==typeof m)r.push(\"user-scalable=\"+(m?\"yes\":\"no\"));else if(\"string\"==typeof m){const e=`${m}`.toLowerCase();\"yes\"===e?r.push(\"user-scalable=yes\"):\"no\"===e&&r.push(\"user-scalable=no\")}o&&r.push(`minimum-scale=${o}`),u&&r.push(`maximum-scale=${u}`),t.setAttribute(\"content\",r.join(\", \"))}(window);";
2 changes: 1 addition & 1 deletion src/webview/nativescript-webview-bridge-loader.ios.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@

export const webViewBridge: string = "class e{constructor(){this.t={}}onNativeEvent(e,t){const n=this.t[e];if(null==n?void 0:n.length)for(const e of n)if(!1===(null==e?void 0:e(t)))break}on(e,t){if(!t)return;let n=this.t[e];n||(n=this.t[e]=[]),n.push(t)}addEventListener(e,t){this.on(e,t)}off(e,t){if(!e)return void(this.t={});let n=this.t[e];n&&(t?(n=this.t[e]=n.filter((e=>e!==t)),0===n.length&&delete this.t[e]):delete this.t[e])}removeEventListener(e,t){return this.off(e,t)}emit(e,t){this.emitEvent(e,JSON.stringify(t))}async injectJavaScriptFile(e){const t=this.elementIdFromHref(e);if(!document.getElementById(t))return new Promise(((n,o)=>{const i=document.createElement(\"script\");i.async=!0,i.setAttribute(\"id\",t),i.addEventListener(\"error\",(e=>{o(this.serializeError(e)),i.parentElement&&i.parentElement.removeChild(i)})),i.addEventListener(\"load\",(function(){window.requestAnimationFrame((()=>{n()})),i.parentElement&&i.parentElement.removeChild(i)})),i.src=e,document.body.appendChild(i)}))}async injectJavaScript(e,t){if(!document.getElementById(e))return new Promise(((n,o)=>{const i=document.createElement(\"script\");i.setAttribute(\"id\",e),i.addEventListener(\"error\",(function(e){o(e),i.parentElement&&i.parentElement.removeChild(i)})),i.text=t,document.body.appendChild(i),window.requestAnimationFrame((()=>n()))}))}async injectStyleSheetFile(e,t){const n=this.elementIdFromHref(e);if(!document.getElementById(n))return new Promise(((o,i)=>{const r=document.createElement(\"link\");r.addEventListener(\"error\",(e=>{i(e),r.parentElement&&r.parentElement.removeChild(r)})),r.addEventListener(\"load\",(()=>{window.requestAnimationFrame((()=>{o()}))})),r.setAttribute(\"id\",n),r.setAttribute(\"rel\",\"stylesheet\"),r.setAttribute(\"type\",\"text/css\"),r.setAttribute(\"href\",e),document.head&&(t&&document.head.childElementCount>0?document.head.insertBefore(r,document.head.firstElementChild):document.head.appendChild(r))}))}async injectStyleSheet(e,t,n){if(!document.getElementById(e))return new Promise(((o,i)=>{var r;const s=document.createElement(\"style\");s.addEventListener(\"error\",i),s.textContent=t,s.setAttribute(\"id\",e);const c=null!==(r=document.head)&&void 0!==r?r:document.body;c?(n&&c.childElementCount>0?document.head.insertBefore(s,c.firstElementChild):document.head.appendChild(s),o()):i(new Error(\"Couldn't find parent element\"))}))}async executePromise(e,t){try{const n=await e;this.emit(t,{data:n})}catch(e){this.emitError(e,t)}}emitError(e,t=\"web-error\"){\"object\"==typeof e&&(null==e?void 0:e.message)?this.emit(t,{err:this.serializeError(e)}):this.emit(t,{err:e})}elementIdFromHref(e){return e.replace(/^[:]*:\\/\\//,\"\").replace(/[^a-z0-9]/g,\"\")}serializeError(e){const{name:t,message:n,stack:o,...i}=e;return Object.keys(i).reduce(((e,t)=>{const n=i[t];return n instanceof HTMLElement||(e[t]=n),e}),{name:t,message:n,stack:o})}}function t(){var e,t;const n=window;if(null===(t=null===(e=null==n?void 0:n.webkit)||void 0===e?void 0:e.messageHandlers)||void 0===t?void 0:t.nsBridge)return n.webkit.messageHandlers.nsBridge}class n extends e{emitEvent(e,n){const o=t();o&&o.postMessage(JSON.stringify({eventName:e,data:n}))}}const o=\"ns-bridge-ready\",i=window;if(!i.nsWebViewBridge){i.nsWebViewBridge=new n;for(const e of[o,\"ns-brige-ready\"])\"undefined\"!=typeof CustomEvent?window.dispatchEvent(new CustomEvent(e,{detail:i.nsWebViewBridge})):window.dispatchEvent(new Event(e))}";
export const webViewBridge: string = '(function(){"use strict";' + "class e{constructor(){this.t={}}onNativeEvent(e,t){const n=this.t[e];if(null==n?void 0:n.length)for(const e of n)if(!1===(null==e?void 0:e(t)))break}on(e,t){if(!t)return;let n=this.t[e];n||(n=this.t[e]=[]),n.push(t)}addEventListener(e,t){this.on(e,t)}off(e,t){if(!e)return void(this.t={});let n=this.t[e];n&&(t?(n=this.t[e]=n.filter(e=>e!==t),0===n.length&&delete this.t[e]):delete this.t[e])}removeEventListener(e,t){return this.off(e,t)}emit(e,t){this.emitEvent(e,JSON.stringify(t))}async injectJavaScriptFile(e){const t=this.elementIdFromHref(e);if(!document.getElementById(t))return new Promise((n,o)=>{const i=document.createElement(\"script\");i.async=!0,i.setAttribute(\"id\",t),i.addEventListener(\"error\",e=>{o(this.serializeError(e)),i.parentElement&&i.parentElement.removeChild(i)}),i.addEventListener(\"load\",function(){window.requestAnimationFrame(()=>{n()}),i.parentElement&&i.parentElement.removeChild(i)}),i.src=e,document.body.appendChild(i)})}async injectJavaScript(e,t){if(!document.getElementById(e))return new Promise((n,o)=>{const i=document.createElement(\"script\");i.setAttribute(\"id\",e),i.addEventListener(\"error\",function(e){o(e),i.parentElement&&i.parentElement.removeChild(i)}),i.text=t,document.body.appendChild(i),window.requestAnimationFrame(()=>n())})}async injectStyleSheetFile(e,t){const n=this.elementIdFromHref(e);if(!document.getElementById(n))return new Promise((o,i)=>{const r=document.createElement(\"link\");r.addEventListener(\"error\",e=>{i(e),r.parentElement&&r.parentElement.removeChild(r)}),r.addEventListener(\"load\",()=>{window.requestAnimationFrame(()=>{o()})}),r.setAttribute(\"id\",n),r.setAttribute(\"rel\",\"stylesheet\"),r.setAttribute(\"type\",\"text/css\"),r.setAttribute(\"href\",e),document.head&&(t&&document.head.childElementCount>0?document.head.insertBefore(r,document.head.firstElementChild):document.head.appendChild(r))})}async injectStyleSheet(e,t,n){if(!document.getElementById(e))return new Promise((o,i)=>{var r;const s=document.createElement(\"style\");s.addEventListener(\"error\",i),s.textContent=t,s.setAttribute(\"id\",e);const c=null!==(r=document.head)&&void 0!==r?r:document.body;c?(n&&c.childElementCount>0?document.head.insertBefore(s,c.firstElementChild):document.head.appendChild(s),o()):i(new Error(\"Couldn't find parent element\"))})}async executePromise(e,t){try{const n=await e;this.emit(t,{data:n})}catch(e){this.emitError(e,t)}}emitError(e,t=\"web-error\"){\"object\"==typeof e&&(null==e?void 0:e.message)?this.emit(t,{err:this.serializeError(e)}):this.emit(t,{err:e})}elementIdFromHref(e){return e.replace(/^[:]*:\\/\\//,\"\").replace(/[^a-z0-9]/g,\"\")}serializeError(e){const{name:t,message:n,stack:o,...i}=e;return Object.keys(i).reduce((e,t)=>{const n=i[t];return n instanceof HTMLElement||(e[t]=n),e},{name:t,message:n,stack:o})}}function t(){var e,t;const n=window;if(null===(t=null===(e=null==n?void 0:n.webkit)||void 0===e?void 0:e.messageHandlers)||void 0===t?void 0:t.nsBridge)return n.webkit.messageHandlers.nsBridge}class n extends e{emitEvent(e,n){const o=t();o&&o.postMessage(JSON.stringify({eventName:e,data:n}))}}const o=\"ns-bridge-ready\",i=window;if(!i.nsWebViewBridge){i.nsWebViewBridge=new n;for(const e of[o,\"ns-brige-ready\"])\"undefined\"!=typeof CustomEvent?window.dispatchEvent(new CustomEvent(e,{detail:i.nsWebViewBridge})):window.dispatchEvent(new Event(e))}" + '})();';
export const metadataViewPort: string = "!function(e){const i={initialScale:1},a=e.document;let t=a.querySelector('head meta[name=\"viewport\"]');t||(t=a.createElement(\"meta\"),t.setAttribute(\"name\",\"viewport\"),a.head.appendChild(t));let l=\"<%= VIEW_PORT %>\";l&&\"string\"!=typeof l||(l=i);const{initialScale:n=i.initialScale,width:s,height:c,userScalable:m,minimumScale:o,maximumScale:u}=l,r=[`initial-scale=${n}`];if(s&&r.push(`width=${s}`),c&&r.push(`height=${c}`),\"boolean\"==typeof m)r.push(\"user-scalable=\"+(m?\"yes\":\"no\"));else if(\"string\"==typeof m){const e=`${m}`.toLowerCase();\"yes\"===e?r.push(\"user-scalable=yes\"):\"no\"===e&&r.push(\"user-scalable=no\")}o&&r.push(`minimum-scale=${o}`),u&&r.push(`maximum-scale=${u}`),t.setAttribute(\"content\",r.join(\", \"))}(window);";
2 changes: 1 addition & 1 deletion www-src/bridge-loader.android.ts.tmpl
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@

export const webViewBridge: string = <?= webViewBridge ?>;
export const webViewBridge: string = '(function(){"use strict";' + <?= webViewBridge ?> + '})();';
export const metadataViewPort: string = <?= metadataViewPort ?>;
2 changes: 1 addition & 1 deletion www-src/bridge-loader.ios.ts.tmpl
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@

export const webViewBridge: string = <?= webViewBridge ?>;
export const webViewBridge: string = '(function(){"use strict";' + <?= webViewBridge ?> + '})();';
export const metadataViewPort: string = <?= metadataViewPort ?>;