{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/app-log.service.ts","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/tutorial-dialog.html","./src/app/patchnotes-dialog.html","./src/app/log-dialog.html","./src/app/app.module.ts","./src/app/effects/effect.ts","./src/app/effects/effects.component.ts","./src/app/effects/effects.component.html","./src/app/home/home.component.ts","./src/app/home/home.component.html","./src/app/home/import-dialog.html","./src/app/insights.service.ts","./src/app/insights/insights.module.ts","./src/app/redirect/redirect.component.ts","./src/app/redirect/redirect.component.html","./src/app/sort-by-order.pipe.ts","./src/app/twitch.service.ts","./src/app/vtube-studio-api.service.ts","./src/environments/environment.ts","./src/main.ts","ignored|/home/runner/work/VtubeAngular/VtubeAngular/node_modules/object-inspect|./util.inspect"],"sourcesContent":["import { formatDate } from '@angular/common';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppLogService {\n\n content: string = \"\";\n private _log = new BehaviorSubject(\"\");\n log = this._log.asObservable();\n\n localeId: string;\n\n constructor(@Inject(LOCALE_ID) private locale: string) \n {\n this.localeId = locale;\n }\n\n addToLog(newLine: string)\n {\n const dateTime = formatDate(Date.now(),'long',this.locale);\n this.content += \"\\n[\" + dateTime + \"]: \" + newLine;\n this._log.next(this.content);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { HomeComponent } from './home/home.component';\nimport { RedirectComponent } from './redirect/redirect.component';\n\nconst routes: Routes = [\n { path: '', component: HomeComponent },\n { path: 'redirect', component: RedirectComponent}\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { VtubeStudioAPIService } from './vtube-studio-api.service';\nimport { CurrentModel, Plugin } from 'vtubestudio';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { HttpClient } from '@angular/common/http';\nimport { TwitchService } from './twitch.service';\nimport { HelixUser } from '@twurple/api';\nimport { Insights } from './insights.service';\nimport { AppLogService } from './app-log.service';\nimport { timer } from 'rxjs';\nimport { VtubeSudioApiV2Service } from './vtube-sudio-api-v2.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n \n})\n\nexport class AppComponent {\n title = 'T Vtube Tools';\n\n port: string;\n connected: boolean = false;\n twitchConnected: boolean = false;\n disableButtons: boolean = true;\n \n plugin: Plugin;\n currentModel: CurrentModel;\n meshes: string[] = [];\n\n kofi: string = 'kofibutton.html';\n kofiSafe: SafeResourceUrl;\n\n user: HelixUser;\n\n tokenData: any = '';\n accessToken: string = '';\n idToken: JSON;\n redirect: string = window.location.href.toString();\n twitchConnectUrl: string = 'https://id.twitch.tv/oauth2/authorize?client_id=k8j8gbuxog0umj4lphwo0oj3x077ic&redirect_uri='+this.redirect+'redirect&response_type=token+id_token&scope=openid+user:read:email+channel:read:redemptions+bits:read+chat:read+chat:edit+channel:read:subscriptions&claims={\"id_token\":{\"email\":null,\"email_verified\":null},\"userinfo\":{\"picture\":null}}';\n \n constructor(private vtsApi: VtubeStudioAPIService,\n // private vtsApiv2: VtubeSudioApiV2Service,\n private twitch: TwitchService, \n public dialog: MatDialog, \n public sanitizer: DomSanitizer, \n public httpClient: HttpClient, \n private insights: Insights,\n private appLog: AppLogService) {\n // vtsApiv2.messages.subscribe(msg =>{\n // console.log(\"Response from websocket: \" + msg);\n // });\n }\n\n ngOnInit() {\n \n this.kofiSafe = this.sanitizer.bypassSecurityTrustResourceUrl(this.kofi);\n\n this.port = localStorage.getItem('port') ?? '8001';\n\n this.vtsApi.connected.subscribe(conn => {\n this.connected = conn;\n if(conn)\n {\n this.insights.trackEvent(\"VTS Connected\");\n this.appLog.addToLog(\"Vtube Studio Connected\")\n }\n \n });\n\n this.vtsApi.plugin.subscribe(p => {\n this.plugin = p;\n \n });\n\n this.vtsApi.currentModel.subscribe(c => {\n this.currentModel = c;\n });\n\n this.vtsApi.meshes.subscribe(m => {\n this.meshes = m;\n });\n\n this.twitch.accessToken.subscribe(at => {\n this.twitch.connectPubSub(at);\n });\n\n this.twitch.connected.subscribe(c => {\n this.twitchConnected = c;\n if(c)\n {\n this.insights.trackEvent(\"Twitch Connected\");\n this.appLog.addToLog(this.user.displayName + \" Twitch Connected\");\n } \n });\n\n this.twitch.user.subscribe(u => this.user = u);\n\n this.enableButton();\n this.appLog.addToLog(\"Session Started\");\n\n }\n \n async setPlugin() {\n localStorage.setItem('port', this.port);\n await this.vtsApi.authenticate(this.port);\n // this.vtsApiv2.authenticate();\n }\n\n async enableButton(){\n await new Promise(f => setTimeout(f, 2000));\n this.disableButtons = false;\n }\n async reloadModel() {\n this.vtsApi.updateCurrentModel(await this.plugin.currentModel());\n }\n\n connectTwitch() {\n window.location.href = this.twitchConnectUrl; \n }\n \n openTutorial() {\n const dialogRef = this.dialog.open(TutorialDialog);\n\n dialogRef.afterClosed().subscribe(result => {\n \n });\n }\n\n openPatchNotes() {\n const dialogRef = this.dialog.open(PatchNotesDialog);\n\n dialogRef.afterClosed().subscribe(result => {\n \n });\n }\n\n openLog() {\n const dialogRef = this.dialog.open(LogDialog);\n\n dialogRef.afterClosed().subscribe(result => {\n \n });\n }\n}\n\n@Component({\n selector: 'tutorial-dialog',\n templateUrl: 'tutorial-dialog.html',\n styleUrls: ['./app.component.scss']\n})\nexport class TutorialDialog {}\n\n@Component({\n selector: 'patchnotes-dialog',\n templateUrl: 'patchnotes-dialog.html',\n styleUrls: ['./app.component.scss']\n})\nexport class PatchNotesDialog {}\n\n\n@Component({\n selector: 'log-dialog',\n templateUrl: 'log-dialog.html',\n styleUrls: ['./app.component.scss']\n})\nexport class LogDialog {\n\n content: string = \"\";\n constructor(private appLog: AppLogService)\n {\n this.appLog.log.subscribe(l => this.content = l);\n }\n\n exportLog(){\n var element = document.createElement('a');\n element.setAttribute('href', \"data:text,\" + encodeURIComponent(this.content));\n element.setAttribute('download', \"TieToolsLogFile\");\n element.style.display = 'none';\n document.body.appendChild(element);\n element.click(); // simulate click\n document.body.removeChild(element);\n }\n}","\n Tools - V2.3.7\n \n \n \n \n \n\n\n \n \n Connect to Twitch (Optional)\n \n

Is Twitch connected? {{twitchConnected}}

\n

Current User: {{user.displayName}}

\n \n
\n
\n \n Connect to Vtube Studio\n \n

Is the plugin connected? {{connected}}

\n

Current Model: {{currentModel.vtsModelName}}

\n

\n
\n \n \n \n Port #\n \n \n \n \n
\n \n Support!\n \n

\n Tie Tools will always be a site of of FREE plugins/tools for VTubing and Streaming. Any support is greatly appreciated.\n

\n \n
\n
\n\n \n Having Issues?\n \n

\n If something isn't working properly or are having issues, DM me on Twitter or join the Discord!. I will get back to you as soon as I'm able. \n

\n

\n

\n \n
\n \n

\n
\n
\n
\n \n
\n \n
\n \n\n
\n \n\n\n\n \n Made by Prof. Tiberius: \n \n \n \n \n \n \n\n\n\n\n","

Tutorials

\n\n \n \n

Step 1: Enable Plugins in VTS

\n

Open your settingssettings in VTS and scroll down to the \"Vtube Studio Plugins\" section in the main menu. Make sure your status is green.

\n

\n \n

Step 2: Click CONNECT in Tie Tools

\n

Click \"CONNECT\" on Tie Tools. Make sure the Port is the same as the settings in VTS (see screenshot in last step).

\n

\n

If this is your first time connecting, a dialog box in VTS will pop up. Click \"Allow\".

\n

\n\n

Step 3: Confirm You Are Connected

\n

Once Connected the \"CONNECT\" button becomes disabled and you will have the option to \"Reload Modle\" if you swap your model in VTS.

\n

\n

**The effect buttons will also be enabled and effect count(s) will be visable too.**

\n

\n

Repeat Step 2 if you are not connected.

\n
\n \n

Need help with something besides connecting? DM me on Twitter!

\n
\n \n
\n
\n \n\n
\n\n \n\n","

Patch Notes

\n\n

\n 2.0.0 - The Big Twitch Update\n
\n - Added Twitch Integration! Channel Points, Subs, and Bits can activate effects. Messages with Subs/Bits and Channel Point Input can be read as well.\n
\n - Added Auto Start! Effects can start automaticaly when you connect to VTube Studio. Check the box next to \"Reset Local Meshes\".\n
\n - Updated Code for starting/stopping effects for a more instant response.\n

\n

\n 2.0.0 - The Big Twitch Update\n
\n - Added Twitch Integration! Channel Points, Subs, and Bits can activate effects. Messages with Subs/Bits and Channel Point Input can be read as well.\n
\n - Added Auto Start! Effects can start automaticaly when you connect to VTube Studio. Check the box next to \"Reset Local Meshes\".\n
\n - Updated Code for starting/stopping effects for a more instant response.\n
\n - Added Interpolation Steps. To Make colors transition faster or slower change the value to be between 2 and 1000. Default is 100. \n

\n

\n 2.1.0 - SPIN! \n
\n - Added the spin effect! Clockwise, Counter-Clockwise, and Alternating. Spin forever or set your rotations. Works with Twitch intergration. \n
\n - Fixed bug where interpolated color effects were not working if created before version 2.0.0. If \"Interpolation Steps\" is blank, the effect will not work. A default value of 100 will be set if blank. \n

\n

\n 2.2.0 - Hotkeys\n
\n - Hotkeys can now be activated from Tie Tools! Twitch integration works as well.\n
\n - If the Hotkey is to change a model, Tie Tools will automaticly swap the effects to the correct model.\n
\n - Fixed bug where Random Color would rotate a model with new effect created in version 2.1.0. \n

\n

\n 2.2.1 - Bug Fix\n
\n - Fixed a bug where if Set Color was saved as null, it would break the application. \n

\n

\n 2.2.2 - Added Log File\n
\n - The \"Log\" Button has been added at the top to track what is going on in Tie Tools. If an error occurs it can be exported and sent to Prof Tiberius for review. \n

\n

\n 2.3.0 - Twitch Chat Update\n
\n - Added Twitch Chat Integration!\n
\n - Added Blocked and Allowed Users for Twitch Redeems.\n
\n - Added Re-Ordering toggle for Effects, \"Toggle Reorder\". \n
\n - Added Model Selector to effects, you can now choose if an effect works on all models or specific ones.\n
\n - Fixed Bug where clicking on a mesh would not remove it from the list. \n

\n

\n 2.3.1 - Bug Fixes\n
\n - Fixed a bug where Twitch Chat Integration, would slow down the application the more effects you had. \n
\n - Fixed a bug where importing effects would not be upgraded to the most recent version. \n
\n - Removed some vestigial dev code. \n

\n

\n 2.3.2 - Bug Fixes\n
\n - Fixed major bug where filtering effects would delete them.\n
\n - Fixed bug where Twitch Integration would bypass the selected model list. \n

\n

\n 2.3.3 - Effect Management UI \n
\n - Cleaned up the UI for Managing Effects. Saving now has the save icon button and shows the last time the effects were saved. \n

\n

\n 2.3.4 - Bug Fix\n
\n - Fixed a bug where effects could be run multiple times on Auto Start or by clicking the start button too mnay\n

\n

\n 2.3.5 - Bug Fix\n
\n - Fixed a bug where Twitch Integration would cause effects to loop forever. \n

\n

\n 2.3.6 - Bug Fix\n
\n - Fixed a bug where Twitch Integration would cause effects to trigger spin effects on all models instead of the selected ones. \n

\n

\n 2.3.7 - Model Swap Fix\n
\n - When a model is swapped outside of Tie Tools, it will auto-reload the model and auto start any associated effects.\n
\n - Fixed Bug with imported effects not loading properly. \n
\n - Minor UI improvements.\n

\n
\n \n
\n

\n 1.1.0\n
\n - Added \"Exclude Meshes?\" toggle. This will run the effect on all meshes, except for the ones selected. \n
\n - Added \"Reset Local Meshes\" button. This will reset only the meshes selected back to their default state. If \"All Meshes?\" is toggled, all meshes are reset. If \"Exclude Meshes?\" is toggled, all meshes except for the selected are reset.\n
\n - Added \"Ignore Screen Display\" toggle. Disabling it will blend the color change with the “Display Lighting” feature in Vtube Studio. \n
\n - Collapsed Meshes and Settings on Effect Cards to take less screen space.\n
\n - Added Import/Export buttons. Importing will replace ALL your effects with the backup.\n
\n - Added Support buttons. Tie Tools is FREE but support is appreciated and will go towards making the app better for everyone! \n

\n

\n 1.1.1\n
\n - Fixed bug with duplicate ids made from older version. This would cause multiple effects to be deleted if they were copied.\n
\n - Made it so that \"Ignore Screen Display\" is toggled by default. This will prevent effects from half working. Effect made before 1.1.0 will have the setting toggled.\n

\n
\n \n
\n

\n 1.0.0 - Initial Release.\n

\n

\n 1.0.1 - Fixed bug where meshes of similar names were being tinted along with the intended mesh. (ex. Selecting 'ArtMesh8' would also tint 'ArtMesh80')\n

\n

\n 1.0.2 - Added Import/Export. Importing will replace all effects with the backup file. Fixed bug with Reset all button. \n

\n
\n\n \n\n","

App Log

\n\n\n\n \n \n\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormsModule } from '@angular/forms';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { HttpClientModule } from '@angular/common/http';\n\nimport { MAT_COLOR_FORMATS, NgxMatColorPickerModule, NGX_MAT_COLOR_FORMATS } from '@angular-material-components/color-picker';\n\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSliderModule } from '@angular/material/slider'\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatExpansionModule } from '@angular/material/expansion';\n\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent, LogDialog, PatchNotesDialog, TutorialDialog } from './app.component';\nimport { HomeComponent, ImportDialog } from './home/home.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { EffectsComponent } from './effects/effects.component';\nimport { RedirectComponent } from './redirect/redirect.component';\nimport { InsightsModule } from './insights/insights.module';\nimport { SortByOrderPipe } from './sort-by-order.pipe';\n\n@NgModule({\n declarations: [\n AppComponent,\n HomeComponent,\n EffectsComponent,\n TutorialDialog,\n PatchNotesDialog,\n LogDialog,\n ImportDialog,\n RedirectComponent,\n SortByOrderPipe\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n BrowserAnimationsModule,\n ReactiveFormsModule,\n FormsModule,\n FlexLayoutModule,\n HttpClientModule,\n InsightsModule,\n //Color\n NgxMatColorPickerModule,\n //Material\n MatChipsModule,\n MatButtonModule,\n MatSidenavModule,\n MatToolbarModule,\n MatAutocompleteModule,\n MatFormFieldModule,\n MatInputModule,\n MatSliderModule,\n MatCardModule,\n MatProgressBarModule,\n MatDividerModule,\n MatIconModule,\n MatListModule,\n MatCheckboxModule,\n MatSelectModule,\n MatGridListModule,\n MatDialogModule,\n MatTabsModule,\n MatExpansionModule\n ],\n providers: [{ provide: MAT_COLOR_FORMATS, useValue: NGX_MAT_COLOR_FORMATS }],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { Color } from '@angular-material-components/color-picker';\nimport { Hotkey } from 'vtubestudio';\n\nexport class Effect {\n id: number;\n order: number;\n name: string = '{Rename Me!}';\n autoStart: boolean = false;\n delayStart: boolean = false;\n delayStartSec: number = 0;\n selectedType: string = 'None';\n stopSent: boolean = false;\n allModels: boolean = true;\n modelList: string[] = []; \n //ColorSettings\n setColor: Color[] = [];\n allMeshes: boolean = false;\n excludeMeshes: boolean = false;\n interpolateColors: boolean = true;\n interpolationSteps: number = 100; \n loopEffect: boolean = false;\n ignoreDisplayLighting = true;\n selectedMeshes: string[] = [];\n alpha: number = 255;\n delay: number = 1;\n resetOnStop: boolean = false;\n //Hotkey\n hotkeyId: string;\n twitchHotKeyTrigger: boolean = false;\n //Movement Settings\n //Spin\n rotations: number = 1;\n spinForever: boolean = false;\n spinSpeed: number = 1;\n clockwise: boolean = true;\n alternate: boolean = false;\n //Twitch Section\n twitchType: string = 'None';\n twitchStop: number = 0;\n twitchResetStop: boolean = false;\n messageContains: boolean = false;\n messageStartsWith: boolean = false;\n allowUsers:boolean = false;\n blockUsers: boolean = false;\n allowedUsers: string[] = [];\n blockedUsers: string[] = [];\n twitchMessage: string = '';\n setColorMessage: boolean = false;\n //bits\n bits: number = 0;\n bitsRange: number = 0;\n bitOption: string = 'Any';\n //Redeems\n redeemTitle: string = '';\n //subs\n anySub: boolean = true;\n tier1Sub: boolean = false;\n tier2Sub: boolean = false;\n tier3Sub: boolean = false;\n primeSub: boolean = false;\n giftSub: boolean = true;\n\n\n \n constructor(id: number) {\n this.id = id;\n let c = new Color(255, 255, 255);\n this.setColor.push(c);\n }\n }","import { Color } from '@angular-material-components/color-picker';\nimport { Component, OnInit, Input, ViewChild, ElementRef } from '@angular/core';\nimport { VtubeStudioAPIService } from '../vtube-studio-api.service';\nimport { Plugin, CurrentModel, Hotkey } from 'vtubestudio';\nimport { FormControl } from '@angular/forms';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { MatChipInputEvent } from '@angular/material/chips';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { ThemePalette } from '@angular/material/core';\nimport { TwitchService } from '../twitch.service';\nimport { Effect } from './effect';\nimport { AppLogService } from '../app-log.service';\n\n@Component({\n selector: 'app-effects',\n templateUrl: './effects.component.html',\n styleUrls: ['./effects.component.scss']\n})\nexport class EffectsComponent implements OnInit {\n\n @Input() effect: Effect;\n\n meshes: string[] = [];\n models: string[] = [];\n\n filteredMeshes: Observable;\n filteredModels: Observable;\n\n meshControl = new FormControl();\n modelControl = new FormControl();\n\n selectable = true;\n removable = true;\n separatorKeysCodes: number[] = [ENTER, COMMA];\n\n colorControl: FormControl[] = [];\n colors: ThemePalette[] = [];\n\n _stopped = new BehaviorSubject(true);\n stopped = this._stopped.asObservable();\n\n _running = new BehaviorSubject(false);\n running = this._running.asObservable();\n\n _canStart = new BehaviorSubject(false);\n canStart = this._canStart.asObservable();\n\n isRunning: boolean = false;\n twitchConnected: boolean = false;\n twitchObservable: Subscription = new Subscription();\n canStartValue: boolean = false;\n autoStartDone: boolean = false;\n\n hotkeys: Hotkey[] = [];\n\n effectTypes = ['SetColor', 'RandomColor', 'Spin', 'Hotkey'];\n\n spinSpeedValues = [1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 18, 20, 24, 30, 36, 40, 45, 60, 72, 90, 120];\n\n twitchOptions = ['None', 'CP Redeem', 'Bits', 'Sub', 'Chat'];\n bitOptions = ['Any', 'Single', 'Range'];\n\n plugin: Plugin;\n currentModel: CurrentModel;\n\n currentColor: Color = new Color(255, 255, 255);\n currentAplha = 255;\n resetColor: Color = new Color(255, 255, 255);\n touchUi = false;\n\n retry: number = 0;\n bannerColor: string = '#ffffff';\n\n @ViewChild('meshInput') meshInput: ElementRef;\n\n @ViewChild('modelInput') modelInput: ElementRef;\n\n constructor(private vtsApi: VtubeStudioAPIService, private twitch: TwitchService, private appLog: AppLogService) { }\n\n ngOnInit() {\n this.effect.setColor.forEach(c => {\n if (c === null || c === undefined) {\n c = new Color(255, 255, 255);\n }\n this.colorControl.push(new FormControl(new Color(c.r, c.g, c.b)))\n const color: ThemePalette = 'primary';\n this.colors.push(color);\n });\n\n this.colorControl.forEach((c, i) => {\n c.valueChanges.subscribe(n => {\n this.effect.setColor[i] = n;\n })\n });\n //VTS \n this.vtsApi.plugin.subscribe(p => {\n this.plugin = p;\n });\n\n this.vtsApi.meshes.subscribe(m => {\n this.meshes = m;\n this.meshes = this.meshes.filter(m => !this.effect.selectedMeshes.includes(m));\n this.filteredMeshes = this.meshControl.valueChanges\n .pipe(\n startWith(null),\n map((mesh: string | null) => mesh ? this._filterMeshes(mesh) : this.meshes.slice())\n );\n\n });\n\n this.vtsApi.models.subscribe(m => {\n m.forEach(model => this.models.push(model.vtsModelName));\n\n this.models = this.models.filter(m => !this.effect.modelList.includes(m));\n this.filteredModels = this.modelControl.valueChanges\n .pipe(\n startWith(null),\n map((model: string | null) => model ? this._filterModels(model) : this.models.slice())\n );\n });\n\n this.vtsApi.hotkeys.subscribe(h => this.hotkeys = h);\n\n this.twitch.connected.subscribe(c => {\n this.twitchConnected = c;\n if (this.twitchConnected){\n this.twitchIntegration();\n } \n });\n\n this.vtsApi.currentModel.subscribe((cm: CurrentModel) => {\n this.currentModel = cm;\n this.autoStartDone = false;\n this._checkCanStart();\n });\n\n this.canStart.subscribe(s => {\n this.canStartValue = s;\n if (s && this.effect.autoStart && !this.autoStartDone) {\n this.start();\n this.autoStartDone = true;\n } \n });\n\n this._running.subscribe(running => this.isRunning = running);\n }\n\n twitchIntegration() {\n this.twitchObservable.unsubscribe();\n switch (this.effect.twitchType) {\n case 'CP Redeem':\n {\n this.twitchObservable = this.twitch.redeemedReward.subscribe(redeem => {\n if (redeem != null && this.effect.redeemTitle == redeem.rewardTitle) {\n this.processTwitch(redeem.message, redeem.userName);\n }\n });\n }\n break;\n case 'Bits':\n {\n this.twitchObservable = this.twitch.bitsCheered.subscribe(bits => {\n if (bits != null &&\n (this.effect.bitOption === 'Any' ||\n (this.effect.bitOption === 'Single' && this.effect.bits == bits.bits) ||\n (this.effect.bitOption === 'Range' && bits.bits >= this.effect.bits && bits.bits <= this.effect.bitsRange))) {\n this.processTwitch(bits.message, bits.userName);\n }\n });\n }\n break;\n case 'Sub':\n {\n this.twitchObservable = this.twitch.subRecieved.subscribe(sub => {\n if (sub != null &&\n (this.effect.anySub || (this.effect.giftSub === sub.isGift &&\n ((this.effect.primeSub && sub.subPlan == 'Prime')\n || (this.effect.tier1Sub && sub.subPlan === '1000')\n || (this.effect.tier2Sub && sub.subPlan === '2000')\n || (this.effect.tier3Sub && sub.subPlan === '3000')\n )))) {\n this.processTwitch(sub.message.message, sub.gifterName);\n }\n });\n }\n break;\n case 'Chat':\n {\n this.twitchObservable = this.twitch.chatMessage.subscribe(chat => {\n if (chat != null) {\n this.processTwitch(chat.message, chat.user);\n }\n });\n }\n break;\n default:\n {\n\n }\n break;\n }\n }\n\n processTwitch(message: string, user: string) {\n if (((this.effect.messageContains && message.toLocaleLowerCase().includes(this.effect.twitchMessage.toLocaleLowerCase()))\n || (this.effect.messageStartsWith && message.toLocaleLowerCase().startsWith(this.effect.twitchMessage.toLocaleLowerCase()))\n || (!this.effect.messageContains && !this.effect.messageStartsWith))\n && ((this.effect.allowUsers && this.effect.allowedUsers.includes(user)) || !this.effect.allowUsers)\n && ((this.effect.blockUsers && !this.effect.blockedUsers.includes(user)) || !this.effect.blockUsers)) {\n if (this.effect.setColorMessage) {\n if (message != undefined || message != null) {\n const result = this.hexToRgb(message);\n if (result != null)\n this.setColor(result.r, result.g, result.b);\n }\n }\n this.start();\n this.stopTwitchTimer();\n }\n }\n\n addMesh(event: MatChipInputEvent): void {\n const value = (event.value || '').trim();\n\n // Add our mesh\n if (value && this.meshes.includes(value)) {\n this.effect.selectedMeshes.push(value);\n }\n\n // Clear the input value\n event.chipInput!.clear();\n\n this.meshControl.setValue(null);\n this.meshes = this.meshes.filter(m => !this.effect.selectedMeshes.includes(m));\n\n }\n\n removeMesh(mesh: string): void {\n const index = this.effect.selectedMeshes.indexOf(mesh);\n\n this.meshes.push(mesh);\n if (index >= 0) {\n this.effect.selectedMeshes.splice(index, 1);\n }\n }\n\n selectedMesh(event: MatAutocompleteSelectedEvent): void {\n this.effect.selectedMeshes.push(event.option.viewValue);\n this.meshInput.nativeElement.value = '';\n this.meshControl.setValue(null);\n this.meshes = this.meshes.filter(m => !this.effect.selectedMeshes.includes(m));\n }\n\n addModel(event: MatChipInputEvent): void {\n const value = (event.value || '').trim();\n\n // Add our mesh\n if (value && this.models.includes(value)) {\n this.effect.modelList.push(value);\n }\n\n // Clear the input value\n event.chipInput!.clear();\n\n this.modelControl.setValue(null);\n this.models = this.models.filter(m => !this.effect.modelList.includes(m));\n this._checkCanStart();\n }\n\n removeModel(model: string): void {\n const index = this.effect.modelList.indexOf(model);\n\n this.models.push(model);\n if (index >= 0) {\n this.effect.modelList.splice(index, 1);\n }\n this._checkCanStart();\n }\n\n selectedModel(event: MatAutocompleteSelectedEvent): void {\n this.effect.modelList.push(event.option.viewValue);\n this.modelInput.nativeElement.value = '';\n this.modelControl.setValue(null);\n this.models = this.models.filter(m => !this.effect.modelList.includes(m));\n this._checkCanStart();\n }\n\n addAllowedUser(event: MatChipInputEvent): void {\n const value = (event.value || '').trim();\n\n this.effect.allowedUsers.push(value);\n\n this.removeBlockedUser(value);\n event.chipInput!.clear();\n }\n\n removeAllowedUser(user: string): void {\n const index = this.effect.allowedUsers.indexOf(user);\n\n if (index >= 0) {\n this.effect.allowedUsers.splice(index, 1);\n }\n }\n\n addBlockedUser(event: MatChipInputEvent): void {\n const value = (event.value || '').trim();\n\n this.effect.blockedUsers.push(value);\n\n this.removeAllowedUser(value);\n event.chipInput!.clear();\n }\n\n removeBlockedUser(user: string): void {\n const index = this.effect.blockedUsers.indexOf(user);\n\n if (index >= 0) {\n this.effect.blockedUsers.splice(index, 1);\n }\n }\n\n private _filterMeshes(value: string): string[] {\n const filterValue = value.toLowerCase();\n return this.meshes.filter(option => option.toLowerCase().includes(filterValue));\n }\n\n private _filterModels(value: string): string[] {\n const filterValue = value.toLowerCase();\n return this.models.filter(option => option.toLowerCase().includes(filterValue));\n }\n\n private _checkCanStart() {\n this._canStart.next((this.effect.allModels && this.currentModel.vtsModelName != 'Not Loaded')\n || this.effect.modelList.includes(this.currentModel.vtsModelName));\n }\n\n addColor() {\n this.effect.setColor.push(new Color(255, 255, 255));\n this.colors = [];\n this.colorControl = [];\n\n this.effect.setColor.forEach(c => {\n this.colorControl.push(new FormControl(new Color(c.r, c.g, c.b)));\n const color: ThemePalette = 'primary';\n this.colors.push(color);\n });\n\n this.colorControl.forEach((c, i) => {\n c.valueChanges.subscribe(n => {\n this.effect.setColor[i] = n;\n })\n });\n }\n\n setColor(r: number, g: number, b: number) {\n this.effect.setColor = [];\n this.effect.setColor.push(new Color(r, g, b));\n this.colors = [];\n this.colorControl = [];\n\n this.effect.setColor.forEach(c => {\n this.colorControl.push(new FormControl(new Color(c.r, c.g, c.b)));\n const color: ThemePalette = 'primary';\n this.colors.push(color);\n });\n\n this.colorControl.forEach((c, i) => {\n c.valueChanges.subscribe(n => {\n this.effect.setColor[i] = n;\n })\n });\n }\n\n deleteColor(control: FormControl) {\n const index = this.colorControl.indexOf(control);\n\n this.effect.setColor = this.effect.setColor.filter(c => c.hex !== control.value.hex);\n\n if (index >= 0) {\n this.colorControl.splice(index, 1);\n }\n }\n\n async start() {\n if (!this.isRunning && this.canStartValue) {\n try {\n\n this.appLog.addToLog(this.effect.name + \" has started\");\n this.colorControl.forEach(c => {\n c.disable();\n })\n if (this.effect.alpha > 255)\n this.effect.alpha = 255;\n if (this.effect.alpha < 0)\n this.effect.alpha = 0;\n\n if (this.effect.interpolationSteps < 2)\n this.effect.interpolationSteps = 2;\n if (this.effect.interpolationSteps > 1000)\n this.effect.interpolationSteps = 1000;\n\n this.stop();\n const model = await this.plugin.currentModel();\n const start = await model.position();\n let x = 1;\n let step = 1 / this.effect.interpolationSteps;\n if (this.effect.interpolateColors)\n x = step;\n this.effect.stopSent = false;\n\n const meshList = ((this.effect.excludeMeshes) ? this.meshes : this.effect.selectedMeshes);\n\n if (this.effect.delayStart)\n await new Promise(f => setTimeout(f, this.effect.delayStartSec * 1000));\n this._stopped.next(false);\n this._running.next(true);\n this._canStart.next(false);\n switch (this.effect.selectedType) {\n case 'SetColor': {\n \n while (this.isRunning) {\n const mix = ((this.effect.ignoreDisplayLighting) ? 1 : 0.5);\n for (let i = 0; i < this.effect.setColor.length; i++) {\n let c = this.effect.setColor[i];\n this.bannerColor = '#' + c.hex;\n while (x <= 1) {\n await this._setMeshColor(model, c.r, c.g, c.b, x, mix, this.effect.alpha, meshList);\n x = x + step;\n }\n if (this.effect.delay <= 0 && !this.effect.interpolateColors)\n this.effect.delay = 1;\n await new Promise(f => setTimeout(f, this.effect.delay * 1000));\n x = 1;\n if (this.effect.interpolateColors)\n x = step;\n this.currentColor = c;\n }\n\n if (this.effect.stopSent || !this.effect.loopEffect)\n this._running.next(false);\n }\n }\n break;\n case 'RandomColor': {\n while (this.isRunning) {\n const mix = ((this.effect.ignoreDisplayLighting) ? 1 : 0.5);\n let c = new Color(this.getRandomInt(0, 255), this.getRandomInt(0, 255), this.getRandomInt(0, 255));\n\n this.bannerColor = '#' + c.hex;\n\n while (x <= 1) {\n await this._setMeshColor(model, c.r, c.g, c.b, x, mix, this.effect.alpha, meshList);\n x = x + step;\n }\n if (this.effect.delay <= 0 && !this.effect.interpolateColors)\n this.effect.delay = 1;\n await new Promise(f => setTimeout(f, this.effect.delay * 1000));\n x = 1;\n if (this.effect.interpolateColors)\n x = step;\n this.currentColor = c;\n\n if (this.effect.stopSent || !this.effect.loopEffect)\n this._running.next(false);\n }\n\n }\n break;\n case 'Spin': {\n if (this.effect.rotations < 1)\n this.effect.rotations = 1;\n const degree = 360 / this.effect.spinSpeed;\n let i = 0;\n\n while (this.isRunning && (this.effect.spinForever || i < this.effect.rotations)) {\n let rotation = this.effect.spinSpeed;\n if (this.effect.alternate) {\n rotation = i % 2 == 0 ? this.effect.spinSpeed : this.effect.spinSpeed * -1;\n }\n else {\n rotation = this.effect.clockwise ? this.effect.spinSpeed : this.effect.spinSpeed * -1;\n }\n if (i + 1 === this.effect.rotations && !this.effect.spinForever) {\n const cw = this.effect.clockwise || (this.effect.alternate && i % 2 == 0);\n await this.lastSpin(model, cw);\n }\n else {\n for (let j = 1; j <= degree; j++) {\n await model.moveBy(.01, { offsetX: 0, offsetY: 0, rotateBy: rotation, sizeChange: 0 });\n }\n }\n if (this.effect.stopSent) {\n this._running.next(false);\n }\n i++;\n }\n if (this.effect.spinForever) {\n const cw = this.effect.clockwise || (this.effect.alternate && i % 2 == 0);\n await this.lastSpin(model, cw);\n }\n start.rotation = 0;\n await model.moveTo(1, start);\n this._running.next(false);\n }\n break;\n case 'Hotkey': {\n const hotkey = this.hotkeys.find(h => h.id === this.effect.hotkeyId);\n\n this._running.next(true);\n await hotkey.trigger();\n\n if (hotkey.type === 'ChangeVTSModel') {\n let newModel = null;\n while (newModel === null)\n newModel = await this.plugin.currentModel();\n this.vtsApi.updateCurrentModel(newModel);\n this.twitch.updateBitsCheered(null);\n this.twitch.updateSubRecieved(null);\n this.twitch.updateRedeemedReward(null);\n }\n this._running.next(false);\n }\n break;\n default:\n break;\n }\n this.colorControl.forEach(c => {\n c.enable();\n })\n if (this.effect.resetOnStop)\n await this.resetMeshes();\n this.appLog.addToLog(this.effect.name + \" has finished\");\n this._stopped.next(true);\n this._checkCanStart();\n }\n catch (e) {\n this.appLog.addToLog(\"Error \" + e.message);\n this._running.next(false);\n this.colorControl.forEach(c => {\n c.enable();\n })\n if (this.effect.resetOnStop)\n await this.resetMeshes();\n this._stopped.next(true);\n if (this.retry < 3) {\n this.retry++;\n\n await this.start();\n }\n }\n }\n\n\n }\n\n stop() {\n this._running.next(false);\n }\n\n async resetMeshes() {\n const model = await this.plugin.currentModel();\n const meshList = ((this.effect.excludeMeshes) ? this.meshes : this.effect.selectedMeshes);\n await this._setMeshColor(model, 255, 255, 255, 1, 0, 255, meshList);\n }\n\n\n async stopTwitchTimer() {\n await new Promise(f => setTimeout(f, this.effect.twitchStop * 1000));\n if (this.effect.selectedType === 'Hotkey' && this.effect.twitchHotKeyTrigger) {\n const hotkey = this.hotkeys.find(h => h.id === this.effect.hotkeyId);\n await hotkey.trigger();\n }\n if (this.effect.loopEffect || this.effect.spinForever) {\n this.stop();\n this.stopped.subscribe(async (s: boolean) => {\n if (s && this.effect.twitchResetStop)\n await this.resetMeshes();\n });\n }\n else\n if (this.effect.twitchResetStop)\n await this.resetMeshes();\n }\n\n private async _setMeshColor(model: CurrentModel, nRed: number, nGreen: number, nBlue: number, fraction: number, mix: number, nAlpha?: number, meshes?: string[]) {\n //const mix = 0;\n if (this.effect.allMeshes && !this.effect.excludeMeshes) {\n await model.colorTint(\n {\n r: (nRed - this.currentColor.r) * fraction + this.currentColor.r,\n g: (nGreen - this.currentColor.g) * fraction + this.currentColor.g,\n b: (nBlue - this.currentColor.b) * fraction + this.currentColor.b,\n a: (nAlpha - this.currentAplha) * fraction + this.currentAplha,\n mixWithSceneLightingColor: mix\n }\n );\n }\n else {\n await model.colorTint(\n {\n r: (nRed - this.currentColor.r) * fraction + this.currentColor.r,\n g: (nGreen - this.currentColor.g) * fraction + this.currentColor.g,\n b: (nBlue - this.currentColor.b) * fraction + this.currentColor.b,\n a: (nAlpha - this.currentAplha) * fraction + this.currentAplha,\n mixWithSceneLightingColor: mix\n },\n { nameExact: meshes }\n );\n }\n }\n\n private getRandomInt(min, max) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min) + min); //The maximum is exclusive and the minimum is inclusive\n }\n\n private hexToRgb(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n }\n\n private async lastSpin(model: CurrentModel, clockwise: boolean) {\n let index = this.spinSpeedValues.findIndex(s => this.effect.spinSpeed === s) - 1;\n let degrees = 0;\n let steps = index < 1 ? 1 : this.spinSpeedValues[index];\n if (clockwise) {\n while (degrees < 360) {\n await model.moveBy(.01, { offsetX: 0, offsetY: 0, rotateBy: steps, sizeChange: 0 });\n degrees += steps;\n if (degrees > 45 && degrees <= 90)\n steps = index - 1 < 1 ? 1 : this.spinSpeedValues[index - 1];\n else if (degrees > 90 && degrees <= 135)\n steps = index - 2 < 1 ? 1 : this.spinSpeedValues[index - 2];\n else if (degrees > 135 && degrees <= 180)\n steps = index - 3 < 1 ? 1 : this.spinSpeedValues[index - 3];\n else if (degrees > 180 && degrees <= 225)\n steps = index - 4 < 1 ? 1 : this.spinSpeedValues[index - 4];\n else if (degrees > 225 && degrees <= 270)\n steps = index - 5 < 1 ? 1 : this.spinSpeedValues[index - 5];\n else if (degrees > 270 && degrees < 360)\n steps = index - 6 < 1 ? 1 : this.spinSpeedValues[index - 6];\n }\n }\n else {\n steps = steps * -1;\n while (degrees > -360 && degrees <= 0) {\n await model.moveBy(.01, { offsetX: 0, offsetY: 0, rotateBy: steps, sizeChange: 0 });\n degrees += steps;\n if (degrees < -45 && degrees >= -90)\n steps = index - 1 < 1 ? 1 : this.spinSpeedValues[index - 1];\n else if (degrees < -90 && degrees >= -135)\n steps = index - 2 < 1 ? 1 : this.spinSpeedValues[index - 2];\n else if (degrees < -135 && degrees >= -180)\n steps = index - 3 < 1 ? 1 : this.spinSpeedValues[index - 3];\n else if (degrees < -180 && degrees >= -225)\n steps = index - 4 < 1 ? 1 : this.spinSpeedValues[index - 4];\n else if (degrees < -225 && degrees >= -270)\n steps = index - 5 < 1 ? 1 : this.spinSpeedValues[index - 5];\n else if (degrees < -270 && degrees < -360)\n steps = index - 6 < 1 ? 1 : this.spinSpeedValues[index - 6];\n else\n steps = steps * -1;\n\n steps = steps * -1;\n }\n }\n\n }\n}\n","\n
\n
\n \n

