Merge pull request #1095 from hgiesel/svgloader2

Use svg-loader to load svgs directly into ts packages
This commit is contained in:
Damien Elmes 2021-03-29 17:56:48 +10:00 committed by GitHub
commit ecb6cfdb4b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 32 additions and 18 deletions

View file

@ -1,12 +1,9 @@
load("//ts:vendor.bzl", "copy_bootstrap_css", "copy_bootstrap_icons") load("//ts:vendor.bzl", "copy_bootstrap_css")
copy_bootstrap_css(name = "bootstrap") copy_bootstrap_css(name = "bootstrap")
copy_bootstrap_icons(name = "bootstrap-icons")
files = [ files = [
"bootstrap", "bootstrap",
"bootstrap-icons",
] ]
directories = [] directories = []

View file

@ -234,7 +234,6 @@ class Editor:
_html % (bgcol, topbuts, tr.editing_show_duplicates()), _html % (bgcol, topbuts, tr.editing_show_duplicates()),
css=[ css=[
"css/vendor/bootstrap.min.css", "css/vendor/bootstrap.min.css",
"css/vendor/bootstrap-icons.css",
"css/editor.css", "css/editor.css",
], ],
js=[ js=[

View file

@ -1,5 +1,6 @@
load("//ts:prettier.bzl", "prettier", "prettier_test") load("//ts:prettier.bzl", "prettier", "prettier_test")
load("//ts:sql_format.bzl", "sql_format_setup") load("//ts:sql_format.bzl", "sql_format_setup")
load("@npm//@bazel/typescript:index.bzl", "ts_library")
prettier() prettier()
@ -13,6 +14,12 @@ prettier_test(
sql_format_setup() sql_format_setup()
ts_library(
name = "image_module_support",
srcs = ["images.d.ts"],
visibility = ["//visibility:public"],
)
# Exported files # Exported files
################# #################

View file

@ -2,6 +2,7 @@ load("@npm//@bazel/typescript:index.bzl", "ts_library")
load("//ts:prettier.bzl", "prettier_test") load("//ts:prettier.bzl", "prettier_test")
load("//ts:eslint.bzl", "eslint_test") load("//ts:eslint.bzl", "eslint_test")
load("//ts:esbuild.bzl", "esbuild") load("//ts:esbuild.bzl", "esbuild")
load("//ts:vendor.bzl", "copy_bootstrap_icons")
load("@io_bazel_rules_sass//:defs.bzl", "sass_binary") load("@io_bazel_rules_sass//:defs.bzl", "sass_binary")
sass_binary( sass_binary(
@ -21,16 +22,23 @@ ts_library(
srcs = glob(["*.ts"]), srcs = glob(["*.ts"]),
tsconfig = "//ts:tsconfig.json", tsconfig = "//ts:tsconfig.json",
deps = [ deps = [
"//ts:image_module_support",
"//ts/html-filter", "//ts/html-filter",
], ],
) )
copy_bootstrap_icons(
name = "bootstrap-icons",
icons = ["pin-angle.svg"],
)
esbuild( esbuild(
name = "editor", name = "editor",
entry_point = "index_wrapper.ts", entry_point = "index_wrapper.ts",
visibility = ["//visibility:public"], visibility = ["//visibility:public"],
deps = [ deps = [
"editor_ts", "editor_ts",
"bootstrap-icons",
], ],
) )

View file

@ -133,15 +133,18 @@ button.highlighted {
} }
} }
.icon { .icon > svg {
cursor: pointer; fill: var(--text-fg);
color: var(--text-fg); }
&.is-inactive::before { .pin-icon {
cursor: pointer;
&.is-inactive {
opacity: 0.1; opacity: 0.1;
} }
&.icon--hover::before { &.icon--hover {
opacity: 0.5; opacity: 0.5;
} }
} }

View file

@ -1,4 +1,5 @@
import { bridgeCommand } from "./lib"; import { bridgeCommand } from "./lib";
import pinIcon from "./pin-angle.svg";
function removeHoverIcon(evt: Event): void { function removeHoverIcon(evt: Event): void {
const icon = evt.currentTarget as HTMLElement; const icon = evt.currentTarget as HTMLElement;
@ -23,7 +24,8 @@ export class LabelContainer extends HTMLDivElement {
this.appendChild(this.label); this.appendChild(this.label);
this.sticky = document.createElement("span"); this.sticky = document.createElement("span");
this.sticky.className = "bi me-1 bi-pin-angle icon"; this.sticky.className = "icon pin-icon me-1";
this.sticky.innerHTML = pinIcon;
this.sticky.hidden = true; this.sticky.hidden = true;
this.appendChild(this.sticky); this.appendChild(this.sticky);

View file

@ -66,6 +66,7 @@ def _esbuild_impl(ctx):
args.add_joined(["--platform", ctx.attr.platform], join_with = "=") args.add_joined(["--platform", ctx.attr.platform], join_with = "=")
args.add_joined(["--target", ctx.attr.target], join_with = "=") args.add_joined(["--target", ctx.attr.target], join_with = "=")
args.add_joined(["--log-level", "info"], join_with = "=") args.add_joined(["--log-level", "info"], join_with = "=")
args.add_joined(["--loader", ".svg=text"], join_with = ":")
args.add_joined(["--metafile", metafile.path], join_with = "=") args.add_joined(["--metafile", metafile.path], join_with = "=")
args.add_all(ctx.attr.define, format_each = "--define:%s") args.add_all(ctx.attr.define, format_each = "--define:%s")
args.add_all(ctx.attr.external, format_each = "--external:%s") args.add_all(ctx.attr.external, format_each = "--external:%s")

1
ts/images.d.ts vendored Normal file
View file

@ -0,0 +1 @@
declare module "*.svg";

View file

@ -117,15 +117,11 @@ def copy_bootstrap_css(name = "bootstrap-css", visibility = ["//visibility:publi
visibility = visibility, visibility = visibility,
) )
def copy_bootstrap_icons(name = "bootstrap-icons", visibility = ["//visibility:public"]): def copy_bootstrap_icons(name = "bootstrap-icons", icons = [], visibility = ["//visibility:public"]):
vendor_js_lib( vendor_js_lib(
name = name, name = name,
pkg = _pkg_from_name(name), pkg = _pkg_from_name(name),
include = [ include = ["icons/{}".format(icon) for icon in icons],
"font/bootstrap-icons.css", strip_prefix = "icons/",
"font/fonts/bootstrap-icons.woff",
"font/fonts/bootstrap-icons.woff2",
],
strip_prefix = "font/",
visibility = visibility, visibility = visibility,
) )