{"version":3,"sources":["webpack:///./src/app/app.component.scss","webpack:///./src/app/color-bar/color-bar.component.scss","webpack:///./src/app/color-bar/color-bar.component.html","webpack:///./src/polyfills.ts?5d2d","webpack:///./src/app/json-loader.service.ts","webpack:///./src async","webpack:///./src/main.ts","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/brain/brain.component.ts","webpack:///./src/app/color-bar/color-bar.component.ts","webpack:///./src/app/heatmap/heatmap.component.ts","webpack:///./src/app/store.ts","webpack:///./src/app/timeline/timeline.component.ts","webpack:///./src/environments/environment.ts"],"names":[],"mappings":"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","file":"main.bundle.js","sourcesContent":["module.exports = \"/**\\n * Applies styles for users in high contrast mode. Note that this only applies\\n * to Microsoft browsers. Chrome can be included by checking for the `html[hc]`\\n * attribute, however Chrome handles high contrast differently.\\n */\\n.md-elevation-z0 {\\n  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z1 {\\n  box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z2 {\\n  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z3 {\\n  box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z4 {\\n  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z5 {\\n  box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z6 {\\n  box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z7 {\\n  box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z8 {\\n  box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z9 {\\n  box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z10 {\\n  box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z11 {\\n  box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z12 {\\n  box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z13 {\\n  box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z14 {\\n  box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z15 {\\n  box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z16 {\\n  box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z17 {\\n  box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z18 {\\n  box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z19 {\\n  box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z20 {\\n  box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z21 {\\n  box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z22 {\\n  box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z23 {\\n  box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12); }\\n\\n.md-elevation-z24 {\\n  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); }\\n\\n[md-ripple] {\\n  overflow: hidden; }\\n\\n[md-ripple].mdRippleUnbounded {\\n  overflow: visible; }\\n\\n.md-ripple-background {\\n  background-color: rgba(0, 0, 0, 0.0588);\\n  opacity: 0;\\n  -webkit-transition: opacity 300ms linear;\\n  transition: opacity 300ms linear;\\n  position: absolute;\\n  left: 0;\\n  top: 0;\\n  right: 0;\\n  bottom: 0; }\\n\\n.mdRippleUnbounded .md-ripple-background {\\n  display: none; }\\n\\n.md-ripple-background.md-ripple-active {\\n  opacity: 1; }\\n\\n.mdRippleFocused .md-ripple-background {\\n  opacity: 1; }\\n\\n.md-ripple-foreground {\\n  background-color: rgba(0, 0, 0, 0.0588);\\n  border-radius: 50%;\\n  pointer-events: none;\\n  opacity: 0.25;\\n  position: absolute;\\n  -webkit-transition: opacity, -webkit-transform 0ms cubic-bezier(0, 0, 0.2, 1);\\n  transition: opacity, -webkit-transform 0ms cubic-bezier(0, 0, 0.2, 1);\\n  transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1);\\n  transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 0ms cubic-bezier(0, 0, 0.2, 1); }\\n\\n.md-ripple-foreground.md-ripple-fade-in {\\n  opacity: 1; }\\n\\n.md-ripple-foreground.md-ripple-fade-out {\\n  opacity: 0; }\\n\\n.cdk-visually-hidden {\\n  border: 0;\\n  clip: rect(0 0 0 0);\\n  height: 1px;\\n  margin: -1px;\\n  overflow: hidden;\\n  padding: 0;\\n  position: absolute;\\n  text-transform: none;\\n  width: 1px; }\\n\\n.cdk-overlay-container, .cdk-global-overlay-wrapper {\\n  pointer-events: none;\\n  top: 0;\\n  left: 0;\\n  height: 100%;\\n  width: 100%; }\\n\\n.cdk-overlay-container {\\n  position: fixed;\\n  z-index: 1000; }\\n\\n.cdk-global-overlay-wrapper {\\n  display: -webkit-box;\\n  display: -ms-flexbox;\\n  display: flex;\\n  position: absolute;\\n  z-index: 1000; }\\n\\n.cdk-overlay-pane {\\n  position: absolute;\\n  pointer-events: auto;\\n  box-sizing: border-box;\\n  z-index: 1000; }\\n\\n.cdk-overlay-backdrop {\\n  position: absolute;\\n  top: 0;\\n  bottom: 0;\\n  left: 0;\\n  right: 0;\\n  z-index: 1000;\\n  pointer-events: auto;\\n  -webkit-transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);\\n  transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);\\n  opacity: 0; }\\n  .cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\\n    opacity: 0.48; }\\n\\n.cdk-overlay-dark-backdrop {\\n  background: rgba(0, 0, 0, 0.6); }\\n\\n.cdk-overlay-transparent-backdrop {\\n  background: none; }\\n\\n.mdRippleFocused .md-ripple-background {\\n  background-color: rgba(255, 215, 64, 0.1); }\\n\\n[md-button].md-button-focus.md-primary .md-button-focus-overlay, [md-icon-button].md-button-focus.md-primary .md-button-focus-overlay, [md-raised-button].md-button-focus.md-primary .md-button-focus-overlay, [md-fab].md-button-focus.md-primary .md-button-focus-overlay, [md-mini-fab].md-button-focus.md-primary .md-button-focus-overlay {\\n  background-color: rgba(103, 58, 183, 0.12); }\\n\\n[md-button].md-button-focus.md-accent .md-button-focus-overlay, [md-icon-button].md-button-focus.md-accent .md-button-focus-overlay, [md-raised-button].md-button-focus.md-accent .md-button-focus-overlay, [md-fab].md-button-focus.md-accent .md-button-focus-overlay, [md-mini-fab].md-button-focus.md-accent .md-button-focus-overlay {\\n  background-color: rgba(255, 215, 64, 0.12); }\\n\\n[md-button].md-button-focus.md-warn .md-button-focus-overlay, [md-icon-button].md-button-focus.md-warn .md-button-focus-overlay, [md-raised-button].md-button-focus.md-warn .md-button-focus-overlay, [md-fab].md-button-focus.md-warn .md-button-focus-overlay, [md-mini-fab].md-button-focus.md-warn .md-button-focus-overlay {\\n  background-color: rgba(244, 67, 54, 0.12); }\\n\\n[md-button], [md-icon-button] {\\n  background: transparent; }\\n  [md-button].md-primary, [md-icon-button].md-primary {\\n    color: #673ab7; }\\n  [md-button].md-accent, [md-icon-button].md-accent {\\n    color: #ffd740; }\\n  [md-button].md-warn, [md-icon-button].md-warn {\\n    color: #f44336; }\\n  [md-button].md-primary[disabled], [md-button].md-accent[disabled], [md-button].md-warn[disabled], [md-button][disabled][disabled], [md-icon-button].md-primary[disabled], [md-icon-button].md-accent[disabled], [md-icon-button].md-warn[disabled], [md-icon-button][disabled][disabled] {\\n    color: rgba(0, 0, 0, 0.38); }\\n  [md-button]:hover.md-primary .md-button-focus-overlay, [md-icon-button]:hover.md-primary .md-button-focus-overlay {\\n    background-color: rgba(103, 58, 183, 0.12); }\\n  [md-button]:hover.md-accent .md-button-focus-overlay, [md-icon-button]:hover.md-accent .md-button-focus-overlay {\\n    background-color: rgba(255, 215, 64, 0.12); }\\n  [md-button]:hover.md-warn .md-button-focus-overlay, [md-icon-button]:hover.md-warn .md-button-focus-overlay {\\n    background-color: rgba(244, 67, 54, 0.12); }\\n\\n[md-raised-button], [md-fab], [md-mini-fab] {\\n  background-color: #fafafa; }\\n  [md-raised-button].md-primary, [md-fab].md-primary, [md-mini-fab].md-primary {\\n    color: rgba(255, 255, 255, 0.87); }\\n  [md-raised-button].md-accent, [md-fab].md-accent, [md-mini-fab].md-accent {\\n    color: rgba(0, 0, 0, 0.87); }\\n  [md-raised-button].md-warn, [md-fab].md-warn, [md-mini-fab].md-warn {\\n    color: white; }\\n  [md-raised-button].md-primary[disabled], [md-raised-button].md-accent[disabled], [md-raised-button].md-warn[disabled], [md-raised-button][disabled][disabled], [md-fab].md-primary[disabled], [md-fab].md-accent[disabled], [md-fab].md-warn[disabled], [md-fab][disabled][disabled], [md-mini-fab].md-primary[disabled], [md-mini-fab].md-accent[disabled], [md-mini-fab].md-warn[disabled], [md-mini-fab][disabled][disabled] {\\n    color: rgba(0, 0, 0, 0.38); }\\n  [md-raised-button].md-primary, [md-fab].md-primary, [md-mini-fab].md-primary {\\n    background-color: #673ab7; }\\n  [md-raised-button].md-accent, [md-fab].md-accent, [md-mini-fab].md-accent {\\n    background-color: #ffd740; }\\n  [md-raised-button].md-warn, [md-fab].md-warn, [md-mini-fab].md-warn {\\n    background-color: #f44336; }\\n  [md-raised-button].md-primary[disabled], [md-raised-button].md-accent[disabled], [md-raised-button].md-warn[disabled], [md-raised-button][disabled][disabled], [md-fab].md-primary[disabled], [md-fab].md-accent[disabled], [md-fab].md-warn[disabled], [md-fab][disabled][disabled], [md-mini-fab].md-primary[disabled], [md-mini-fab].md-accent[disabled], [md-mini-fab].md-warn[disabled], [md-mini-fab][disabled][disabled] {\\n    background-color: rgba(0, 0, 0, 0.12); }\\n\\n[md-fab], [md-mini-fab] {\\n  background-color: #ffd740;\\n  color: rgba(0, 0, 0, 0.87); }\\n\\n.md-button-toggle-checked .md-button-toggle-label-content {\\n  background-color: #e0e0e0; }\\n\\n.md-button-toggle-disabled .md-button-toggle-label-content {\\n  background-color: rgba(0, 0, 0, 0.38); }\\n\\nmd-card {\\n  background: white;\\n  color: black; }\\n\\nmd-card-subtitle {\\n  color: rgba(0, 0, 0, 0.54); }\\n\\n.md-checkbox-frame {\\n  border-color: rgba(0, 0, 0, 0.54); }\\n\\n.md-checkbox-checkmark {\\n  fill: #fafafa; }\\n\\n.md-checkbox-checkmark-path {\\n  stroke: #fafafa !important; }\\n\\n.md-checkbox-mixedmark {\\n  background-color: #fafafa; }\\n\\n.md-checkbox-indeterminate.md-primary .md-checkbox-background, .md-checkbox-checked.md-primary .md-checkbox-background {\\n  background-color: #673ab7; }\\n\\n.md-checkbox-indeterminate.md-accent .md-checkbox-background, .md-checkbox-checked.md-accent .md-checkbox-background {\\n  background-color: #ffc107; }\\n\\n.md-checkbox-indeterminate.md-warn .md-checkbox-background, .md-checkbox-checked.md-warn .md-checkbox-background {\\n  background-color: #f44336; }\\n\\n.md-checkbox-disabled.md-checkbox-checked .md-checkbox-background, .md-checkbox-disabled.md-checkbox-indeterminate .md-checkbox-background {\\n  background-color: #b0b0b0; }\\n\\n.md-checkbox-disabled:not(.md-checkbox-checked) .md-checkbox-frame {\\n  border-color: #b0b0b0; }\\n\\n.md-checkbox:not(.md-checkbox-disabled).md-primary .md-checkbox-ripple .md-ripple-foreground {\\n  background-color: rgba(103, 58, 183, 0.26); }\\n\\n.md-checkbox:not(.md-checkbox-disabled).md-accent .md-checkbox-ripple .md-ripple-foreground {\\n  background-color: rgba(255, 215, 64, 0.26); }\\n\\n.md-checkbox:not(.md-checkbox-disabled).md-warn .md-checkbox-ripple .md-ripple-foreground {\\n  background-color: rgba(244, 67, 54, 0.26); }\\n\\n.md-chip:not(.md-basic-chip) {\\n  background-color: #e0e0e0;\\n  color: rgba(0, 0, 0, 0.87); }\\n\\n.md-chip.md-chip-selected:not(.md-basic-chip) {\\n  background-color: #808080;\\n  color: rgba(255, 255, 255, 0.87); }\\n  .md-chip.md-chip-selected:not(.md-basic-chip).md-primary {\\n    background-color: #673ab7;\\n    color: rgba(255, 255, 255, 0.87); }\\n  .md-chip.md-chip-selected:not(.md-basic-chip).md-accent {\\n    background-color: #ffc107;\\n    color: rgba(0, 0, 0, 0.87); }\\n  .md-chip.md-chip-selected:not(.md-basic-chip).md-warn {\\n    background-color: #f44336;\\n    color: white; }\\n\\nmd-dialog-container {\\n  background: white; }\\n\\nmd-icon.md-primary {\\n  color: #673ab7; }\\n\\nmd-icon.md-accent {\\n  color: #ffd740; }\\n\\nmd-icon.md-warn {\\n  color: #f44336; }\\n\\n.md-input-placeholder {\\n  color: rgba(0, 0, 0, 0.38); }\\n  .md-input-placeholder.md-focused {\\n    color: #673ab7; }\\n    .md-input-placeholder.md-focused.md-accent {\\n      color: #ffd740; }\\n    .md-input-placeholder.md-focused.md-warn {\\n      color: #f44336; }\\n\\ninput.md-input-element:-webkit-autofill + .md-input-placeholder .md-placeholder-required,\\n.md-input-placeholder.md-float.md-focused .md-placeholder-required {\\n  color: #ffd740; }\\n\\n.md-input-underline {\\n  border-color: rgba(0, 0, 0, 0.12); }\\n  .md-input-underline .md-input-ripple {\\n    background-color: #673ab7; }\\n    .md-input-underline .md-input-ripple.md-accent {\\n      background-color: #ffd740; }\\n    .md-input-underline .md-input-ripple.md-warn {\\n      background-color: #f44336; }\\n\\nmd-list md-list-item, md-list a[md-list-item], md-nav-list md-list-item, md-nav-list a[md-list-item] {\\n  color: black; }\\n\\nmd-list [md-subheader], md-nav-list [md-subheader] {\\n  color: rgba(0, 0, 0, 0.54); }\\n\\nmd-divider {\\n  border-top-color: rgba(0, 0, 0, 0.12); }\\n\\nmd-nav-list .md-list-item:hover, md-nav-list .md-list-item.md-list-item-focus {\\n  background: rgba(0, 0, 0, 0.04); }\\n\\n.md-menu-content {\\n  background: white; }\\n\\n[md-menu-item] {\\n  background: transparent;\\n  color: rgba(0, 0, 0, 0.87); }\\n  [md-menu-item][disabled] {\\n    color: rgba(0, 0, 0, 0.38); }\\n  [md-menu-item] md-icon {\\n    color: rgba(0, 0, 0, 0.54); }\\n  [md-menu-item]:hover:not([disabled]), [md-menu-item]:focus:not([disabled]) {\\n    background: rgba(0, 0, 0, 0.04); }\\n\\n.md-progress-bar-background {\\n  background: url(\\\"data:image/svg+xml;charset=UTF-8,%3Csvg%20version%3D%271.1%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20xmlns%3Axlink%3D%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%27%20x%3D%270px%27%20y%3D%270px%27%20enable-background%3D%27new%200%200%205%202%27%20xml%3Aspace%3D%27preserve%27%20viewBox%3D%270%200%205%202%27%20preserveAspectRatio%3D%27none%20slice%27%3E%3Ccircle%20cx%3D%271%27%20cy%3D%271%27%20r%3D%271%27%20fill%3D%27#d1c4e9%27%2F%3E%3C%2Fsvg%3E\\\"); }\\n\\n.md-progress-bar-buffer {\\n  background-color: #d1c4e9; }\\n\\n.md-progress-bar-fill::after {\\n  background-color: #5e35b1; }\\n\\nmd-progress-bar.md-accent .md-progress-bar-background {\\n  background: url(\\\"data:image/svg+xml;charset=UTF-8,%3Csvg%20version%3D%271.1%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20xmlns%3Axlink%3D%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%27%20x%3D%270px%27%20y%3D%270px%27%20enable-background%3D%27new%200%200%205%202%27%20xml%3Aspace%3D%27preserve%27%20viewBox%3D%270%200%205%202%27%20preserveAspectRatio%3D%27none%20slice%27%3E%3Ccircle%20cx%3D%271%27%20cy%3D%271%27%20r%3D%271%27%20fill%3D%27#ffecb3%27%2F%3E%3C%2Fsvg%3E\\\"); }\\n\\nmd-progress-bar.md-accent .md-progress-bar-buffer {\\n  background-color: #ffecb3; }\\n\\nmd-progress-bar.md-accent .md-progress-bar-fill::after {\\n  background-color: #ffb300; }\\n\\nmd-progress-bar.md-warn .md-progress-bar-background {\\n  background: url(\\\"data:image/svg+xml;charset=UTF-8,%3Csvg%20version%3D%271.1%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20xmlns%3Axlink%3D%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%27%20x%3D%270px%27%20y%3D%270px%27%20enable-background%3D%27new%200%200%205%202%27%20xml%3Aspace%3D%27preserve%27%20viewBox%3D%270%200%205%202%27%20preserveAspectRatio%3D%27none%20slice%27%3E%3Ccircle%20cx%3D%271%27%20cy%3D%271%27%20r%3D%271%27%20fill%3D%27#ffcdd2%27%2F%3E%3C%2Fsvg%3E\\\"); }\\n\\nmd-progress-bar.md-warn .md-progress-bar-buffer {\\n  background-color: #ffcdd2; }\\n\\nmd-progress-bar.md-warn .md-progress-bar-fill::after {\\n  background-color: #e53935; }\\n\\nmd-progress-spinner path, md-progress-circle path, md-spinner path {\\n  stroke: #5e35b1; }\\n\\nmd-progress-spinner.md-accent path, md-progress-circle.md-accent path, md-spinner.md-accent path {\\n  stroke: #ffb300; }\\n\\nmd-progress-spinner.md-warn path, md-progress-circle.md-warn path, md-spinner.md-warn path {\\n  stroke: #e53935; }\\n\\n.md-radio-outer-circle {\\n  border-color: rgba(0, 0, 0, 0.54); }\\n  .md-radio-checked .md-radio-outer-circle {\\n    border-color: #ffd740; }\\n  .md-radio-disabled .md-radio-outer-circle {\\n    border-color: rgba(0, 0, 0, 0.38); }\\n\\n.md-radio-inner-circle {\\n  background-color: #ffd740; }\\n  .md-radio-disabled .md-radio-inner-circle {\\n    background-color: rgba(0, 0, 0, 0.38); }\\n\\n.md-radio-ripple .md-ripple-foreground {\\n  background-color: rgba(255, 215, 64, 0.26); }\\n  .md-radio-disabled .md-radio-ripple .md-ripple-foreground {\\n    background-color: rgba(0, 0, 0, 0.38); }\\n\\n.md-select-trigger {\\n  color: rgba(0, 0, 0, 0.38);\\n  border-bottom: 1px solid rgba(0, 0, 0, 0.12); }\\n  md-select:focus:not(.md-select-disabled) .md-select-trigger {\\n    color: #673ab7;\\n    border-bottom: 1px solid #673ab7; }\\n  md-select.ng-invalid.ng-touched:not(.md-select-disabled) .md-select-trigger {\\n    color: #f44336;\\n    border-bottom: 1px solid #f44336; }\\n\\n.md-select-arrow {\\n  color: rgba(0, 0, 0, 0.38); }\\n  md-select:focus:not(.md-select-disabled) .md-select-arrow {\\n    color: #673ab7; }\\n  md-select.ng-invalid.ng-touched:not(.md-select-disabled) .md-select-arrow {\\n    color: #f44336; }\\n\\n.md-select-content {\\n  background: white; }\\n\\n.md-select-value {\\n  color: rgba(0, 0, 0, 0.87); }\\n  .md-select-disabled .md-select-value {\\n    color: rgba(0, 0, 0, 0.38); }\\n\\nmd-option:hover:not(.md-option-disabled), md-option:focus:not(.md-option-disabled) {\\n  background: rgba(0, 0, 0, 0.04); }\\n\\nmd-option.md-selected {\\n  background: rgba(0, 0, 0, 0.04);\\n  color: #673ab7; }\\n\\nmd-option.md-option-disabled {\\n  color: rgba(0, 0, 0, 0.38); }\\n\\n.md-sidenav-container {\\n  background-color: #fafafa;\\n  color: rgba(0, 0, 0, 0.87); }\\n\\nmd-sidenav {\\n  background-color: white;\\n  color: rgba(0, 0, 0, 0.87); }\\n  md-sidenav.md-sidenav-push {\\n    background-color: white; }\\n\\n.md-sidenav-backdrop.md-sidenav-shown {\\n  background-color: rgba(0, 0, 0, 0.6); }\\n\\nmd-slide-toggle.md-checked:not(.md-disabled) .md-slide-toggle-thumb {\\n  background-color: #ffc107; }\\n\\nmd-slide-toggle.md-checked:not(.md-disabled) .md-slide-toggle-bar {\\n  background-color: rgba(255, 193, 7, 0.5); }\\n\\nmd-slide-toggle.md-slide-toggle-focused:not(.md-checked) .md-ink-ripple {\\n  background-color: rgba(0, 0, 0, 0.12); }\\n\\nmd-slide-toggle.md-slide-toggle-focused .md-ink-ripple {\\n  background-color: rgba(255, 193, 7, 0.26); }\\n\\nmd-slide-toggle.md-primary.md-checked:not(.md-disabled) .md-slide-toggle-thumb {\\n  background-color: #673ab7; }\\n\\nmd-slide-toggle.md-primary.md-checked:not(.md-disabled) .md-slide-toggle-bar {\\n  background-color: rgba(103, 58, 183, 0.5); }\\n\\nmd-slide-toggle.md-primary.md-slide-toggle-focused:not(.md-checked) .md-ink-ripple {\\n  background-color: rgba(0, 0, 0, 0.12); }\\n\\nmd-slide-toggle.md-primary.md-slide-toggle-focused .md-ink-ripple {\\n  background-color: rgba(103, 58, 183, 0.26); }\\n\\nmd-slide-toggle.md-warn.md-checked:not(.md-disabled) .md-slide-toggle-thumb {\\n  background-color: #f44336; }\\n\\nmd-slide-toggle.md-warn.md-checked:not(.md-disabled) .md-slide-toggle-bar {\\n  background-color: rgba(244, 67, 54, 0.5); }\\n\\nmd-slide-toggle.md-warn.md-slide-toggle-focused:not(.md-checked) .md-ink-ripple {\\n  background-color: rgba(0, 0, 0, 0.12); }\\n\\nmd-slide-toggle.md-warn.md-slide-toggle-focused .md-ink-ripple {\\n  background-color: rgba(244, 67, 54, 0.26); }\\n\\n.md-disabled .md-slide-toggle-thumb {\\n  background-color: #bdbdbd; }\\n\\n.md-disabled .md-slide-toggle-bar {\\n  background-color: rgba(0, 0, 0, 0.1); }\\n\\n.md-slide-toggle-thumb {\\n  background-color: #fafafa; }\\n\\n.md-slide-toggle-bar {\\n  background-color: rgba(0, 0, 0, 0.38); }\\n\\n.md-slider-track {\\n  background-color: rgba(0, 0, 0, 0.26); }\\n\\n.md-slider-track-fill {\\n  background-color: #ffd740; }\\n\\n.md-slider-thumb {\\n  background-color: #ffd740; }\\n\\n.md-slider-thumb-label {\\n  background-color: #ffd740; }\\n\\n.md-slider-thumb-label-text {\\n  color: rgba(0, 0, 0, 0.87); }\\n\\n[md-tab-nav-bar],\\n.md-tab-header {\\n  border-bottom: 1px solid #e0e0e0; }\\n\\n.md-tab-label:focus {\\n  background-color: rgba(209, 196, 233, 0.3); }\\n\\nmd-ink-bar {\\n  background-color: #673ab7; }\\n\\nmd-toolbar {\\n  background: whitesmoke;\\n  color: rgba(0, 0, 0, 0.87); }\\n  md-toolbar.md-primary {\\n    background: #673ab7;\\n    color: rgba(255, 255, 255, 0.87); }\\n  md-toolbar.md-accent {\\n    background: #ffd740;\\n    color: rgba(0, 0, 0, 0.87); }\\n  md-toolbar.md-warn {\\n    background: #f44336;\\n    color: white; }\\n\\n.md-tooltip {\\n  background: rgba(97, 97, 97, 0.9); }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/app.component.scss\n// module id = 1307\n// module chunks = 1","module.exports = \":host svg {\\n  position: absolute;\\n  margin: none; }\\n\\n:host canvas {\\n  position: absolute;\\n  margin: none; }\\n\\n:host .axis text {\\n  font: 65px sans-serif;\\n  font-weight: bold;\\n  fill: none;\\n  stroke: black;\\n  stroke-width: 2px; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/color-bar/color-bar.component.scss\n// module id = 1308\n// module chunks = 1","module.exports = \"<div [ngStyle]=\\\"{'width': canvasWidth + 'px', 'height': colorbarHeight  + 'px'}\\\" \\n      style=\\\"display: inline-block\\\">\\n\\n  <div class=\\\"color-bar\\\" [ngStyle]=\\\"{'width': canvasWidth + 'px', 'height': colorbarHeight  + 'px'}\\\">\\n    <canvas [width]=\\\"canvasWidth\\\" height=\\\"1\\\"\\n            [ngStyle]=\\\"{'width': canvasWidth + 'px', 'height': colorbarHeight  + 'px'}\\\">\\n    </canvas>\\n    <svg class='colorbar'[attr.width]=\\\"canvasWidth\\\" [attr.height]=\\\"colorbarHeight\\\" ></svg>\\n  \\n  </div>\\n\\n  <input type=\\\"number\\\" name='min' placeholder=\\\"min\\\" [value]=\\\"2\\\" [ngStyle]=\\\"{'width': canvasWidth/2 - 10 + 'px'}\\\"\\n  (change)=\\\"setColorMin($event.target.value)\\\" style=\\\"display: inline\\\">\\n\\n  <input type=\\\"number\\\" name='max' placeholder=\\\"max\\\" [value]=\\\"10\\\" [ngStyle]=\\\"{'width': canvasWidth/2 - 10 + 'px'}\\\"\\n  (change)=\\\"setColorMax($event.target.value)\\\" style=\\\"display: inline\\\">\\n\\n</div>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/color-bar/color-bar.component.html\n// module id = 1309\n// module chunks = 1","// This file includes polyfills needed by Angular and is loaded before the app.\n// You can add your own extra polyfills to this file.\nimport 'core-js/es6/symbol';\nimport 'core-js/es6/object';\nimport 'core-js/es6/function';\nimport 'core-js/es6/parse-int';\nimport 'core-js/es6/parse-float';\nimport 'core-js/es6/number';\nimport 'core-js/es6/math';\nimport 'core-js/es6/string';\nimport 'core-js/es6/date';\nimport 'core-js/es6/array';\nimport 'core-js/es6/regexp';\nimport 'core-js/es6/map';\nimport 'core-js/es6/set';\nimport 'core-js/es6/reflect';\n\nimport 'core-js/es7/reflect';\nimport 'zone.js/dist/zone';\n\n// If you need to support the browsers/features below, uncomment the import\n// and run `npm install import-name-here';\n// Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html\n\n// Needed for: IE9\n// import 'classlist.js';\n\n// Animations\n// Needed for: All but Chrome and Firefox, Not supported in IE9\n// import 'web-animations-js';\n\n// Date, currency, decimal and percent pipes\n// Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n// import 'intl';\n\n// NgClass on SVG elements\n// Needed for: IE10, IE11\n// import 'classlist.js';\n\n\n\n// WEBPACK FOOTER //\n// ./src/polyfills.ts","import { Injectable } from '@angular/core';\nimport { Http } from '@angular/http';\nimport { IAppState, Actions, Stc } from './store';\nimport { NgRedux, select } from 'ng2-redux';\nimport {Observable} from 'rxjs/Rx';\n\n@Injectable()\nexport class JsonLoaderService {\n\n  constructor(private http: Http, private ngRedux: NgRedux<IAppState>) { }\n\n  loadAll(){\n    const hemis = [\"lh\", \"rh\"];\n\n    const stcFiles = [\n      ['Tone_Change_Left_Right-lh.stc.json','lh'],\n      ['Tone_Change_Left_Right-rh.stc.json','rh'],\n      ['Tone_Change_Right_Left-lh.stc.json','lh'],\n      ['Tone_Change_Right_Left-rh.stc.json','rh'],\n    ];\n\n\n    const infoFiles = [\n      'Tone_Change_Left_Right-info.json',\n      'Tone_Change_Right_Left-info.json'\n    ];\n\n    let allObs$ = [];\n    hemis.forEach(hemi => {allObs$.push(this.loadVtk(hemi))});\n    stcFiles.forEach(stcFile => {allObs$.push(this.loadStc(stcFile[0], stcFile[1]))});\n    infoFiles.forEach(infoFile => {allObs$.push(this.loadConditionInfo(infoFile))});\n    allObs$.push(Observable.from([true]).do(this.ngRedux.dispatch({type: 'DATA_LOADED'})));\n    return Observable.concat(...allObs$)\n  }\n\n  loadVtk(hemi: \"lh\" | \"rh\" | String){\n    let hemiSide = hemi === 'lh' ? 'left':'right';\n    return this.http.get('/assets/geometry/'+ hemiSide +'_hemisphere.json').map(res => JSON.parse(res['_body']))\n    .do(geometry => {\n        geometry.hemi = hemi;\n        const action: Actions = {type: 'ADD_VTK', vtk: geometry};\n        this.ngRedux.dispatch(action);\n      });\n  }\n\n  loadStc(fileName: String, hemi: 'lh' | 'rh'| String){\n    return this.http.get('/assets/data/' + fileName).take(1).map(res => <Stc>JSON.parse(res['_body']))\n    .do(stc => {\n        stc.fileName = fileName;\n        stc.hemi = hemi;\n        let action: Actions = {type: 'ADD_STC', stc: stc};\n        this.ngRedux.dispatch(action);\n\n        const timeArr = stc.times.map(x=>Math.round(x));\n        action = {type: 'SET_TIME_ARRAY', timeArray: timeArr}; //convert to milliseconds\n        this.ngRedux.dispatch(action);\n      });\n  }\n\n  loadConditionInfo(fileName: String){\n    return this.http.get('/assets/data/' + fileName).take(1).map(res => JSON.parse(res['_body']))\n    .do(info => {\n        info.fileName = fileName;\n        const action: Actions = {type: 'ADD_CONDITION_INFO', conditionInfo: info}\n        this.ngRedux.dispatch(action);\n      });\n  }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/json-loader.service.ts","function webpackEmptyContext(req) {\n\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 837;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src async\n// module id = 837\n// module chunks = 1","import './polyfills.ts';\n\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport { enableProdMode } from '@angular/core';\nimport { environment } from './environments/environment';\nimport { AppModule } from './app/app.module';\n\nif (environment.production) {\n  enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.ts","import { MdListDivider } from '@angular/material';\nimport { withLatestFrom } from 'rxjs/operator/withLatestFrom';\nimport { Component, ViewChild, OnInit, ViewEncapsulation, AfterViewInit } from '@angular/core';\nimport { ColorBarComponent } from './color-bar/color-bar.component';\nimport * as THREE from 'three';\nimport { Http } from '@angular/http';\nimport { NgRedux, select } from 'ng2-redux';\nimport { IAppState, Actions } from './store';\nimport {Observable} from 'rxjs/Observable'\nimport 'rxjs/add/observable/of';\nimport 'rxjs/add/operator/withLatestFrom';\nimport 'rxjs/add/operator/switchMap';\nimport 'rxjs/add/operator/take';\nimport 'rxjs/add/operator/startWith';\nimport 'rxjs/add/operator/do';\nimport {JsonLoaderService} from './json-loader.service'\nimport * as _ from \"lodash\";\n\n//   <div style=\"display: flex; flex-direction: row\">\n//       <app-brain [stcFile]=\"'Tone_Change_Right_Left-lh.stc.json'\" hemi='lh'></app-brain>\n//       <app-brain [stcFile]=\"'Tone_Change_Right_Left-rh.stc.json'\" hemi='rh'></app-brain>\n//   </div>  \n@Component({\n    selector: 'app-root',\n    template: ` \n<div style=\"display: flex; flex-direction: column; align-items: center\">\n<md-slider thumbLabel tickInterval=\"50\" min=\"-100\" max=\"500\" step=\"2\" [value]=\"time$|async\" style= \"width: 500px\"\n    (change)=\"setTime($event.value)\"></md-slider>\n\n    <h1 *ngIf=\"time$|async\" ><input *ngIf=\"time$|async\" type = \"number\"\n    [min]=\"minTime\" [max]=\"maxTime\" [step]=\"stepTime\" [value]=\"time$|async\"\n    (change)=\"setTime($event.target.value)\"> milliseconds</h1>\n\n<color-bar></color-bar>\n<hr>\n  <div style=\"display: flex; flex-direction: row\">\n      <div style=\"display: flex; flex-direction: column\">\n      \n          <app-heatmap [infoFile]=\"'Tone_Change_Right_Left-info.json'\" [stcFile]=\"'Tone_Change_Right_Left-lh.stc.json'\"></app-heatmap>\n          <app-brain   [stcFile]=\"'Tone_Change_Right_Left-lh.stc.json'\" \n          conditionInfoFile=\"Tone_Change_Right_Left-info.json\" hemi='lh'>\n          </app-brain>\n      </div>\n      <div style=\"display: flex; flex-direction: column\">\n      \n          <app-heatmap [infoFile]=\"'Tone_Change_Right_Left-info.json'\" [stcFile]=\"'Tone_Change_Right_Left-rh.stc.json'\"></app-heatmap>\n          <app-brain   [stcFile]=\"'Tone_Change_Right_Left-rh.stc.json'\" \n          conditionInfoFile=\"Tone_Change_Right_Left-info.json\" hemi='rh'>\n          </app-brain>\n      </div>\n</div>\n\n  <div style=\"display: flex; flex-direction: row\">\n      <div style=\"display: flex; flex-direction: column\">\n      \n          <app-heatmap [infoFile]=\"'Tone_Change_Left_Right-info.json'\" [stcFile]=\"'Tone_Change_Left_Right-lh.stc.json'\"></app-heatmap>\n          <app-brain   [stcFile]=\"'Tone_Change_Left_Right-lh.stc.json'\" \n          conditionInfoFile=\"Tone_Change_Left_Right-info.json\" hemi='lh'>\n          </app-brain>\n      </div>\n      <div style=\"display: flex; flex-direction: column\">\n      \n          <app-heatmap [infoFile]=\"'Tone_Change_Left_Right-info.json'\" [stcFile]=\"'Tone_Change_Left_Right-rh.stc.json'\"></app-heatmap>\n          <app-brain   [stcFile]=\"'Tone_Change_Left_Right-rh.stc.json'\" \n          conditionInfoFile=\"Tone_Change_Left_Right-info.json\" hemi='rh'>\n          </app-brain>\n      </div>\n</div>\n</div>\n                `,\n    styleUrls: ['./app.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n})\n\nexport class AppComponent implements AfterViewInit {\n    @select((s: IAppState) => s.timeIndex) timeIndex$;\n    @select((s: IAppState) => s.timeArray) timeArray$;\n    @select((s: IAppState) => s.dataLoaded) dataLoaded$;\n\n    time$: Observable<any>;\n    minTime: number;\n    maxTime: number;\n    stepTime: number;\n\n    constructor(private ngRedux: NgRedux<IAppState>, private dataLoader: JsonLoaderService) {  }\n\n    ngAfterViewInit() {\n        this.dataLoader.loadAll().subscribe();\n        this.time$ = this.timeArray$.filter(x => x !== null).do(timeArray => {\n            this.minTime  = timeArray[0];\n            this.maxTime  = timeArray[timeArray.length - 1];\n            this.stepTime = timeArray[1] - timeArray[0];\n        }).switchMap( timeArray => {\n            return this.timeIndex$.filter(x => x !== null).map(ix => timeArray[ix]);\n        }\n        );\n      }\n\n    setTime(inputValue) {\n\n        this.timeArray$.take(1).subscribe(timeArray=>{\n            const action: Actions = { type: 'SET_TIME',\n            timeIndex: timeArray.indexOf(+inputValue)\n        };\n             console.log(action, timeArray, inputValue, timeArray.indexOf(+inputValue))\n\n            this.ngRedux.dispatch(action);\n        });\n    }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.component.ts","import { DevToolsExtension } from 'ng2-redux/lib/components/dev-tools';\n// angular\nimport { BrowserModule } from '@angular/platform-browser';\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA, isDevMode } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HttpModule } from '@angular/http';\n\n// 3rd party\nimport { D3Service } from 'd3-ng2-service'; // <-- import statement\nimport { NgRedux, NgReduxModule } from 'ng2-redux';\nimport { MaterialModule } from '@angular/material';\nimport 'hammerjs';\nimport { AngularFireModule } from 'angularfire2';\n\n// my services\n// import {CortexService} from './services/cortex.service';\nimport { IAppState, Initial_State, rootReducer } from './store';\nimport {JsonLoaderService} from './json-loader.service'\n\n// my components\nimport { AppComponent } from './app.component';\nimport { ColorBarComponent } from './color-bar/color-bar.component';\n\n\nimport { BrainComponent } from './brain/brain.component';\nimport { TimelineComponent } from './timeline/timeline.component';\nimport { HeatmapComponent } from './heatmap/heatmap.component';\n\n@NgModule({\n  declarations: [\n    AppComponent,\n    ColorBarComponent,\n    BrainComponent,\n    TimelineComponent,\n    HeatmapComponent\n  ],\n  imports: [\n    BrowserModule,\n    FormsModule,\n    HttpModule,\n    NgReduxModule,\n    MaterialModule.forRoot(),\n    AngularFireModule.initializeApp({\n      apiKey: \"AIzaSyDMohBmhN4j6PCQvrSMp7fFOtiH1AEWL4E\",\n      authDomain: \"brainbrowser-ab65c.firebaseapp.com\",\n      databaseURL: \"https://brainbrowser-ab65c.firebaseio.com\",\n      storageBucket: \"brainbrowser-ab65c.appspot.com\",\n      messagingSenderId: \"400307061060\"\n    }),\n  ],\n  providers: [D3Service,JsonLoaderService],\n  bootstrap: [AppComponent],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\n\nexport class AppModule {\n  constructor(ngRedux: NgRedux<IAppState>, devTools: DevToolsExtension) {\n    let enhancer = isDevMode() ? [devTools.enhancer()] : [];\n    let middleware = [];\n    ngRedux.configureStore(rootReducer, Initial_State, middleware, []);\n\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.module.ts","import { Observable } from 'rxjs/Rx';\n\n\nimport { Component, ViewChild, OnInit, ViewEncapsulation, Input, AfterViewInit } from '@angular/core';\nimport { ColorBarComponent } from '../color-bar/color-bar.component';\nimport * as THREE from 'three'\nimport { Http } from '@angular/http';\nimport { D3Service, D3, Selection, ScaleSequential } from 'd3-ng2-service';\nimport { NgRedux, select } from 'ng2-redux';\nimport { IAppState, Actions, Stc } from '../store';\nimport 'rxjs/add/operator/concat'\nimport * as _ from \"lodash\";\n\n@Component({\n  selector: 'app-brain',\n  template: `\n            <div #canvasid style=\"\n                width: 510px;\n                height: 370px;\"\n                ></div>\n\n                `,\n  encapsulation: ViewEncapsulation.None\n})\n\n\nexport class BrainComponent implements OnInit {\n  @Input() color_min: number = 1;\n  @Input() color_max: number = 5;\n  @Input() hemi: string;\n  @Input() stcFile: string;\n  @Input() conditionInfoFile = 'Tone_Change_Left_Right-info.json';\n\n  private tp;\n  private scene: THREE.Scene;\n  private camera: THREE.PerspectiveCamera;\n  private renderer: THREE.WebGLRenderer;\n  private controls: THREE.TrackballControls;\n\n  private mesh: THREE.Mesh;\n  private verts_per_hemi = 2562; // set number of verts\n  private stc_loaded = false;\n  public stc_colors;\n  public stc_colors_up2date;\n  public stc_data: Stc;\n  public d3;\n  private color_scale: ScaleSequential<number>;\n  title = 'app works!';\n\n  @ViewChild('canvasid') canvas;\n  @ViewChild('image') canvasImage;\n  @select((s: IAppState) => s.colorMin)  colorMin$;\n  @select((s: IAppState) => s.colorMax)  colorMax$;\n  @select((s: IAppState) => s.timeIndex) timeIndex$;\n  @select((s: IAppState) => s.stcs) stc$;\n  @select((s: IAppState) => s.vtks) vtk$;\n  @select((s: IAppState) => s.dataLoaded) dataLoaded$;\n\n\n  constructor(private http: Http, d3Service: D3Service, private ngRedux: NgRedux<IAppState>) {\n    this.d3 = d3Service.getD3();\n  }\n\n  ngOnInit() {\n    this.color_scale = this.d3.scaleSequential(this.d3.interpolateWarm).domain([this.color_min, this.color_max]);\n\n    this.init(this.canvas.nativeElement, this.hemi);\n    \n    const timeOrColorChange$ = this.colorMin$\n        .combineLatest(this.colorMax$, this.timeIndex$,\n         (min, max, time) => {\n           console.log('calc verts', this.stc_data, this.color_scale, time, min)\n          console.log('brain time', min, max, time, this.stc_data)\n          this.color_scale.domain([min, max]);\n          let colors = this.calculateVertexColors(this.stc_data, this.color_scale, time, min);\n          this.renderVertexColors(colors);\n         });\n\n    Observable.concat(this.dataLoaded$.take(1),\n      this.vtk$.map(arr=> arr.filter(x => x.hemi === this.hemi)).filter(x=>x.length>0)\n      .do(geo => this.onGeometryLoaded(geo[0], this.hemi)).take(1),\n      this.stc$.map(arr=> arr.filter(x => x.fileName === this.stcFile)).filter(x=>x.length>0)\n      .do(stc => this.initFromLoadedStc(stc[0], this.hemi)).take(1),\n      timeOrColorChange$).subscribe(x=>console.log('update brain'));\n  }\n\n  public initFromLoadedStc(stc_data: Stc, hemi: string) {\n    this.stc_data = stc_data;\n    this.stc_data.times = this.stc_data.times.map(x=>Math.round(x*1000));\n    this.stc_colors = Array.apply(null, Array(this.stc_data.times.length - 1)).map(Array.prototype.valueOf, []);\n    this.stc_loaded = true; //todo redux state\n\n    let colors = this.calculateVertexColors(this.stc_data, this.color_scale, 0, this.color_min);\n    this.renderVertexColors(colors);\n  }\n\n  public calculateVertexColors(stc: Stc,\n    colorScale: ScaleSequential<number>,\n    timePoint: number, \n    greyThresh: number): Array<number> {\n    //returns Array formated for three BufferAttribute\n\n    var data = stc.data[timePoint];\n    var lutColors: number[] = [];\n\n    for (var i = 0; i < this.verts_per_hemi; i++) {\n      var color_obj: any = colorScale(data[i]);\n\n      var color = data[i] > greyThresh ? this.d3.rgb(color_obj) : this.d3.color(\"gray\");  //ignore\n      if (color === undefined) {\n        console.log(\"ERROR: \" + data[i]);\n      } else {\n        lutColors[3 * i]     = color.r / 255.0;\n        lutColors[3 * i + 1] = color.g / 255.0;\n        lutColors[3 * i + 2] = color.b / 255.0;\n      }\n    }\n\n    return lutColors;\n  }\n\n  renderVertexColors(lutColors): void {\n    const brainMesh = <THREE.Mesh>this.scene.getObjectByName(this.hemi);\n    let brainGeo = <THREE.BufferGeometry>brainMesh.geometry;\n    let brainAttr = <THREE.BufferAttribute>brainGeo.attributes;\n    brainAttr.color.array = new Float32Array(lutColors);\n    brainAttr.color.needsUpdate = true;\n  }\n\n  init(container: HTMLElement, hemi: string) {\n    this.hemi = hemi;\n    var w = 510;\n    var h = 370;\n    var fullWidth = w * 2;\n    var fullHeight = h * 2;\n\n    this.scene = new THREE.Scene();\n    this.camera = new THREE.PerspectiveCamera(20, container.clientWidth / container.clientHeight, 1, 10000);\n    this.camera.setViewOffset(fullWidth, fullHeight, w * .5, h * .5, w, h);\n\n    this.camera.position.set(-140, 15, 12);\n    this.camera.lookAt(new THREE.Vector3(0, 0, 0));\n    // this.controls = new THREE.TrackballControls(this.camera, container);\n\n    //LIGHTS\n    // var light_color = new THREE.Color('rgb(192,192,192)');\n    var light_color = new THREE.Color('rgb(100,100,100)');\n    var light_strength = .2;\n    var directionalLight = new THREE.DirectionalLight(); //light_color.getHex, light_strength\n    directionalLight.position.set(-194, 15, 12);\n    directionalLight.color.set(light_color)\n    directionalLight.name = 'directionalLight';\n    this.scene.add(directionalLight);\n\n    // var directionalLight = new THREE.DirectionalLight();// light_color, light_strength );\n    // directionalLight.position.set(194, 15, 12);\n    // directionalLight.name = 'directionalLight';\n    // this.scene.add(directionalLight);\n\n    var ambientLight = new THREE.AmbientLight(); //\n    ambientLight.name = 'ambientLight';\n    this.scene.add(this.camera);\n    this.scene.add(ambientLight)\n    this.renderer = new THREE.WebGLRenderer({ antialias: true });\n    this.renderer.setClearColor(0xffffff);\n    this.renderer.setPixelRatio(window.devicePixelRatio);\n    this.renderer.setSize(w, h);\n    container.appendChild(this.renderer.domElement);\n\n    this.renderer.setSize(container.clientWidth, container.clientHeight);\n    // start animation\n    this.animate();\n\n    // bind to window resizes\n    // window.addEventListener('resize', _ => this.onResize());\n  }\n\n  public animate() {\n    window.requestAnimationFrame(_ => this.animate());\n    // this.controls.update();\n    this.renderer.render(this.scene, this.camera);\n  }\n\n  onGeometryLoaded(geo, hemi) {\n\n    var loader = new THREE.BufferGeometryLoader();\n    let geometry = loader.parse(geo)\n\n    var material = new THREE.MeshLambertMaterial({\n      side: THREE.FrontSide,\n      vertexColors: THREE.VertexColors,\n    });\n\n    geometry.center();\n    geometry.computeVertexNormals();\n    geometry.normalizeNormals();\n    var lutColors = Array.apply(null, Array(this.verts_per_hemi * 3)).map(Number.prototype.valueOf, .5); // zeros for RGB\n    for (var i = 0; i < this.verts_per_hemi * 3; i++) {\n      lutColors[i] = Math.random();\n    }\n\n    geometry.addAttribute('color', new THREE.BufferAttribute(new Float32Array(lutColors), 3));\n    \n    \n    let brainAttr   = <THREE.BufferAttribute>geometry.attributes;\n    brainAttr.color.dynamic = true;\n\n    this.mesh = new THREE.Mesh(geometry, material);\n    this.mesh.castShadow = true;\n    this.mesh.receiveShadow = true;\n    this.mesh.position.set(0, 0, 0);\n    this.mesh.rotateX(-30);\n    this.mesh.rotateY(Math.PI);\n\n    if (hemi === 'lh') {\n      this.mesh.rotateZ(Math.PI);\n      this.mesh.rotateX(Math.PI / 12.5);\n    }\n\n    this.mesh.scale.multiplyScalar(0.2);\n    this.mesh.name = hemi;\n    this.scene.add(this.mesh);\n  }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/brain/brain.component.ts","import { Subscription } from 'rxjs/Rx';\nimport { AfterViewInit, Component, ElementRef, Input, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport { D3Service, D3, Selection } from 'd3-ng2-service';\nimport { NgRedux, select } from 'ng2-redux';\nimport { IAppState, Actions } from '../store';\nimport 'rxjs/add/operator/combineLatest'\n\n@Component({\n  selector: 'color-bar',\n  templateUrl: './color-bar.component.html',\n  styleUrls: ['./color-bar.component.scss']\n})\n\nexport class ColorBarComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n  private htmlElement; // Host HTMLElement\n  private d3ParentElement;\n  @Input() canvasWidth = 600;\n  @Input() colorbarHeight = 50;\n  sub;\n  private subscriptions: Array<Subscription> = [];\n\n  public d3: D3; // <-- Define the private member which will hold the d3 reference\n  private parentNativeElement: any;\n  // @select() counter;\n  @select((s: IAppState) => s.colorMin) colorMin$;\n  @select((s: IAppState) => s.colorMax) colorMax$;\n  @select((s: IAppState) => s.timeIndex) timeIndex$;\n\n\n  constructor(element: ElementRef, d3Service: D3Service, private ngRedux: NgRedux<IAppState>) {\n    this.d3 = d3Service.getD3(); // <-- obtain the d3 object from the D3 Service\n    this.d3ParentElement = this.d3.select(element.nativeElement);\n  }\n\n  setColorMin(inputValue) {\n    const action: Actions = { type: 'SET_COLOR_MIN', colorMin: inputValue };\n    this.ngRedux.dispatch(action);\n  }\n\n  setColorMax(inputValue) {\n    const action: Actions = { type: 'SET_COLOR_MAX', colorMax: inputValue };\n    this.ngRedux.dispatch(action);\n  }\n\n  ngOnInit() {\n\n\n  }\n\n  ngAfterViewInit(){\n    this.renderColorBar();\n    this.renderD3Axis();\n      this.sub =  this.colorMin$\n        .combineLatest(this.colorMax$, (min, max) => this.transitionD3Axis(min, max)).subscribe(x=>console.log('update colorbar'));\n  }\n\n  ngOnDestroy() {\n    this.sub.unsubscribe();\n  };\n\n  ngOnChanges() {\n  }\n\n  renderColorBar() {\n    const canvas = this.d3ParentElement.select('canvas').node();\n    const context = canvas.getContext('2d');\n\n    let image = context.createImageData(canvas.width, 1); // context is a canvas to draw on\n    for (let i = 0, k = 0; i < canvas.width; ++i, k += 4) {\n      let c = this.d3.rgb(this.d3.interpolateWarm(i / (canvas.width - 1)));\n      image.data[k] = c.r;\n      image.data[k + 1] = c.g;\n      image.data[k + 2] = c.b;\n      image.data[k + 3] = 255;\n    }\n\n    context.putImageData(image, 0, 0);\n  }\n\n  renderD3Axis() { //todo service\n    const svg = this.d3.select('svg.colorbar'),\n      margin = { top: 0, left: 0, bottom: 0, right: 0 },\n      width = +svg.attr('width') - margin.left - margin.right,\n      height = +svg.attr('height') - margin.top - margin.bottom;\n\n    let xScale = this.d3.scaleLinear().domain([0, 10]).range([20, width - 20]);\n    let xAxisFunc = this.d3.axisBottom(xScale);\n\n    let g = svg.append('g')\n      .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')'); // aligns canvas and axis\n\n    g.append('g')\n      .attr('class', 'axis')\n      .call(xAxisFunc).selectAll('text')\n      .attr('font', '65px sans-serif');\n\n  }\n\n  transitionD3Axis(min, max) {\n    let xScale = this.d3.scaleLinear().domain([min, max]).range([20, this.canvasWidth - 20]);\n    let xAxisFunc = this.d3.axisBottom(xScale);\n    this.d3.select('.axis').call(xAxisFunc);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/color-bar/color-bar.component.ts","import { Observable } from 'rxjs/Rx';\ninterface Stc {\n  data: Array<Array<number>>;\n  times: number[];\n}\n\nimport { Component, ViewChild, OnInit, ViewEncapsulation, Input, AfterViewInit, ChangeDetectionStrategy } from '@angular/core';\nimport { ColorBarComponent } from '../color-bar/color-bar.component';\nimport * as THREE from 'three'\nimport { Http } from '@angular/http';\nimport { D3Service, D3, Selection, ScaleSequential } from 'd3-ng2-service';\nimport { NgRedux, select } from 'ng2-redux';\nimport { IAppState, Actions } from '../store';\nimport 'rxjs/add/operator/concat'\nimport * as _ from \"lodash\"; //\n\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.Default,\n  selector: 'app-heatmap',\n  template: `\n    <md-card class=\"color-bar\" [ngStyle]=\"{'width': canvasWidth + 20 + 'px', 'height': canvasHeight + 40  + 'px'}\"\n    style=\"display: flex; justify-content: center; flex-direction: column; align-items: center; padding: 0\">\n    <div>Activty for brain verticies and times with stimuli markers</div>\n      <canvas #image [ngStyle]=\"{'width': canvasWidth - margin.left - margin.right + 1 + 'px', 'height': canvasHeight  + 'px'}\"\n      (click)=\"canvasClicked($event)\" style=\"cursor:pointer\"></canvas> \n      <svg #heatmap [attr.width]=\"canvasWidth\" [attr.height]=\"'50'\" >\n      \n      <line stroke=\"grey\" y1=\"0\" y2=\"20\" [attr.x1]=\"pixelTime\" [attr.x2]=\"pixelTime\" style=\"z-index: -1\"></line>\n      <text text-anchor=\"middle\" dominant-baseline=\"middle\" [attr.x]=\"pixelTime\" y=\"25\">{{timeMs}}ms</text>\n            <rect [attr.x]=\"stims?.stim1.x1\" width=\"70\" y = \"32\" height=\"5\" stroke=\"#0057e7\"  fill=\"#0057e7\"  style=\"cursor:none\"\n            (mousemove)=\"showTooltip($event, 'stim1')\" (mouseout)=\"hideTooltip($event)\"> </rect>\n            <rect [attr.x]=\"stims?.stim2.x1\" width=\"70\" y = \"32\" height=\"5\" stroke=\"#0057e7\"  fill=\"#0057e7\"  style=\"cursor:none\"\n            (mousemove)=\"showTooltip($event, 'stim2')\" (mouseout)=\"hideTooltip($event)\"> </rect>\n      </svg>  \n   </md-card>\n<div #tooltip class=\"toolTip\" [ngStyle]=\"{'top': pos.top + 'px','left': pos.left + 'px', 'display': pos.display}\">{{tooltipMessage}}</div>\n      \n  `,\n    styles: [`\n  .toolTip {\n\tposition: absolute;\n  display: inline-block;\n  min-width: 80px;\n  height: 20px;\n  background: none repeat scroll 0 0 #ffffff;\n  border: 1px solid black;\n  padding: 14px;\n  text-align: center;\n  pointer-events: none;\n}\n  `]\n})\nexport class HeatmapComponent implements OnInit, AfterViewInit {\n  @ViewChild('image') canvasImage;\n  @ViewChild('heatmap') heatmapSvg;\n  @select((s: IAppState) => s.colorMin)  colorMin$;\n  @select((s: IAppState) => s.colorMax)  colorMax$;\n  @select((s: IAppState) => s.timeIndex) timeIndex$;\n  @select((s: IAppState) => s.timeArray) timeArray$;\n  @select((s: IAppState) => s.stcs) stcs$;\n  @select((s: IAppState) => s.conditionInfo) conditionInfo$;\n\n  @Input() infoFile: string;\n  @Input() stcFile: string;\n  \n\n  d3; color_scale;\n  canvasWidth = 500;\n  canvasHeight = 200;\n  margin   = { top: 0, left: 10, bottom: 0, right: 10 };\n  pos     = {top: 0, left: 0, display: \"none\"}\n  tooltipMessage = \"\";\n  stims;\n  pixelTime = 0;\n  timeMs = 0;\n  svg;\n  width;\n  xScale;\n\nconstructor(private http: Http, d3Service: D3Service, private ngRedux: NgRedux<IAppState>) {\n    this.d3 = d3Service.getD3();\n\n  }\n\n  ngOnInit(){\n    this.xScale = this.d3.scaleLinear().domain([-100, 500]).range([0, this.canvasWidth-this.margin.left-this.margin.right]);\n    this.stims ={stim1: {x1: this.xScale(0)+this.margin.left, x2: this.xScale(70)},\n                   stim2: {x1: this.xScale(145)+this.margin.left, x2: this.xScale(225)}};\n\n      this.timeIndex$.combineLatest(this.timeArray$, (timeIX, timeArray) => {\n      this.pixelTime = this.xScale(timeArray[timeIX]) + this.margin.left;\n      this.timeMs = timeArray[timeIX];\n    }).subscribe(x=>console.log('heatmap update'))\n  }\n\n  ngAfterViewInit() {\n    this.svg = this.d3.select(this.heatmapSvg.nativeElement);\n    this.width = +this.svg.attr('width') - this.margin.left - this.margin.right;\n    \n    let stc$ = this.stcs$.map(arr=> arr.filter(x => x.fileName === this.stcFile)).filter(x=>x.length>0).take(1)\n    let loadStc$ = stc$.do(stc => {\n          this.color_scale = this.d3.scaleSequential(this.d3.interpolateWarm).domain([1, 5]);\n          this.timeVertsImage(stc[0], this.color_scale, 0);\n          console.log('heatmap STC', stc[0], this.stcFile === stc[0].fileName)\n          this.renderD3Axis();\n    });\n    const timeOrColorChange$ = this.colorMin$\n        .combineLatest(this.colorMax$, stc$,\n         (min, max, stc) => {\n          this.color_scale.domain([min,max])\n          this.timeVertsImage(stc[0], this.color_scale, min);\n          //update time here?\n         });\n    Observable.concat(loadStc$, timeOrColorChange$).subscribe(x=>console.log('update heatmap'));\n    \n    \n  }\n\npublic timeVertsImage(stc_data: Stc, colorScale, min){\n    var dataDims = {width: stc_data.data.length, height: stc_data.data[0].length};\n    var targetImageSizes = {width: dataDims.width, height: 1000};\n\n    var widthStepSize = dataDims.width / targetImageSizes.width;\n    var heightStepSize = dataDims.height / targetImageSizes.height;\n\n    var widthIx  = this.d3.range(0,dataDims.width,  widthStepSize).map(x=>Math.round(x));\n    var widthIx  = widthIx.length > targetImageSizes.width ? widthIx.splice(0,widthIx.length-1) : widthIx;\n    var heightIx = this.d3.range(0,dataDims.height, heightStepSize).map(x=>Math.round(x));\n    var heightIx  = heightIx.length > targetImageSizes.height ? heightIx.splice(0,heightIx.length-1) : heightIx;\n\n    let sorted = stc_data.data;\n    let context = this.canvasImage.nativeElement.getContext(\"2d\")\n    let image = context.createImageData(targetImageSizes.width, targetImageSizes.height); // context is a canvas to draw on\n\n    let count = 0;\n    heightIx.forEach((h)  => {\n      widthIx.forEach((w) => {\n\n        var color_obj: any = colorScale(sorted[w][h]);\n        if (h < 2 && w < 2){\n      }\n        var color = sorted[w][h] > min ? this.d3.rgb(color_obj) : this.d3.color(\"rgb(160,160,160)\");  // todo grey thresh\n        image.data[count] = color.r;\n        image.data[count + 1] = color.g;\n        image.data[count + 2] = color.b;\n        image.data[count + 3] = 255;\n        count+=4;\n      });\n    });\n\n    context.putImageData(image, 0, 0);\n\n  }\nrenderD3Axis() { //todo service\n    let xAxisFunc = this.d3.axisBottom(this.xScale);\n\n    let g = this.svg.append('g')\n      .attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')'); // aligns canvas and axis\n\n    g.append('g')\n      .attr('class', 'axis')\n      .call(xAxisFunc).selectAll('text')\n      .attr('font', '65px sans-serif');\n\n      // set stim1 stim2 locations\n\n\n  }\n\nshowTooltip(event: MouseEvent, stim: string) {\n  this.pos.top  = event.clientY;\n  this.pos.left = event.clientX;\n  this.pos.display = 'inline-block'\n  this.conditionInfo$.take(1).subscribe(info => info.filter(x=>x.fileName === this.infoFile).map(x=> this.tooltipMessage = x[stim]));\n}\n\nhideTooltip(event: MouseEvent) {\n  this.pos.display = \"none\";\n}\n\ncanvasClicked(event: MouseEvent) {\n    var rect = this.canvasImage.nativeElement.getBoundingClientRect();\n    var x = event.clientX - rect.left;\n    var y = event.clientY - rect.top;\n    let index = Math.round(this.xScale.invert(x));\n    index = index % 2 === 0 ? index : index-1;\n    // index = index < 0 ? 0: index; \n    this.setTime(index);\n}\nsetTime(inputValue) {\n        this.timeArray$.take(1).subscribe(timeArray=>{\n            const action: Actions = { type: 'SET_TIME', timeIndex: timeArray.indexOf(+inputValue) };\n            this.ngRedux.dispatch(action);\n        });\n    }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/heatmap/heatmap.component.ts","import { tassign } from 'tassign'\r\nexport interface IAppState {\r\n    colorMin: Number;\r\n    colorMax: Number;\r\n    timeIndex: Number;\r\n    timeArray: Array<number>;\r\n    stcs: Array<Stc>;\r\n    vtks: Array<Vtk>;\r\n    conditionInfo: Array<ConditionInfo>;\r\n    dataLoaded: boolean;\r\n};\r\n\r\nexport interface Actions {\r\n    type: 'SET_COLOR_MIN' | 'SET_COLOR_MAX' | 'SET_TIME' | 'SET_TIME_ARRAY' | 'ADD_STC' |\r\n    'ADD_CONDITION_INFO' | 'ADD_VTK' | 'DATA_LOADED';\r\n    colorMin?: Number;\r\n    colorMax?: Number;\r\n    timeIndex?: Number;\r\n    timeArray?: Array<number>;\r\n    stc?: Stc;\r\n    vtk?: Vtk;\r\n    conditionInfo?: Array<ConditionInfo>;\r\n    dataLoaded?: boolean;\r\n};\r\n\r\nexport const Initial_State: IAppState = {\r\n    colorMin: 2,\r\n    colorMax: 10,\r\n    timeIndex: 0,\r\n    timeArray: [],\r\n    stcs: [],\r\n    vtks: [],\r\n    conditionInfo: [],\r\n    dataLoaded: false\r\n};\r\n\r\nexport function rootReducer(state: IAppState, action: Actions): IAppState {\r\n    switch (action.type) {\r\n        case 'SET_COLOR_MIN':  return tassign(state, { colorMin: action.colorMin });\r\n        case 'SET_COLOR_MAX':  return tassign(state, { colorMax: action.colorMax });\r\n        case 'SET_TIME':       return tassign(state, { timeIndex: action.timeIndex });\r\n        case 'SET_TIME_ARRAY': return tassign(state, { timeArray: action.timeArray });\r\n        case 'ADD_STC':        return tassign(state, { stcs: [...state.stcs, action.stc] });\r\n        case 'ADD_VTK':        return tassign(state, { vtks: [...state.vtks, action.vtk] });\r\n        case 'ADD_CONDITION_INFO': return tassign(state, { conditionInfo: [...state.conditionInfo, action.conditionInfo] });\r\n        case 'DATA_LOADED':     return tassign(state, {dataLoaded: true});\r\n    }\r\n    return state;\r\n}\r\n\r\nexport interface Stc {\r\n  data?: Array<Array<number>>;\r\n  times?: number[];\r\n  hemi?: String | 'lh' | 'rh';\r\n  fileName?: String;\r\n};\r\n\r\nexport interface Vtk {\r\n  data?: any;\r\n  hemi?: String | 'lh' | 'rh';\r\n  fileName?: String;\r\n};\r\n\r\nexport interface ConditionInfo {\r\n  stim1?: String;\r\n  stim2?: String;\r\n  fileName?: String;\r\n};\n\n\n// WEBPACK FOOTER //\n// ./src/app/store.ts","import { MdTooltip } from '@angular/material';\nimport { Subscription } from 'rxjs/Rx';\nimport { AfterViewInit, Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { D3Service, D3, Selection,ScaleLinear } from 'd3-ng2-service';\nimport { NgRedux, select } from 'ng2-redux';\nimport { IAppState, Actions } from '../store';\nimport 'rxjs/add/operator/combineLatest';\n\n@Component({\n  selector: 'app-timeline',\n  template: `\n<div #tooltip class=\"toolTip\" [ngStyle]=\"{'top': pos.top + 'px','left': pos.right + 'px', 'display': pos.display}\">{{tooltipMessage}}</div>\n\n       `,\n  styles: [`\n  .toolTip {\n\tposition: absolute;\n  display: inline-block;\n  min-width: 80px;\n  height: 100px;\n  background: none repeat scroll 0 0 #ffffff;\n  border: 1px solid #6F257F;\n  padding: 14px;\n  text-align: center;\n  pointer-events: none;\n}\n  `]\n})\nexport class TimelineComponent implements AfterViewInit {\n  private d3ParentElement;\n  private d3: D3;\n  private svg;\n  private tooltipMessage;\n  @ViewChild('tooltip') tooltip;\n  public pos = {top: 0, right: 0, display: 'none'};\n\n  constructor(element: ElementRef, d3Service: D3Service, private ngRedux: NgRedux<IAppState>) {\n    this.d3 = d3Service.getD3(); // <-- obtain the d3 object from the D3 Service\n    this.d3ParentElement = this.d3.select(element.nativeElement);\n  }\n\n  ngAfterViewInit() {\n        console.log(this.tooltip)\n\n      let outerWidth = 600; let outerHeight = 200;\n      let margin = {left: 100, right: 50, top: 50, bottom: 50};\n      let innerWidth  = outerWidth - margin.left - margin.right;\n      let innerHeight = outerHeight - margin.top - margin.bottom;\n\n      this.svg = this.d3ParentElement.append('svg').attr('width', outerWidth).attr('height', outerHeight)\n         .append('g').attr('transform', `translate(${margin.left}, ${margin.top})`);\n\n\n    const xScale = this.d3.scaleLinear().domain([-100, 500]).range( [0, outerWidth] );\n    const yScale = this.d3.scaleBand().range( [innerHeight, 0] ).domain(['condition1', 'condition2'])\n    let   xAxisFunc = this.d3.axisBottom(xScale);\n    let   yAxisFunc = this.d3.axisLeft(yScale);\n    \n    const data = [\n      {name: 'condition1', start: 0, width: 70},\n      {name: 'condition2', start: 145, width: 70}\n      ];\n      var tooltip =  this.d3ParentElement.append(\"div\").attr(\"class\", \"toolTip\");\n\n    this.svg.selectAll(\".bar\")\n        .data(data)\n      .enter().append(\"rect\")\n        .attr(\"class\", \"bar\")\n        .attr(\"x\", d => xScale(d.start))\n        .attr(\"height\", yScale.bandwidth())\n        .attr(\"y\", function(d) { return yScale(d.name); })\n        .attr(\"width\", function(d) { return xScale(d.width - 100); })\n        .on(\"mousemove\", d => { this.tooltipMessage = d.name;\n                                this.pos.right = this.d3.event.clientX+5;\n                                this.pos.top = this.d3.event.clientY+5\n                                this.pos.display = 'inline-block' })\n    \t\t.on(\"mouseout\", d =>  { this.tooltipMessage = '', this.pos.display = 'none'})\n\n        this.svg.append(\"line\")\n        .attr('y1', 0)\n        .attr('x2', xScale(0))\n        .attr('y2', innerHeight)\n        .attr('x1', xScale(0))\n        .style(\"stroke\", \"black\")  // colour the line\n\n   \n   let yAxis = this.svg.append('g').call(yAxisFunc).selectAll('text').attr('font-size', 15);\n   let xAxis = this.svg.append('g').attr('transform', `translate(0,${innerHeight} )`).call(xAxisFunc).selectAll('text')\n                    .attr('font-size', 15);\n// var g = svg.append(\"g\")\n// \t\t.attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n  \n// d3.json(\"data.json\", function(error, data) {\n//   \tif (error) throw error;\n  \n//   \tdata.sort(function(a, b) { return a.value - b.value; });\n  \n//   \tx.domain([0, d3.max(data, function(d) { return d.value; })]);\n//     y.domain(data.map(function(d) { return d.area; })).padding(0.1);\n\n//     g.append(\"g\")\n//         .attr(\"class\", \"x axis\")\n//        \t.attr(\"transform\", \"translate(0,\" + height + \")\")\n//       \t.call(d3.axisBottom(x).ticks(5).tickFormat(function(d) { return parseInt(d / 1000); }).tickSizeInner([-height]));\n\n//     g.append(\"g\")\n//         .attr(\"class\", \"y axis\")\n//         .call(d3.axisLeft(y));\n\n//     g.selectAll(\".bar\")\n//         .data(data)\n//       .enter().append(\"rect\")\n//         .attr(\"class\", \"bar\")\n//         .attr(\"x\", 0)\n//         .attr(\"height\", y.bandwidth())\n//         .attr(\"y\", function(d) { return y(d.area); })\n//         .attr(\"width\", function(d) { return x(d.value); })\n//         .on(\"mousemove\", function(d){\n//             tooltip\n//               .style(\"left\", d3.event.pageX - 50 + \"px\")\n//               .style(\"top\", d3.event.pageY - 70 + \"px\")\n//               .style(\"display\", \"inline-block\")\n//               .html((d.area) + \"<br>\" + \"£\" + (d.value));\n//         })\n//     \t\t.on(\"mouseout\", function(d){ tooltip.style(\"display\", \"none\");});\n// });\n  }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/timeline/timeline.component.ts","// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\n// The list of which env maps to which file can be found in `angular-cli.json`.\n\nexport const environment = {\n  production: false\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/environments/environment.ts"],"sourceRoot":""}