load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
load("@bazel_gazelle//:def.bzl", "gazelle")

# gazelle:prefix go.skia.org/infra
gazelle(name = "gazelle")

exports_files(["tsconfig.json"], visibility = ["//visibility:public"])

####################################################################################################
# Support for "~"-prefixed Sass imports of elements-sk styles, e.g.:                               #
#                                                                                                  #
#   @import '~elements-sk/themes/themes';                                                          #
#                                                                                                  #
# This hack is necessary to maintain compatibility with the Webpack build, which uses the          #
# css-loader plugin to inline CSS imports. Said plugin adds all NPM packages to the Sass compiler  #
# import path with the "~" prefix. See https://webpack.js.org/loaders/css-loader/#import for more. #
####################################################################################################

ELEMENTS_SK_SCSS = [
    # To regenerate this list, please run the following Bash command:
    #
    #   $ find infra-sk/node_modules/elements-sk -name "*.scss" \
    #       | sed -E "s/infra-sk\//\/\/infra-sk:/" | sort
    "//infra-sk:node_modules/elements-sk/checkbox-sk/checkbox-sk.scss",
    "//infra-sk:node_modules/elements-sk/collapse-sk/collapse-sk.scss",
    "//infra-sk:node_modules/elements-sk/colors.scss",
    "//infra-sk:node_modules/elements-sk/icon/icon-sk.scss",
    "//infra-sk:node_modules/elements-sk/multi-select-sk/multi-select-sk.scss",
    "//infra-sk:node_modules/elements-sk/nav-links-sk/nav-links-sk.scss",
    "//infra-sk:node_modules/elements-sk/radio-sk/radio-sk.scss",
    "//infra-sk:node_modules/elements-sk/select-sk/select-sk.scss",
    "//infra-sk:node_modules/elements-sk/spinner-sk/spinner-sk.scss",
    "//infra-sk:node_modules/elements-sk/styles/buttons/buttons.scss",
    "//infra-sk:node_modules/elements-sk/styles/select/select.scss",
    "//infra-sk:node_modules/elements-sk/styles/table/table.scss",
    "//infra-sk:node_modules/elements-sk/tabs-panel-sk/tabs-panel-sk.scss",
    "//infra-sk:node_modules/elements-sk/tabs-sk/tabs-sk.scss",
    "//infra-sk:node_modules/elements-sk/themes/color-palette.scss",
    "//infra-sk:node_modules/elements-sk/themes/themes.scss",
    "//infra-sk:node_modules/elements-sk/toast-sk/toast-sk.scss",
]

TILDE_ELEMENTS_SK_SCSS = [f.replace("//infra-sk:node_modules/", "~") for f in ELEMENTS_SK_SCSS]

# Recursively copies all *.scss files from //infra-sk/node_modules/elements-sk to //~elements-sk.
genrule(
    name = "~elements-sk_generator",
    srcs = ELEMENTS_SK_SCSS,
    outs = TILDE_ELEMENTS_SK_SCSS,
    cmd =
        "for FILENAME in $(SRCS); do " +
        "  TILDE_FILENAME=`echo $$FILENAME | sed -E 's/infra-sk\\/node_modules\\/(.*)/~\\1/'`; " +
        "  TILDE_DIR=$$(dirname $$TILDE_FILENAME); " +
        "  mkdir -p $(RULEDIR)/$$TILDE_DIR; " +
        "  cp $$FILENAME $(RULEDIR)/$$TILDE_FILENAME; " +
        "done",
)

# Do not use directly. Use //infra-sk:elements-sk_scss instead, which includes these files as well.
filegroup(
    name = "~elements-sk",
    srcs = TILDE_ELEMENTS_SK_SCSS,
    visibility = ["//infra-sk:__pkg__"],
)
