penguin/AstroJS

Javascript framework for my blog

commit 4f2131e31798b23381500f68a28c7165b79f1661

author斟酌 鵬兄 <tgckpg@gmail.com>
date2026-06-14T21:38:17Z
subjectMigrate old externs 4/x
commit 4f2131e31798b23381500f68a28c7165b79f1661
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2026-06-14T21:38:17Z

    Migrate old externs 4/x
---
 botanjs/src/Astro/Blog/Components/Comment.js       |  6 +--
 botanjs/src/Astro/Blog/Components/Notification.js  |  3 +-
 botanjs/src/Astro/Blog/Layout/MainFrame.js         | 32 +++++++--------
 botanjs/src/Astro/Mechanism/Parallax.js            |  2 +-
 botanjs/src/Components/Console.js                  |  8 ++--
 botanjs/src/Components/DockPanel.js                |  2 +-
 botanjs/src/Libraries/SyntaxHighlighter/_this.js   |  4 +-
 botanjs/src/System/Cycle/_this.js                  |  1 +
 botanjs/src/System/Log.js                          | 45 ++++++++++++++++------
 botanjs/src/externs/Astro.Bootstrap.js             |  8 ++--
 botanjs/src/externs/Astro.Mechanism.Parallax.js    | 22 ++++++++---
 botanjs/src/externs/Components.DockPanel.js        | 10 +++++
 botanjs/src/externs/Dandelion.Window.js            | 15 ++++++++
 botanjs/src/externs/Dandelion.js                   | 10 +++++
 botanjs/src/externs/Libraries.SyntaxHighLighter.js | 12 +++---
 botanjs/src/externs/System.Cycle.js                | 30 ++++++++++-----
 botanjs/src/externs/System.Log.js                  | 44 ++++++++++++++-------
 botanjs/src/externs/System.Tick.js                 |  3 ++
 resolver-go/internal/generated/buildinfo_gen.go    |  2 +-
 resolver-go/internal/generated/classmap_gen.go     | 38 +++++++++---------
 resolver-go/internal/generated/externs_gen.go      |  2 +
 21 files changed, 201 insertions(+), 98 deletions(-)

diff --git a/botanjs/src/Astro/Blog/Components/Comment.js b/botanjs/src/Astro/Blog/Components/Comment.js
index 900a760..e62990f 100644
--- a/botanjs/src/Astro/Blog/Components/Comment.js
+++ b/botanjs/src/Astro/Blog/Components/Comment.js
@@ -327,9 +327,9 @@
 
 						Cycle.delay( function()
 						{
-							this.innerHTML = "Recaptcha failure";
-							this.style.height = "1.2em";
-						}.bind(f), 500 );
+							cBubble.setColor("red");
+							cBubble.pop("Recaptcha failure");
+						}, 500 );
 
 						Cycle.delay(function (){cBubble.blurp();}, 500);
 					}
