import { Frame } from './frame'

export class Document extends Frame {

static get name(){ return 'document' }

static get selector(){ return function(){ return this.type == '#document' } }

constructor(...args){
    super(...args)
    window.onpopstate = (event) => {
        this.load({ $pushState: false, $url: event.state || window.location })
    }
    window.$p = this
}

load({ $pushState = true, ...params }){
    const previousUrl = this.url.toString()
    super.load(params)
    if($pushState && params.$method == 'GET' && previousUrl != this.url.toString()){
        history.pushState(this.url.toString(), null, this.url.toString())
    }
}

}

Document.register()