<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->

<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
        id="cordova-plugin-splashscreen"
        version="6.0.1-dev">
    <name>Splashscreen</name>
    <description>Cordova Splashscreen Plugin</description>
    <license>Apache 2.0</license>
    <keywords>cordova,splashscreen</keywords>
    <repo>https://github.com/apache/cordova-plugin-splashscreen.git</repo>
    <issue>https://github.com/apache/cordova-plugin-splashscreen/issues</issue>

    <engines>
        <engine name="cordova-android" version=">=3.6.0" /><!-- Requires CordovaPlugin.preferences -->
        <engine name="cordova-windows" version=">=4.4.0" />
    </engines>

    <!-- android -->
    <platform name="android">
        <config-file target="res/xml/config.xml" parent="/*">
            <feature name="SplashScreen">
                <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen"/>
                <param name="onload" value="true"/>
            </feature>
        </config-file>

        <source-file src="src/android/SplashScreen.java" target-dir="src/org/apache/cordova/splashscreen" />

        <js-module src="www/splashscreen.js" name="SplashScreen">
            <clobbers target="navigator.splashscreen" />
        </js-module>
    </platform>

    <!-- windows -->
    <platform name="windows">
        <js-module src="src/windows/SplashScreenProxy.js" name="SplashScreenProxy">
            <runs />
        </js-module>

        <js-module src="www/splashscreen.js" name="SplashScreen">
            <clobbers target="navigator.splashscreen" />
        </js-module>
    </platform>

    <!-- browser -->
    <platform name="browser">
        <js-module src="src/browser/SplashScreenProxy.js" name="SplashScreenProxy">
            <runs />
        </js-module>

        <js-module src="www/splashscreen.js" name="SplashScreen">
            <clobbers target="navigator.splashscreen" />
        </js-module>
    </platform>
</plugin>
