# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//third_party/closure_compiler/compile_js.gni")

js_type_check("closure_compile") {
  deps = [
    ":control_bar",
    ":create_profile",
    ":error_dialog",
    ":profile_browser_proxy",
    ":user_manager_pages",
    ":user_manager_tutorial",
  ]
}

js_library("control_bar") {
  deps = [
    ":profile_browser_proxy",
    "//ui/webui/resources/js:cr",
    "//ui/webui/resources/js:i18n_behavior",
  ]
}

js_library("create_profile") {
  deps = [
    ":profile_browser_proxy",
    "//ui/webui/resources/cr_elements/cr_input:cr_input",
    "//ui/webui/resources/cr_elements/cr_profile_avatar_selector:cr_profile_avatar_selector",
    "//ui/webui/resources/js:i18n_behavior",
    "//ui/webui/resources/js:util",
    "//ui/webui/resources/js:web_ui_listener_behavior",
  ]
}

js_library("error_dialog") {
}

js_library("profile_browser_proxy") {
  deps = [
    "//ui/webui/resources/js:cr",
  ]
}

js_library("user_manager_pages") {
  deps = [
    "//ui/webui/resources/cr_elements/cr_view_manager:cr_view_manager",
  ]
}

js_library("user_manager_tutorial") {
  deps = [
    "//ui/webui/resources/js:i18n_behavior",
    "//ui/webui/resources/js:util",
  ]
}
