gaad-widget
Version:
Display a banner-link to promote Global Accessibility Awareness Day (GAAD). Display the banner for a period before and after the day. Via unpkg CDN.
391 lines (303 loc) • 14.4 kB
JavaScript
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
module.exports={"dates":{"2011":{"{x}":0,"{d}":19,"{th}":"th","{m}":"May","{y}":2011,"ts":1305759600000},"2012":{"{x}":1,"{d}":17,"{th}":"th","{m}":"May","{y}":2012,"ts":1337209200000},"2013":{"{x}":2,"{d}":16,"{th}":"th","{m}":"May","{y}":2013,"ts":1368658800000},"2014":{"{x}":3,"{d}":15,"{th}":"th","{m}":"May","{y}":2014,"ts":1400108400000},"2015":{"{x}":4,"{d}":21,"{th}":"st","{m}":"May","{y}":2015,"ts":1432162800000},"2016":{"{x}":5,"{d}":19,"{th}":"th","{m}":"May","{y}":2016,"ts":1463612400000},"2017":{"{x}":6,"{d}":18,"{th}":"th","{m}":"May","{y}":2017,"ts":1495062000000},"2018":{"{x}":7,"{d}":17,"{th}":"th","{m}":"May","{y}":2018,"ts":1526511600000},"2019":{"{x}":8,"{d}":16,"{th}":"th","{m}":"May","{y}":2019,"ts":1557961200000},"2020":{"{x}":9,"{d}":21,"{th}":"st","{m}":"May","{y}":2020,"ts":1590015600000},"2021":{"{x}":10,"{d}":20,"{th}":"th","{m}":"May","{y}":2021,"ts":1621465200000},"2022":{"{x}":11,"{d}":19,"{th}":"th","{m}":"May","{y}":2022,"ts":1652914800000},"2023":{"{x}":12,"{d}":18,"{th}":"th","{m}":"May","{y}":2023,"ts":1684364400000},"2024":{"{x}":13,"{d}":16,"{th}":"th","{m}":"May","{y}":2024,"ts":1715814000000},"2025":{"{x}":14,"{d}":15,"{th}":"th","{m}":"May","{y}":2025,"ts":1747263600000},"2026":{"{x}":15,"{d}":21,"{th}":"st","{m}":"May","{y}":2026,"ts":1779318000000},"2027":{"{x}":16,"{d}":20,"{th}":"th","{m}":"May","{y}":2027,"ts":1810767600000},"2028":{"{x}":17,"{d}":18,"{th}":"th","{m}":"May","{y}":2028,"ts":1842217200000},"2029":{"{x}":18,"{d}":17,"{th}":"th","{m}":"May","{y}":2029,"ts":1873666800000},"2030":{"{x}":19,"{d}":16,"{th}":"th","{m}":"May","{y}":2030,"ts":1905116400000},"2031":{"{x}":20,"{d}":15,"{th}":"th","{m}":"May","{y}":2031,"ts":1936566000000},"2032":{"{x}":21,"{d}":20,"{th}":"th","{m}":"May","{y}":2032,"ts":1968620400000}}}
},{}],2:[function(require,module,exports){
module.exports={
"en": {
"name": "Global Accessibility Awareness Day (GAAD)",
"before": "Join us on Thursday May {d}{th}, {y} and mark the {x}th <a {at}>{g}</a>.",
"after": "Put next year's <a {at}>{g}</a>, Thursday May {d}{th}, {y}, in your diary. See you then!",
"put": "Put gaad-widget on your web site",
"ical": "Download an iCal calendar file",
"url": "https://accessibility.day"
},
"es": {
"name": "Día Mundial para Promover la Concienciación sobre la Accesibilidad Web (GAAD)",
"before": "El {d} de mayo de {y}, le invitamos a participar en el {x} ° <a {at}>{g}</a>.",
"after": "Coloque el <a {at}>{g}<a> del próximo año, el jueves {d} de mayo de {y}, en su diario. ¡Hasta entonces!",
"url": "/espanol/"
},
"fr": {
"name": "Journée Mondiale de Sensibilisation à l'Accessibilité (GAAD)",
"before": "Rejoignez-nous le jeudi {d} mai {y} et marquez le {x}ème <a {at}>{g}</a>.",
"after": "Mettez le <a {at}>{g}</a> de l'année prochaine, le jeudi {d} mai {y} dans votre journal. À plus tard!",
"put": "Mettez 'gaad-widget' sur votre site web",
"ical": "Télécharger un fichier de calendrier (iCal)",
"url": "/francais/"
},
"zh-cn": {
"name": "国际残疾人网上科技使用活动日 (GAAD)",
"before": "欢迎在每年5月份的第三个星期四加入我们,— <a {at}>{g}</a>。",
"after": "请在您的日历上标注5月 日举行的活动日 — <a {at}>{g}</a>。",
"ical": "下载 iCal 日历文件",
"url": "/"
}
}
},{}],3:[function(require,module,exports){
/*!
gaad-widget.js | © 2018 Nick Freear | License: MIT | NOT an official widget!
https://github.com/nfreear/gaad-widget
http://globalaccessibilityawarenessday.org
*/
;
const VERSION = '3.5.0'; // <Auto>
const VERSION_HAT = '^3';
const TRANSLATE_TEXTS = require('./data/locales'); // JSON.
const GAAD_DATE_LOOKUP = require('./data/gaad-dates.min'); // JSON.
// console.log(GAAD_DATE_LOOKUP);
const DEFAULTS = require('./src/configure').config(TRANSLATE_TEXTS, GAAD_DATE_LOOKUP, VERSION, VERSION_HAT);
const METHODS = require('./src/methods');
METHODS.analytics = require('node-analytics-ga');
// METHODS.analytics = require('universal-ga');
// METHODS.analytics = require('./google-analytics/index');
require('./src/widget-src').run(DEFAULTS, METHODS);
},{"./data/gaad-dates.min":1,"./data/locales":2,"./src/configure":5,"./src/methods":6,"./src/widget-src":7,"node-analytics-ga":4}],4:[function(require,module,exports){
/*!
A basic Google Analytics wrapper | © Nick Freear, 06-July-2017.
*/
module.exports = {
create: create,
pageView: pageView,
sendEvent: sendEvent
};
var WIN = window;
var DOC = WIN.document;
var LOC = WIN.location;
var analyticsCfg = {};
var enable = false;
var gaFn;
var sendName;
/** create
* @public
var config = {
id: 'UA-XXXXX-Y', // Required.
name: 'gaadWidget', // Required.
fn: 'myGA' // Optional.
};
*/
function create (config) {
// Setup private vars.
enable = config && config.id;
analyticsCfg = config;
if (!enable) {
console.warn('no analytics');
return;
}
analyticsCfg.fn = analyticsCfg.fn || 'ga';
includeJavascript(analyticsCfg.fn);
return createTracker();
}
/** createTracker.
* @private
*/
function createTracker () {
gaFn = WIN[ analyticsCfg.fn ];
sendName = analyticsCfg.name ? analyticsCfg.name + '.send' : 'send';
// ga('create', 'UA-XXXXX-Y', 'auto');
gaFn('create', analyticsCfg.id, 'auto', analyticsCfg.name);
console.warn('analytics: ', analyticsCfg);
return analyticsCfg;
}
/** pageView.
* @public
*/
function pageView () {
if (!enable) return;
var path = null;
if (analyticsCfg.isWidget) {
// Widgets: include "host" in the path sent to pageview.
path = LOC.host + LOC.pathname + LOC.search.replace(/^\?/, '!');
}
gaFn(sendName, 'pageview', path);
}
/** sendEvent.
* @public
*/
function sendEvent (cat, act, label, value) {
if (!enable) return;
gaFn(sendName, 'event', cat, act, label, value);
console.warn('analytics.event: ', cat, act, label, value);
}
/** includeJavascript.
* @private
*/
function includeJavascript (gaName) {
var existingJs = DOC.querySelector('script[ src *= google-analytics ]');
if (!existingJs) {
/* eslint-disable */
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', gaName /* || 'ga' */);
/* eslint-enable */
}
}
},{}],5:[function(require,module,exports){
// Configure | ©Nick Freear.
const queryString = window.location.href; // Was: W.location.search;
module.exports.config = function (TRANSLATE_TEXTS, DATES, VERSION, VERSION_HAT) {
'use strict';
const YEAR = new Date().getFullYear();
const GAAD_DATE = DATES.dates[YEAR];
const GAAD_NEXT = DATES.dates[YEAR + 1];
const M_LANG = queryString.match(/[&?#!]lang=(\w{2}(-\w{2})?)/);
const defaults = {
id: 'id-gaad-widget',
script: '/gaad-widget', // .js OR .min.js;
lang: M_LANG ? M_LANG[1] : 'en',
dir: 'ltr',
texts: TRANSLATE_TEXTS,
url: 'http://globalaccessibilityawarenessday.org/?utm_source=github&utm_campaign=gaad-widget',
days_before: 10,
days_after: 10,
embed: false,
style_url: '/../../style/gaad-widget.css',
theme: 'blue', // OR: 'black', or 'ical-hide'.
should_show: null,
is_before: null,
xreplace: GAAD_DATE,
date: GAAD_DATE,
date_next: GAAD_NEXT,
// Was: datefmt: GAAD_DATE.toString('MMMM dS, yyyy'),
today: new Date((new Date()).toDateString()), // At midnight: 00:00:00!
xth: YEAR - 2011,
analytics: {
isWidget: true,
name: 'gaadWidget',
id: 'UA-102188521-1'
},
ical_widget: '<a class=c href="https://unpkg.com/gaad-widget@{v}/data/gaad.en.ics" aria-label="{p}" title="{p}">{c}</a>',
ical_char: '📆', // 'Tear off calendar' emoji - https://emojipedia.org/tear-off-calendar/
put_widget: '<a class=p href="https://github.com/nfreear/gaad-widget#usage" aria-label="{p}" title="{p} (v{v})" target=_top >{c}</a>',
put_char: '↓', // 'Downwards arrow to bar' - http://xahlee.info/comp/unicode_arrows.html; http://amp-what.com/
debug: /[&?#!]debug=1/.test(queryString),
force: /[&?#!]gaad.?widget=f(orce)?/i.test(queryString)
};
defaults.version = VERSION;
defaults.version_hat = VERSION_HAT;
return defaults;
};
},{}],6:[function(require,module,exports){
// Functions: extend, setHTML, addStylesheet.. | ©Nick Freear.
// const W = window;
const D = document;
let CFG;
module.exports = {
getConfig: function (defaults, methods) {
const configEl = D.querySelector('script[ data-gaad-widget ]');
const data = configEl ? configEl.getAttribute('data-gaad-widget') : null;
const options = data ? JSON.parse(data) : {};
const gaad = methods.extend(defaults, options);
const scriptEl = D.querySelector('script[ src *= "' + gaad.script + '" ]');
gaad.log = gaad.debug && console ? console.warn : function () {};
gaad.script_url = scriptEl.src;
CFG = gaad;
return gaad;
},
addDays: function (dateObj, days) {
return dateObj.ts + (days * 24 * 60 * 60 * 1000); // Milliseconds.
},
// JuhQ (16 July 2015): https://gist.github.com/pbojinov/8f3765b672efec122f66#gistcomment-1493930
extend: function () {
const extended = {};
let key;
let prop;
for (key in arguments) {
const argument = arguments[key];
for (prop in argument) {
if (Object.prototype.hasOwnProperty.call(argument, prop)) {
extended[prop] = argument[prop];
}
}
}
return extended;
},
trans: function (msgid, vars) {
const texts = CFG.texts;
const msgstr = texts[CFG.lang][msgid] || texts.en[msgid];
return msgstr; // replaceObj( msgstr, vars );
},
// Ben McCormick (24 March 2013), SirDerpington:
// http://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings
replaceObj: replaceObj,
setHTML: function (gaad) {
const elem = D.getElementById(gaad.id);
elem.lang = gaad.lang;
elem.dir = gaad.dir;
elem.setAttribute('role', 'alert');
elem.className = replaceObj('gaad-widget-js {t} {e} {i}', { '{t}': gaad.theme, '{e}': gaad.embed ? 'embed' : 'no-embed', '{i}': gaad.dayClass });
elem.innerHTML = gaad.message; // Was: 'gaad.join'
},
addStylesheet: function (gaad) {
const styleEl = D.createElement('link');
styleEl.rel = 'stylesheet';
styleEl.type = 'text/css';
styleEl.href = decideStyleUrl(gaad);
D.head.appendChild(styleEl);
}
};
function decideStyleUrl (CFG) {
// Support for 'unpkg' CDN short URL.
if (/@\d\.\d\.\d(-[\w.]+)(#|_.js|$)/.test(CFG.script_url)) {
CFG.log('GAAD: npm @version found');
CFG.style_url = CFG.style_url.replace('/../..', '');
CFG.script_url = CFG.script_url.replace(/(#.*|_\.js)/, '');
}
return CFG.script_url + CFG.style_url;
}
function replaceObj (str, mapObj) {
const re = new RegExp(Object.keys(mapObj).join('|'), 'g'); // Was: "gi".
return str.replace(re, function (matched) {
return mapObj[matched]; // Was: matched.toLowerCase().
});
}
},{}],7:[function(require,module,exports){
// Main widget 'run' function | ©Nick Freear.
module.exports.run = function (defaults, methods) {
'use strict';
const gaad = methods.getConfig(defaults, methods);
const texts = gaad.texts;
const GAAD_DATE = gaad.date;
const GAAD_NEXT = gaad.date_next;
gaad.show_date = methods.addDays(GAAD_DATE, -gaad.days_before); // new Date(GAAD_DATE).addDays(-gaad.days_before); // Clone.
gaad.hide_date = methods.addDays(GAAD_DATE, gaad.days_after); // new Date(GAAD_DATE).addDays(gaad.days_after);
// gaad.diff_days = gaad.today.toString('dd') - gaad.show_date.toString('dd');
gaad.diff_show = gaad.today - gaad.show_date;
gaad.diff_hide = gaad.today - gaad.hide_date;
gaad.should_show = (gaad.diff_show >= 0 && gaad.diff_hide < 0);
gaad.is_today = (gaad.today - gaad.date.ts) === 0;
gaad.is_before = (gaad.today - gaad.date.ts) <= 0; // Use: 'JS Date - timestamp' (implicite cast), works!
if (!gaad.is_before) {
gaad.xreplace = GAAD_NEXT;
}
gaad.dayClass = gaad.is_today ? 'is-today' : gaad.is_before ? 'is-before' : 'is-after';
gaad.xreplace['{at}'] = methods.replaceObj(' href="{u}" target="_top" title="{t}"', { '{u}': gaad.url, '{t}': texts.en.name });
gaad.xreplace['{x}'] = gaad.xth;
// Was: gaad.xreplace[ '{g}' ] = gaad.texts.en.name;
const lang = texts[gaad.lang] ? gaad.lang : 'en';
gaad.lang = lang;
const replaceObj = methods.replaceObj;
const template = gaad.is_before ? texts[lang].before : texts[lang].after;
const putWidget = replaceObj(gaad.put_widget, { '{p}': methods.trans('put'), '{c}': gaad.put_char, '{v}': gaad.version });
const calWidget = replaceObj(gaad.ical_widget, { '{p}': methods.trans('ical'), '{c}': gaad.ical_char, '{v}': gaad.version_hat });
gaad.xreplace['{g}'] = texts[lang].name;
gaad.message = replaceObj(template, gaad.xreplace) + replaceObj('<div class="w">{p}{c}</div>', { '{c}': calWidget, '{p}': putWidget });
if (!gaad.should_show && !gaad.force) {
return gaad.log('GAAD: no-show', gaad);
}
gaad.log('GAAD: show', gaad);
runAnalytics(methods.analytics, gaad.analytics);
methods.addStylesheet(gaad);
methods.setHTML(gaad);
console.log('Happy GAAD! ~ http://globalaccessibilityawarenessday.org');
return gaad;
};
function runAnalytics (analyticsFn, config) {
if (config) {
analyticsFn.create(config);
analyticsFn.pageView();
// analyticsFn.initialize(analyticsCfg.id, { name: analyticsCfg.name, debug: gaad.debug });
// analyticsFn.pageview();
}
}
},{}]},{},[3])
//# sourceMappingURL=gaad-widget.js.map