{"mappings":"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","sources":["<anon>","packages/detector/lib/detector.ts"],"sourcesContent":["import {FlagsClass as $9ofxU$FlagsClass} from \"@detector-js/core\";\nimport {Feature as $9ofxU$Feature, AudioFeature as $9ofxU$AudioFeature, VideoFeature as $9ofxU$VideoFeature} from \"@detector-js/feature\";\nimport {Device as $9ofxU$Device, CPU as $9ofxU$CPU, GPU as $9ofxU$GPU, Platform as $9ofxU$Platform} from \"@detector-js/hardware\";\nimport {Engine as $9ofxU$Engine, Browser as $9ofxU$Browser, OS as $9ofxU$OS} from \"@detector-js/software\";\n\n/*jshint expr: true */ \n\n\n\nclass $c6177c23d7b25f5f$export$e695250628cde35 extends (0, $9ofxU$FlagsClass) {\n    #values;\n    #cssFlags;\n    #cssFlagsPrefix;\n    /**\n   * Creates an instance of Detector.\n   * @param {boolean} [cssFlags=false]\n   * @param {string} [cssFlagsPrefix='djs']\n   * @param {any} [ua=null]\n   *\n   * @memberOf Detector\n   */ constructor(ua = null, values = true, cssFlags = false, cssFlagsPrefix = \"djs\"){\n        super(ua);\n        this.#values = values;\n        this.#cssFlags = !!cssFlags ? [] : null;\n        this.#cssFlagsPrefix = cssFlagsPrefix + (!!cssFlagsPrefix ? \"--\" : \"\");\n        //! Features\n        this.checkFeature();\n        //! Software\n        this.checkEngine();\n        this.checkBrowser();\n        this.checkOS();\n        //! Hardware\n        // this.checkDevice();\n        this.checkCPU();\n        this.checkGPU();\n        this.checkPlatform();\n        this.setCssFlags();\n    // remove unnecessary memory usage\n    // delete this.booleanFlagsValuePropertyName;\n    // delete this._values;\n    // delete this._cssFlags;\n    // delete this._cssFlagsPrefix;\n    // delete this.root;\n    // delete this.process;\n    // delete this.navigator;\n    // delete this.document;\n    // delete this.ua;\n    // console.warn('DetectorJS initialized', this.toFlags());\n    }\n    //! Feature\n    /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */ checkFeature() {\n        const feature = new (0, $9ofxU$Feature)(this.ua);\n        const audio = new (0, $9ofxU$AudioFeature)(this.ua);\n        const video = new (0, $9ofxU$VideoFeature)(this.ua);\n        this.feature = feature.toFlags().merge({\n            audio: audio.toFlags(),\n            video: video.toFlags()\n        });\n        if (!!this.#cssFlags) this.#cssFlags = this.#cssFlags.concat(feature.toCssFlags(), audio.toCssFlags(), video.toCssFlags());\n    }\n    //! Software\n    /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */ checkEngine() {\n        const engine = new (0, $9ofxU$Engine)(this.ua, this.toFlags());\n        if (this.#values) this.engine = engine.toValues();\n        else this.engine = engine.toFlags();\n        if (!!this.#cssFlags) this.#cssFlags = this.#cssFlags.concat(engine.toCssFlags());\n    }\n    /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */ checkBrowser() {\n        const browser = new (0, $9ofxU$Browser)(this.ua, this.toFlags());\n        if (this.#values) this.browser = browser.toValues();\n        else this.browser = browser.toFlags();\n        if (!!this.#cssFlags) this.#cssFlags = this.#cssFlags.concat(browser.toCssFlags());\n    }\n    /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */ checkOS() {\n        const os = new (0, $9ofxU$OS)(this.ua, this.toFlags());\n        if (this.#values) this.os = os.toValues();\n        else this.os = os.toFlags();\n        if (!!this.#cssFlags) this.#cssFlags = this.#cssFlags.concat(os.toCssFlags());\n    }\n    //! Hardware\n    /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */ checkDevice() {\n        const device = new (0, $9ofxU$Device)(this.ua, this.toFlags());\n        this.device = device.toFlags();\n        if (!!this.#cssFlags) this.#cssFlags = this.#cssFlags.concat(device.toCssFlags());\n    }\n    /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */ checkCPU() {\n        const cpu = new (0, $9ofxU$CPU)(this.ua, this.toFlags());\n        if (this.#values) this.cpu = cpu.toValues();\n        else this.cpu = cpu.toFlags();\n        if (!!this.#cssFlags) this.#cssFlags = this.#cssFlags.concat(cpu.toCssFlags());\n    }\n    /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */ checkGPU() {\n        const gpu = new (0, $9ofxU$GPU)(this.ua, this.toFlags());\n        this.gpu = gpu.toFlags();\n        if (!!this.#cssFlags) this.#cssFlags = this.#cssFlags.concat(gpu.toCssFlags());\n    }\n    /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */ checkPlatform() {\n        const platform = new (0, $9ofxU$Platform)(this.ua, this.toFlags());\n        if (this.#values) this.platform = platform.toValues();\n        else this.platform = platform.toFlags();\n        if (!!this.#cssFlags) this.#cssFlags = this.#cssFlags.concat(platform.toCssFlags());\n    }\n    //! CSS Flags\n    /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */ setCssFlags() {\n        if (!!this.#cssFlags) {\n            const cssFlagsPrefixed = this.#cssFlags.map((cssFlag)=>{\n                return this.#cssFlagsPrefix + cssFlag;\n            });\n            const htmlElement = document.documentElement || document.querySelector(\"html\");\n            cssFlagsPrefixed.forEach((cssFlag)=>{\n                return htmlElement.className.replace(cssFlag, \"\");\n            });\n            htmlElement.className += cssFlagsPrefixed.join(\" \").trim();\n        }\n    }\n}\n\n\nexport {$c6177c23d7b25f5f$export$e695250628cde35 as Detector};\n//# sourceMappingURL=detector.mjs.map\n","/*jshint expr: true */\nimport { FlagsClass } from '@detector-js/core';\n\n//! Features\nimport { Feature, AudioFeature, VideoFeature } from '@detector-js/feature';\n\n//! Hardware\nimport { Platform, Device, CPU, GPU } from '@detector-js/hardware';\n\n//! Software\nimport { Browser, Engine, OS } from '@detector-js/software';\n\n/**\n *\n *\n * @export\n * @class Detector\n * @extends {FlagsClass}\n */\nexport class Detector extends FlagsClass {\n  #values: boolean;\n  #cssFlags: string[] | null;\n  #cssFlagsPrefix: string;\n\n  feature: any;\n  browser: {};\n  engine: any;\n  os: {};\n  device: any;\n  cpu: {};\n  gpu: any;\n  platform: string;\n\n  /**\n   * Creates an instance of Detector.\n   * @param {boolean} [cssFlags=false]\n   * @param {string} [cssFlagsPrefix='djs']\n   * @param {any} [ua=null]\n   *\n   * @memberOf Detector\n   */\n  constructor(ua: string | null = null, values = true, cssFlags = false, cssFlagsPrefix = 'djs') {\n    super(ua);\n\n    this.#values = values;\n    this.#cssFlags = !!cssFlags ? [] : null;\n    this.#cssFlagsPrefix = cssFlagsPrefix + (!!cssFlagsPrefix ? '--' : '');\n\n    //! Features\n    this.checkFeature();\n\n    //! Software\n    this.checkEngine();\n    this.checkBrowser();\n    this.checkOS();\n\n    //! Hardware\n    // this.checkDevice();\n    this.checkCPU();\n    this.checkGPU();\n    this.checkPlatform();\n\n    this.setCssFlags();\n\n    // remove unnecessary memory usage\n    // delete this.booleanFlagsValuePropertyName;\n    // delete this._values;\n    // delete this._cssFlags;\n    // delete this._cssFlagsPrefix;\n    // delete this.root;\n    // delete this.process;\n    // delete this.navigator;\n    // delete this.document;\n    // delete this.ua;\n\n    // console.warn('DetectorJS initialized', this.toFlags());\n  }\n\n  //! Feature\n  /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */\n  checkFeature() {\n    const feature = new Feature(this.ua);\n    const audio = new AudioFeature(this.ua);\n    const video = new VideoFeature(this.ua);\n\n    this.feature = feature.toFlags().merge({\n      audio: audio.toFlags(),\n      video: video.toFlags()\n    });\n\n    if (!!this.#cssFlags) {\n      this.#cssFlags = this.#cssFlags.concat(feature.toCssFlags(), audio.toCssFlags(), video.toCssFlags());\n    }\n  }\n\n  //! Software\n  /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */\n  checkEngine() {\n    const engine = new Engine(this.ua, this.toFlags());\n\n    if (this.#values) {\n      this.engine = engine.toValues();\n    } else {\n      this.engine = engine.toFlags();\n    }\n\n    if (!!this.#cssFlags) {\n      this.#cssFlags = this.#cssFlags.concat(engine.toCssFlags());\n    }\n  }\n\n  /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */\n  checkBrowser() {\n    const browser = new Browser(this.ua, this.toFlags());\n\n    if (this.#values) {\n      this.browser = browser.toValues();\n    } else {\n      this.browser = browser.toFlags();\n    }\n\n    if (!!this.#cssFlags) {\n      this.#cssFlags = this.#cssFlags.concat(browser.toCssFlags());\n    }\n  }\n\n  /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */\n  checkOS() {\n    const os = new OS(this.ua, this.toFlags());\n\n    if (this.#values) {\n      this.os = os.toValues();\n    } else {\n      this.os = os.toFlags();\n    }\n\n    if (!!this.#cssFlags) {\n      this.#cssFlags = this.#cssFlags.concat(os.toCssFlags());\n    }\n  }\n\n  //! Hardware\n  /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */\n  checkDevice() {\n    const device = new Device(this.ua, this.toFlags());\n\n    this.device = device.toFlags();\n\n    if (!!this.#cssFlags) {\n      this.#cssFlags = this.#cssFlags.concat(device.toCssFlags());\n    }\n  }\n\n  /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */\n  checkCPU() {\n    const cpu = new CPU(this.ua, this.toFlags());\n\n    if (this.#values) {\n      this.cpu = cpu.toValues();\n    } else {\n      this.cpu = cpu.toFlags();\n    }\n\n    if (!!this.#cssFlags) {\n      this.#cssFlags = this.#cssFlags.concat(cpu.toCssFlags());\n    }\n  }\n\n  /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */\n  checkGPU() {\n    const gpu = new GPU(this.ua, this.toFlags());\n\n    this.gpu = gpu.toFlags();\n\n    if (!!this.#cssFlags) {\n      this.#cssFlags = this.#cssFlags.concat(gpu.toCssFlags());\n    }\n  }\n\n  /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */\n  checkPlatform() {\n    const platform = new Platform(this.ua, this.toFlags());\n\n    if (this.#values) {\n      this.platform = platform.toValues();\n    } else {\n      this.platform = platform.toFlags();\n    }\n\n    if (!!this.#cssFlags) {\n      this.#cssFlags = this.#cssFlags.concat(platform.toCssFlags());\n    }\n  }\n\n  //! CSS Flags\n  /**\n   *\n   *\n   *\n   * @memberOf Detector\n   */\n  setCssFlags() {\n    if (!!this.#cssFlags) {\n      const cssFlagsPrefixed = this.#cssFlags.map((cssFlag) => {\n        return this.#cssFlagsPrefix + cssFlag;\n      });\n\n      const htmlElement = document.documentElement || document.querySelector('html');\n\n      cssFlagsPrefixed.forEach((cssFlag) => {\n        return htmlElement.className.replace(cssFlag, '');\n      });\n\n      htmlElement.className += cssFlagsPrefixed.join(' ').trim();\n    }\n  }\n}\n\nif (process.env.NODE_ENV === 'development') {\n  const packageJSON = require('../package.json');\n\n  console.log(`${packageJSON.description} v${packageJSON.version} initialized`);\n}\n"],"names":["FlagsClass","$9ofxU$FlagsClass","Feature","$9ofxU$Feature","AudioFeature","$9ofxU$AudioFeature","VideoFeature","$9ofxU$VideoFeature","Device","$9ofxU$Device","CPU","$9ofxU$CPU","GPU","$9ofxU$GPU","Platform","$9ofxU$Platform","Engine","$9ofxU$Engine","Browser","$9ofxU$Browser","OS","$9ofxU$OS","$c6177c23d7b25f5f$export$e695250628cde35","values","cssFlags","cssFlagsPrefix","constructor","ua","checkFeature","checkEngine","checkBrowser","checkOS","checkCPU","checkGPU","checkPlatform","setCssFlags","feature","audio","video","toFlags","merge","concat","toCssFlags","engine","toValues","browser","os","checkDevice","device","cpu","gpu","platform","cssFlagsPrefixed","map","cssFlag","htmlElement","document","documentElement","querySelector","forEach","className","replace","join","trim","Detector"],"version":3,"file":"detector.mjs.map"}