Running: {{isRunning}}

\n \n \n \n
\n \n \n \n \n \n \n \n Settings\n \n \n Configure Effect\n \n \n Auto Start\n Delay Start\n
\n \n Delay Start (Sec)\n \n \n \n
\n \n Effect Type\n \n \n {{type}}\n \n \n \n \n \n \n Alpha\n \n 255\">\n \n \n \n
\n \n Color Count: {{this.effect.setColor.length}}\n
\n {{i}}\n \n Color Picker\n \n \n \n \n \n
\n
\n
\n Reset When Stopped\n
\n Interpolate Colors\n
\n \n Interpolation Steps\n \n 1000\">\n \n \n
\n Loop Effect\n
\n \n Delay(sec)\n \n \n
\n Ignore Screen Display\n
\n \n \n \n Spin Speed\n \n \n {{speed}}\n \n \n \n
\n \n Rotations\n \n \n \n Spin Forever\n
\n Clockwise\n
\n Alternate\n
\n
\n \n \n \n \n \n \n {{hotkey.name}}\n \n \n \n \n
\n \n \n \n Meshes\n \n \n Pick Model Parts\n \n \n All Meshes?\n
\n Exclude Meshes?\n
\n \n Selected Meshes\n \n \n {{mesh}}\n \n \n \n \n \n \n {{mesh}}\n \n \n \n
\n \n \n \n \n Model \n \n \n Pick which Models\n \n \n All Models\n
\n \n Selected Models\n \n \n {{model}}\n \n \n \n \n \n \n {{model}}\n \n \n \n
\n \n \n \n \n Twitch\n \n \n Integration Options\n \n \n \n Trigger Option\n \n \n {{type}}\n \n \n \n \n \n Redeem Title\n \n \n \n Bit Option\n \n \n {{option}}\n \n \n \n
\n \n Bits\n \n \n \n -\n \n Bits\n \n \n \n
\n
\n Any Sub\n
\n Gift Sub\n
\n Tier1 Sub\n Tier2 Sub\n Tier3 Sub \n
\n
\n Message Contains\n Message Starts With\n
\n \n Twitch Message\n \n \n
\n
\n Set Color From Message(Hex Code Only!)\n
\n Allow Users\n \n Allowed Users\n \n \n {{user}}\n \n \n \n \n \n
\n Block Users\n \n Blocked Users\n \n \n {{user}}\n \n \n \n \n \n
\n \n Stop(sec)\n \n \n Reset After Stop\n Trigger Again After Stop\n
\n \n
\n
\n
\n \n \n \n \n
","import { Component, Inject, LOCALE_ID, OnInit } from '@angular/core';\nimport { VtubeStudioAPIService } from '../vtube-studio-api.service';\nimport { CurrentModel, Plugin } from 'vtubestudio';\nimport { Effect } from '../effects/effect';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { formatDate } from '@angular/common';\nimport { AppLogService } from '../app-log.service';\nimport { timer } from 'rxjs';\nimport { TwitchService } from '../twitch.service';\n\n//4cb4ff\n\n@Component({\n selector: 'app-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.scss']\n})\nexport class HomeComponent implements OnInit{\n\n connected: boolean = false;\n twitchConnected: boolean = false;\n \n plugin: Plugin;\n currentModel: CurrentModel;\n\n effects: Effect[] = [];\n filteredEffects: Effect[] = [];\n\n reOrder: boolean = false;\n\n lastSaved: string = '';\n autoSave: boolean = false;\n\n constructor(\n private vtsApi: VtubeStudioAPIService, \n public dialog: MatDialog,\n private appLog: AppLogService,\n private twitch: TwitchService, \n @Inject(LOCALE_ID) private locale: string) {\n \n }\n\n ngOnInit() {\n this.vtsApi.connected.subscribe(conn => {\n this.connected = conn;\n this.effects = JSON.parse(localStorage.getItem('effects')) ?? [];\n\n this.lastSaved = localStorage.getItem('lastSaved') ?? '';\n this.autoSave = Boolean(localStorage.getItem('autoSave')) ?? false;\n\n let fixedEffects = [];\n //version changes\n this.effects.forEach(e => {\n fixedEffects.push(Object.assign(new Effect(-1), e));\n });\n\n this.effects = fixedEffects;\n\n for (let index = 0; index < this.effects.length; index++) \n {\n this.effects[index].order = index;\n }\n \n this.effects.forEach(e1 => {\n let foundIds = 0;\n this.effects.forEach(e => {\n if(e.id === e1.id)\n foundIds++;\n });\n if(foundIds > 1){\n e1.id = this.getNextId();\n this.saveEffects();\n } \n });\n this.effects = this.effects.sort((a,b) => (a.order > b.order) ? 1 : -1);\n this.filteredEffects = this.effects;\n });\n\n this.vtsApi.plugin.subscribe(p => {\n this.plugin = p;\n \n });\n\n this.twitch.connected.subscribe(c => {\n this.twitchConnected = c; \n });\n\n this.vtsApi.currentModel.subscribe(c => {\n this.currentModel = c;\n });\n\n const modelCheck = timer(1000, 1000);\n\n modelCheck.subscribe(async () => {\n try{\n const model = await this.plugin.currentModel();\n if(this.connected && model.vtsModelName != this.currentModel.vtsModelName)\n {\n await this.reset();\n this.vtsApi.updateCurrentModel(model);\n if(this.twitchConnected)\n {\n this.twitch.updateBitsCheered(null);\n this.twitch.updateSubRecieved(null);\n this.twitch.updateRedeemedReward(null);\n }\n } \n }\n catch(e)\n {\n if(this.connected)\n {\n //await this.vtsApi.authenticate(this.port);\n }\n }\n });\n }\n\n async reset()\n {\n this.effects.forEach(e => {\n e.stopSent = true;\n });\n const model = await this.plugin.currentModel();\n await model.colorTint({\n r: 255, \n g: 255, \n b: 255,\n mixWithSceneLightingColor: 0\n });\n }\n\n async addEffect()\n {\n this.effects.push(new Effect(this.getNextId()));\n }\n\n removeEffect(effect: Effect)\n {\n effect.stopSent = true;\n this.effects = this.effects.filter(e => e.id !== effect.id);\n \n this.filteredEffects = this.filteredEffects.filter(e => e.id !== effect.id);\n }\n\n copyEffect(effect: Effect)\n {\n const effectCopy = JSON.parse(JSON.stringify(effect));\n\n effectCopy.id = this.getNextId();\n effectCopy.name = effectCopy.name + ' (Copy)';\n this.effects.push(effectCopy);\n }\n\n saveEffects()\n {\n localStorage.setItem(\"effects\", JSON.stringify(this.effects));\n this.lastSaved = formatDate(Date.now(),'long',this.locale);\n localStorage.setItem('lastSaved', this.lastSaved);\n this.appLog.addToLog(\"Effects Saved\");\n }\n\n applyFilter(event: Event) {\n const filterValue = (event.target as HTMLInputElement).value;\n this.filteredEffects = this.effects.filter(e => e.name.toLowerCase().includes(filterValue.toLowerCase()));\n \n }\n\n exportEffects() {\n var sJson = JSON.stringify(this.effects);\n var element = document.createElement('a');\n element.setAttribute('href', \"data:text/json;charset=UTF-8,\" + encodeURIComponent(sJson));\n element.setAttribute('download', \"TieToolsEffects_\"+ this.currentModel.vtsModelName);\n element.style.display = 'none';\n document.body.appendChild(element);\n element.click(); // simulate click\n document.body.removeChild(element);\n }\n\n openImport() {\n const dialogRef = this.dialog.open(ImportDialog);\n\n dialogRef.afterClosed().subscribe(result => {\n let fileReader = new FileReader();\n fileReader.readAsText(result.fileSource)\n fileReader.onloadend = (e) => {\n let result: Effect[] = JSON.parse(fileReader.result.toString());\n let fixedResults = [];\n result.forEach(r => {\n fixedResults.push(Object.assign(new Effect(-1), r));\n });\n this.effects = fixedResults;\n };\n });\n }\n\n moveToFront(effect: Effect) {\n\n this.filteredEffects = this.filteredEffects.filter(e => e.id != effect.id);\n\n this.effects.unshift(effect);\n\n for(let i = 0; i < this.effects.length; i++)\n {\n this.effects[i].order = i;\n }\n }\n\n moveToBack(effect: Effect) {\n this.effects = this.effects.filter(e => e.id != effect.id).concat(this.effects.filter(e => e.id === effect.id));\n\n for(let i = 0; i < this.effects.length; i++)\n {\n this.effects[i].order = i;\n }\n }\n\n moveLeft(effect: Effect) {\n const index = this.effects.findIndex(e => e.id === effect.id);\n if(index != 0)\n {\n const left = index - 1;\n [this.effects[left], this.effects[index]] = [this.effects[index], this.effects[left]];\n\n for(let i = 0; i < this.effects.length; i++)\n {\n this.effects[i].order = i;\n }\n }\n }\n\n moveRight(effect: Effect) {\n const index = this.effects.findIndex(e => e.id === effect.id);\n if(index != this.effects.length - 1)\n {\n const right = index + 1;\n [this.effects[index], this.effects[right]] = [this.effects[right], this.effects[index]];\n\n for(let i = 0; i < this.effects.length; i++)\n {\n this.effects[i].order = i;\n }\n }\n }\n\n private getNextId(): number {\n\n if(this.effects.length === 0)\n return 0;\n\n const ids = []; \n this.effects.forEach(e => {\n ids.push(e.id);\n });\n const max = Math.max(...ids);\n return max + 1; \n }\n}\n\n@Component({\n selector: 'import-dialog',\n templateUrl: 'import-dialog.html',\n styleUrls: ['./home.component.scss']\n})\nexport class ImportDialog {\n\n myForm = new FormGroup({\n file: new FormControl('', [Validators.required]),\n fileSource: new FormControl('', [Validators.required])\n });\n\n effects: Effect[] = []; \n \n constructor(public dialogRef: MatDialogRef) { }\n \n get f(){\n return this.myForm.controls;\n }\n \n onFileChange(event:any) {\n \n if (event.target.files.length > 0) {\n const file = event.target.files[0];\n this.myForm.patchValue({\n fileSource: file\n });\n }\n }\n\n import(){\n const file = this.myForm.getRawValue();\n this.effects = JSON.parse(file);\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n}","
\n \n \n
\n \n \n
\n Last Save : {{lastSaved}}\n
\n
\n \n
\n \n \n \n \n
\n
\n \n
\n Total Effect Count: {{effects.length}}\n
\n Toggle Reorder\n
\n \n
\n \n \n Effect Name Search\n \n \n \n\n
\n \n \n \n
\n
\n \n \n \n Effect Name\n \n \n \n \n \n \n \n
\n {{effect.order}}\n \n \n \n \n
\n
\n
\n \n \n
\n
\n
","

