From 86808519067fd8234ccd3c11bea24ae0bbc68e70 Mon Sep 17 00:00:00 2001 From: Orest Bida Date: Sun, 22 Aug 2021 23:18:05 +0200 Subject: [PATCH 01/15] add support for twitter and facebook widgets (alpha) --- README.md | 1 + demo/app.js | 91 ++++++++++++++++++++++-- demo/index.html | 54 ++++++++++++-- src/iframemanager.css | 85 ++++++++++++++++++++++ src/iframemanager.js | 159 +++++++++++++++++++++++++++++++++++------- 5 files changed, 355 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 71b5d2f..3d7751a 100644 --- a/README.md +++ b/README.md @@ -186,6 +186,7 @@ All available options for the `
` element: - `data-id` : [String, Required] unique id of the resource (example: video id) - `data-params` : [String] iframe query parameters - `data-thumbnail` : [String] path to custom thumbnail +- `data-ratio` : [String] aspect ratio ([supported aspect ratios](#aspect-ratios)) - `data-autoscale` : specify for **responsive iframe** (fill parent width + scale proportionally)
diff --git a/demo/app.js b/demo/app.js index b8e9569..19979b4 100644 --- a/demo/app.js +++ b/demo/app.js @@ -2,9 +2,9 @@ 'use strict'; // get module - var iframemanager = iframemanager(); + var manager = iframemanager(); - iframemanager.run({ + manager.run({ currLang: document.documentElement.getAttribute('lang'), // autoLang: true, services : { @@ -29,7 +29,7 @@ embedUrl: 'https://www.dailymotion.com/embed/video/{data-id}', // Use dailymotion api to obtain thumbnail - thumbnailUrl: function(id, callback){ + thumbnailUrl: function(id, setThumbnail){ var url = "https://api.dailymotion.com/video/" + id + "?fields=thumbnail_large_url"; var xhttp = new XMLHttpRequest(); @@ -37,7 +37,7 @@ xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var src = JSON.parse(this.response).thumbnail_large_url; - callback(src); + setThumbnail(src); } }; @@ -75,6 +75,89 @@ loadAllBtn: 'Don\'t ask again' } } + }, + twitter : { + onAccept: function(div, callback){ + + manager.loadScript('https://platform.twitter.com/widgets.js', function(){ + twttr.widgets.createTweet(div.dataset.id, div).then(function(tweet){ + callback(tweet.firstChild); + }); + }); + }, + + onReject: function(iframe){ + iframe.parentNode.remove(); + }, + + cookie : { + name : 'cc_twitter' + }, + + languages : { + 'en' : { + notice: 'This content is hosted by a third party. By showing the external content you accept the terms and conditions of twitter.com.', + loadBtn: 'Load tweet', + loadAllBtn: 'Don\'t ask again' + } + } + + + }, + + facebook : { + embedUrl : "https://www.facebook.com/", + + onAccept: function(div, callback){ + + var fbVideo = document.createElement('div'); + fbVideo.className = "fb-post"; + fbVideo.setAttribute('data-href', this.embedUrl + div.dataset.id); + div.appendChild(fbVideo); + + manager.loadScript('https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v11.0', function(){ + var c = document.querySelector(`[data-id="${div.dataset.id}"`).lastChild; + FB.XFBML.parse(document.querySelector(`[data-id="${div.dataset.id}"`)); + + manager.observe(fbVideo, function(iframe){ + console.log("wwwaaaa", iframe); + callback(iframe) + }); + + //FB.XFBML.parse(document.querySelector(`[data-id="${div.dataset.id}"`)); + + }); + }, + + onReject: function(iframe){ + iframe.parentNode.parentNode.remove(); + }, + + cookie : { + name : 'cc_facebook' + }, + + languages : { + 'en' : { + notice: 'This content is hosted by a third party. By showing the external content you accept the terms and conditions of twitter.com.', + loadBtn: 'Load tweet', + loadAllBtn: 'Don\'t ask again' + } + } } } }); + + + var accept_all = document.getElementById('accept-all'); + var reject_all = document.getElementById('reject-all'); + + accept_all.addEventListener('click', function(){ + console.log("clicked accept-all"); + manager.acceptService('all'); + }); + + reject_all.addEventListener('click', function(){ + console.log("clicked reject-all"); + manager.rejectService('all'); + }); diff --git a/demo/index.html b/demo/index.html index a1c672e..f3e879c 100644 --- a/demo/index.html +++ b/demo/index.html @@ -13,6 +13,7 @@ padding: 1em; font-family: sans-serif; line-height: 1.2; + background-color: black; } *{ @@ -29,12 +30,17 @@

This is a test page


Demo with youtube & dailymotion config.


+
+ + +

Simple example


@@ -48,6 +54,30 @@

Example with autoscale width (fill width of parent container)

data-autoscale>

+ +
+
+ +
+
+ +
+
+ +
+

Example with custom thumbnail + params (video starts muted at 21s)


@@ -69,17 +99,33 @@

Daily motion video

data-autoscale > +
+ +

Twitch channel embed


- - +
+
+ +
+

Ciao

+ + + \ No newline at end of file diff --git a/src/iframemanager.css b/src/iframemanager.css index a11c915..0cc2a84 100644 --- a/src/iframemanager.css +++ b/src/iframemanager.css @@ -297,4 +297,89 @@ div[data-service] .c-n-t a { div[data-service] .c-n-t a:hover{ border-color: transparent; +} + +div[data-service][data-ratio="1:1"]::before{ + padding-top: 100%; +} + +div[data-service][data-ratio="2:1"]::before{ + padding-top: 50%; +} + +div[data-service][data-ratio="3:2"]::before{ + padding-top: 66.666666%; +} + +div[data-service][data-ratio="4:3"]::before{ + padding-top: 75%; +} + +div[data-service][data-ratio="16:9"]::before{ + padding-top: 56.25%; +} + +div[data-service][data-ratio="16:10"]::before{ + padding-top: 62.5%; +} + +div[data-service][data-ratio="20:9"]::before{ + padding-top: 45%; +} + +div[data-service][data-ratio="21:9"]::before{ + padding-top: 42.857142%; +} + +/** Vertical aspect ratios **/ +div[data-service][data-ratio="9:16"]::before{ + padding-top: 177.777777%; +} + +div[data-service][data-ratio="9:20"]::before{ + padding-top: 222.222222%; +} + +div[data-customservice]::before { + display: none; +} + +div[data-customservice].c-h-b{ + background: transparent; +} + +div[data-customservice].c-h-b .c-ld{ + opacity: 0; + visibility: hidden; +} + +div[data-customservice] iframe{ + background: none; +} + +div[data-customservice] > div{ + margin: 0!important; +} + +div[data-customservice]{ + vertical-align: top; + min-width: 296px; + transition: background-color .3s ease; + transition-delay: .3s; +} + + +div[data-service="twitter"] .c-n-c .c-l-b{ + background-color: #1DA1F2; +} + +div[data-service="twitter"] .c-n-c .c-l-b::before{ + border: none; + height: 15px; + width: 15px; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAATZJREFUOE+lk78rRWEcxj/PJhmUMhhkkMEgGyZSlCR27qRYFItRXWVQJsVm8A8w3GSQUpTcYlCUzXAzKPEnPHp1zunc0znXkW+9y/s+30/P98cr/hkqk2+7E1gA2oG6pIeQZ3v6B2B7T9JmHsz2LHAA9KXeq8AUsCTbE8AVcAGsS3pJg2zXgLkM/Bm4BL7SgKB5B3aBm5RNF5RZlbQdl3AHjGSET8AtsFIAGJVUDw76gS0gwCplmhppuiR9xg7OgZk/JDck9QZ9DJgEdoCxkpCapPk0YBA4jJJ7gIFfQOOSrhNAtAvLwFEJB/uSNmJd0ybaDk5CGWvAcA7sMeyEpEYTwHY3EJqyCCT0DOAUWJX0kb4PYwzzD3tQFCfAsaSzPEFSgu0OYCg6bcAb8CrpvlVfSv3GVoBvLzlh7eQqydQAAAAASUVORK5CYII=') +} + +div[data-service="facebook"] span{ + width: auto!important; } \ No newline at end of file diff --git a/src/iframemanager.js b/src/iframemanager.js index db79d85..a01dd06 100644 --- a/src/iframemanager.js +++ b/src/iframemanager.js @@ -10,18 +10,19 @@ iframes : {}, preconnects : [], preloads: [], - iframeObserver : null, + stopObserver : false, currLang : null, services : null, serviceNames : null, - + _getVideoProp : function(_div){ return { - _id: _div.dataset.id, - _title: _div.dataset.title, + _id: _div.dataset['id'], + _title: _div.dataset['title'], thumbnail: _div.dataset['thumbnail'], params: _div.dataset['params'], thumbnailPreload: _div.hasAttribute('data-thumbnailpreload'), + autoscale: _div.hasAttribute('data-autoscale'), div: _div, backgroundDiv: null, hasIframe: false, @@ -69,6 +70,7 @@ * @param {String} service_name */ acceptService : function(service_name){ + this.stopObserver = false; if(service_name === 'all'){ var length = this.serviceNames.length; for(var i=0; i add custom attributes + if(attrs && attrs.length > 0){ + for(var i=0; i run callback onload + if(function_defined){ + if(script.readyState) { // only required for IE <9 + script.onreadystatechange = function() { + if ( script.readyState === "loaded" || script.readyState === "complete" ) { + script.onreadystatechange = null; + callback(); + } + }; + }else{ //Others + script.onload = callback; + } + } + + script.src = src; + + /** + * Append script to head + */ + document.getElementsByTagName('head')[0].appendChild(script); + }else{ + function_defined && callback(); + } + }, + /** * Set image as background * @param {String} url @@ -168,6 +212,36 @@ // Create iframe only if doesn't alredy have one if(video.hasIframe) return; + if(typeof service['onAccept'] === 'function'){ + + + + // Let the onAccept method create the iframe + service['onAccept'](video.div, function(iframe){ + //console.log("iframe_created!", iframe); + video.iframe = iframe; + video.hasIframe = true; + video.div.classList.add('c-h-b'); + + console.log("www", video); + + if(video.autoscale){ + console.log("eeee") + var t; + video.div.style.minHeight = iframe.style.height; + window.addEventListener('resize', function(){ + clearTimeout(t); + t = setTimeout(function(){ + video.div.style.minHeight = iframe.style.height; + }, 200); + }, {passive: true}); + } + + }); + + return; + } + video.iframe = this._createNode('iframe'); var iframeParams = video.params || (service['iframe'] && service['iframe']['params']); @@ -218,10 +292,8 @@ * @param {Object} video */ _hideNotice : function(video){ - if(video.showNotice){ - video.div.classList.add('c-h-n'); - video.showNotice = false; - } + video.div.classList.add('c-h-n'); + video.showNotice = false; }, /** @@ -229,10 +301,8 @@ * @param {Object} video */ _showNotice : function(video){ - if(!video.showNotice){ - video.div.classList.remove('c-h-n', 'c-h-b'); - video.showNotice = true; - } + video.div.classList.remove('c-h-n', 'c-h-b'); + video.showNotice = true; }, /** @@ -309,8 +379,8 @@ // if valid protocol if( - protocol == 'http' || - protocol == 'https' + protocol === 'http' || + protocol === 'https' ){ var domain = (url[1] && url[1].split("/")[0]) || false; @@ -351,6 +421,40 @@ return document.createElement(type); }, + + observe : function(target, callback){ + + console.log("observing", target); + + + + var observer = new MutationObserver(function(mutations) { + mutations.forEach(function(mutation) { + if(mutation.type === 'childList'){ + setTimeout(function(){ + callback(target.querySelector('iframe')); + }, 300); + + // later, you can stop observing + observer.disconnect(); + return; + } + }); + }); + + // configuration of the observer: + var config = { attributes: false, childList: true, subtree: false } + + if(target.querySelector('iframe')){ + setTimeout(function(){ + callback(target.querySelector('iframe')); + }, 300); + }else{ + // pass in the target node, as well as the observer options + observer.observe(target, config); + } + }, + /** * Create all notices relative to the specified service * @param {String} service_name @@ -370,7 +474,6 @@ var video = iframes[i]; if(!video.hasNotice){ - var loadBtnText = service['languages'][module.currLang]['loadBtn']; var noticeText = service['languages'][module.currLang]['notice']; var loadAllBtnText = service['languages'][module.currLang]['loadAllBtn']; @@ -401,7 +504,6 @@ if(typeof video.thumbnail !== 'string' || video.thumbnail !== ""){ ytVideoBackground.className = 'c-bg'; } - var iframeTitle = video._title; var fragment_2 = document.createDocumentFragment(); @@ -420,7 +522,6 @@ notice && notice_text.insertAdjacentHTML('beforeend', noticeText || ""); span.appendChild(notice_text); - notice_text_container.className = 'c-t-cn'; span.className = 'c-n-t'; innerDiv.className = 'c-n-c'; @@ -481,11 +582,12 @@ var n_iframes = videos.length; if ("IntersectionObserver" in window) { - this.iframeObserver = new IntersectionObserver(function(entries) { + var observer = new IntersectionObserver(function(entries) { + if(module.stopObserver){ + observer.disconnect(); + return; + } for(var i=0; i create it - if(!videos[i].showNotice){ - if(videos[i].hasIframe){ + if(videos[i].hasIframe){ + if(typeof service['onReject'] === 'function'){ + service['onReject'](videos[i].iframe); + videos[i].hasIframe = false; + }else{ module._removeIframe(videos[i]); } - module._showNotice(videos[index]); } + module._showNotice(videos[index]); })(i); } }, From 07b573acc8f92c233c18f47292379cadda472321 Mon Sep 17 00:00:00 2001 From: Orest Bida Date: Tue, 24 Aug 2021 22:59:10 +0200 Subject: [PATCH 02/15] add twitter and facebook embeds examples --- demo/app.js | 23 +++++++++++++++++++++++ demo/index.html | 42 ++++++++++++++++++++++++++++-------------- src/iframemanager.css | 27 +++++++++++++-------------- 3 files changed, 64 insertions(+), 28 deletions(-) diff --git a/demo/app.js b/demo/app.js index 19979b4..06fb40b 100644 --- a/demo/app.js +++ b/demo/app.js @@ -80,9 +80,12 @@ onAccept: function(div, callback){ manager.loadScript('https://platform.twitter.com/widgets.js', function(){ + twttr.widgets.createTweet(div.dataset.id, div).then(function(tweet){ + console.log("tweet", tweet); callback(tweet.firstChild); }); + }); }, @@ -105,6 +108,25 @@ }, + "facebook-post" : { + embedUrl : 'https://www.facebook.com/plugins/post.php?{data-id}', + + iframe : { + allow : 'accelerometer; encrypted-media; gyroscope; picture-in-picture; fullscreen; web-share;', + params: '',// optional + }, + cookie : { + name : 'cc_facebook_post' + }, + languages : { + 'en' : { + notice: 'This content is hosted by a third party. By showing the external content you accept the terms and conditions of twitch.com.', + loadBtn: 'Load video', + loadAllBtn: 'Don\'t ask again' + } + } + }, + facebook : { embedUrl : "https://www.facebook.com/", @@ -113,6 +135,7 @@ var fbVideo = document.createElement('div'); fbVideo.className = "fb-post"; fbVideo.setAttribute('data-href', this.embedUrl + div.dataset.id); + fbVideo.setAttribute('data-width', 'auto'); div.appendChild(fbVideo); manager.loadScript('https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v11.0', function(){ diff --git a/demo/index.html b/demo/index.html index f3e879c..3aa9a49 100644 --- a/demo/index.html +++ b/demo/index.html @@ -13,7 +13,6 @@ padding: 1em; font-family: sans-serif; line-height: 1.2; - background-color: black; } *{ @@ -58,22 +57,22 @@

Example with autoscale width (fill width of parent container)

+ data-id="1429246345668304898" + data-customwidget + style="height: 285px;">

@@ -99,16 +98,32 @@

Daily motion video

data-autoscale > +
+ +
+
+ data-service="facebook-post" + data-id="href=https://www.facebook.com/nokia/photos/a.338008237396/10157974130297397/&show_text=true&width=500" + data-title="nokia post" + style="height: 453px; max-width: 500px;" + data-customwidget + data-autoscale + > +

Twitch channel embed

@@ -124,7 +139,6 @@

Twitch channel embed


Ciao

- diff --git a/src/iframemanager.css b/src/iframemanager.css index 0cc2a84..1b75579 100644 --- a/src/iframemanager.css +++ b/src/iframemanager.css @@ -274,11 +274,11 @@ div[data-service] iframe{ border: none; max-width: 100%; width: 100%; - background: #000000; + background: #fff; display: block; visibility: hidden; opacity: 0; - z-index: 1; + z-index: 2; transition: opacity .5s ease; } @@ -311,6 +311,10 @@ div[data-service][data-ratio="3:2"]::before{ padding-top: 66.666666%; } +div[data-service][data-ratio="5:2"]::before{ + padding-top: 40%; +} + div[data-service][data-ratio="4:3"]::before{ padding-top: 75%; } @@ -340,35 +344,30 @@ div[data-service][data-ratio="9:20"]::before{ padding-top: 222.222222%; } -div[data-customservice]::before { +div[data-customwidget]::before { display: none; } -div[data-customservice].c-h-b{ +div[data-customwidget].c-h-b{ background: transparent; } -div[data-customservice].c-h-b .c-ld{ +div[data-customwidget].c-h-b .c-ld{ opacity: 0; visibility: hidden; } -div[data-customservice] iframe{ - background: none; -} - -div[data-customservice] > div{ +div[data-customwidget] > div{ margin: 0!important; } -div[data-customservice]{ +div[data-customwidget]{ vertical-align: top; min-width: 296px; transition: background-color .3s ease; transition-delay: .3s; } - div[data-service="twitter"] .c-n-c .c-l-b{ background-color: #1DA1F2; } @@ -380,6 +379,6 @@ div[data-service="twitter"] .c-n-c .c-l-b::before{ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAATZJREFUOE+lk78rRWEcxj/PJhmUMhhkkMEgGyZSlCR27qRYFItRXWVQJsVm8A8w3GSQUpTcYlCUzXAzKPEnPHp1zunc0znXkW+9y/s+30/P98cr/hkqk2+7E1gA2oG6pIeQZ3v6B2B7T9JmHsz2LHAA9KXeq8AUsCTbE8AVcAGsS3pJg2zXgLkM/Bm4BL7SgKB5B3aBm5RNF5RZlbQdl3AHjGSET8AtsFIAGJVUDw76gS0gwCplmhppuiR9xg7OgZk/JDck9QZ9DJgEdoCxkpCapPk0YBA4jJJ7gIFfQOOSrhNAtAvLwFEJB/uSNmJd0ybaDk5CGWvAcA7sMeyEpEYTwHY3EJqyCCT0DOAUWJX0kb4PYwzzD3tQFCfAsaSzPEFSgu0OYCg6bcAb8CrpvlVfSv3GVoBvLzlh7eQqydQAAAAASUVORK5CYII=') } -div[data-service="facebook"] span{ - width: auto!important; +.fb_iframe_widget_fluid span{ + width: 100%!important; } \ No newline at end of file From 2cf4aa64918e50efa3e77a839e699c281096c4ea Mon Sep 17 00:00:00 2001 From: Orest Bida Date: Wed, 8 Sep 2021 14:25:38 +0200 Subject: [PATCH 03/15] fix bug which caused some iframes to load multiple times --- src/iframemanager.js | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/iframemanager.js b/src/iframemanager.js index a01dd06..28c397d 100644 --- a/src/iframemanager.js +++ b/src/iframemanager.js @@ -212,9 +212,9 @@ // Create iframe only if doesn't alredy have one if(video.hasIframe) return; + video.hasIframe = true; + if(typeof service['onAccept'] === 'function'){ - - // Let the onAccept method create the iframe service['onAccept'](video.div, function(iframe){ @@ -274,7 +274,6 @@ service['iframe'] && typeof service['iframe']['onload'] === 'function' && service['iframe']['onload'](video._id, this); } - video.hasIframe = true; video.div.appendChild(video.iframe); }, @@ -423,11 +422,6 @@ observe : function(target, callback){ - - console.log("observing", target); - - - var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if(mutation.type === 'childList'){ From c42d07a361f2d68010800b2372daef46226efbfa Mon Sep 17 00:00:00 2001 From: Orest Bida Date: Thu, 16 Sep 2021 14:34:40 +0200 Subject: [PATCH 04/15] minor css tweaks --- src/iframemanager.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/iframemanager.css b/src/iframemanager.css index 1b75579..8628730 100644 --- a/src/iframemanager.css +++ b/src/iframemanager.css @@ -65,6 +65,7 @@ div[data-service]{ min-width: 300px; font-family: inherit; position: relative; + font-size: initial; background-color: #0b1016; } @@ -224,7 +225,8 @@ div[data-service] .c-n-c .c-l-b::before{ content: ''; display: block; position: absolute; - top: 12px; + top: 50%; + transform: translateY(-50%); left: 1.1em; z-index: 2; height: 0; From b221f3b58274437ea91687e37de10946edbf2633 Mon Sep 17 00:00:00 2001 From: Orest Bida Date: Thu, 16 Sep 2021 14:35:11 +0200 Subject: [PATCH 05/15] add stale bot config. --- .github/stale.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/stale.yml diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 0000000..17e05c0 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,19 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 30 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - pinned + - enhancement + - bug + - security +# Label to use when marking an issue as stale +staleLabel: wontfix +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false \ No newline at end of file From 279cddc339df8402bcf71cf03478ed3ff38dd565 Mon Sep 17 00:00:00 2001 From: Orest Bida Date: Fri, 11 Nov 2022 19:16:47 +0100 Subject: [PATCH 06/15] Update License copyright date --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 2fa335f..0b2590a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021 Orest Bida +Copyright (c) 2021-2022 Orest Bida Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 0af76583caf9bc06c831c07a04df612105b3afa7 Mon Sep 17 00:00:00 2001 From: Orest Bida Date: Fri, 11 Nov 2022 19:17:33 +0100 Subject: [PATCH 07/15] Update `.gitignore`: ignore `node_modules` folder --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 7bf3a16..e046332 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -/dev_tools \ No newline at end of file +/dev_tools +node_modules \ No newline at end of file From 7e1f0a3db8d4c94bfeaa732032e17446bebe6498 Mon Sep 17 00:00:00 2001 From: Orest Bida Date: Sun, 13 Nov 2022 17:38:11 +0100 Subject: [PATCH 08/15] Add build tools (terser + postcss) --- package.json | 34 ++ pnpm-lock.yaml | 1103 +++++++++++++++++++++++++++++++++++++++++++++ postcss.config.js | 9 + terser.js | 33 ++ 4 files changed, 1179 insertions(+) create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.js create mode 100644 terser.js diff --git a/package.json b/package.json new file mode 100644 index 0000000..d2b851f --- /dev/null +++ b/package.json @@ -0,0 +1,34 @@ +{ + "name": "iframemanager", + "version": "1.0.0", + "description": "GDPR friendly iframe manager written in vanilla js", + "main": "dist/iframemanager.js", + "scripts": { + "build:css": "postcss ./src/iframemanager.css -o ./dist/iframemanager.css", + "build:js": "node terser.js", + "build": "npm run build:js && npm run build:css" + }, + "repository": { + "type": "git", + "url": "https://github.com/orestbida/iframemanager.git" + }, + "keywords": [ + "gdpr", + "iframe", + "manager", + "cookie" + ], + "author": "Orest Bida", + "license": "MIT", + "bugs": { + "url": "https://github.com/orestbida/iframemanager/issues" + }, + "homepage": "https://github.com/orestbida/iframemanager#readme", + "devDependencies": { + "cssnano": "^5.1.14", + "postcss": "^8.4.19", + "postcss-cli": "^10.0.0", + "postcss-custom-properties": "^12.1.10", + "terser": "^5.15.1" + } +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..7e34b63 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1103 @@ +lockfileVersion: 5.4 + +specifiers: + cssnano: ^5.1.14 + postcss: ^8.4.19 + postcss-cli: ^10.0.0 + postcss-custom-properties: ^12.1.10 + terser: ^5.15.1 + +devDependencies: + cssnano: 5.1.14_postcss@8.4.19 + postcss: 8.4.19 + postcss-cli: 10.0.0_postcss@8.4.19 + postcss-custom-properties: 12.1.10_postcss@8.4.19 + terser: 5.15.1 + +packages: + + /@jridgewell/gen-mapping/0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.17 + dev: true + + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/source-map/0.3.2: + resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} + dependencies: + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + dev: true + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.13.0 + dev: true + + /@trysound/sax/0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: true + + /acorn/8.8.1: + resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /anymatch/3.1.2: + resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /boolbase/1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist/4.21.4: + resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001431 + electron-to-chromium: 1.4.284 + node-releases: 2.0.6 + update-browserslist-db: 1.0.10_browserslist@4.21.4 + dev: true + + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /caniuse-api/3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + dependencies: + browserslist: 4.21.4 + caniuse-lite: 1.0.30001431 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: true + + /caniuse-lite/1.0.30001431: + resolution: {integrity: sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==} + dev: true + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.2 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /cliui/8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colord/2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: true + + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /commander/7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: true + + /css-declaration-sorter/6.3.1_postcss@8.4.19: + resolution: {integrity: sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.19 + dev: true + + /css-select/4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + + /css-tree/1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true + + /css-what/6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /cssesc/3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /cssnano-preset-default/5.2.13_postcss@8.4.19: + resolution: {integrity: sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.3.1_postcss@8.4.19 + cssnano-utils: 3.1.0_postcss@8.4.19 + postcss: 8.4.19 + postcss-calc: 8.2.4_postcss@8.4.19 + postcss-colormin: 5.3.0_postcss@8.4.19 + postcss-convert-values: 5.1.3_postcss@8.4.19 + postcss-discard-comments: 5.1.2_postcss@8.4.19 + postcss-discard-duplicates: 5.1.0_postcss@8.4.19 + postcss-discard-empty: 5.1.1_postcss@8.4.19 + postcss-discard-overridden: 5.1.0_postcss@8.4.19 + postcss-merge-longhand: 5.1.7_postcss@8.4.19 + postcss-merge-rules: 5.1.3_postcss@8.4.19 + postcss-minify-font-values: 5.1.0_postcss@8.4.19 + postcss-minify-gradients: 5.1.1_postcss@8.4.19 + postcss-minify-params: 5.1.4_postcss@8.4.19 + postcss-minify-selectors: 5.2.1_postcss@8.4.19 + postcss-normalize-charset: 5.1.0_postcss@8.4.19 + postcss-normalize-display-values: 5.1.0_postcss@8.4.19 + postcss-normalize-positions: 5.1.1_postcss@8.4.19 + postcss-normalize-repeat-style: 5.1.1_postcss@8.4.19 + postcss-normalize-string: 5.1.0_postcss@8.4.19 + postcss-normalize-timing-functions: 5.1.0_postcss@8.4.19 + postcss-normalize-unicode: 5.1.1_postcss@8.4.19 + postcss-normalize-url: 5.1.0_postcss@8.4.19 + postcss-normalize-whitespace: 5.1.1_postcss@8.4.19 + postcss-ordered-values: 5.1.3_postcss@8.4.19 + postcss-reduce-initial: 5.1.1_postcss@8.4.19 + postcss-reduce-transforms: 5.1.0_postcss@8.4.19 + postcss-svgo: 5.1.0_postcss@8.4.19 + postcss-unique-selectors: 5.1.1_postcss@8.4.19 + dev: true + + /cssnano-utils/3.1.0_postcss@8.4.19: + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + dev: true + + /cssnano/5.1.14_postcss@8.4.19: + resolution: {integrity: sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.13_postcss@8.4.19 + lilconfig: 2.0.6 + postcss: 8.4.19 + yaml: 1.10.2 + dev: true + + /csso/4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: true + + /dependency-graph/0.11.0: + resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} + engines: {node: '>= 0.6.0'} + dev: true + + /dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dom-serializer/1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + + /domelementtype/2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domhandler/4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils/2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true + + /electron-to-chromium/1.4.284: + resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} + dev: true + + /emoji-regex/8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /entities/2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /fast-glob/3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fastq/1.13.0: + resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + dependencies: + reusify: 1.0.4 + dev: true + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /fs-extra/10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /get-caller-file/2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-stdin/9.0.0: + resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} + engines: {node: '>=12'} + dev: true + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /globby/13.1.2: + resolution: {integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + + /ignore/5.2.0: + resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + engines: {node: '>= 4'} + dev: true + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /jsonfile/6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.10 + dev: true + + /lilconfig/2.0.6: + resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} + engines: {node: '>=10'} + dev: true + + /lodash.memoize/4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lodash.uniq/4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true + + /mdn-data/2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: true + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /node-releases/2.0.6: + resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} + dev: true + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-url/6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: true + + /nth-check/2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pify/2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /postcss-calc/8.2.4_postcss@8.4.19: + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.19 + postcss-selector-parser: 6.0.10 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-cli/10.0.0_postcss@8.4.19: + resolution: {integrity: sha512-Wjy/00wBBEgQqnSToznxLWDnATznokFGXsHtF/3G8glRZpz5KYlfHcBW/VMJmWAeF2x49zjgy4izjM3/Wx1dKA==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + postcss: ^8.0.0 + dependencies: + chokidar: 3.5.3 + dependency-graph: 0.11.0 + fs-extra: 10.1.0 + get-stdin: 9.0.0 + globby: 13.1.2 + picocolors: 1.0.0 + postcss: 8.4.19 + postcss-load-config: 4.0.1_postcss@8.4.19 + postcss-reporter: 7.0.5_postcss@8.4.19 + pretty-hrtime: 1.0.3 + read-cache: 1.0.0 + slash: 4.0.0 + yargs: 17.6.2 + transitivePeerDependencies: + - ts-node + dev: true + + /postcss-colormin/5.3.0_postcss@8.4.19: + resolution: {integrity: sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-convert-values/5.1.3_postcss@8.4.19: + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-properties/12.1.10_postcss@8.4.19: + resolution: {integrity: sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-discard-comments/5.1.2_postcss@8.4.19: + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-discard-duplicates/5.1.0_postcss@8.4.19: + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-discard-empty/5.1.1_postcss@8.4.19: + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-discard-overridden/5.1.0_postcss@8.4.19: + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-load-config/4.0.1_postcss@8.4.19: + resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.0.6 + postcss: 8.4.19 + yaml: 2.1.3 + dev: true + + /postcss-merge-longhand/5.1.7_postcss@8.4.19: + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1_postcss@8.4.19 + dev: true + + /postcss-merge-rules/5.1.3_postcss@8.4.19: + resolution: {integrity: sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0_postcss@8.4.19 + postcss: 8.4.19 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-minify-font-values/5.1.0_postcss@8.4.19: + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-gradients/5.1.1_postcss@8.4.19: + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0_postcss@8.4.19 + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-params/5.1.4_postcss@8.4.19: + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + cssnano-utils: 3.1.0_postcss@8.4.19 + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-selectors/5.2.1_postcss@8.4.19: + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-normalize-charset/5.1.0_postcss@8.4.19: + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-normalize-display-values/5.1.0_postcss@8.4.19: + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-positions/5.1.1_postcss@8.4.19: + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-repeat-style/5.1.1_postcss@8.4.19: + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-string/5.1.0_postcss@8.4.19: + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-timing-functions/5.1.0_postcss@8.4.19: + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-unicode/5.1.1_postcss@8.4.19: + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-url/5.1.0_postcss@8.4.19: + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-whitespace/5.1.1_postcss@8.4.19: + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-ordered-values/5.1.3_postcss@8.4.19: + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0_postcss@8.4.19 + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-reduce-initial/5.1.1_postcss@8.4.19: + resolution: {integrity: sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + caniuse-api: 3.0.0 + postcss: 8.4.19 + dev: true + + /postcss-reduce-transforms/5.1.0_postcss@8.4.19: + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-reporter/7.0.5_postcss@8.4.19: + resolution: {integrity: sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==} + engines: {node: '>=10'} + peerDependencies: + postcss: ^8.1.0 + dependencies: + picocolors: 1.0.0 + postcss: 8.4.19 + thenby: 1.3.4 + dev: true + + /postcss-selector-parser/6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-svgo/5.1.0_postcss@8.4.19: + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + dev: true + + /postcss-unique-selectors/5.1.1_postcss@8.4.19: + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.19 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-value-parser/4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + + /postcss/8.4.19: + resolution: {integrity: sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /pretty-hrtime/1.0.3: + resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} + engines: {node: '>= 0.8'} + dev: true + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /read-cache/1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: true + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /require-directory/2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /slash/4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map-support/0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /stable/0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true + + /string-width/4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /stylehacks/5.1.1_postcss@8.4.19: + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + postcss: 8.4.19 + postcss-selector-parser: 6.0.10 + dev: true + + /svgo/2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: true + + /terser/5.15.1: + resolution: {integrity: sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.2 + acorn: 8.8.1 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /thenby/1.3.4: + resolution: {integrity: sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==} + dev: true + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /universalify/2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + + /update-browserslist-db/1.0.10_browserslist@4.21.4: + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.4 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /util-deprecate/1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /wrap-ansi/7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /y18n/5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yaml/1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + + /yaml/2.1.3: + resolution: {integrity: sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==} + engines: {node: '>= 14'} + dev: true + + /yargs-parser/21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs/17.6.2: + resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..a7ed1bc --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,9 @@ +module.exports = { + map: false, + plugins: { + 'cssnano': {}, + 'postcss-custom-properties': { + preserve: true + } + } +} \ No newline at end of file diff --git a/terser.js b/terser.js new file mode 100644 index 0000000..11fe5a8 --- /dev/null +++ b/terser.js @@ -0,0 +1,33 @@ +const { minify } = require("terser"); +const { writeFileSync, readFileSync } = require('fs'); +const pkg = require('./package.json'); + +const srcFile = `src/${pkg.name}.js`; +const distFile = `dist/${pkg.name}.js`; + +const code = readFileSync(srcFile, { + encoding: 'utf8' +}); + +minify(code, { + toplevel: true, + format: { + quote_style: 1, + comments: /^!/ + }, + mangle: { + properties: { + regex: /^_/, + keep_quoted: true + } + }, + compress: { + drop_console: true, + passes: 3, + ecma: 5 + } +}).then(output => { + writeFileSync(distFile, output.code, { + encoding: 'utf8' + }); +}) \ No newline at end of file From 4e5fa37264153f8519e0ce440a7b28f83dfc9dbd Mon Sep 17 00:00:00 2001 From: Orest Bida Date: Sun, 13 Nov 2022 17:39:23 +0100 Subject: [PATCH 09/15] Update demo: add google maps example --- demo/app.js | 72 ++++++++++++++++++----------- demo/assets/maps-thumbnail-min.png | Bin 0 -> 68608 bytes demo/index.html | 52 +++++++++++++-------- 3 files changed, 77 insertions(+), 47 deletions(-) create mode 100644 demo/assets/maps-thumbnail-min.png diff --git a/demo/app.js b/demo/app.js index 06fb40b..bb07753 100644 --- a/demo/app.js +++ b/demo/app.js @@ -10,11 +10,11 @@ services : { youtube : { embedUrl: 'https://www.youtube-nocookie.com/embed/{data-id}', - + iframe : { allow : 'accelerometer; encrypted-media; gyroscope; picture-in-picture; fullscreen;', }, - cookie : { + cookie : { name : 'cc_youtube' }, languages : { @@ -27,13 +27,13 @@ }, dailymotion : { embedUrl: 'https://www.dailymotion.com/embed/video/{data-id}', - + // Use dailymotion api to obtain thumbnail thumbnailUrl: function(id, setThumbnail){ - + var url = "https://api.dailymotion.com/video/" + id + "?fields=thumbnail_large_url"; var xhttp = new XMLHttpRequest(); - + xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var src = JSON.parse(this.response).thumbnail_large_url; @@ -47,7 +47,7 @@ iframe : { allow : 'accelerometer; encrypted-media; gyroscope; picture-in-picture; fullscreen;' }, - cookie : { + cookie : { name : 'cc_dailymotion' }, languages : { @@ -55,7 +55,7 @@ notice: 'This content is hosted by a third party. By showing the external content you accept the terms and conditions of dailymotion.com.', loadBtn: 'Load video', loadAllBtn: 'Don\'t ask again' - + } } }, @@ -65,7 +65,7 @@ allow : 'accelerometer; encrypted-media; gyroscope; picture-in-picture; fullscreen;', params: '',// optional }, - cookie : { + cookie : { name : 'cc_twitch' }, languages : { @@ -78,25 +78,23 @@ }, twitter : { onAccept: function(div, callback){ - - manager.loadScript('https://platform.twitter.com/widgets.js', function(){ - + + CookieConsent.loadScript('https://platform.twitter.com/widgets.js').then(() => { twttr.widgets.createTweet(div.dataset.id, div).then(function(tweet){ console.log("tweet", tweet); callback(tweet.firstChild); }); - }); }, - + onReject: function(iframe){ iframe.parentNode.remove(); }, - - cookie : { + + cookie : { name : 'cc_twitter' }, - + languages : { 'en' : { notice: 'This content is hosted by a third party. By showing the external content you accept the terms and conditions of twitter.com.', @@ -105,7 +103,7 @@ } } - + }, "facebook-post" : { @@ -115,7 +113,7 @@ allow : 'accelerometer; encrypted-media; gyroscope; picture-in-picture; fullscreen; web-share;', params: '',// optional }, - cookie : { + cookie : { name : 'cc_facebook_post' }, languages : { @@ -127,6 +125,24 @@ } }, + googlemaps: { + + embedUrl: 'https://www.google.com/maps/embed?pb={data-id}', + iframe: { + allow : 'picture-in-picture; fullscreen;' + }, + cookie: { + name: 'cc_maps' + }, + languages: { + 'en' : { + notice: 'Notice message ...', + loadBtn: 'Load map', + loadAllBtn: 'Don\'t ask again' + } + } + }, + facebook : { embedUrl : "https://www.facebook.com/", @@ -137,29 +153,29 @@ fbVideo.setAttribute('data-href', this.embedUrl + div.dataset.id); fbVideo.setAttribute('data-width', 'auto'); div.appendChild(fbVideo); - - manager.loadScript('https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v11.0', function(){ + + CookieConsent.loadScript('https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v11.0').then(() => { var c = document.querySelector(`[data-id="${div.dataset.id}"`).lastChild; FB.XFBML.parse(document.querySelector(`[data-id="${div.dataset.id}"`)); - + manager.observe(fbVideo, function(iframe){ console.log("wwwaaaa", iframe); callback(iframe) }); - + //FB.XFBML.parse(document.querySelector(`[data-id="${div.dataset.id}"`)); - + }); }, - + onReject: function(iframe){ iframe.parentNode.parentNode.remove(); }, - - cookie : { + + cookie : { name : 'cc_facebook' }, - + languages : { 'en' : { notice: 'This content is hosted by a third party. By showing the external content you accept the terms and conditions of twitter.com.', @@ -171,7 +187,7 @@ } }); - + var accept_all = document.getElementById('accept-all'); var reject_all = document.getElementById('reject-all'); diff --git a/demo/assets/maps-thumbnail-min.png b/demo/assets/maps-thumbnail-min.png new file mode 100644 index 0000000000000000000000000000000000000000..5e6f12accbee2c38a7d4d9709330e0d062c33f93 GIT binary patch literal 68608 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 literal 0 HcmV?d00001 diff --git a/demo/index.html b/demo/index.html index 3aa9a49..cf7fd35 100644 --- a/demo/index.html +++ b/demo/index.html @@ -34,7 +34,7 @@

This is a test page


- +

Simple example


Simple example data-ratio="9:16" data-id="fJ9rUzIMcZQ">
- +

Example with autoscale width (fill width of parent container)



-
-
-
Example with autoscale width (fill width of parent container)

Example with custom thumbnail + params (video starts muted at 21s)


-
Example with custom thumbnail + params (video starts muted at 21s)

Daily motion video


-

-
- -
Daily motion video data-customwidget data-autoscale >
+ +
+
+

Google Maps

+
+
+