11import { appendTemplate , safeUrl , strip } from '../util/attachTemplate.js' ;
22import MyTrustedTypes from '../util/MyTrustedTypes.js' ;
3- // Was: import MyElement from '../MyElement.js';
43
54const { fetch, HTMLElement, Request, location } = window ;
65
@@ -27,6 +26,7 @@ export class MyFeedElement extends HTMLElement {
2726 }
2827
2928 get include ( ) { return this . getAttribute ( 'include' ) ; }
29+ get exclude ( ) { return this . getAttribute ( 'exclude' ) ; }
3030
3131 get isOpen ( ) { return this . getAttribute ( 'details' ) === 'open' ; }
3232
@@ -74,22 +74,33 @@ export class MyFeedElement extends HTMLElement {
7474 return INCLUDE ? new RegExp ( `(${ INCLUDE . join ( '|' ) } )` , 'i' ) : null ;
7575 }
7676
77+ get #excludeRegex ( ) {
78+ const EXCLUDE = this . exclude ? this . exclude . split ( / , [ ] * / ) : null ;
79+ return EXCLUDE ? new RegExp ( `(${ EXCLUDE . join ( '|' ) } )` , 'i' ) : null ;
80+ }
81+
7782 #filterItems ( items ) {
7883 const filtered = this . include
7984 ? items . filter ( it => {
8085 return it && it . tags && it . tags . some ( tag => this . #includeRegex. test ( tag ) ) ;
8186 } )
8287 : items ;
8388
84- console . debug ( 'my-feed ~ Filtered:' , this . include , filtered ) ;
89+ const filterExclude = this . exclude
90+ ? filtered . filter ( it => {
91+ return it && it . tags && ! it . tags . some ( tag => this . #excludeRegex. test ( tag ) ) ;
92+ } )
93+ : filtered ;
94+
95+ console . debug ( 'my-feed ~ Filtered:' , this . include , this . #excludeRegex, filterExclude ) ;
8596
86- return filtered ;
97+ return filterExclude ;
8798 }
8899
89100 get #policyId ( ) { return 'allowAnchorListPlus' ; }
90101
91102 #makeListItem ( item , open ) {
92- const createHTML = ( s ) => this . #trustedTypes. createHTML ( this . #policyId , s ) ;
103+ const createHTML = ( s ) => this . #trustedTypes. createHTML ( this . #policyId, s ) ;
93104 const { skip, guid, link, pubDate, title, url, time, tags, content, content_html } = item ; /* eslint-disable-line camelcase */
94105
95106 if ( skip ) return '<template><!-- skip --></template>' ;
0 commit comments