Import Backup

\n\n\n

Only Import Json files exported from Tie-Tools!

\n

This will replace ALL of your effects.

\n
\n \n
\n \n \n
\n
File is required.
\n
\n
\n
\n
\n\n \n \n\n","import { Injectable, ErrorHandler } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AngularPlugin } from '@microsoft/applicationinsights-angularplugin-js';\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({ providedIn: 'root' })\nexport class Insights {\n private angularPlugin = new AngularPlugin();\n private appInsights = new ApplicationInsights({\n config: {\n instrumentationKey: environment.appInsights,\n extensions: [this.angularPlugin],\n extensionConfig: {\n [this.angularPlugin.identifier]: {\n router: this.router,\n errorServices: [new ErrorHandler()],\n },\n },\n },\n });\n\n // expose methods that can be used in components and services\n trackEvent(name: string) {\n this.appInsights.trackEvent({name: name});\n }\n trackTrace = this.appInsights.trackTrace;\n\n constructor(private router: Router) {\n this.appInsights.loadAppInsights();\n }\n}","import { ErrorHandler, NgModule } from '@angular/core';\nimport { ApplicationinsightsAngularpluginErrorService } from '@microsoft/applicationinsights-angularplugin-js';\nimport { Insights } from '../insights.service';\n\n\n@NgModule({\n providers: [\n Insights,\n {\n provide: ErrorHandler,\n useClass: ApplicationinsightsAngularpluginErrorService,\n },\n ],\n})\nexport class InsightsModule {}","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport jwt_decode from 'jwt-decode';\nimport { TwitchService } from '../twitch.service';\n\n@Component({\n selector: 'app-redirect',\n templateUrl: './redirect.component.html',\n styleUrls: ['./redirect.component.scss']\n})\nexport class RedirectComponent implements OnInit {\n\n constructor(private activatedRoute: ActivatedRoute, private twitch: TwitchService, private router: Router) {\n\n // Pulls token from url before the hash fragment is removed\n\n const routeFragment: Observable = this.activatedRoute.fragment;\n routeFragment.subscribe(fragment => {\n const response = new URLSearchParams(fragment);\n let accessToken = response.get('access_token');\n const idToken = jwt_decode(response.get('id_token'));\n if(accessToken != '' && accessToken != undefined)\n {\n twitch.updateAccessToken(accessToken);\n //console.log(accessToken);\n }\n if(idToken != undefined)\n {\n //console.log(idToken);\n }\n this.router.navigate(['/']);\n });\n }\n\n ngOnInit(): void {\n }\n\n \n}\n","

redirect works!

\n","import { Pipe, PipeTransform } from '@angular/core';\n@Pipe({\n name: 'sortByOrder'\n})\nexport class SortByOrderPipe implements PipeTransform {\n\n transform(value: any[]): any[] {\n return value.sort((n1,n2) => \n {\n return n1.order - n2.order; \n });\n }\n}","import { Injectable } from '@angular/core';\nimport { StaticAuthProvider } from '@twurple/auth';\nimport { PubSubBitsMessage, PubSubClient, PubSubRedemptionMessage, PubSubSubscriptionMessage } from '@twurple/pubsub';\nimport { ApiClient, HelixUser } from '@twurple/api';\n\n\nimport { BehaviorSubject } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { ChatClient } from '@twurple/chat';\nimport { AppLogService } from './app-log.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TwitchService {\n\n private _user = new BehaviorSubject(null);\n user = this._user.asObservable();\n\n private _accessToken = new BehaviorSubject('');\n accessToken = this._accessToken.asObservable();\n\n private _rewards = new BehaviorSubject([]);\n rewards = this._rewards.asObservable();\n\n private _redeemedReward = new BehaviorSubject(null);\n redeemedReward = this._redeemedReward.asObservable();\n\n private _bitsCheered = new BehaviorSubject(null);\n bitsCheered = this._bitsCheered.asObservable();\n\n private _subRecieved = new BehaviorSubject(null);\n subRecieved = this._subRecieved.asObservable();\n\n private _chatMessage = new BehaviorSubject(null);\n chatMessage = this._chatMessage.asObservable();\n\n private _connected = new BehaviorSubject(false);\n connected = this._connected.asObservable();\n\n constructor(private appLog: AppLogService) { }\n\n updateAccessToken(token: string){\n this._accessToken.next(token);\n }\n\n //token&scope=openid+user:read:email+channel:read:redemptions+bits:read+chat:read+channel:read:subscriptions\n async connectPubSub(accessToken: string) {\n try{\n if(accessToken != '')\n {\n const authProvider = new StaticAuthProvider(environment.twitchClientId, accessToken, ['chat:read', 'chat:edit', 'channel:read:subscriptions', 'bits:read', 'channel:read:redemptions']);\n \n const pubSubClient = new PubSubClient();\n const apiClient = new ApiClient({ authProvider });\n const userId = await pubSubClient.registerUserListener(authProvider);\n \n const user = await apiClient.users.getUserById(userId);\n this._user.next(user);\n \n await pubSubClient.onSubscription(userId, (message: PubSubSubscriptionMessage) =>{\n this._subRecieved.next(message);\n });\n \n await pubSubClient.onRedemption(userId, (message: PubSubRedemptionMessage) => {\n this._redeemedReward.next(message);\n });\n \n await pubSubClient.onBits(userId, (message: PubSubBitsMessage) => {\n this._bitsCheered.next(message);\n });\n \n const chatClient = new ChatClient({ authProvider, channels: [user.name] });\n await chatClient.connect();\n \n chatClient.onMessage((channel, user, message) => {\n this._chatMessage.next({channel, user, message});\n });\n \n this._connected.next(true);\n }\n }\n catch(e){\n this.appLog.addToLog(\"Error: \" + e.message);\n await this.connectPubSub(accessToken);\n }\n \n }\n\n updateBitsCheered(message: PubSubBitsMessage){\n this._bitsCheered.next(message);\n }\n\n updateSubRecieved(message: PubSubSubscriptionMessage){\n this._subRecieved.next(message);\n }\n\n updateRedeemedReward(message: PubSubRedemptionMessage){\n this._redeemedReward.next(message);\n }\n}\n\nexport class ChatMessage {\n channel: string;\n user: string;\n message: string;\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { environment } from 'src/environments/environment';\n\nimport { ApiClient, WebSocketBus, Plugin, CurrentModel, Hotkey, Model } from 'vtubestudio';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VtubeStudioAPIService {\n\n webSocket: WebSocket;\n bus: WebSocketBus;\n apiClient: ApiClient;\n baseModel: CurrentModel\n private _plugin = new BehaviorSubject(null);\n plugin = this._plugin.asObservable();\n\n private _connected = new BehaviorSubject(false);\n connected = this._connected.asObservable();\n\n private _meshes = new BehaviorSubject([]);\n meshes = this._meshes.asObservable();\n\n private _models = new BehaviorSubject([]);\n models = this._models.asObservable();\n\n private _hotkeys = new BehaviorSubject([]);\n hotkeys = this._hotkeys.asObservable();\n\n private _currentModel = new BehaviorSubject({vtsModelName: 'Not Loaded'});\n currentModel = this._currentModel.asObservable();\n \n\n constructor() {}\n\n updateConnected(conn: boolean){\n this._connected.next(conn);\n }\n\n async updatePlugin(plugin: Plugin){\n this._plugin.next(plugin);\n this.updateCurrentModel(await plugin.currentModel());\n this.updateModels(await plugin.models());\n }\n\n async updateCurrentModel(model: CurrentModel){\n this._currentModel.next(model);\n this.updateMeshes(await model.artMeshNames());\n this.updateHotkeys(await model.hotkeys());\n }\n\n updateMeshes(meshes: string[]){\n this._meshes.next(meshes);\n }\n\n updateModels(models: Model[])\n {\n this._models.next(models);\n }\n\n updateHotkeys(hotkeys: Hotkey[]){\n this._hotkeys.next(hotkeys);\n }\n\n async authenticate(port: string) {\n \n this.webSocket = new WebSocket('ws://localhost:' + port);\n this.webSocket.onopen = async () => {\n this.bus = new WebSocketBus(this.webSocket);\n this.apiClient = new ApiClient(this.bus);\n\n let authToken = localStorage.getItem('vtsToken');\n if(authToken !== null)\n {\n let auth = await this.apiClient.authentication({\n pluginName: environment.pluginName,\n pluginDeveloper: 'Prof. Tiberius',\n authenticationToken: authToken\n });\n\n if(!auth.authenticated)\n {\n let token = await this.apiClient.authenticationToken({\n pluginName: environment.pluginName,\n pluginDeveloper: 'Prof. Tiberius',\n pluginIcon: this.icon()\n });\n localStorage.setItem('vtsToken', token.authenticationToken);\n }\n }\n else\n { \n let token = await this.apiClient.authenticationToken({\n pluginName: environment.pluginName,\n pluginDeveloper: 'Prof. Tiberius',\n pluginIcon: this.icon()\n });\n localStorage.setItem('vtsToken', token.authenticationToken);\n }\n\n authToken = localStorage.getItem('vtsToken');\n\n this.updatePlugin(new Plugin(\n this.apiClient,\n environment.pluginName,\n 'Prof. Tiberius',\n this.icon(),\n authToken\n ));\n this.updateConnected(true);\n }\n \n }\n\n icon(): string {\n return `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\n VORK5CYII=`\n }\n}","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false,\n twitchClientId: \"k8j8gbuxog0umj4lphwo0oj3x077ic\",\n appInsights: \"51ce1c8e-a176-42a2-a016-869bec1e9b50\",\n pluginName: 'Tie Tools Testing',\n version: 222\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","/* (ignored) */"],"names":[],"sourceRoot":"webpack:///"}