@wener/console
Version:
Base console UI toolkit
139 lines (138 loc) • 5.32 kB
JavaScript
function _array_like_to_array(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
return arr2;
}
function _array_without_holes(arr) {
if (Array.isArray(arr)) return _array_like_to_array(arr);
}
function _iterable_to_array(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _non_iterable_spread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _to_consumable_array(arr) {
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
}
function _unsupported_iterable_to_array(o, minLen) {
if (!o) return;
if (typeof o === "string") return _array_like_to_array(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(n);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
}
import { getGlobalThis } from '@wener/utils';
import { createStore } from 'zustand';
import { mutative } from 'zustand-mutative';
function setupMatomo() {
var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _ref_global = _ref.global, global = _ref_global === void 0 ? getGlobalThis() : _ref_global, url = _ref.url, siteId = _ref.siteId, _ref_queue = _ref.queue, queue = _ref_queue === void 0 ? [] : _ref_queue;
var _G_Matomo;
if (!url || !siteId) {
return;
}
var G = global;
if (typeof G === 'undefined' || ((_G_Matomo = G['Matomo']) === null || _G_Matomo === void 0 ? void 0 : _G_Matomo.initialized)) {
return;
}
var _paq = G._paq = G._paq || queue;
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push([
'trackPageView'
]);
_paq.push([
'enableLinkTracking'
]);
var u = url;
_paq.push([
'setTrackerUrl',
u + 'matomo.php'
]);
_paq.push([
'setSiteId',
siteId
]);
return new Promise(function(resolve, reject) {
var _parent$_parentNode;
var doc = document;
var ele$ = doc.createElement('script');
var parent$ = doc.getElementsByTagName('script')[0];
ele$.onload = function() {
resolve(window.Matomo);
};
ele$.onerror = reject;
ele$.type = 'text/javascript';
ele$.async = true;
ele$.defer = true;
ele$.src = u + 'matomo.js';
(_parent$_parentNode = parent$.parentNode) === null || _parent$_parentNode === void 0 ? void 0 : _parent$_parentNode.insertBefore(ele$, parent$);
});
}
export var TrackerStore = createStore()(mutative(function(setState, getState, store) {
var g = getGlobalThis();
var queue = [];
var pending;
return {
init: function(param) {
var baseUrl = param.baseUrl, siteId = param.siteId;
pending || (pending = setupMatomo({
url: baseUrl,
siteId: siteId
}));
},
tracker: createProxyTracker({
queue: queue,
invoke: function(param) {
var method = param.method, args = param.args;
}
})
};
}));
function createProxyTracker(param) {
var _param_queue = param.queue, queue = _param_queue === void 0 ? [] : _param_queue, invoke = param.invoke;
return new Proxy({
_paq: queue
}, {
get: function get(target, prop) {
switch(prop){
case '_paq':
return target._paq;
}
return function() {
for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
args[_key] = arguments[_key];
}
switch(prop){
case 'push':
var _queue;
(_queue = queue).push.apply(_queue, _to_consumable_array(args));
return;
default:
if (typeof prop !== 'string') {
throw new Error("Invalid tracker method ".concat(String(prop)));
}
}
var skip = false;
if (invoke) {
skip = (invoke === null || invoke === void 0 ? void 0 : invoke({
method: prop,
args: args,
queue: queue
})) === true;
}
if (!skip) {
queue.push([
prop
].concat(_to_consumable_array(args)));
}
// Limit queue size
if (queue.length > 1000) {
queue.splice(0, 1000 - queue.length);
}
};
}
});
}
export function getTracker() {
return TrackerStore.getState().tracker;
}