@@ -17,44 +17,54 @@ export const forceScreenshot = createDelegate<Tab>();
1717
1818export const saveBrowserState = createDelegate < void > ( ) ;
1919
20+ export const config = createState ( {
21+ theme : {
22+ frame_bg : [ 231 , 238 , 245 ] ,
23+ toolbar_bg : [ 211 , 218 , 255 ] ,
24+ toolbar_button_fg : [ 65 , 72 , 76 ] ,
25+ toolbar_fg : [ 65 , 72 , 76 ] ,
26+
27+ inactive_tab_bg : [ 40 , 40 , 40 ] ,
28+ inactive_tab_fg : [ 95 , 92 , 96 ] ,
29+ active_tab_fg : [ 65 , 72 , 76 ] ,
30+
31+ button_bg : [ 231 , 238 , 0 ] ,
32+
33+ ntp_bg : [ 231 , 238 , 0 ] ,
34+ ntp_fg : [ 232 , 234 , 237 ] ,
35+ ntp_link_fg : [ 138 , 180 , 248 ] ,
36+
37+ omnibox_bg : [ 221 , 228 , 235 ] ,
38+ omnibox_fg : [ 227 , 227 , 227 ] ,
39+
40+ bookmark_fg : [ 199 , 199 , 199 ] ,
41+ } ,
42+ } ) ;
43+
2044export type SerializedBrowser = {
2145 tabs : SerializedTab [ ] ;
2246 activetab : number ;
2347} ;
2448
49+ export type GlobalHistoryEntry = {
50+ timestamp : number ;
51+ url : string ;
52+ title : string ;
53+ favicon ?: string ;
54+ } ;
55+
2556export class Browser extends StatefulClass {
2657 built : boolean = false ;
2758
28- theme : Theme ;
2959 tabs : Tab [ ] = [ ] ;
3060 activetab : Tab ;
3161
32- unfocusframes : boolean = false ;
33-
34- constructor ( state : Stateful < any > ) {
35- super ( state ) ;
36-
37- this . theme = {
38- frame_bg : [ 231 , 238 , 245 ] ,
39- toolbar_bg : [ 211 , 218 , 255 ] ,
40- toolbar_button_fg : [ 65 , 72 , 76 ] ,
41- toolbar_fg : [ 65 , 72 , 76 ] ,
42-
43- inactive_tab_bg : [ 40 , 40 , 40 ] ,
44- inactive_tab_fg : [ 95 , 92 , 96 ] ,
45- active_tab_fg : [ 65 , 72 , 76 ] ,
46-
47- button_bg : [ 231 , 238 , 0 ] ,
62+ globalhistory : string [ ] ;
4863
49- ntp_bg : [ 231 , 238 , 0 ] ,
50- ntp_fg : [ 232 , 234 , 237 ] ,
51- ntp_link_fg : [ 138 , 180 , 248 ] ,
52-
53- omnibox_bg : [ 221 , 228 , 235 ] ,
54- omnibox_fg : [ 227 , 227 , 227 ] ,
64+ unfocusframes : boolean = false ;
5565
56- bookmark_fg : [ 199 , 199 , 199 ] ,
57- } ;
66+ constructor ( ) {
67+ super ( createState ( Object . create ( Browser . prototype ) ) ) ;
5868 }
5969
6070 serialize ( ) : SerializedBrowser {
@@ -126,55 +136,6 @@ export class Browser extends StatefulClass {
126136 this . activetab . pushNavigate ( new URL ( search ) ) ;
127137 }
128138 }
129-
130- build ( ) : HTMLElement {
131- let shell = < Shell tabs = { use ( this . tabs ) } activetab = { use ( this . activetab ) } /> ;
132-
133- let de = localStorage [ "browserstate" ] ;
134- if ( de ) {
135- browser . deserialize ( JSON . parse ( de ) ) ;
136- } else {
137- let tab = this . newTab ( ) ;
138- this . activetab = tab ;
139- }
140-
141- if ( this . built ) throw new Error ( "already built" ) ;
142- this . built = true ;
143-
144- return (
145- < div >
146- < ThemeVars colors = { use ( this . theme ) } />
147- < Tabs
148- tabs = { use ( this . tabs ) . bind ( ) }
149- activetab = { use ( this . activetab ) . bind ( ) }
150- destroyTab = { ( tab ) => this . destroyTab ( tab ) }
151- addTab = { ( ) => this . newTab ( ) }
152- />
153- < Omnibox
154- tabUrl = { use ( this . activetab . url ) }
155- canGoBack = { use ( this . activetab . canGoBack ) }
156- canGoForwards = { use ( this . activetab . canGoForward ) }
157- goBack = { ( ) => {
158- this . activetab . back ( ) ;
159- } }
160- goForwards = { ( ) => {
161- this . activetab . forward ( ) ;
162- } }
163- refresh = { ( ) => {
164- this . activetab . frame . reload ( ) ;
165- } }
166- />
167- { shell }
168- </ div >
169- ) ;
170- }
171- }
172-
173- export function createBrowser ( ) : Browser {
174- let browser = new Browser ( createState ( { } ) ) ;
175- Object . setPrototypeOf ( browser , Browser . prototype ) ;
176-
177- return browser ;
178139}
179140
180141saveBrowserState . listen ( ( ) => {
0 commit comments