@@ -601,6 +601,8 @@ Code.HOTKEY = {
601
601
UNKNOWN : - 1
602
602
} ;
603
603
604
+ Code . rawToolbox = null ;
605
+
604
606
/**
605
607
* List of tab names.
606
608
* @private
@@ -707,15 +709,17 @@ Code.renderContent = function () {
707
709
}
708
710
} ;
709
711
710
- Code . filterXML = function ( toolboxXML , property , values ) {
711
- var categories = slice . call ( toolboxXML . querySelectorAll ( 'category' ) ) ;
712
+ Code . filterXML = function ( toolbox , property , values ) {
713
+ toolbox = document . importNode ( toolbox , true ) ;
714
+
715
+ var categories = slice . call ( toolbox . querySelectorAll ( 'category' ) ) ;
712
716
categories . forEach ( function ( cate ) {
713
717
if ( cate . getAttribute ( property ) !== null ) {
714
718
filterTag ( cate ) ;
715
719
}
716
720
} ) ;
717
721
718
- var blocks = slice . call ( toolboxXML . querySelectorAll ( 'block' ) ) ;
722
+ var blocks = slice . call ( toolbox . querySelectorAll ( 'block' ) ) ;
719
723
blocks . forEach ( function ( block ) {
720
724
if ( block . getAttribute ( property ) !== null ) {
721
725
filterTag ( block ) ;
@@ -732,7 +736,7 @@ Code.filterXML = function (toolboxXML, property, values) {
732
736
}
733
737
}
734
738
735
- return toolboxXML ;
739
+ return toolbox ;
736
740
} ;
737
741
738
742
Code . pruneNode = function ( node ) {
@@ -745,14 +749,15 @@ Code.pruneNode = function (node) {
745
749
}
746
750
} ;
747
751
748
- Code . getToolBox = function ( toolboxXML ) {
749
- var categories = slice . call ( toolboxXML . querySelectorAll ( 'category' ) ) . map ( function ( e ) {
750
- return e . id ;
751
- } ) ;
752
+ Code . getToolBox = function ( ) {
753
+ var toolbox = Code . filterXML ( Code . rawToolbox , 'tags' , Code . getTags ( ) ) ,
754
+ categories = slice . call ( toolbox . querySelectorAll ( 'category' ) ) . map ( function ( e ) {
755
+ return e . id ;
756
+ } ) ;
752
757
for ( var i = 0 , cat ; cat = categories [ i ] ; i ++ ) {
753
- toolboxXML . querySelector ( '#' + cat ) . setAttribute ( 'name' , MSG [ cat ] ) ;
758
+ toolbox . querySelector ( '#' + cat ) . setAttribute ( 'name' , MSG [ cat ] ) ;
754
759
}
755
- return new XMLSerializer ( ) . serializeToString ( toolboxXML ) ;
760
+ return toolbox ;
756
761
} ;
757
762
758
763
Code . getUrlParts = function ( ) {
@@ -904,10 +909,14 @@ Code.init = function (toolbox) {
904
909
filterBtn [ index ] . className = 'filterBtn selected' ;
905
910
var tagName = this . getAttribute ( 'tag' ) ;
906
911
if ( tagName ) {
907
- window . history . pushState ( 'tag' , 'title' , '/? tags=' + tagName ) ;
912
+ Code . queryString . set ( ' tags' , tagName ) ;
908
913
} else {
909
- window . history . pushState ( 'tag' , 'title' , '/ ') ;
914
+ Code . queryString . unset ( 'tags ') ;
910
915
}
916
+ Code . workspace . updateToolbox ( Code . getToolBox ( ) ) ;
917
+ setTimeout ( function ( ) {
918
+ Blockly . fireUiEvent ( window , 'resize' ) ;
919
+ } , 50 ) ;
911
920
} ;
912
921
} ) ;
913
922
@@ -1600,7 +1609,8 @@ Promise.all([
1600
1609
] ) . then ( function ( values ) {
1601
1610
Code . initHandlebars ( ) ;
1602
1611
Code . renderPage ( values [ 0 ] . body . innerHTML ) ;
1603
- Code . init ( Code . getToolBox ( Code . filterXML ( values [ 1 ] . body . firstChild , 'tags' , Code . getTags ( ) ) ) ) ;
1612
+ Code . rawToolbox = values [ 1 ] . body . firstChild ;
1613
+ Code . init ( Code . getToolBox ( ) ) ;
1604
1614
Code . loadDemoArea ( ) ;
1605
1615
Code . loadGa ( ) ;
1606
1616
Code . ga ( ) ;
0 commit comments