diff --git a/packages/model-viewer/src/constants.ts b/packages/model-viewer/src/constants.ts index bcec587a51..aeb57e1ad3 100644 --- a/packages/model-viewer/src/constants.ts +++ b/packages/model-viewer/src/constants.ts @@ -73,26 +73,31 @@ export const IS_SCENEVIEWER_CANDIDATE = IS_ANDROID && !IS_FIREFOX && !IS_OCULUS; // Extend Window type with webkit property, // required to check if iOS is running within a WKWebView browser instance. declare global { - interface Window { - webkit?: any; - } + interface Window { + webkit?: any; + } } -export const IS_WKWEBVIEW = Boolean(window.webkit && window.webkit.messageHandlers); +export const IS_WKWEBVIEW = + Boolean(window.webkit && window.webkit.messageHandlers); -// If running in iOS Safari proper, and not within a WKWebView component instance, check for ARQL feature support. -// Otherwise, if running in a WKWebView instance, check for known ARQL compatible iOS browsers, including: -// Chrome (CriOS), Edge (EdgiOS), Firefox (FxiOS), Google App (GSA), DuckDuckGo (DuckDuckGo). -// All other iOS browsers / apps will fail by default. +// If running in iOS Safari proper, and not within a WKWebView component +// instance, check for ARQL feature support. Otherwise, if running in a +// WKWebView instance, check for known ARQL compatible iOS browsers, including: +// Chrome (CriOS), Edge (EdgiOS), Firefox (FxiOS), Google App (GSA), DuckDuckGo +// (DuckDuckGo). All other iOS browsers / apps will fail by default. export const IS_AR_QUICKLOOK_CANDIDATE = (() => { - if(IS_IOS){ - if(!IS_WKWEBVIEW){ - const tempAnchor = document.createElement('a'); - return Boolean(tempAnchor.relList && tempAnchor.relList.supports && tempAnchor.relList.supports('ar')); - } else { - return Boolean(/CriOS\/|EdgiOS\/|FxiOS\/|GSA\/|DuckDuckGo\//.test(navigator.userAgent)); - } + if (IS_IOS) { + if (!IS_WKWEBVIEW) { + const tempAnchor = document.createElement('a'); + return Boolean( + tempAnchor.relList && tempAnchor.relList.supports && + tempAnchor.relList.supports('ar')); } else { - return false; + return Boolean(/CriOS\/|EdgiOS\/|FxiOS\/|GSA\/|DuckDuckGo\//.test( + navigator.userAgent)); } + } else { + return false; + } })(); diff --git a/packages/model-viewer/src/extra-model.ts b/packages/model-viewer/src/extra-model.ts index 139aab4df3..23a5bb3f7d 100644 --- a/packages/model-viewer/src/extra-model.ts +++ b/packages/model-viewer/src/extra-model.ts @@ -14,14 +14,17 @@ */ import {html, ReactiveElement} from 'lit'; -import {customElement, property} from 'lit/decorators.js'; +import {property} from 'lit/decorators.js'; + +// customElement, import ModelViewerElementBase from './model-viewer-base.js'; + /** * Definition for a basic element. */ -@customElement('extra-model') +// @customElement('extra-model') export class ExtraModelElement extends ReactiveElement { @property({type: String}) src: string|null = null; @@ -29,7 +32,7 @@ export class ExtraModelElement extends ReactiveElement { return html` `; } - firstUpdated() { + connectedCallback() { // Get the parent element const modelViewer = this.closest('model-viewer') as ModelViewerElementBase; if (modelViewer) { @@ -40,9 +43,3 @@ export class ExtraModelElement extends ReactiveElement { } } } - -declare global { - interface HTMLElementTagNameMap { - 'extra-model': ExtraModelElement; - } -} diff --git a/packages/model-viewer/src/model-viewer.ts b/packages/model-viewer/src/model-viewer.ts index c2a353a617..a662af1c6e 100644 --- a/packages/model-viewer/src/model-viewer.ts +++ b/packages/model-viewer/src/model-viewer.ts @@ -13,6 +13,7 @@ * limitations under the License. */ +import {ExtraModelElement} from './extra-model.js'; import {AnimationMixin} from './features/animation.js'; import {AnnotationMixin} from './features/annotation.js'; import {ARMixin} from './features/ar.js'; @@ -28,7 +29,7 @@ import ModelViewerElementBase from './model-viewer-base.js'; export {CanvasTexture, FileLoader, Loader, NearestFilter} from 'three'; export const ModelViewerElement = -AnnotationMixin(SceneGraphMixin(StagingMixin(EnvironmentMixin(ControlsMixin( + AnnotationMixin(SceneGraphMixin(StagingMixin(EnvironmentMixin(ControlsMixin( ARMixin(LoadingMixin(AnimationMixin(ModelViewerElementBase)))))))); export type ModelViewerElement = InstanceType; @@ -36,9 +37,11 @@ export type ModelViewerElement = InstanceType; export type{RGB, RGBA} from './three-components/gltf-instance/gltf-2.0'; customElements.define('model-viewer', ModelViewerElement); +customElements.define('extra-model', ExtraModelElement); declare global { interface HTMLElementTagNameMap { 'model-viewer': ModelViewerElement; + 'extra-model': ExtraModelElement; } -} +} \ No newline at end of file diff --git a/packages/modelviewer.dev/index.html b/packages/modelviewer.dev/index.html index 699effaecd..913fb57181 100644 --- a/packages/modelviewer.dev/index.html +++ b/packages/modelviewer.dev/index.html @@ -70,7 +70,7 @@

Quick Start

- +