@@ -812,11 +812,12 @@ modulo.register('util', function newNode(innerHTML, tag) {
812
812
modulo . register ( 'util' , function loadHead ( modulo , loadMode , elem , knownBundled , doc = null ) {
813
813
doc = doc || window . document ;
814
814
const { newNode, hash } = modulo . registry . utils ;
815
- const id = hash ( elem . name || elem . src || elem . href || elem . innerHTML ) ;
815
+ const url = elem . getAttribute ( 'src' ) || elem . getAttribute ( 'href' ) || null ;
816
+ const id = hash ( elem . name || url || elem . textContent ) ;
816
817
if ( doc . getElementById ( id ) || knownBundled [ id ] ) {
817
818
return ; // already exists, never add twice
818
819
}
819
- knownBundled [ id ] = loadMode === 'bundle' ; // (set to true if bundling this)
820
+ knownBundled [ id ] = loadMode === 'bundle' ? url : false ; // (if bundling this)
820
821
const newElem = newNode ( elem . innerHTML , elem . tagName ) ;
821
822
for ( const attr of elem . attributes || [ ] ) { // Copy all attributes from old elem
822
823
newElem . setAttributeNode ( attr . cloneNode ( true ) ) ; // ...to new elem
@@ -1444,29 +1445,34 @@ modulo.config.include = {
1444
1445
GlobalBundled : { } ,
1445
1446
LoadMode : 'bundle' ,
1446
1447
ServerTemplate : 'https://{{ server }}/{{ path }}' ,
1447
- TagTemplate : '{% if isCSS %}<link name="{{ package }}" rel="stylesheet" href="{{ url }}" />' +
1448
- '{% else %}<script name="{{ package }}" src="{{ url }}"></' + 'script>{% endif %}' ,
1449
- DefLoaders : [ 'DefTarget' , 'DefinedAs' , 'Src' , 'Server' , 'LoadMode' ] ,
1448
+ TagTemplate : '{% if isCSS %}<link rel="stylesheet" href="{{ url }}" />' +
1449
+ '{% else %}<script src="{{ url }}"></' + 'script>{% endif %}' ,
1450
+ DefLoaders : [ 'DefTarget' , 'DefinedAs' , 'Src' , 'Server' ] ,
1451
+ DefBuilders : [ 'LoadMode' ] ,
1450
1452
} ;
1451
1453
modulo . register ( 'cpart' , class Include {
1452
- static LoadMode ( modulo , def , value ) { // Loads given Include def
1453
- const { loadHead , newNode , keyFilter } = modulo . registry . utils ;
1454
+ static Server ( modulo , def , value ) { // Loads given Include def
1455
+ const { keyFilter } = modulo . registry . utils ;
1454
1456
const lower = key => key [ 0 ] . toLowerCase ( ) === key [ 0 ] ; // skip "-prefixed"
1455
- const ctx = { def, modulo, headContent : def . Content || '' } ;
1457
+ const ctx = { def, modulo, server : value } ;
1456
1458
const render = code => new modulo . registry . cparts . Template ( code ) . render ( ctx ) ;
1459
+ def . Content = def . Content || '' ;
1457
1460
for ( const [ pkg , v ] of Object . entries ( keyFilter ( def , lower ) ) ) {
1458
1461
ctx . path = v . contains ( '@' ) ? v : pkg + ( v ? ( '@' + v ) : '' ) ;
1459
1462
ctx . isCSS = ( ctx . path . contains ( '/' ) && ctx . path . endsWith ( '.css' ) ) ;
1460
1463
ctx . url = render ( def . ServerTemplate ) ; // Render URL using ServerTemplate
1461
- ctx . headContent += render ( def . TagTemplate ) ; // Append tag to head Content
1464
+ def . Content += render ( def . TagTemplate ) ; // Append tag to head Content
1462
1465
}
1463
- for ( const elem of newNode ( ctx . headContent ) . children ) { // Loop through combined
1466
+ }
1467
+ static LoadMode ( modulo , def , value ) { // Loads given Include def
1468
+ const { loadHead, newNode } = modulo . registry . utils ;
1469
+ for ( const elem of newNode ( def . Content ) . children ) { // Loop through combined
1464
1470
loadHead ( modulo , value , elem , modulo . config . include . GlobalBundled ) ;
1465
1471
}
1466
1472
}
1467
1473
intitializedCallback ( renderObj ) {
1468
1474
const { Include } = this . modulo . registry . cparts ; // Can I use self. reliably?
1469
- Include . LoadMode ( this . modulo , this . attrs , 'lazy' , { } ) ; // Always load if ID not exist
1475
+ Include . LoadMode ( this . modulo , this . conf , 'lazy' , { } ) ; // Always load if ID not exist
1470
1476
}
1471
1477
} ) ;
1472
1478
modulo . register ( 'coreDef' , modulo . registry . cparts . Include ) ; // Allow globally
0 commit comments