diff --git a/botanjs/src/Astro/Blog/Components/Notification.js b/botanjs/src/Astro/Blog/Components/Notification.js
index 61be214..436c86c 100644
--- a/botanjs/src/Astro/Blog/Components/Notification.js
+++ b/botanjs/src/Astro/Blog/Components/Notification.js
@@ -32,7 +32,8 @@
 	var init = function ()
 	{
 		var stage = Dand.id( "notifications" );
-		var bodyStyle = Dand.id( "nt_body" ).style;
+		var nt_body = Dand.id( "nt_body" );
+		var bodyStyle = nt_body.style;
 
 		/** @type {_AstConf_.Notification} */
 		var conf = Config.get( "Notification" );
diff --git a/botanjs/src/Astro/Blog/Layout/MainFrame.js b/botanjs/src/Astro/Blog/Layout/MainFrame.js
index b266b7a..e147ff2 100644
--- a/botanjs/src/Astro/Blog/Layout/MainFrame.js
+++ b/botanjs/src/Astro/Blog/Layout/MainFrame.js
@@ -125,9 +125,9 @@
 
 	var loadContactForm = function( e )
 	{
-		getData( "/ajax/get-snippet/ContactForm", function( data )
+		getData( "/ajax/get-snippet/ContactForm", function( rawdata )
 		{
-			var data = JSON.parse( data );
+			var data = JSON.parse( rawdata );
 			var wrapper = IDOMElement( contact_page ).first( 1 );
 			if ( wrapper )
 			{
@@ -345,21 +345,21 @@
 			return;
 		}
 		// far from observer
-		var slide_1 = { lowerLimit: 70, upperLimit: 100 }
+		var slide_1 = /** @type ({Dandelion.Bounds}) */ ({ lowerLimit: 70, upperLimit: 100 })
 		// bottom cloud, concentrated
-		, slide_2a = { lowerLimit: 0, upperLimit: 200 }
-		, slide_2b = { lowerLimit: 0, upperLimit: 200 }
-		, slide_2c = { lowerLimit: 0, upperLimit: 200 }
-
-		, slide_3 = { lowerLimit: 20, upperLimit: 100 }
-		, slide_4 = { lowerLimit: 70, upperLimit: 100 }
-
-		, cloudRange_1 = { lowerLimit: 0, upperLimit: 100, leftLimit: -10, rightLimit: 110 }
-		, cloudRange_2a = { lowerLimit: 180, upperLimit: 200, leftLimit: -10, rightLimit: 110 }
-		, cloudRange_2b = { lowerLimit: 290, upperLimit: 300, leftLimit: -10, rightLimit: 110 }
-		, cloudRange_2c = { lowerLimit: 390, upperLimit: 400, leftLimit: -10, rightLimit: 110 }
-		, cloudRange_3 = { lowerLimit: 0, upperLimit: 300, leftLimit: -10, rightLimit: 110 }
-		, cloudRange_4 = { lowerLimit: 80, upperLimit: 100, leftLimit: -10, rightLimit: 110 }
+		, slide_2a = /** @type ({Dandelion.Bounds}) */ ({ lowerLimit: 0, upperLimit: 200 })
+		, slide_2b = /** @type ({Dandelion.Bounds}) */ ({ lowerLimit: 0, upperLimit: 200 })
+		, slide_2c = /** @type ({Dandelion.Bounds}) */ ({ lowerLimit: 0, upperLimit: 200 })
+
+		, slide_3 = /** @type ({Dandelion.Bounds}) */ ({ lowerLimit: 20, upperLimit: 100 })
+		, slide_4 = /** @type ({Dandelion.Bounds}) */ ({ lowerLimit: 70, upperLimit: 100 })
+
+		, cloudRange_1 = /** @type ({Dandelion.Bounds}) */ ({ lowerLimit: 0, upperLimit: 100, leftLimit: -10, rightLimit: 110 })
+		, cloudRange_2a = /** @type ({Dandelion.Bounds}) */ ({ lowerLimit: 180, upperLimit: 200, leftLimit: -10, rightLimit: 110 })
+		, cloudRange_2b = /** @type ({Dandelion.Bounds}) */ ({ lowerLimit: 290, upperLimit: 300, leftLimit: -10, rightLimit: 110 })
+		, cloudRange_2c = /** @type ({Dandelion.Bounds}) */ ({ lowerLimit: 390, upperLimit: 400, leftLimit: -10, rightLimit: 110 })
+		, cloudRange_3 = /** @type ({Dandelion.Bounds}) */ ({ lowerLimit: 0, upperLimit: 300, leftLimit: -10, rightLimit: 110 })
+		, cloudRange_4 = /** @type ({Dandelion.Bounds}) */ ({ lowerLimit: 80, upperLimit: 100, leftLimit: -10, rightLimit: 110 })
 
 		, cCloudSymbol = ["\u25CF", "\u25CF", "\u25CF", "\u25CB", "\u25CB"]
 		, cCloudSymbol2 = ["\u25CC" ]
diff --git a/botanjs/src/Astro/Mechanism/Parallax.js b/botanjs/src/Astro/Mechanism/Parallax.js
index d7551a1..47a72e9 100644
--- a/botanjs/src/Astro/Mechanism/Parallax.js
+++ b/botanjs/src/Astro/Mechanism/Parallax.js
@@ -62,7 +62,7 @@
 
 	var attach = function ( eDispatcher, sSupplier, opacityModifier )
 	{
-		var opacityModifier = ( opacityModifier == undefined ) ? 1 : opacityModifier + 0;
+		opacityModifier = ( opacityModifier == undefined ) ? 1 : opacityModifier + 0;
 		var s, l = Parallax.totalCSSSlide;
 
 		for( var i = 0; i < l; i ++ )
diff --git a/botanjs/src/Components/Console.js b/botanjs/src/Components/Console.js
index 8900083..bee4594 100644
--- a/botanjs/src/Components/Console.js
+++ b/botanjs/src/Components/Console.js
@@ -7,7 +7,7 @@
 	var Perf                                = __import( "System.utils.Perf" );
 	/** @type {System.Cycle} */
 	var Cycle                               = __import( "System.Cycle" );
-	/** @type {System.Cycle.Tick} */
+	/** @type {System.Tick} */
 	var sTick                               = __import( "System.Cycle.TICK" );
 	/** @type {System.Global} */
 	var _global                             = __import( "System.Global" );
@@ -19,7 +19,7 @@
 	var Dand                                = __import( "Dandelion" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                         = __import( "Dandelion.IDOMElement" );
-	/** @type {Components.DockPanel} */
+	/** @type {typeof Components.DockPanel} */
 	var DockPanel                           = __import( "Components.DockPanel" );
 
 	var objTreeView = function( obj, level, prepend )
@@ -66,7 +66,7 @@
 				}
 			}
 
-		, writeLine = function ( dat, type )
+		, writeLine = function ( dat )
 		{
 			var res_txt = response_txt;
 
@@ -115,7 +115,7 @@
 			)
 			, Dand.wrap( null, 'debugWrap', null, response_txt )
 			, "dtop"
-		);
+		).stage;
 
 		var istage = IDOMElement( stage );
 
diff --git a/botanjs/src/Components/DockPanel.js b/botanjs/src/Components/DockPanel.js
index 1e1285f..4e7e5b7 100644
--- a/botanjs/src/Components/DockPanel.js
+++ b/botanjs/src/Components/DockPanel.js
@@ -47,7 +47,7 @@
 		w_div = Dand.wrap( null, w_id, 'fdock ' + align, w_div );
 
 		document.body.appendChild( w_div );
-		return w_div;
+		this.stage = w_div;
 	};
 
 	ns[ NS_EXPORT ]( EX_CLASS, "DockPanel", DockPanel );
diff --git a/botanjs/src/Libraries/SyntaxHighlighter/_this.js b/botanjs/src/Libraries/SyntaxHighlighter/_this.js
index af117ef..db3889d 100644
--- a/botanjs/src/Libraries/SyntaxHighlighter/_this.js
+++ b/botanjs/src/Libraries/SyntaxHighlighter/_this.js
@@ -874,9 +874,9 @@
 			getHtml: function(a) {
 				var b = "",
 					c = ["syntaxhighlighter"],
-					d;
+					d,gutter;
 				if (this.getParam("light") == true) this.params.toolbar = this.params["gutter"] = false;
-				className = "syntaxhighlighter";
+				var className = "syntaxhighlighter";
 				this.getParam("collapse") == true && c.push("collapsed");
 				if ((gutter = this.getParam("gutter")) == false) c.push("nogutter");
 				c.push(this.getParam("class-name"));
diff --git a/botanjs/src/System/Cycle/_this.js b/botanjs/src/System/Cycle/_this.js
index 02cd746..422da1e 100644
--- a/botanjs/src/System/Cycle/_this.js
+++ b/botanjs/src/System/Cycle/_this.js
@@ -74,6 +74,7 @@
 		a[ C_INTVL ] = interval;
 
 		tList[ tList.length ] = a;
+		return true;
 	};
 
 	var deletePermanentTicker = function ( id )
diff --git a/botanjs/src/System/Log.js b/botanjs/src/System/Log.js
index f1f7433..f8af417 100644
--- a/botanjs/src/System/Log.js
+++ b/botanjs/src/System/Log.js
@@ -1,39 +1,62 @@
 (function(){
 	var ns = __namespace( "System.Log" );
+
+	/** @type {!Array<function(*, number): void>} */
 	var handler = [];
 
+	/** @const {number} */
 	var SYSTEM = 1;
+
+	/** @const {number} */
 	var INFO = 16;
+
+	/** @const {number} */
 	var ERROR = 32;
 
-	var writeLine = function ( mesg, type )
+	/**
+	 * @param {*} mesg
+	 * @param {number=} type
+	 * @return {void}
+	 */
+	var writeLine = function(mesg, type)
 	{
-		type = ( type === undefined ) ? INFO : type;
+		type = (type === undefined) ? INFO : type;
 
 		var handled = false;
-		for( var i in handler )
+
+		for (var i in handler)
 		{
-			handler[i]( mesg, type );
+			handler[i](mesg, type);
 			handled = true;
 		}
 
-		if( !handled
-			&& window[ "console" ]
+		if (!handled
+			&& window["console"]
 			&& console.log
-		) console.log( mesg );
+		) {
+			console.log(mesg);
+		}
 	};
 
-	var registerHandler = function( func )
+	/**
+	 * @param {function(*, number): void} func
+	 * @return {number}
+	 */
+	var registerHandler = function(func)
 	{
 		var index = -1;
-		handler[ index = handler.length ] = func;
+		handler[index = handler.length] = func;
 
 		return index;
 	};
 
-	var removeHandler = function( index )
+	/**
+	 * @param {number} index
+	 * @return {void}
+	 */
+	var removeHandler = function(index)
 	{
-		delete handler[ index ];
+		delete handler[index];
 	};
 
 	ns[ NS_EXPORT ]( EX_FUNC, "writeLine", writeLine );
diff --git a/botanjs/src/externs/Astro.Bootstrap.js b/botanjs/src/externs/Astro.Bootstrap.js
index 2be6d8e..eaea07c 100644
--- a/botanjs/src/externs/Astro.Bootstrap.js
+++ b/botanjs/src/externs/Astro.Bootstrap.js
@@ -1,8 +1,8 @@
 /** @constructor */
 Astro.Bootstrap = function() {};
 
-/** @type {Function} */
-Astro.Bootstrap.init;
+/** @type {function(): void} */
+Astro.Bootstrap.prototype.init;
 
-/** @type {Function} */
-Astro.Bootstrap.regInit;
+/** @param {function(): void} callback */
+Astro.Bootstrap.prototype.regInit = function(callback) {};
diff --git a/botanjs/src/externs/Astro.Mechanism.Parallax.js b/botanjs/src/externs/Astro.Mechanism.Parallax.js
index 719bd2e..bb7d2b1 100644
--- a/botanjs/src/externs/Astro.Mechanism.Parallax.js
+++ b/botanjs/src/externs/Astro.Mechanism.Parallax.js
@@ -1,9 +1,19 @@
 /** @constructor */
 Astro.Mechanism.Parallax = function() {};
 
-/** @type {Function} */
-Astro.Mechanism.Parallax.cssSlide;
-/** @type {Function} */
-Astro.Mechanism.Parallax.verticalSlideTo;
-/** @type {Function} */
-Astro.Mechanism.Parallax.attach;
+/**
+ * @param {HTMLElement} el
+ * @param {number} index
+ * @param {Dandelion.Bounds} dist
+ */
+Astro.Mechanism.Parallax.prototype.cssSlide = function(el, index, dist) {};
+
+/** @param {number} index */
+Astro.Mechanism.Parallax.prototype.verticalSlideTo = function(index) {};
+
+/**
+ * @param {EventTarget} target
+ * @param {Dandelion.Window} wsupp
+ * @param {number} m_opacity
+ */
+Astro.Mechanism.Parallax.prototype.attach = function(target, wsupp, m_opacity) {};
diff --git a/botanjs/src/externs/Components.DockPanel.js b/botanjs/src/externs/Components.DockPanel.js
new file mode 100644
index 0000000..69388cb
--- /dev/null
+++ b/botanjs/src/externs/Components.DockPanel.js
@@ -0,0 +1,10 @@
+/** @constructor
+ * @param {string} id
+ * @param {*} title
+ * @param {*} content
+ * @param {string} align
+ */
+Components.DockPanel = function(id, title, content, align) {};
+
+/** @type {HTMLElement} */
+Components.DockPanel.prototype.stage;
diff --git a/botanjs/src/externs/Dandelion.Window.js b/botanjs/src/externs/Dandelion.Window.js
new file mode 100644
index 0000000..29d1516
--- /dev/null
+++ b/botanjs/src/externs/Dandelion.Window.js
@@ -0,0 +1,15 @@
+/** @constructor */
+Dandelion.Window = function() {};
+
+/** @type {number} */
+Dandelion.Window.prototype.scrollTop;
+/** @type {number} */
+Dandelion.Window.prototype.scrollLeft;
+/** @type {number} */
+Dandelion.Window.prototype.scrollWidth;
+/** @type {number} */
+Dandelion.Window.prototype.scrollHeight;
+/** @type {number} */
+Dandelion.Window.prototype.clientWidth;
+/** @type {number} */
+Dandelion.Window.prototype.clientHeight;
diff --git a/botanjs/src/externs/Dandelion.js b/botanjs/src/externs/Dandelion.js
index c5a940c..dfd0489 100644
--- a/botanjs/src/externs/Dandelion.js
+++ b/botanjs/src/externs/Dandelion.js
@@ -36,3 +36,13 @@ Dandelion.gname = function() {};
 
 /** @type {Function} */
 Dandelion.glass = function() {};
+
+/**
+ * @typedef {{
+ *   lowerLimit: (number|undefined),
+ *   upperLimit: (number|undefined),
+ *   leftLimit: (number|undefined),
+ *   rightLimit: (number|undefined)
+ * }}
+ */
+Dandelion.Bounds;
diff --git a/botanjs/src/externs/Libraries.SyntaxHighLighter.js b/botanjs/src/externs/Libraries.SyntaxHighLighter.js
index e9cd30c..6418e6e 100644
--- a/botanjs/src/externs/Libraries.SyntaxHighLighter.js
+++ b/botanjs/src/externs/Libraries.SyntaxHighLighter.js
@@ -2,22 +2,22 @@
 Libraries.SyntaxHighlighter = function() {};
 
 /** @type {function(...?): ?} */
-Libraries.SyntaxHighlighter.all;
+Libraries.SyntaxHighlighter.prototype.all = function() {};
 
 /** @type {!Object<string, *>} */
-Libraries.SyntaxHighlighter.defaults;
+Libraries.SyntaxHighlighter.prototype.defaults;
 
 /** @type {function(...?): ?} */
-Libraries.SyntaxHighlighter.highlight;
+Libraries.SyntaxHighlighter.prototype.highlight = function(){};
 
 /** @type {!Object<string, *>} */
-Libraries.SyntaxHighlighter.Highlighter;
+Libraries.SyntaxHighlighter.prototype.Highlighter;
 
 /** @type {!Object<string, *>} */
-Libraries.SyntaxHighlighter.brushes;
+Libraries.SyntaxHighlighter.prototype.brushes;
 
 /** @type {!Object<string, !RegExp>} */
-Libraries.SyntaxHighlighter.regexLib;
+Libraries.SyntaxHighlighter.prototype.regexLib;
 
 
 /** @const */
diff --git a/botanjs/src/externs/System.Cycle.js b/botanjs/src/externs/System.Cycle.js
index 917267e..f44b0f2 100644
--- a/botanjs/src/externs/System.Cycle.js
+++ b/botanjs/src/externs/System.Cycle.js
@@ -1,17 +1,29 @@
 /** @constructor */
 System.Cycle = function (){}
 
-/** @type {Function} */
-System.Cycle.next;
+/**
+ * @param {function(): void} callback
+ */
+System.Cycle.prototype.next = function(callback) {};
 
-/** @type {Function} */
-System.Cycle.delay;
+/**
+ * @param {function(): void} callback
+ * @param {number} ms
+ */
+System.Cycle.prototype.delay = function(callback, ms) {};
 
-/** @type {Function} */
-System.Cycle.perma;
+/**
+ * @param {string} id
+ * @param {function(): void} callback
+ * @param {number} intvl
+ * @return {boolean}
+ */
+System.Cycle.prototype.perma = function(id, callback, intvl){};
 
-/** @type {Function} */
-System.Cycle.permaRemove;
+/**
+ * @param {function(string): void} callback
+ */
+System.Cycle.prototype.permaRemove = function(callback) {};
 
 /** @type {System.Tick} */
-System.Cycle.TICK;
+System.Cycle.prototype.TICK;
diff --git a/botanjs/src/externs/System.Log.js b/botanjs/src/externs/System.Log.js
index 8177f0e..8f52819 100644
--- a/botanjs/src/externs/System.Log.js
+++ b/botanjs/src/externs/System.Log.js
@@ -1,16 +1,32 @@
-/** @constructor */
-System.Log = function (){}
+/**
+ * @constructor
+ */
+System.Log = function() {};
 
-/** @type {Function} */
-System.Log.writeLine;
-/** @type {Function} */
-System.Log.registerHandler;
-/** @type {Function} */
-System.Log.removeHandler;
+/**
+ * @param {*} mesg
+ * @param {number=} type
+ * @return {void}
+ */
+System.Log.prototype.writeLine = function(mesg, type) {};
 
-/** @const */
-System.Log.ERROR;
-/** @const */
-System.Log.INFO;
-/** @const */
-System.Log.SYSTEM;
+/**
+ * @param {function(*, number): void} func
+ * @return {number}
+ */
+System.Log.prototype.registerHandler = function(func) {};
+
+/**
+ * @param {number} index
+ * @return {void}
+ */
+System.Log.prototype.removeHandler = function(index) {};
+
+/** @const {number} */
+System.Log.prototype.ERROR;
+
+/** @const {number} */
+System.Log.prototype.INFO;
+
+/** @const {number} */
+System.Log.prototype.SYSTEM;
diff --git a/botanjs/src/externs/System.Tick.js b/botanjs/src/externs/System.Tick.js
index 5deafd2..b50725c 100644
--- a/botanjs/src/externs/System.Tick.js
+++ b/botanjs/src/externs/System.Tick.js
@@ -11,3 +11,6 @@ System.Tick.prototype.stop;
 
 /** @type {Array} */
 System.Tick.prototype.steppers;
+
+/** @type {number} */
+System.Tick.prototype.count;
diff --git a/resolver-go/internal/generated/buildinfo_gen.go b/resolver-go/internal/generated/buildinfo_gen.go
index 247a68d..2bb91de 100644
--- a/resolver-go/internal/generated/buildinfo_gen.go
+++ b/resolver-go/internal/generated/buildinfo_gen.go
@@ -2,5 +2,5 @@ package generated
 
 const (
 	IMAGE_TAG   = "dev"
-	Timestamp   = "20260613.232247"
+	Timestamp   = "20260614.213626"
 )
diff --git a/resolver-go/internal/generated/classmap_gen.go b/resolver-go/internal/generated/classmap_gen.go
index 4788230..63d0917 100644
--- a/resolver-go/internal/generated/classmap_gen.go
+++ b/resolver-go/internal/generated/classmap_gen.go
@@ -44,7 +44,7 @@ var ClassMap = &classmap.Map{
 		"Astro.Blog.Components.ArticleContent":                             {Name: "Astro.Blog.Components.ArticleContent", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/ArticleContent.js", JSHash: "2e208eae51421946f874dd78cb05d974a689bdef", CSSHash: "34fc82974af2ae7040819889bc8e7a1bd2b48cd6"}},
 		"Astro.Blog.Components.Bubble":                                     {Name: "Astro.Blog.Components.Bubble", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.utils.EventKey", "Dandelion", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Bubble.js", JSHash: "7b344eb7e4024292d52767929d7efe6fc98a9de9", CSSHash: "2513518106d6d1c7a42e95c28becb3ddfe39e040"}},
 		"Astro.Blog.Components.Calendar":                                   {Name: "Astro.Blog.Components.Calendar", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.Debug", "Dandelion", "Dandelion.IDOMElement", "Astro.utils.Date"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Calendar.js", JSHash: "122c4ec4388b9c959692c1953a3e11563ab02f28", CSSHash: "305a716f79149cbd609791989ec8b04401a7406f"}},
-		"Astro.Blog.Components.Comment":                                    {Name: "Astro.Blog.Components.Comment", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.Debug", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.EventKey", "System.utils.DataKey", "System.utils.Perf", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.Blog.Components.Bubble", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Comment.js", JSHash: "0ffeef5ddef4b4f3f8bdce1e30e279d4b5c05882", CSSHash: "7025d26f1d9579a36c128effc3e9a833e22787eb"}},
+		"Astro.Blog.Components.Comment":                                    {Name: "Astro.Blog.Components.Comment", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.Debug", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.EventKey", "System.utils.DataKey", "System.utils.Perf", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.Blog.Components.Bubble", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Comment.js", JSHash: "98bb9297511f1f7692c09414c43fa5396e3bf675", CSSHash: "7025d26f1d9579a36c128effc3e9a833e22787eb"}},
 		"Astro.Blog.Components.ControlPanel":                               {Name: "Astro.Blog.Components.ControlPanel", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/ControlPanel.js", JSHash: "e646278422597037693f16206b8c9dc00aa0f005", CSSHash: "812c94c181c62bd44f1871b5e44952e164df4401"}},
 		"Astro.Blog.Components.CrowdTag":                                   {Name: "Astro.Blog.Components.CrowdTag", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/CrowdTag.js", JSHash: "6720800b2b1f71dd1931ef74885460f898bb8c0e", CSSHash: "d2862681238786af37b1b5c91d266448a9b072b0"}},
 		"Astro.Blog.Components.Entry":                                      {Name: "Astro.Blog.Components.Entry", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -54,7 +54,7 @@ var ClassMap = &classmap.Map{
 		"Astro.Blog.Components.Entry.Tag":                                  {Name: "Astro.Blog.Components.Entry.Tag", Kind: "class", Parent: "Astro.Blog.Components.Entry", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/Entry/Tag.js", JSHash: "f64c75bf37dba830d6b335918c1ac5670f297396", CSSHash: "42851637f7fc9cece8ac9a666f0f74a75544eae0"}},
 		"Astro.Blog.Components.Entry.Tile":                                 {Name: "Astro.Blog.Components.Entry.Tile", Kind: "class", Parent: "Astro.Blog.Components.Entry", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/Entry/Tile.js", JSHash: "0603f59d19c81c5b7e1233fce579c79502427e7c", CSSHash: "2a925b7465760a02011eaeca6e0a353389578618"}},
 		"Astro.Blog.Components.Footnote":                                   {Name: "Astro.Blog.Components.Footnote", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.utils.Date"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Footnote.js", JSHash: "a48a57284210021bcf3aaf5bf9a4be9d5e1579ea", CSSHash: "44c3c00c1df7ec8faea902fa19840902429441b8"}},
-		"Astro.Blog.Components.Notification":                               {Name: "Astro.Blog.Components.Notification", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Debug", "System.Cycle", "Dandelion.IDOMElement", "System.utils.IKey", "System.utils.DataKey", "System.utils.EventKey", "Dandelion", "Components.MessageBox", "Components.Mouse.ContextMenu", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.utils.Date", "System.Net.postData", "Astro.utils.Date.smstamp"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Notification.js", JSHash: "babbc0de12589c08fe6f86d9dbc7b1839334eb4f", CSSHash: "2c278ade8d5d0b49a62c10a2d239c1f7dd5edc62"}},
+		"Astro.Blog.Components.Notification":                               {Name: "Astro.Blog.Components.Notification", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Debug", "System.Cycle", "Dandelion.IDOMElement", "System.utils.IKey", "System.utils.DataKey", "System.utils.EventKey", "Dandelion", "Components.MessageBox", "Components.Mouse.ContextMenu", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.utils.Date", "System.Net.postData", "Astro.utils.Date.smstamp"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Notification.js", JSHash: "1d0556c82ad620bb50eb3088f2db5cea9ad9fbf6", CSSHash: "2c278ade8d5d0b49a62c10a2d239c1f7dd5edc62"}},
 		"Astro.Blog.Components.Section":                                    {Name: "Astro.Blog.Components.Section", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/Section.js", JSHash: "d814528ea8a20fc06197b56896d1c63ffbf40fcd", CSSHash: "c48e35eafe87b99383b8b3a397eac5d569f68f66"}},
 		"Astro.Blog.Components.SiteFile":                                   {Name: "Astro.Blog.Components.SiteFile", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Debug", "System.utils.IKey", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "System.Net.getData", "Astro.utils.Date.smstamp"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/SiteFile.js", JSHash: "e3ba91c21c7415df76f76193171de7ca5bc9d69c", CSSHash: "94f07554cb4ad0b81529be89f908f039abc9c2cb"}},
 		"Astro.Blog.Components.SocialButtons":                              {Name: "Astro.Blog.Components.SocialButtons", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"Dandelion", "System.utils.IKey", "Astro.Bootstrap"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/SocialButtons.js", JSHash: "ccdc9ce8fcdde608731b9e23ae77c6f2c61e512b", CSSHash: "53c508505fa9c8a744b4d276d168b535f1e7d3ac"}},
@@ -73,7 +73,7 @@ var ClassMap = &classmap.Map{
 		"Astro.Blog.Layout.Article.Tag":                                    {Name: "Astro.Blog.Layout.Article.Tag", Kind: "class", Parent: "Astro.Blog.Layout.Article", Imports: []string{"Astro.Blog.Components.Entry.List"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/Article/Tag.js", JSHash: "316e254b71f4f1e7f565dd2364d4b244942e1bd0", CSSHash: "1"}},
 		"Astro.Blog.Layout.ErrorPages":                                     {Name: "Astro.Blog.Layout.ErrorPages", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string{"System.Cycle", "Dandelion", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.Mechanism.CharacterCloud", "Astro.Mechanism.Parallax"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/ErrorPages.js", JSHash: "1ddc77aa611e2fc85b734be104a2702820afe4f7", CSSHash: "10c6fbfe1a05ede1204926d26eb9fb12f97802fa"}},
 		"Astro.Blog.Layout.Login":                                          {Name: "Astro.Blog.Layout.Login", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string{"System.Cycle", "System.utils.IKey", "Components.MessageBox", "Dandelion", "Astro.Bootstrap", "Astro.Blog.Config", "Dandelion.CSSReset", "Dandelion.CSSAnimations"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/Login.js", JSHash: "452180253f3b751eeb249ddb9a9cf17dd0f75354", CSSHash: "66b8ec358f3d29b121927d0f72360e33ad90d2ad"}},
-		"Astro.Blog.Layout.MainFrame":                                      {Name: "Astro.Blog.Layout.MainFrame", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string{"System.Cycle", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.DataKey", "System.utils.Perf", "Dandelion", "Dandelion.IDOMElement", "Dandelion.Window", "System.Debug", "Astro.Bootstrap", "Astro.Mechanism.CharacterCloud", "Astro.Mechanism.Parallax", "Astro.Blog.Components.Bubble", "System.Net.postData", "Dandelion.CSSReset", "Dandelion.CSSAnimations", "Astro.Blog.SharedStyle", "Astro.Starfall.Element.Layer", "System.Net.getData", "System.Global.MOBILE"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/MainFrame.js", JSHash: "2833f285189524cad1481e1023b92635df5cb69f", CSSHash: "1d8c7b3b80091a4f80f2b4f3cbfebf7a424a9dbb"}},
+		"Astro.Blog.Layout.MainFrame":                                      {Name: "Astro.Blog.Layout.MainFrame", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string{"System.Cycle", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.DataKey", "System.utils.Perf", "Dandelion", "Dandelion.IDOMElement", "Dandelion.Window", "System.Debug", "Astro.Bootstrap", "Astro.Mechanism.CharacterCloud", "Astro.Mechanism.Parallax", "Astro.Blog.Components.Bubble", "System.Net.postData", "Dandelion.CSSReset", "Dandelion.CSSAnimations", "Astro.Blog.SharedStyle", "Astro.Starfall.Element.Layer", "System.Net.getData", "System.Global.MOBILE"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/MainFrame.js", JSHash: "2c4d683dd860c54049782ac11de4eceb8a4df0bc", CSSHash: "1d8c7b3b80091a4f80f2b4f3cbfebf7a424a9dbb"}},
 		"Astro.Blog.Layout.Subs":                                           {Name: "Astro.Blog.Layout.Subs", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Layout/Subs/_this.js", JSHash: "7f7ff173d8b86eccc023d17c22e55cf259925558", CSSHash: "1"}},
 		"Astro.Blog.Layout.Subs.Manage":                                    {Name: "Astro.Blog.Layout.Subs.Manage", Kind: "class", Parent: "Astro.Blog.Layout.Subs", Imports: []string{"Components.MessageBox", "Dandelion", "Astro.Bootstrap", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/Subs/Manage.js", JSHash: "45d0286adfcfbe1620e2128d3a859153e0f1b0b7", CSSHash: "eb6d28864a3b2faf9ff90912da63db158bed626f"}},
 		"Astro.Blog.SharedStyle":                                           {Name: "Astro.Blog.SharedStyle", Kind: "class", Parent: "Astro.Blog", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/SharedStyle.js", JSHash: "e946130da823a5b2d089b5b416c13b628eb1637d", CSSHash: "f8ff15304a5e38e199b713bac48e282d2bf10f45"}},
@@ -86,7 +86,7 @@ var ClassMap = &classmap.Map{
 		"Astro.Mechanism":                                                  {Name: "Astro.Mechanism", Kind: "class", Parent: "Astro", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Mechanism.CharacterCloud":                                   {Name: "Astro.Mechanism.CharacterCloud", Kind: "class", Parent: "Astro.Mechanism", Imports: []string{"Dandelion"}, Resource: classmap.Resource{Src: "Astro/Mechanism/CharacterCloud.js", JSHash: "a15cc6faa3dbeca99f4e39d90de06b0f562f6c1c", CSSHash: "7cae98eaf8e3d5d1cd7fadaa6806ce3d65d74d92"}},
 		"Astro.Mechanism.CharacterCloud.create":                            {Name: "Astro.Mechanism.CharacterCloud.create", Kind: "method", Parent: "Astro.Mechanism.CharacterCloud", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"Astro.Mechanism.Parallax":                                         {Name: "Astro.Mechanism.Parallax", Kind: "class", Parent: "Astro.Mechanism", Imports: []string{"System.Cycle", "Dandelion", "Dandelion.IDOMObject"}, Resource: classmap.Resource{Src: "Astro/Mechanism/Parallax.js", JSHash: "d5b62d4af29e15f81ebcadfec0912db6c9e5ac7a", CSSHash: "f8c02f4ec1be082e02c51f0b5ea39cbdd5b0e49f"}},
+		"Astro.Mechanism.Parallax":                                         {Name: "Astro.Mechanism.Parallax", Kind: "class", Parent: "Astro.Mechanism", Imports: []string{"System.Cycle", "Dandelion", "Dandelion.IDOMObject"}, Resource: classmap.Resource{Src: "Astro/Mechanism/Parallax.js", JSHash: "e159af40e2d923c6545ab0d558bd46b2636b7410", CSSHash: "f8c02f4ec1be082e02c51f0b5ea39cbdd5b0e49f"}},
 		"Astro.Mechanism.Parallax.attach":                                  {Name: "Astro.Mechanism.Parallax.attach", Kind: "method", Parent: "Astro.Mechanism.Parallax", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Mechanism.Parallax.cssSlide":                                {Name: "Astro.Mechanism.Parallax.cssSlide", Kind: "method", Parent: "Astro.Mechanism.Parallax", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Mechanism.Parallax.verticalSlideTo":                         {Name: "Astro.Mechanism.Parallax.verticalSlideTo", Kind: "method", Parent: "Astro.Mechanism.Parallax", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -117,8 +117,8 @@ var ClassMap = &classmap.Map{
 		"Astro.utils.Date.prettyDay":                                       {Name: "Astro.utils.Date.prettyDay", Kind: "method", Parent: "Astro.utils.Date", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.utils.Date.smstamp":                                         {Name: "Astro.utils.Date.smstamp", Kind: "method", Parent: "Astro.utils.Date", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Components":                                                       {Name: "Components", Kind: "class", Parent: "", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/_this.js", JSHash: "f4cb7babe62a5cdae34d2c4ebcb55071e81da4ff", CSSHash: "1"}},
-		"Components.Console":                                               {Name: "Components.Console", Kind: "class", Parent: "Components", Imports: []string{"System.utils.Perf", "System.Cycle", "System.Cycle.TICK", "System.Global", "System.Log", "System.Debug", "Dandelion", "Dandelion.IDOMElement", "Components.DockPanel"}, Resource: classmap.Resource{Src: "Components/Console.js", JSHash: "348c0ff1762c0a00ed813e3419f17ed695399ec3", CSSHash: "452f4a36e8fd7321c7d177a311047c8b71165e48"}},
-		"Components.DockPanel":                                             {Name: "Components.DockPanel", Kind: "class", Parent: "Components", Imports: []string{"System.Cycle", "System.utils.DataKey", "Dandelion", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Components/DockPanel.js", JSHash: "d9f9c996536ac6b5d6f5f7262b7889468a36b13b", CSSHash: "af0d91982c764ee62c46b243be68c08f2808e82b"}},
+		"Components.Console":                                               {Name: "Components.Console", Kind: "class", Parent: "Components", Imports: []string{"System.utils.Perf", "System.Cycle", "System.Cycle.TICK", "System.Global", "System.Log", "System.Debug", "Dandelion", "Dandelion.IDOMElement", "Components.DockPanel"}, Resource: classmap.Resource{Src: "Components/Console.js", JSHash: "1c19da4a04f458a1ce095001397fa9bcdaa91348", CSSHash: "452f4a36e8fd7321c7d177a311047c8b71165e48"}},
+		"Components.DockPanel":                                             {Name: "Components.DockPanel", Kind: "class", Parent: "Components", Imports: []string{"System.Cycle", "System.utils.DataKey", "Dandelion", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Components/DockPanel.js", JSHash: "dffa9d89d72075c045f7653831406cabece8d8e3", CSSHash: "af0d91982c764ee62c46b243be68c08f2808e82b"}},
 		"Components.MessageBox":                                            {Name: "Components.MessageBox", Kind: "class", Parent: "Components", Imports: []string{"System.Cycle.Trigger", "Dandelion", "Dandelion.IDOMObject", "System.utils.EventKey", "Dandelion.CSSAnimations"}, Resource: classmap.Resource{Src: "Components/MessageBox.js", JSHash: "63c831ec6493912492780009a76997d7bc59cad4", CSSHash: "5571fa4c2e1324dcf1f2e18df8b6105cf37dfc53"}},
 		"Components.Mouse":                                                 {Name: "Components.Mouse", Kind: "class", Parent: "Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/Mouse/_this.js", JSHash: "9ec5ced53a20ea1d057e2142668e27e5df7d49f6", CSSHash: "1"}},
 		"Components.Mouse.Clipboard":                                       {Name: "Components.Mouse.Clipboard", Kind: "class", Parent: "Components.Mouse", Imports: []string{"System.Global", "System.Debug", "System.utils.Perf", "System.Cycle", "Dandelion.IDOMElement", "Dandelion"}, Resource: classmap.Resource{Src: "Components/Mouse/Clipboard.js", JSHash: "32de0da9ec7e9a4c4e28267a5f60bb815b5af92d", CSSHash: "1b7f85206ce1560ed23d3b270e093022e25d2e61"}},
@@ -209,7 +209,7 @@ var ClassMap = &classmap.Map{
 		"Dandelion.wrapna":                                                 {Name: "Dandelion.wrapna", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Dandelion.wrapne":                                                 {Name: "Dandelion.wrapne", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Libraries":                                                        {Name: "Libraries", Kind: "class", Parent: "", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"Libraries.SyntaxHighlighter":                                      {Name: "Libraries.SyntaxHighlighter", Kind: "class", Parent: "Libraries", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/_this.js", JSHash: "3419332fc98c2a094bc8f2a3b16b87b8d98bd309", CSSHash: "3860c0c289ac761da7d9c595633f8bba8f58afe9"}},
+		"Libraries.SyntaxHighlighter":                                      {Name: "Libraries.SyntaxHighlighter", Kind: "class", Parent: "Libraries", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/_this.js", JSHash: "ebd53c1bd9ff84eb711687ceacb02ebf6357eec3", CSSHash: "3860c0c289ac761da7d9c595633f8bba8f58afe9"}},
 		"Libraries.SyntaxHighlighter.Brush":                                {Name: "Libraries.SyntaxHighlighter.Brush", Kind: "class", Parent: "Libraries.SyntaxHighlighter", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Libraries.SyntaxHighlighter.Brush.AS3":                            {Name: "Libraries.SyntaxHighlighter.Brush.AS3", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/AS3.js", JSHash: "a9bcdf532ab90c0917f234e1fce13d7cbde6d303", CSSHash: "1"}},
 		"Libraries.SyntaxHighlighter.Brush.AppleScript":                    {Name: "Libraries.SyntaxHighlighter.Brush.AppleScript", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/AppleScript.js", JSHash: "2c161d78cd5b293e420559a6cb41dbf52af36364", CSSHash: "1"}},
@@ -254,12 +254,12 @@ var ClassMap = &classmap.Map{
 		"Libraries.SyntaxHighlighter.Theme.MDUltra":                        {Name: "Libraries.SyntaxHighlighter.Theme.MDUltra", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Theme", Imports: []string{"Libraries.SyntaxHighlighter.Core.MDUltra"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Theme/MDUltra.js", JSHash: "2970d2bc1f32512fdb2f8487b3fa718a41681c83", CSSHash: "632ce299b8f90d3de35f1505e72db4e1659e0859"}},
 		"Libraries.SyntaxHighlighter.Theme.Midnight":                       {Name: "Libraries.SyntaxHighlighter.Theme.Midnight", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Theme", Imports: []string{"Libraries.SyntaxHighlighter.Core.Midnight"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Theme/Midnight.js", JSHash: "9a5807549212dab3d3430e341cab2311b2f374e5", CSSHash: "138fe3f3bb425837fcfd9b46c3cc5ad199cb01cc"}},
 		"Libraries.SyntaxHighlighter.Theme.RDark":                          {Name: "Libraries.SyntaxHighlighter.Theme.RDark", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Theme", Imports: []string{"Libraries.SyntaxHighlighter.Core.RDark"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Theme/RDark.js", JSHash: "4eb10422695ef08331f8c5e91c6ca5b655c4b641", CSSHash: "b4970092adfcad76da353fa815b8502a9d09f097"}},
-		"Libraries.XRegExp":                                                {Name: "Libraries.XRegExp", Kind: "class", Parent: "Libraries", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/_this.js", JSHash: "3419332fc98c2a094bc8f2a3b16b87b8d98bd309", CSSHash: "3860c0c289ac761da7d9c595633f8bba8f58afe9"}},
+		"Libraries.XRegExp":                                                {Name: "Libraries.XRegExp", Kind: "class", Parent: "Libraries", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/_this.js", JSHash: "ebd53c1bd9ff84eb711687ceacb02ebf6357eec3", CSSHash: "3860c0c289ac761da7d9c595633f8bba8f58afe9"}},
 		"System":                                                           {Name: "System", Kind: "class", Parent: "", Imports: []string(nil), Resource: classmap.Resource{Src: "System/_this.js", JSHash: "234db843eb17b025eddacdca0083828d0e7700a6", CSSHash: "1"}},
 		"System.Compression":                                               {Name: "System.Compression", Kind: "class", Parent: "System", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Compression/_this.js", JSHash: "237bff609161dca51d55c73b92a477c54286e26d", CSSHash: "1"}},
 		"System.Compression.Zlib":                                          {Name: "System.Compression.Zlib", Kind: "class", Parent: "System.Compression", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Compression/Zlib.js", JSHash: "50248acd8ef77f57eff8998011ac296b252142d4", CSSHash: "1"}},
 		"System.Compression.Zlib.Deflate":                                  {Name: "System.Compression.Zlib.Deflate", Kind: "method", Parent: "System.Compression.Zlib", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"System.Cycle":                                                     {Name: "System.Cycle", Kind: "class", Parent: "System", Imports: []string{"System.utils", "System.Tick", "System.Debug"}, Resource: classmap.Resource{Src: "System/Cycle/_this.js", JSHash: "8eb5c18fd0923d3b2bf27ab48105cb9ce07f4c5e", CSSHash: "1"}},
+		"System.Cycle":                                                     {Name: "System.Cycle", Kind: "class", Parent: "System", Imports: []string{"System.utils", "System.Tick", "System.Debug"}, Resource: classmap.Resource{Src: "System/Cycle/_this.js", JSHash: "b1ff650c56acb89a96809cb7180c495a49684c46", CSSHash: "1"}},
 		"System.Cycle.TICK":                                                {Name: "System.Cycle.TICK", Kind: "prop", Parent: "System.Cycle", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Cycle.Trigger":                                             {Name: "System.Cycle.Trigger", Kind: "class", Parent: "System.Cycle", Imports: []string{"System.Cycle", "System.Debug"}, Resource: classmap.Resource{Src: "System/Cycle/Trigger.js", JSHash: "b18fae66ada79a1cc2e812dea1055422f1172a37", CSSHash: "1"}},
 		"System.Cycle.Trigger.height":                                      {Name: "System.Cycle.Trigger.height", Kind: "method", Parent: "System.Cycle.Trigger", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -285,7 +285,7 @@ var ClassMap = &classmap.Map{
 		"System.Global.MOBILE":                                             {Name: "System.Global.MOBILE", Kind: "prop", Parent: "System.Global", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Global.SECURE_HTTP":                                        {Name: "System.Global.SECURE_HTTP", Kind: "prop", Parent: "System.Global", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Global.debug":                                              {Name: "System.Global.debug", Kind: "prop", Parent: "System.Global", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"System.Log":                                                       {Name: "System.Log", Kind: "class", Parent: "System", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Log.js", JSHash: "de65e2795ac10fb2cbe8ecdedba66e0617bec8ad", CSSHash: "1"}},
+		"System.Log":                                                       {Name: "System.Log", Kind: "class", Parent: "System", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Log.js", JSHash: "d2a2a12cf34bc2e737a3cc48cd6fc536c2ddc84e", CSSHash: "1"}},
 		"System.Log.ERROR":                                                 {Name: "System.Log.ERROR", Kind: "prop", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Log.INFO":                                                  {Name: "System.Log.INFO", Kind: "prop", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Log.SYSTEM":                                                {Name: "System.Log.SYSTEM", Kind: "prop", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -346,7 +346,7 @@ var ClassMap = &classmap.Map{
 		"Astro/Blog/Components/ArticleContent.js":                             {Src: "Astro/Blog/Components/ArticleContent.js", JSHash: "2e208eae51421946f874dd78cb05d974a689bdef", CSSHash: "34fc82974af2ae7040819889bc8e7a1bd2b48cd6"},
 		"Astro/Blog/Components/Bubble.js":                                     {Src: "Astro/Blog/Components/Bubble.js", JSHash: "7b344eb7e4024292d52767929d7efe6fc98a9de9", CSSHash: "2513518106d6d1c7a42e95c28becb3ddfe39e040"},
 		"Astro/Blog/Components/Calendar.js":                                   {Src: "Astro/Blog/Components/Calendar.js", JSHash: "122c4ec4388b9c959692c1953a3e11563ab02f28", CSSHash: "305a716f79149cbd609791989ec8b04401a7406f"},
-		"Astro/Blog/Components/Comment.js":                                    {Src: "Astro/Blog/Components/Comment.js", JSHash: "0ffeef5ddef4b4f3f8bdce1e30e279d4b5c05882", CSSHash: "7025d26f1d9579a36c128effc3e9a833e22787eb"},
+		"Astro/Blog/Components/Comment.js":                                    {Src: "Astro/Blog/Components/Comment.js", JSHash: "98bb9297511f1f7692c09414c43fa5396e3bf675", CSSHash: "7025d26f1d9579a36c128effc3e9a833e22787eb"},
 		"Astro/Blog/Components/ControlPanel.js":                               {Src: "Astro/Blog/Components/ControlPanel.js", JSHash: "e646278422597037693f16206b8c9dc00aa0f005", CSSHash: "812c94c181c62bd44f1871b5e44952e164df4401"},
 		"Astro/Blog/Components/CrowdTag.js":                                   {Src: "Astro/Blog/Components/CrowdTag.js", JSHash: "6720800b2b1f71dd1931ef74885460f898bb8c0e", CSSHash: "d2862681238786af37b1b5c91d266448a9b072b0"},
 		"Astro/Blog/Components/Entry/Blog.js":                                 {Src: "Astro/Blog/Components/Entry/Blog.js", JSHash: "0f5776a529380627bbf0859a5810e9995333f5c7", CSSHash: "0473bbb41f9b27a5d448a36c1e175f6f18841019"},
@@ -355,7 +355,7 @@ var ClassMap = &classmap.Map{
 		"Astro/Blog/Components/Entry/Tag.js":                                  {Src: "Astro/Blog/Components/Entry/Tag.js", JSHash: "f64c75bf37dba830d6b335918c1ac5670f297396", CSSHash: "42851637f7fc9cece8ac9a666f0f74a75544eae0"},
 		"Astro/Blog/Components/Entry/Tile.js":                                 {Src: "Astro/Blog/Components/Entry/Tile.js", JSHash: "0603f59d19c81c5b7e1233fce579c79502427e7c", CSSHash: "2a925b7465760a02011eaeca6e0a353389578618"},
 		"Astro/Blog/Components/Footnote.js":                                   {Src: "Astro/Blog/Components/Footnote.js", JSHash: "a48a57284210021bcf3aaf5bf9a4be9d5e1579ea", CSSHash: "44c3c00c1df7ec8faea902fa19840902429441b8"},
-		"Astro/Blog/Components/Notification.js":                               {Src: "Astro/Blog/Components/Notification.js", JSHash: "babbc0de12589c08fe6f86d9dbc7b1839334eb4f", CSSHash: "2c278ade8d5d0b49a62c10a2d239c1f7dd5edc62"},
+		"Astro/Blog/Components/Notification.js":                               {Src: "Astro/Blog/Components/Notification.js", JSHash: "1d0556c82ad620bb50eb3088f2db5cea9ad9fbf6", CSSHash: "2c278ade8d5d0b49a62c10a2d239c1f7dd5edc62"},
 		"Astro/Blog/Components/Section.js":                                    {Src: "Astro/Blog/Components/Section.js", JSHash: "d814528ea8a20fc06197b56896d1c63ffbf40fcd", CSSHash: "c48e35eafe87b99383b8b3a397eac5d569f68f66"},
 		"Astro/Blog/Components/SiteFile.js":                                   {Src: "Astro/Blog/Components/SiteFile.js", JSHash: "e3ba91c21c7415df76f76193171de7ca5bc9d69c", CSSHash: "94f07554cb4ad0b81529be89f908f039abc9c2cb"},
 		"Astro/Blog/Components/SocialButtons.js":                              {Src: "Astro/Blog/Components/SocialButtons.js", JSHash: "ccdc9ce8fcdde608731b9e23ae77c6f2c61e512b", CSSHash: "53c508505fa9c8a744b4d276d168b535f1e7d3ac"},
@@ -372,7 +372,7 @@ var ClassMap = &classmap.Map{
 		"Astro/Blog/Layout/Article/_this.js":                                  {Src: "Astro/Blog/Layout/Article/_this.js", JSHash: "470f4b9fd651ddf34d0a32b7775d174e2e0a532a", CSSHash: "fdba7da7bf090d73264661348c0e3ee1caa90c82"},
 		"Astro/Blog/Layout/ErrorPages.js":                                     {Src: "Astro/Blog/Layout/ErrorPages.js", JSHash: "1ddc77aa611e2fc85b734be104a2702820afe4f7", CSSHash: "10c6fbfe1a05ede1204926d26eb9fb12f97802fa"},
 		"Astro/Blog/Layout/Login.js":                                          {Src: "Astro/Blog/Layout/Login.js", JSHash: "452180253f3b751eeb249ddb9a9cf17dd0f75354", CSSHash: "66b8ec358f3d29b121927d0f72360e33ad90d2ad"},
-		"Astro/Blog/Layout/MainFrame.js":                                      {Src: "Astro/Blog/Layout/MainFrame.js", JSHash: "2833f285189524cad1481e1023b92635df5cb69f", CSSHash: "1d8c7b3b80091a4f80f2b4f3cbfebf7a424a9dbb"},
+		"Astro/Blog/Layout/MainFrame.js":                                      {Src: "Astro/Blog/Layout/MainFrame.js", JSHash: "2c4d683dd860c54049782ac11de4eceb8a4df0bc", CSSHash: "1d8c7b3b80091a4f80f2b4f3cbfebf7a424a9dbb"},
 		"Astro/Blog/Layout/Subs/Manage.js":                                    {Src: "Astro/Blog/Layout/Subs/Manage.js", JSHash: "45d0286adfcfbe1620e2128d3a859153e0f1b0b7", CSSHash: "eb6d28864a3b2faf9ff90912da63db158bed626f"},
 		"Astro/Blog/Layout/Subs/_this.js":                                     {Src: "Astro/Blog/Layout/Subs/_this.js", JSHash: "7f7ff173d8b86eccc023d17c22e55cf259925558", CSSHash: "1"},
 		"Astro/Blog/Layout/_this.js":                                          {Src: "Astro/Blog/Layout/_this.js", JSHash: "2401f45244624f7662596bb569c40dab9866dbb8", CSSHash: "1"},
@@ -380,7 +380,7 @@ var ClassMap = &classmap.Map{
 		"Astro/Bootstrap.js":                                                  {Src: "Astro/Bootstrap.js", JSHash: "51bfb270eadd20b4b71372ae2d20dcf3d20575db", CSSHash: "e650f4de36f799af80ca0633d66351fb9333d620"},
 		"Astro/Common/Element/Footer.js":                                      {Src: "Astro/Common/Element/Footer.js", JSHash: "80f69d85c399bdc04d3b2055d1ebbe9ee77a852a", CSSHash: "c26f4238a6a4f2fc0bcbd9ac86141d12522552a4"},
 		"Astro/Mechanism/CharacterCloud.js":                                   {Src: "Astro/Mechanism/CharacterCloud.js", JSHash: "a15cc6faa3dbeca99f4e39d90de06b0f562f6c1c", CSSHash: "7cae98eaf8e3d5d1cd7fadaa6806ce3d65d74d92"},
-		"Astro/Mechanism/Parallax.js":                                         {Src: "Astro/Mechanism/Parallax.js", JSHash: "d5b62d4af29e15f81ebcadfec0912db6c9e5ac7a", CSSHash: "f8c02f4ec1be082e02c51f0b5ea39cbdd5b0e49f"},
+		"Astro/Mechanism/Parallax.js":                                         {Src: "Astro/Mechanism/Parallax.js", JSHash: "e159af40e2d923c6545ab0d558bd46b2636b7410", CSSHash: "f8c02f4ec1be082e02c51f0b5ea39cbdd5b0e49f"},
 		"Astro/Penguin/Layout/MainFrame.js":                                   {Src: "Astro/Penguin/Layout/MainFrame.js", JSHash: "d9ab3001ab6a614879f98441be20e6f6798b1472", CSSHash: "e87b69ab9e725e4801065850790670d76f0a6d18"},
 		"Astro/Penguin/Page/Docs.js":                                          {Src: "Astro/Penguin/Page/Docs.js", JSHash: "02217e7fa4ebffe90b32002ef07da500ac02bf52", CSSHash: "5230a026499b9ab0f4f530f4975a9df89170c83b"},
 		"Astro/Penguin/Page/_this.js":                                         {Src: "Astro/Penguin/Page/_this.js", JSHash: "66e415e546eb6ca0b84cedfd4d3b6de67c2164f3", CSSHash: "e8afcaa8c75b241cd933cfc99a648adc42f815d7"},
@@ -393,8 +393,8 @@ var ClassMap = &classmap.Map{
 		"Astro/Starfall/_this.js":                                             {Src: "Astro/Starfall/_this.js", JSHash: "77ca61d1ba806c3440cec5e26a100581259e1784", CSSHash: "1"},
 		"Astro/utils/Date.js":                                                 {Src: "Astro/utils/Date.js", JSHash: "fe9bc7b983ecfb70f4312c0ce2c74b5e7bf50dc2", CSSHash: "1"},
 		"Astro/utils/_this.js":                                                {Src: "Astro/utils/_this.js", JSHash: "21e99449ec5c1a4b6d25164db9434132aeea5ad3", CSSHash: "1"},
-		"Components/Console.js":                                               {Src: "Components/Console.js", JSHash: "348c0ff1762c0a00ed813e3419f17ed695399ec3", CSSHash: "452f4a36e8fd7321c7d177a311047c8b71165e48"},
-		"Components/DockPanel.js":                                             {Src: "Components/DockPanel.js", JSHash: "d9f9c996536ac6b5d6f5f7262b7889468a36b13b", CSSHash: "af0d91982c764ee62c46b243be68c08f2808e82b"},
+		"Components/Console.js":                                               {Src: "Components/Console.js", JSHash: "1c19da4a04f458a1ce095001397fa9bcdaa91348", CSSHash: "452f4a36e8fd7321c7d177a311047c8b71165e48"},
+		"Components/DockPanel.js":                                             {Src: "Components/DockPanel.js", JSHash: "dffa9d89d72075c045f7653831406cabece8d8e3", CSSHash: "af0d91982c764ee62c46b243be68c08f2808e82b"},
 		"Components/MessageBox.js":                                            {Src: "Components/MessageBox.js", JSHash: "63c831ec6493912492780009a76997d7bc59cad4", CSSHash: "5571fa4c2e1324dcf1f2e18df8b6105cf37dfc53"},
 		"Components/Mouse/Clipboard.js":                                       {Src: "Components/Mouse/Clipboard.js", JSHash: "32de0da9ec7e9a4c4e28267a5f60bb815b5af92d", CSSHash: "1b7f85206ce1560ed23d3b270e093022e25d2e61"},
 		"Components/Mouse/ContextMenu.js":                                     {Src: "Components/Mouse/ContextMenu.js", JSHash: "254b6ff586e11834d28be96a1e2526fe6ef8e8ad", CSSHash: "d5a5f1a4a0db9a440b9a070f9879beaddffbd99a"},
@@ -493,17 +493,17 @@ var ClassMap = &classmap.Map{
 		"Libraries/SyntaxHighlighter/Theme/Midnight.js":                       {Src: "Libraries/SyntaxHighlighter/Theme/Midnight.js", JSHash: "9a5807549212dab3d3430e341cab2311b2f374e5", CSSHash: "138fe3f3bb425837fcfd9b46c3cc5ad199cb01cc"},
 		"Libraries/SyntaxHighlighter/Theme/RDark.js":                          {Src: "Libraries/SyntaxHighlighter/Theme/RDark.js", JSHash: "4eb10422695ef08331f8c5e91c6ca5b655c4b641", CSSHash: "b4970092adfcad76da353fa815b8502a9d09f097"},
 		"Libraries/SyntaxHighlighter/Theme/_this.js":                          {Src: "Libraries/SyntaxHighlighter/Theme/_this.js", JSHash: "55f3a4849ae1cbab812c4d46b043a4c100fd4cf6", CSSHash: "1"},
-		"Libraries/SyntaxHighlighter/_this.js":                                {Src: "Libraries/SyntaxHighlighter/_this.js", JSHash: "3419332fc98c2a094bc8f2a3b16b87b8d98bd309", CSSHash: "3860c0c289ac761da7d9c595633f8bba8f58afe9"},
+		"Libraries/SyntaxHighlighter/_this.js":                                {Src: "Libraries/SyntaxHighlighter/_this.js", JSHash: "ebd53c1bd9ff84eb711687ceacb02ebf6357eec3", CSSHash: "3860c0c289ac761da7d9c595633f8bba8f58afe9"},
 		"System/Compression/Zlib.js":                                          {Src: "System/Compression/Zlib.js", JSHash: "50248acd8ef77f57eff8998011ac296b252142d4", CSSHash: "1"},
 		"System/Compression/_this.js":                                         {Src: "System/Compression/_this.js", JSHash: "237bff609161dca51d55c73b92a477c54286e26d", CSSHash: "1"},
 		"System/Cycle/Trigger.js":                                             {Src: "System/Cycle/Trigger.js", JSHash: "b18fae66ada79a1cc2e812dea1055422f1172a37", CSSHash: "1"},
-		"System/Cycle/_this.js":                                               {Src: "System/Cycle/_this.js", JSHash: "8eb5c18fd0923d3b2bf27ab48105cb9ce07f4c5e", CSSHash: "1"},
+		"System/Cycle/_this.js":                                               {Src: "System/Cycle/_this.js", JSHash: "b1ff650c56acb89a96809cb7180c495a49684c46", CSSHash: "1"},
 		"System/Debug.js":                                                     {Src: "System/Debug.js", JSHash: "c821a438f97a2bae0114cd615113c3d278efe121", CSSHash: "1"},
 		"System/Encoding/Base64.js":                                           {Src: "System/Encoding/Base64.js", JSHash: "19189ebf4db33bbf081acb98f496365bc313064f", CSSHash: "1"},
 		"System/Encoding/Utf8.js":                                             {Src: "System/Encoding/Utf8.js", JSHash: "f582c26e2b63071f6c475d1f09553b546ee0af0f", CSSHash: "1"},
 		"System/Encoding/_this.js":                                            {Src: "System/Encoding/_this.js", JSHash: "acf2ce9ee06a72f81447d72c01e655198e38fbc1", CSSHash: "1"},
 		"System/Global.js":                                                    {Src: "System/Global.js", JSHash: "a1b5eea0d218508e1d5d68f0ced64f16fc9595ce", CSSHash: "1"},
-		"System/Log.js":                                                       {Src: "System/Log.js", JSHash: "de65e2795ac10fb2cbe8ecdedba66e0617bec8ad", CSSHash: "1"},
+		"System/Log.js":                                                       {Src: "System/Log.js", JSHash: "d2a2a12cf34bc2e737a3cc48cd6fc536c2ddc84e", CSSHash: "1"},
 		"System/Net/ClassLoader.js":                                           {Src: "System/Net/ClassLoader.js", JSHash: "7aa219e660357e3ee53a166bd961954fe97b01ec", CSSHash: "1"},
 		"System/Net/_this.js":                                                 {Src: "System/Net/_this.js", JSHash: "1b2e6ddd90efc213dbbd139e2dc891ab41ec043f", CSSHash: "1"},
 		"System/Policy/_this.js":                                              {Src: "System/Policy/_this.js", JSHash: "94efec864f3f9258f9ed95d5eadd0a10d7e51797", CSSHash: "1"},
diff --git a/resolver-go/internal/generated/externs_gen.go b/resolver-go/internal/generated/externs_gen.go
index 3ff77c9..5341b66 100644
--- a/resolver-go/internal/generated/externs_gen.go
+++ b/resolver-go/internal/generated/externs_gen.go
@@ -26,6 +26,7 @@ var Externs = []string{
 	"externs/Astro.utils.js",
 	"externs/BotanEvent.js",
 	"externs/BotanJS.js",
+	"externs/Components.DockPanel.js",
 	"externs/Components.MessageBox.js",
 	"externs/Components.Mouse.Clipboard.js",
 	"externs/Components.Mouse.ContextMenu.js",
@@ -56,6 +57,7 @@ var Externs = []string{
 	"externs/Dandelion.CSSAnimations.js",
 	"externs/Dandelion.IDOMElement.js",
 	"externs/Dandelion.IDOMObject.js",
+	"externs/Dandelion.Window.js",
 	"externs/Dandelion.js",
 	"externs/EventDispatcher.js",
 	"externs/Libraries.SyntaxHighLighter.Brush.js",