import { Plugin } from '@remixproject/engine'
import * as packageJson from '../../../package.json'
const introJs = require ( 'intro.js' )
const profile = {
name : 'walkthrough' ,
displayName : 'Walkthrough' ,
description : 'Remix walkthrough for beginner' ,
version : packageJson . version ,
methods : [ 'start' , 'startRecorderW' ]
}
export class WalkthroughService extends Plugin {
constructor ( appManager ) {
super ( profile )
}
startRecorderW ( ) {
introJs ( ) . setOptions ( {
steps : [ {
title : 'Transactions Recorder' ,
intro : 'Save transactions (deployed contracts and function executions) and replay them in another environment e.g Transactions created in Remix VM can be replayed in the Injected Provider.' ,
element : document . querySelector ( '#udappRecorderCard' ) ,
tooltipClass : 'bg-light text-dark' ,
position : 'right' ,
highlightClass : 'bg-light border border-warning'
} ,
{
element : document . querySelector ( '#udappRecorderUseLatest' ) ,
title : 'Transactions Recorder' ,
intro : 'If selected, the recorder will run transactions using the latest compilation result.' ,
tooltipClass : 'bg-light text-dark' ,
position : 'right' ,
highlightClass : 'bg-light border border-warning'
} ,
{
element : document . querySelector ( '#udappRecorderSave' ) ,
title : 'Transactions Recorder' ,
intro : 'Once one or more transactions have been executed, click this button to save these transactions as a scenario file.' ,
tooltipClass : 'bg-light text-dark' ,
position : 'right' ,
highlightClass : 'bg-light border border-warning'
} ,
{
element : document . querySelector ( '#udappRecorderRun' ) ,
title : 'Transactions Recorder' ,
intro : 'Open a scenario file and click this button to run it against the current selected provider.' ,
tooltipClass : 'bg-light text-dark' ,
position : 'right' ,
highlightClass : 'bg-light border border-warning'
}
]
} ) . onafterchange ( ( targetElement ) => {
const header = document . getElementsByClassName ( 'introjs-tooltip-header' ) [ 0 ]
if ( header ) {
header . classList . add ( 'd-flex' )
header . classList . add ( 'justify-content-between' )
header . classList . add ( 'text-nowrap' )
header . classList . add ( 'pr-0' )
header . id = "remixRecorderWalkthrowTitle"
}
const skipbutton = document . getElementsByClassName ( 'introjs-skipbutton' ) [ 0 ]
if ( skipbutton ) {
skipbutton . classList . add ( 'ml-3' )
skipbutton . classList . add ( 'text-decoration-none' )
skipbutton . id = 'remixTourSkipbtn'
}
} ) . start ( )
}
start ( ) {
if ( ! localStorage . getItem ( 'hadTour_initial' ) ) {
introJs ( ) . setOptions ( {
steps : [ {
title : 'Welcome to Remix IDE' ,
intro : 'Click to launch the Home tab that contains links, tips, and shortcuts..' ,
element : document . querySelector ( '#verticalIconsHomeIcon' ) ,
tooltipClass : 'bg-light text-dark' ,
position : 'right' ,
highlightClass : 'bg-light border border-warning'
} ,
{
element : document . querySelector ( '#verticalIconsKindsolidity' ) ,
title : 'Solidity Compiler' ,
intro : 'Having selected a .sol file in the File Explorer (the icon above), compile it with the Solidity Compiler.' ,
tooltipClass : 'bg-light text-dark' ,
position : 'right' ,
highlightClass : 'bg-light border border-warning'
} ,
{
title : 'Deploy your contract' ,
element : document . querySelector ( '#verticalIconsKindudapp' ) ,
intro : 'Choose a chain, deploy a contract and play with your functions.' ,
tooltipClass : 'bg-light text-dark' ,
position : 'right' ,
highlightClass : 'bg-light border border-warning'
}
]
} ) . onafterchange ( ( targetElement ) => {
const header = document . getElementsByClassName ( 'introjs-tooltip-header' ) [ 0 ]
if ( header ) {
header . classList . add ( 'd-flex' )
header . classList . add ( 'justify-content-between' )
header . classList . add ( 'text-nowrap' )
header . classList . add ( 'pr-0' )
}
const skipbutton = document . getElementsByClassName ( 'introjs-skipbutton' ) [ 0 ]
if ( skipbutton ) {
skipbutton . classList . add ( 'ml-3' )
skipbutton . classList . add ( 'text-decoration-none' )
skipbutton . id = 'remixTourSkipbtn'
}
} ) . start ( )
localStorage . setItem ( 'hadTour_initial' , true )
}
}
}