"""
 Copyright 2020-present Open Networking Foundation

 Licensed 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.
"""

load("@npm//@bazel/typescript:index.bzl", "ts_library")

package(default_visibility = ["//:__subpackages__"])

# We don't import from these, but the generated ngfactory code will
NG_FACTORY_ADDED_IMPORTS = [
    "@npm//@angular/animations",
    "@npm//@angular/forms",
]

ts_library(
    name = "app",
    srcs = [
        "nav/nav.component.ts",
        "onos.component.ts",
        "onos.module.ts",
        "onos.service.ts",
        "onos-routing.module.ts",
    ],
    angular_assets = [
        "onos.common.css",
        "onos.component.css",
        "onos.component.html",
        "nav/nav.component.css",
        "nav/nav.component.html",
        "nav/nav.theme.css",
    ],
    tsconfig = "//web/gui2:tsconfig.json",
    use_angular_plugin = True,
    deps = NG_FACTORY_ADDED_IMPORTS + [
        "//web/gui2-fw-lib",
        "//web/gui2/src/main/webapp/app/view/apps:gui2-view-apps",
        "//web/gui2/src/main/webapp/app/view/processor:gui2-view-processor",
        "//web/gui2/src/main/webapp/app/view/settings:gui2-view-settings",
        "//web/gui2/src/main/webapp/app/view/partition:gui2-view-partition",
        "//web/gui2/src/main/webapp/app/view/cluster:gui2-view-cluster",
        "//web/gui2/src/main/webapp/app/view/device:gui2-view-device",
        "//web/gui2/src/main/webapp/app/view/link:gui2-view-link",
        "//web/gui2/src/main/webapp/app/view/host:gui2-view-host",
        "//web/gui2/src/main/webapp/app/view/flow:gui2-view-flow",
        "//web/gui2/src/main/webapp/app/view/intent:gui2-view-intent",
        "//web/gui2/src/main/webapp/app/view/tunnel:gui2-view-tunnel",
        "//web/gui2/src/main/webapp/app/view/port:gui2-view-port",
        "//web/gui2/src/main/webapp/app/view/group:gui2-view-group",
        "//web/gui2/src/main/webapp/app/view/meter:gui2-view-meter",
        "//web/gui2/src/main/webapp/app/view/pipeconf:gui2-view-pipeconf",
        "//web/gui2-topo-lib:gui2-topo-lib",
        "//apps/faultmanagement/fm-gui2-lib:fm-gui2-lib",
        "//apps/roadm/web/roadm-gui:roadm-gui",
        "//apps/yang-gui/yang-gui2-lib:yang-gui2-lib",
        "//apps/inbandtelemetry/intApp-gui2/intApp:intapp-gui2-lib",
        "@npm//@angular/core",
        "@npm//@angular/common",
        "@npm//@angular/router",
        "@npm//@angular/platform-browser",
        "@npm//rxjs",
        "@npm//@types",
    ],
)
