diff --git a/tensorflow/tensorboard/.bowerrc b/tensorflow/tensorboard/.bowerrc
new file mode 100644
index 0000000000000000000000000000000000000000..333544ec7a8316f772b3524f40e407d2b9117b84
--- /dev/null
+++ b/tensorflow/tensorboard/.bowerrc
@@ -0,0 +1,3 @@
+{
+ "directory" : "components"
+}
\ No newline at end of file
diff --git a/tensorflow/tensorboard/.gitignore b/tensorflow/tensorboard/.gitignore
index 33117e9d630b6c566b8ecdad2fb5c65033d12a4b..343c2e963e528bd82202bc92afdab4ead95ed787 100644
--- a/tensorflow/tensorboard/.gitignore
+++ b/tensorflow/tensorboard/.gitignore
@@ -1,16 +1,25 @@
-bower_components/*
node_modules/*
typings/*
build/*
dist/tf-tensorboard-demo.html
+# Since bower components are stored in the same directory as
+# tensorboard components, we ignore everything under components
+# except our own components which start with tf-.
+components/*
+# This rule should always be in sync with TF_COMPONENTS_TYPESCRIPT_GLOB
+# in gulpfile.js
+!components/tf-*
+!components/index.html
+# Ignore the sample graph files since they are too large to
+# be in the repo.
components/tf-graph/demo/tf_model_zoo/*
-# Js files in the graph visualizer migrated to typescript. These files
-# are produced by the compiler and should not be submitted to the repo.
+# Js files in the graph visualizer produces by the typescript
+# compiler and should not be submitted to the repo.
components/tf-graph-common/lib/*.js
components/tf-graph-common/lib/scene/*.js
components/tf-event-dashboard/*.js
components/tf-categorizer/*.js
components/tf-dashboard-common/*.js
-components/**/test/*.js
+components/**/tf-test/*.js
diff --git a/tensorflow/tensorboard/components/imports/README.md b/tensorflow/tensorboard/components/imports/README.md
deleted file mode 100644
index 695698bf237da102c4314f4bfc3e640f96f8c67c..0000000000000000000000000000000000000000
--- a/tensorflow/tensorboard/components/imports/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-This file acts as import routers for third party javascript libraries,
-e.g. Plottable and D3.
-
-The "local-imports" folder contains alternate versions of the import routers
-that load from `bower_components`; it exists to faciliate local development
-with a gulp workflow.
diff --git a/tensorflow/tensorboard/components/imports/local-imports/d3.html b/tensorflow/tensorboard/components/imports/local-imports/d3.html
deleted file mode 100644
index e2797c0a1a9a938779a0ca8ffe4a1e66762f8dea..0000000000000000000000000000000000000000
--- a/tensorflow/tensorboard/components/imports/local-imports/d3.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/tensorflow/tensorboard/components/imports/local-imports/dagre.html b/tensorflow/tensorboard/components/imports/local-imports/dagre.html
deleted file mode 100644
index 29586e769de5d50a036d9c58af8d48e4898d88ce..0000000000000000000000000000000000000000
--- a/tensorflow/tensorboard/components/imports/local-imports/dagre.html
+++ /dev/null
@@ -1,5 +0,0 @@
-// hackhack for some reason getting graphlib via an import reference results in
-// out of order script evaluation
-
-
-
diff --git a/tensorflow/tensorboard/components/imports/local-imports/graphlib.html b/tensorflow/tensorboard/components/imports/local-imports/graphlib.html
deleted file mode 100644
index 4bf3528fcd3da3b68452844d83bdfc657460b589..0000000000000000000000000000000000000000
--- a/tensorflow/tensorboard/components/imports/local-imports/graphlib.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/tensorflow/tensorboard/components/imports/local-imports/lodash.html b/tensorflow/tensorboard/components/imports/local-imports/lodash.html
deleted file mode 100644
index 95f8375a1d4183d92f8903a7fd1548ee0fa8fb92..0000000000000000000000000000000000000000
--- a/tensorflow/tensorboard/components/imports/local-imports/lodash.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/tensorflow/tensorboard/components/imports/local-imports/plottable.html b/tensorflow/tensorboard/components/imports/local-imports/plottable.html
deleted file mode 100644
index dfbe77c8c44292dfa0651ea0873ffbbe5d258f42..0000000000000000000000000000000000000000
--- a/tensorflow/tensorboard/components/imports/local-imports/plottable.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/tensorflow/tensorboard/app/index.html b/tensorflow/tensorboard/components/index.html
similarity index 63%
rename from tensorflow/tensorboard/app/index.html
rename to tensorflow/tensorboard/components/index.html
index c6a1a8f80ef625b2bfb186a143e71e6a7c7716f8..8b0f87d3504a906e41fd3a7004642085b604f017 100644
--- a/tensorflow/tensorboard/app/index.html
+++ b/tensorflow/tensorboard/components/index.html
@@ -1,7 +1,7 @@
-
+
-
+
-
+
TensorBoard
diff --git a/tensorflow/tensorboard/components/tf-categorizer/demo/index.html b/tensorflow/tensorboard/components/tf-categorizer/demo/index.html
index ea3f162aa5daacc145ffb82c75eef315c97ec411..403e25da8737695a4d0de3892e581044012f0b7c 100644
--- a/tensorflow/tensorboard/components/tf-categorizer/demo/index.html
+++ b/tensorflow/tensorboard/components/tf-categorizer/demo/index.html
@@ -1,10 +1,10 @@
-
-
+
+
-
+
diff --git a/tensorflow/tensorboard/components/tf-categorizer/index.html b/tensorflow/tensorboard/components/tf-categorizer/index.html
index f08a125f7c616511fb2e2f2c5b529918e3dad8ee..5956a9789b1609d7cdb6d981ab2fdaaf863903a7 100644
--- a/tensorflow/tensorboard/components/tf-categorizer/index.html
+++ b/tensorflow/tensorboard/components/tf-categorizer/index.html
@@ -6,8 +6,8 @@
-
-
+
+
diff --git a/tensorflow/tensorboard/components/tf-collapsable-pane/demo/index.html b/tensorflow/tensorboard/components/tf-collapsable-pane/demo/index.html
index 8906b0f3daab20960a92d54fb0356cdf7f49835f..237870408b3aa6dd581e0dc6fdb9d0a07a62eed5 100644
--- a/tensorflow/tensorboard/components/tf-collapsable-pane/demo/index.html
+++ b/tensorflow/tensorboard/components/tf-collapsable-pane/demo/index.html
@@ -1,7 +1,7 @@
-
+
diff --git a/tensorflow/tensorboard/components/tf-collapsable-pane/index.html b/tensorflow/tensorboard/components/tf-collapsable-pane/index.html
index 032e5be8c83c33ba65801e0fc8622d6ee77334b1..c985bc2b52f412e909fc516bbd6c0b3699436499 100644
--- a/tensorflow/tensorboard/components/tf-collapsable-pane/index.html
+++ b/tensorflow/tensorboard/components/tf-collapsable-pane/index.html
@@ -6,8 +6,8 @@
-
-
+
+
diff --git a/tensorflow/tensorboard/components/tf-dashboard-common/tf-run-generator.html b/tensorflow/tensorboard/components/tf-dashboard-common/tf-run-generator.html
index 4d72552049b71cdcc904d68e8abb4c805cdd4142..6c3389fb7f91f54ba533863acd0e29cdd84e39d3 100644
--- a/tensorflow/tensorboard/components/tf-dashboard-common/tf-run-generator.html
+++ b/tensorflow/tensorboard/components/tf-dashboard-common/tf-run-generator.html
@@ -1,6 +1,6 @@
-
+
+
+
+
diff --git a/tensorflow/tensorboard/components/tf-imports/google/README.md b/tensorflow/tensorboard/components/tf-imports/google/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..7ff406977018d829de05b9d989946a00a16afe45
--- /dev/null
+++ b/tensorflow/tensorboard/components/tf-imports/google/README.md
@@ -0,0 +1,3 @@
+This file acts as import routers for third party javascript libraries,
+e.g. Plottable and D3 from `g3/third_party`; it exists to faciliate development
+inside google.
diff --git a/tensorflow/tensorboard/components/tf-imports/google/d3.html b/tensorflow/tensorboard/components/tf-imports/google/d3.html
new file mode 100644
index 0000000000000000000000000000000000000000..1ede44827c551b51d372505072741bd57b07baae
--- /dev/null
+++ b/tensorflow/tensorboard/components/tf-imports/google/d3.html
@@ -0,0 +1 @@
+
diff --git a/tensorflow/tensorboard/components/tf-imports/google/dagre.html b/tensorflow/tensorboard/components/tf-imports/google/dagre.html
new file mode 100644
index 0000000000000000000000000000000000000000..ea68d72e7704ed9fc6870d146e42d1c92663e136
--- /dev/null
+++ b/tensorflow/tensorboard/components/tf-imports/google/dagre.html
@@ -0,0 +1 @@
+
diff --git a/tensorflow/tensorboard/components/tf-imports/google/graphlib.html b/tensorflow/tensorboard/components/tf-imports/google/graphlib.html
new file mode 100644
index 0000000000000000000000000000000000000000..51fd0e679ded2eeb0c26e98ea33d4976d988b560
--- /dev/null
+++ b/tensorflow/tensorboard/components/tf-imports/google/graphlib.html
@@ -0,0 +1 @@
+
diff --git a/tensorflow/tensorboard/components/tf-imports/google/lodash.html b/tensorflow/tensorboard/components/tf-imports/google/lodash.html
new file mode 100644
index 0000000000000000000000000000000000000000..58f06ec84f8bbd61ad21668ce9e9670539734679
--- /dev/null
+++ b/tensorflow/tensorboard/components/tf-imports/google/lodash.html
@@ -0,0 +1 @@
+
diff --git a/tensorflow/tensorboard/components/tf-imports/google/plottable.html b/tensorflow/tensorboard/components/tf-imports/google/plottable.html
new file mode 100644
index 0000000000000000000000000000000000000000..df9acdd2715f77fd7f7cedea245793b8171e6f13
--- /dev/null
+++ b/tensorflow/tensorboard/components/tf-imports/google/plottable.html
@@ -0,0 +1,2 @@
+
+
diff --git a/tensorflow/tensorboard/components/tf-imports/graphlib.html b/tensorflow/tensorboard/components/tf-imports/graphlib.html
new file mode 100644
index 0000000000000000000000000000000000000000..03d28765abd3ed9e14ca0a29e6cd88bd0780f0cd
--- /dev/null
+++ b/tensorflow/tensorboard/components/tf-imports/graphlib.html
@@ -0,0 +1,2 @@
+
+
diff --git a/tensorflow/tensorboard/components/tf-imports/lodash.html b/tensorflow/tensorboard/components/tf-imports/lodash.html
new file mode 100644
index 0000000000000000000000000000000000000000..1e94d2c1c4c3bc5404241b30055fa0a4e85f6da1
--- /dev/null
+++ b/tensorflow/tensorboard/components/tf-imports/lodash.html
@@ -0,0 +1 @@
+
diff --git a/tensorflow/tensorboard/components/tf-imports/plottable.html b/tensorflow/tensorboard/components/tf-imports/plottable.html
new file mode 100644
index 0000000000000000000000000000000000000000..5789a5be4dc6060856a510f37b158eb13d2b864e
--- /dev/null
+++ b/tensorflow/tensorboard/components/tf-imports/plottable.html
@@ -0,0 +1,3 @@
+
+
+
diff --git a/tensorflow/tensorboard/components/tf-multi-checkbox/demo/index.html b/tensorflow/tensorboard/components/tf-multi-checkbox/demo/index.html
index e5661b98bc7474591319778d11dad903fef05909..6f4d7839f7b04d4657cb82cc9d188886a20ee628 100644
--- a/tensorflow/tensorboard/components/tf-multi-checkbox/demo/index.html
+++ b/tensorflow/tensorboard/components/tf-multi-checkbox/demo/index.html
@@ -1,8 +1,8 @@
-
-
+
+
diff --git a/tensorflow/tensorboard/components/tf-multi-checkbox/tf-multi-checkbox.html b/tensorflow/tensorboard/components/tf-multi-checkbox/tf-multi-checkbox.html
index a5447e8f5e1fdc09663b5ddd9548115d52030c11..18dc50cd54de4494ebfafc3a245294f0b6592c88 100644
--- a/tensorflow/tensorboard/components/tf-multi-checkbox/tf-multi-checkbox.html
+++ b/tensorflow/tensorboard/components/tf-multi-checkbox/tf-multi-checkbox.html
@@ -1,6 +1,6 @@
-
+