1+ /* eslint-disable no-invalid-this */
12// Import static
23import avatarURL from "../img/avatar-default.png" ;
34
5+ // Import Internal Dependencies
6+ import { createExpandableSpan } from "../components/expandable/expandable" ;
7+
48window . activeLegendElement = null ;
59
610function getVCSRepositoryPath ( url ) {
@@ -15,7 +19,8 @@ function getVCSRepositoryPath(url) {
1519 1 ,
1620 repo . pathname . includes ( ".git" ) ? - 4 : repo . pathname . length
1721 ) ;
18- } catch {
22+ }
23+ catch {
1924 return null ;
2025 }
2126}
@@ -29,7 +34,8 @@ function getVCSRepositoryPlatform(url) {
2934 const repo = new URL ( url ) ;
3035
3136 return repo . host ;
32- } catch {
37+ }
38+ catch {
3339 return null ;
3440 }
3541}
@@ -113,14 +119,6 @@ export function createLink(href, text = null) {
113119 return createDOMElement ( "a" , { text, attributes } ) ;
114120}
115121
116- export function createTooltip ( text , description ) {
117- const spanElement = createDOMElement ( "span" , { text : description } ) ;
118-
119- return createDOMElement ( "div" , {
120- classList : [ "tooltip" ] , text, childs : [ spanElement ]
121- } ) ;
122- }
123-
124122export function parseRepositoryUrl ( repository = { } , defaultValue = null ) {
125123 if ( typeof repository !== "object" || ! ( "url" in repository ) ) {
126124 return defaultValue ;
@@ -160,6 +158,7 @@ export function createAvatarImageElement(email = null) {
160158 imageElement . src = `${ avatarURL } ` ;
161159 } ;
162160 }
161+
163162 return imageElement ;
164163}
165164
@@ -179,48 +178,6 @@ export function createAvatar(name, desc) {
179178 return divEl ;
180179}
181180
182- export function createFileBox ( options = { } ) {
183- const { title, fileName, childs = [ ] , titleHref = "#" , fileHref = null , severity = null } = options ;
184-
185- const defaultHrefProperties = { target : "_blank" , rel : "noopener noreferrer" } ;
186- const fileDomElement = fileHref === null ?
187- createDOMElement ( "p" , { text : fileName } ) :
188- createDOMElement ( "a" , { text : fileName , attributes : { href : fileHref , ...defaultHrefProperties } } ) ;
189-
190- const boxHeader = createDOMElement ( "div" , {
191- classList : [ "box-header" ] ,
192- childs : [
193- ...( severity === null ? [ ] : [
194- createDOMElement ( "span" , { classList : [ severity ] , text : severity . charAt ( 0 ) . toUpperCase ( ) } )
195- ] ) ,
196- titleHref === null ?
197- createDOMElement ( "p" , { text : title , className : "box-title" } ) :
198- createDOMElement ( "a" , {
199- text : title ,
200- className : "box-title" ,
201- attributes : {
202- href : titleHref , ...defaultHrefProperties
203- }
204- } ) ,
205- createDOMElement ( "p" , {
206- className : "box-file" ,
207- childs : [
208- createDOMElement ( "i" , { classList : [ "icon-docs" ] } ) ,
209- fileDomElement
210- ]
211- } )
212- ]
213- } ) ;
214-
215- return createDOMElement ( "div" , {
216- classList : [ "box-file-info" ] ,
217- childs : [
218- boxHeader ,
219- ...childs . filter ( ( element ) => element !== null )
220- ]
221- } ) ;
222- }
223-
224181export function createLiField ( title , value , options = { } ) {
225182 const { isLink = false } = options ;
226183
@@ -240,42 +197,6 @@ export function createLiField(title, value, options = {}) {
240197 return liElement ;
241198}
242199
243- export function createExpandableSpan ( hideItemsLength , onclick = ( ) => void 0 ) {
244- const span = createDOMElement ( "span" , {
245- classList : [ "expandable" ] ,
246- attributes : { "data-value" : "closed" } ,
247- childs : [
248- createDOMElement ( "i" , { className : "icon-plus-squared-alt" } ) ,
249- createDOMElement ( "p" , { text : "show more" } )
250- ]
251- } ) ;
252- span . addEventListener ( "click" , function itemListClickAction ( ) {
253- const isClosed = this . getAttribute ( "data-value" ) === "closed" ;
254- {
255- const innerI = this . querySelector ( "i" ) ;
256- innerI . classList . remove ( isClosed ? "icon-plus-squared-alt" : "icon-minus-squared-alt" ) ;
257- innerI . classList . add ( isClosed ? "icon-minus-squared-alt" : "icon-plus-squared-alt" ) ;
258- }
259- this . querySelector ( "p" ) . textContent = isClosed ? "show less" : "show more" ;
260- this . setAttribute ( "data-value" , isClosed ? "opened" : "closed" ) ;
261-
262- for ( let id = 0 ; id < this . parentNode . childNodes . length ; id ++ ) {
263- const node = this . parentNode . childNodes [ id ] ;
264- if ( node !== this ) {
265- if ( isClosed ) {
266- node . classList . remove ( "hidden" ) ;
267- }
268- else if ( id >= hideItemsLength ) {
269- node . classList . add ( "hidden" ) ;
270- }
271- }
272- }
273- onclick ( this ) ;
274- } ) ;
275-
276- return span ;
277- }
278-
279200export function createItemsList ( node , items = [ ] , options = { } ) {
280201 const { onclick = null , hideItems = false , hideItemsLength = 5 } = options ;
281202
@@ -313,36 +234,36 @@ export function createItemsList(node, items = [], options = {}) {
313234}
314235
315236export function copyToClipboard ( str ) {
316- const el = document . createElement ( ' textarea' ) ; // Create a <textarea> element
317- el . value = str ; // Set its value to the string that you want copied
318- el . setAttribute ( ' readonly' , '' ) ; // Make it readonly to be tamper-proof
319- el . style . position = ' absolute' ;
320- el . style . left = ' -9999px' ; // Move outside the screen to make it invisible
321- document . body . appendChild ( el ) ; // Append the <textarea> element to the HTML document
237+ const el = document . createElement ( " textarea" ) ;
238+ el . value = str ;
239+ el . setAttribute ( " readonly" , "" ) ;
240+ el . style . position = " absolute" ;
241+ el . style . left = " -9999px" ;
242+ document . body . appendChild ( el ) ;
322243 const selected =
323- document . getSelection ( ) . rangeCount > 0 // Check if there is any content selected previously
324- ? document . getSelection ( ) . getRangeAt ( 0 ) // Store selection if found
325- : false ; // Mark as false to know no selection existed before
326- el . select ( ) ; // Select the <textarea> content
327- document . execCommand ( ' copy' ) ; // Copy - only works as a result of a user action (e.g. click events)
328- document . body . removeChild ( el ) ; // Remove the <textarea> element
329- if ( selected ) { // If a selection existed before copying
330- document . getSelection ( ) . removeAllRanges ( ) ; // Unselect everything on the HTML document
331- document . getSelection ( ) . addRange ( selected ) ; // Restore the original selection
244+ document . getSelection ( ) . rangeCount > 0
245+ ? document . getSelection ( ) . getRangeAt ( 0 )
246+ : false ;
247+ el . select ( ) ;
248+ document . execCommand ( " copy" ) ;
249+ document . body . removeChild ( el ) ;
250+ if ( selected ) {
251+ document . getSelection ( ) . removeAllRanges ( ) ;
252+ document . getSelection ( ) . addRange ( selected ) ;
332253 }
333- } ;
254+ }
334255
335256export function hideOnClickOutside ( element , blacklistElements = [ ] ) {
336257 const outsideClickListener = ( event ) => {
337258 if ( ! element . contains ( event . target ) && ! blacklistElements . includes ( event . target ) ) {
338259 element . classList . add ( "hidden" ) ;
339260 removeClickListener ( ) ;
340261 }
341- }
262+ } ;
342263
343264 const removeClickListener = ( ) => {
344- document . removeEventListener ( ' click' , outsideClickListener ) ;
345- }
265+ document . removeEventListener ( " click" , outsideClickListener ) ;
266+ } ;
346267
347- document . addEventListener ( ' click' , outsideClickListener ) ;
268+ document . addEventListener ( " click" , outsideClickListener ) ;
348269}
0 commit comments