@olenbetong/appframe-core 2.11.2 → 2.11.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/af.common.js +16 -15
- package/dist/esm/af.common.legacy.js +41 -36
- package/dist/esm/af.common.legacy.min.js +1 -1
- package/dist/esm/af.common.legacy.min.js.map +3 -3
- package/dist/esm/af.common.min.js +2 -2
- package/dist/esm/af.common.min.js.map +3 -3
- package/dist/iife/af.common.js +16 -15
- package/dist/iife/af.common.legacy.js +41 -36
- package/dist/iife/af.common.legacy.min.js +1 -1
- package/dist/iife/af.common.legacy.min.js.map +3 -3
- package/dist/iife/af.common.min.js +2 -2
- package/dist/iife/af.common.min.js.map +3 -3
- package/es/index.js +1 -1
- package/es/log.js +6 -5
- package/es/settings.js +4 -4
- package/package.json +2 -2
- package/src/log.ts +7 -5
- package/src/settings.ts +5 -4
package/dist/esm/af.common.js
CHANGED
|
@@ -111,12 +111,13 @@ var UserSession = class extends SessionHandler {
|
|
|
111
111
|
};
|
|
112
112
|
|
|
113
113
|
// src/log.ts
|
|
114
|
+
var article = window.af?.article?.id ?? window.window?.location.pathname.substring(1).split("/")[0];
|
|
114
115
|
async function logActivity(activity, parameters = {}, timeElapsed = 0) {
|
|
115
116
|
try {
|
|
116
117
|
let response = await fetch("/api/logging/log-activity", {
|
|
117
118
|
method: "POST",
|
|
118
119
|
body: JSON.stringify({
|
|
119
|
-
article
|
|
120
|
+
article,
|
|
120
121
|
timeElapsed,
|
|
121
122
|
action: activity,
|
|
122
123
|
parameters: {
|
|
@@ -178,9 +179,9 @@ var deviceId = "";
|
|
|
178
179
|
var browserSessionId = "";
|
|
179
180
|
if ("document" in window) {
|
|
180
181
|
let startSession = () => logActivity("AfSessionInit", {
|
|
181
|
-
"appframe-core": af
|
|
182
|
-
"appframe-data": af
|
|
183
|
-
"app-version": af
|
|
182
|
+
"appframe-core": window.af?.common?.version,
|
|
183
|
+
"appframe-data": window.af?.data?.version,
|
|
184
|
+
"app-version": window.af?.article?.version
|
|
184
185
|
});
|
|
185
186
|
document.addEventListener("DOMContentLoaded", () => {
|
|
186
187
|
deviceId = localStorage.getItem("_afDeviceId");
|
|
@@ -200,7 +201,7 @@ if ("document" in window) {
|
|
|
200
201
|
navigator.sendBeacon(
|
|
201
202
|
"/api/logging/log-activity",
|
|
202
203
|
JSON.stringify({
|
|
203
|
-
article
|
|
204
|
+
article,
|
|
204
205
|
action: "AfSessionEnd",
|
|
205
206
|
parameters: {
|
|
206
207
|
_session: getSessionData()
|
|
@@ -509,24 +510,24 @@ function localize(stringParts, ...args) {
|
|
|
509
510
|
}
|
|
510
511
|
|
|
511
512
|
// src/settings.ts
|
|
512
|
-
function getKey(
|
|
513
|
-
const articleKey =
|
|
514
|
-
return `${articleKey}.${af
|
|
513
|
+
function getKey(article2) {
|
|
514
|
+
const articleKey = article2 ?? window.af?.article?.id ?? window.window?.location.pathname.substring(1).split("/")[0];
|
|
515
|
+
return `${articleKey}.${window.af?.userSession.login ?? "anonymous"}`;
|
|
515
516
|
}
|
|
516
|
-
function getSettings(setting,
|
|
517
|
-
if (!af?.userSession)
|
|
517
|
+
function getSettings(setting, article2) {
|
|
518
|
+
if (!window.af?.userSession)
|
|
518
519
|
return null;
|
|
519
|
-
const key = getKey(
|
|
520
|
+
const key = getKey(article2);
|
|
520
521
|
const settings = JSON.parse(localStorage.getItem(key) || "{}");
|
|
521
522
|
if (setting) {
|
|
522
523
|
return settings[setting] || null;
|
|
523
524
|
}
|
|
524
525
|
return settings;
|
|
525
526
|
}
|
|
526
|
-
function saveSettings(setting, value,
|
|
527
|
-
if (!af?.userSession)
|
|
527
|
+
function saveSettings(setting, value, article2) {
|
|
528
|
+
if (!window.af?.userSession)
|
|
528
529
|
return;
|
|
529
|
-
const key = getKey(
|
|
530
|
+
const key = getKey(article2);
|
|
530
531
|
let userSettings = JSON.parse(localStorage.getItem(key) || "{}");
|
|
531
532
|
if (typeof value !== "undefined") {
|
|
532
533
|
userSettings[setting] = value;
|
|
@@ -649,7 +650,7 @@ async function alert(prompt, options = {}) {
|
|
|
649
650
|
}
|
|
650
651
|
|
|
651
652
|
// src/index.ts
|
|
652
|
-
var version = "2.11.
|
|
653
|
+
var version = "2.11.4";
|
|
653
654
|
export {
|
|
654
655
|
ConfirmButtons,
|
|
655
656
|
SessionHandler,
|
|
@@ -137,13 +137,15 @@ var UserSession = class extends SessionHandler {
|
|
|
137
137
|
};
|
|
138
138
|
|
|
139
139
|
// src/log.ts
|
|
140
|
+
var _a, _b, _c, _d;
|
|
141
|
+
var article = (_d = (_b = (_a = window.af) == null ? void 0 : _a.article) == null ? void 0 : _b.id) != null ? _d : (_c = window.window) == null ? void 0 : _c.location.pathname.substring(1).split("/")[0];
|
|
140
142
|
async function logActivity(activity, parameters = {}, timeElapsed = 0) {
|
|
141
|
-
var
|
|
143
|
+
var _a3;
|
|
142
144
|
try {
|
|
143
145
|
let response = await fetch("/api/logging/log-activity", {
|
|
144
146
|
method: "POST",
|
|
145
147
|
body: JSON.stringify({
|
|
146
|
-
article
|
|
148
|
+
article,
|
|
147
149
|
timeElapsed,
|
|
148
150
|
action: activity,
|
|
149
151
|
parameters: __spreadProps(__spreadValues({}, parameters), {
|
|
@@ -153,7 +155,7 @@ async function logActivity(activity, parameters = {}, timeElapsed = 0) {
|
|
|
153
155
|
headers: { "Content-Type": "application/json", Accept: "application/json" }
|
|
154
156
|
});
|
|
155
157
|
if (!response.ok) {
|
|
156
|
-
if ((
|
|
158
|
+
if ((_a3 = response.headers.get("Content-Type")) == null ? void 0 : _a3.includes("application/json")) {
|
|
157
159
|
let data = await response.json();
|
|
158
160
|
console.error(data.error);
|
|
159
161
|
} else {
|
|
@@ -173,13 +175,13 @@ async function time(callback) {
|
|
|
173
175
|
return [returnValue, performance.now() - start];
|
|
174
176
|
}
|
|
175
177
|
async function logError(error) {
|
|
176
|
-
var
|
|
178
|
+
var _a3;
|
|
177
179
|
try {
|
|
178
180
|
if (!error)
|
|
179
181
|
return;
|
|
180
182
|
let data = typeof error === "string" ? { error } : typeof error === "object" ? "message" in error ? {
|
|
181
183
|
error: error.message,
|
|
182
|
-
stack: (
|
|
184
|
+
stack: (_a3 = error.stack) != null ? _a3 : null
|
|
183
185
|
} : { error: error.toString() } : { error: "Unspecified error" };
|
|
184
186
|
console.error(error);
|
|
185
187
|
let result = await fetch("/data/Logger/LogError", {
|
|
@@ -197,8 +199,8 @@ async function logError(error) {
|
|
|
197
199
|
}
|
|
198
200
|
}
|
|
199
201
|
function getSessionId() {
|
|
200
|
-
var
|
|
201
|
-
return (
|
|
202
|
+
var _a3;
|
|
203
|
+
return (_a3 = crypto.randomUUID) == null ? void 0 : _a3.call(crypto);
|
|
202
204
|
}
|
|
203
205
|
var sessionStart = Date.now();
|
|
204
206
|
var sessionId = getSessionId();
|
|
@@ -206,11 +208,11 @@ var deviceId = "";
|
|
|
206
208
|
var browserSessionId = "";
|
|
207
209
|
if ("document" in window) {
|
|
208
210
|
let startSession = () => {
|
|
209
|
-
var
|
|
211
|
+
var _a3, _b2, _c2, _d2, _e, _f;
|
|
210
212
|
return logActivity("AfSessionInit", {
|
|
211
|
-
"appframe-core": af.common.version,
|
|
212
|
-
"appframe-data": (
|
|
213
|
-
"app-version": af.article.version
|
|
213
|
+
"appframe-core": (_b2 = (_a3 = window.af) == null ? void 0 : _a3.common) == null ? void 0 : _b2.version,
|
|
214
|
+
"appframe-data": (_d2 = (_c2 = window.af) == null ? void 0 : _c2.data) == null ? void 0 : _d2.version,
|
|
215
|
+
"app-version": (_f = (_e = window.af) == null ? void 0 : _e.article) == null ? void 0 : _f.version
|
|
214
216
|
});
|
|
215
217
|
};
|
|
216
218
|
document.addEventListener("DOMContentLoaded", () => {
|
|
@@ -231,7 +233,7 @@ if ("document" in window) {
|
|
|
231
233
|
navigator.sendBeacon(
|
|
232
234
|
"/api/logging/log-activity",
|
|
233
235
|
JSON.stringify({
|
|
234
|
-
article
|
|
236
|
+
article,
|
|
235
237
|
action: "AfSessionEnd",
|
|
236
238
|
parameters: {
|
|
237
239
|
_session: getSessionData()
|
|
@@ -254,9 +256,9 @@ function getSessionData() {
|
|
|
254
256
|
}
|
|
255
257
|
|
|
256
258
|
// src/errorHandler.ts
|
|
257
|
-
var
|
|
259
|
+
var _a2;
|
|
258
260
|
if (true) {
|
|
259
|
-
(
|
|
261
|
+
(_a2 = window.window) == null ? void 0 : _a2.addEventListener("error", (event) => {
|
|
260
262
|
if (typeof event === "object" && "error" in event) {
|
|
261
263
|
logError(event.error);
|
|
262
264
|
} else if (typeof event === "object" && "message" in event) {
|
|
@@ -267,8 +269,8 @@ if (true) {
|
|
|
267
269
|
|
|
268
270
|
// src/localStorage.ts
|
|
269
271
|
function getLocalKey(key) {
|
|
270
|
-
var
|
|
271
|
-
return [((
|
|
272
|
+
var _a3;
|
|
273
|
+
return [((_a3 = af == null ? void 0 : af.article) == null ? void 0 : _a3.id) || "", "common", key].join(".");
|
|
272
274
|
}
|
|
273
275
|
var LocalStorage = class {
|
|
274
276
|
constructor() {
|
|
@@ -354,13 +356,13 @@ function invariant(condition, message) {
|
|
|
354
356
|
|
|
355
357
|
// src/downloadRequest.ts
|
|
356
358
|
async function downloadRequest(request, { fileName, signal, onProgress }) {
|
|
357
|
-
var
|
|
359
|
+
var _a3;
|
|
358
360
|
let bytesReceived = 0;
|
|
359
361
|
onProgress == null ? void 0 : onProgress({ status: "requested" });
|
|
360
362
|
try {
|
|
361
363
|
let response = await fetch(request);
|
|
362
364
|
if (!response.ok || !response.body) {
|
|
363
|
-
if ((
|
|
365
|
+
if ((_a3 = response.headers.get("content-type")) == null ? void 0 : _a3.includes("application/json")) {
|
|
364
366
|
let data = await response.json();
|
|
365
367
|
invariant(!data.error, data.error);
|
|
366
368
|
}
|
|
@@ -404,10 +406,10 @@ async function downloadRequest(request, { fileName, signal, onProgress }) {
|
|
|
404
406
|
// src/parseFunc.ts
|
|
405
407
|
var funcRegex = /^function(?:\s+([a-zA-Z$_][a-zA-Z0-9$_]*))?\s*\(((?:(?:\s*[a-zA-Z$_][a-zA-Z0-9$_]*)(?:\s*,\s*[a-zA-Z$_][a-zA-Z0-9$_]*)*)?)\s*\)\s*\{((?:.|\n|\r)*)\}$/;
|
|
406
408
|
function parseFunc(func) {
|
|
407
|
-
var
|
|
409
|
+
var _a3;
|
|
408
410
|
var match = func.toString().match(funcRegex);
|
|
409
411
|
invariant(match, "Unable to parse function!");
|
|
410
|
-
return { name: (
|
|
412
|
+
return { name: (_a3 = func.name) != null ? _a3 : match[1], args: match[2].split(",").map((a) => a.trim()), body: match[3] };
|
|
411
413
|
}
|
|
412
414
|
|
|
413
415
|
// src/Namespace.ts
|
|
@@ -508,14 +510,14 @@ async function fetchLocalizedString(text) {
|
|
|
508
510
|
return text;
|
|
509
511
|
}
|
|
510
512
|
function getLocalizedString(string, wait) {
|
|
511
|
-
var
|
|
513
|
+
var _a3, _b2;
|
|
512
514
|
if (typeof string === "string" && string.trim().length === 0) {
|
|
513
515
|
return string;
|
|
514
516
|
}
|
|
515
517
|
if (string === void 0 || string === "" || string === null) {
|
|
516
518
|
return;
|
|
517
519
|
}
|
|
518
|
-
if (((
|
|
520
|
+
if (((_b2 = (_a3 = window.af) == null ? void 0 : _a3.article) == null ? void 0 : _b2.i18n) !== void 0) {
|
|
519
521
|
if (!Object.hasOwn(af.article.i18n, string)) {
|
|
520
522
|
af.article.i18n[string] = string;
|
|
521
523
|
let promise = fetchLocalizedString(string).then((text) => {
|
|
@@ -547,24 +549,27 @@ function localize(stringParts, ...args) {
|
|
|
547
549
|
}
|
|
548
550
|
|
|
549
551
|
// src/settings.ts
|
|
550
|
-
function getKey(
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
552
|
+
function getKey(article2) {
|
|
553
|
+
var _a3, _b2, _c2, _d2, _e, _f;
|
|
554
|
+
const articleKey = (_d2 = article2 != null ? article2 : (_b2 = (_a3 = window.af) == null ? void 0 : _a3.article) == null ? void 0 : _b2.id) != null ? _d2 : (_c2 = window.window) == null ? void 0 : _c2.location.pathname.substring(1).split("/")[0];
|
|
555
|
+
return "".concat(articleKey, ".").concat((_f = (_e = window.af) == null ? void 0 : _e.userSession.login) != null ? _f : "anonymous");
|
|
556
|
+
}
|
|
557
|
+
function getSettings(setting, article2) {
|
|
558
|
+
var _a3;
|
|
559
|
+
if (!((_a3 = window.af) == null ? void 0 : _a3.userSession))
|
|
556
560
|
return null;
|
|
557
|
-
const key = getKey(
|
|
561
|
+
const key = getKey(article2);
|
|
558
562
|
const settings = JSON.parse(localStorage.getItem(key) || "{}");
|
|
559
563
|
if (setting) {
|
|
560
564
|
return settings[setting] || null;
|
|
561
565
|
}
|
|
562
566
|
return settings;
|
|
563
567
|
}
|
|
564
|
-
function saveSettings(setting, value,
|
|
565
|
-
|
|
568
|
+
function saveSettings(setting, value, article2) {
|
|
569
|
+
var _a3;
|
|
570
|
+
if (!((_a3 = window.af) == null ? void 0 : _a3.userSession))
|
|
566
571
|
return;
|
|
567
|
-
const key = getKey(
|
|
572
|
+
const key = getKey(article2);
|
|
568
573
|
let userSettings = JSON.parse(localStorage.getItem(key) || "{}");
|
|
569
574
|
if (typeof value !== "undefined") {
|
|
570
575
|
userSettings[setting] = value;
|
|
@@ -605,14 +610,14 @@ function waitForDialog(dialog, cancelValue = "No") {
|
|
|
605
610
|
}
|
|
606
611
|
var alertDialogPromiseMap = /* @__PURE__ */ new Map();
|
|
607
612
|
async function openAlertDialog({ buttons, content, className, id, title }) {
|
|
608
|
-
var
|
|
613
|
+
var _a3, _b2;
|
|
609
614
|
if (id && alertDialogPromiseMap.has(id)) {
|
|
610
615
|
return await alertDialogPromiseMap.get(id);
|
|
611
616
|
}
|
|
612
617
|
let $template = document.querySelector("#AlertDialogTemplate");
|
|
613
618
|
if (!$template)
|
|
614
619
|
throw Error("No alert dialog template found");
|
|
615
|
-
let $dialog = (
|
|
620
|
+
let $dialog = (_a3 = $template.content.firstElementChild) == null ? void 0 : _a3.cloneNode(true);
|
|
616
621
|
let $content = $dialog == null ? void 0 : $dialog.querySelector("article");
|
|
617
622
|
let $menu = $dialog == null ? void 0 : $dialog.querySelector("footer menu");
|
|
618
623
|
if (!$dialog || !$content || !$menu)
|
|
@@ -623,7 +628,7 @@ async function openAlertDialog({ buttons, content, className, id, title }) {
|
|
|
623
628
|
if (title) {
|
|
624
629
|
let $header = document.createElement("header");
|
|
625
630
|
$header.append(title);
|
|
626
|
-
(
|
|
631
|
+
(_b2 = $content.parentNode) == null ? void 0 : _b2.insertBefore($header, $content);
|
|
627
632
|
}
|
|
628
633
|
$content.appendChild(typeof content === "string" ? document.createTextNode(content) : content);
|
|
629
634
|
for (let { label, value, primary } of buttons) {
|
|
@@ -678,7 +683,7 @@ async function alert(prompt, options = {}) {
|
|
|
678
683
|
}
|
|
679
684
|
|
|
680
685
|
// src/index.ts
|
|
681
|
-
var version = "2.11.
|
|
686
|
+
var version = "2.11.4";
|
|
682
687
|
export {
|
|
683
688
|
ConfirmButtons,
|
|
684
689
|
SessionHandler,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var Q=Object.defineProperty,P=Object.defineProperties;var ee=Object.getOwnPropertyDescriptors;var $=Object.getOwnPropertySymbols;var te=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable;var A=(e,t,o)=>t in e?Q(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,m=(e,t)=>{for(var o in t||(t={}))te.call(t,o)&&A(e,o,t[o]);if($)for(var o of $(t))ne.call(t,o)&&A(e,o,t[o]);return e},C=(e,t)=>P(e,ee(t));var l=(e,t,o)=>(A(e,typeof t!="symbol"?t+"":t,o),o);function I(e){return{all:e=e||new Map,on:function(t,o){var n=e.get(t);n?n.push(o):e.set(t,[o])},off:function(t,o){var n=e.get(t);n&&(o?n.splice(n.indexOf(o)>>>0,1):e.set(t,[]))},emit:function(t,o){var n=e.get(t);n&&n.slice().map(function(r){r(o)}),(n=e.get("*"))&&n.slice().map(function(r){r(t,o)})}}}var p=class{constructor(){l(this,"eventHandler",I())}authenticated(){this.eventHandler.emit("onAuthenticated")}async expired(t,o){try{let n=new Promise(a=>{let i=()=>{this.eventHandler.off("onAuthenticated",i),t==null||t(),a()};this.eventHandler.on("onAuthenticated",i)}),r=document.querySelector("dialog.session-expired-dialog");if(r)await n;else{r=document.createElement("dialog"),r.className="session-expired-dialog",r.style.display="flex",r.style.padding="0",r.style.left="50%",r.style.transform="translateX(-50%)";let a="/login?ReturnUrl=%2fapi/sessionexpired/remove";o!=="RequireTwoFactor"?await fetch("/logout",{method:"POST"}):a="/login?RequireTwoFactor=1&ReturnUrl=%2fapi/sessionexpired/remove",r.innerHTML='<iframe sandbox="allow-same-origin allow-scripts allow-modals allow-top-navigation-by-user-activation allow-forms" src="'.concat(a,'" style="border:0;width:min(500px,100vw);height:min(700px, 100vh);"></iframe>'),document.body.append(r),r.showModal(),await n,r.remove()}}catch(n){window.location.href="/login?ReturnUrl=".concat(encodeURIComponent(window.location.pathname)).concat(encodeURIComponent(window.location.search))}}attachEvent(t,o){return this.eventHandler.on(t,o)}detachEvent(t,o){return this.eventHandler.off(t,o)}};var L=class extends p{constructor(o){super();l(this,"amDesignator","a.m.");l(this,"dayNames",["sunday","monday","tuesday","wednesday","thursday","friday","saturday"]);l(this,"dayNamesShort",["sun","mon","tue","wed","thu","fri","sat"]);l(this,"decimalSeparator",".");l(this,"domain","OB");l(this,"email");l(this,"formats");l(this,"groupSeparator",null);l(this,"integratedSecurity",!1);l(this,"isDeveloper",!1);l(this,"login","");l(this,"loginType");l(this,"monthNames",["january","february","march","april","may","june","july","august","september","october","november","december",""]);l(this,"monthNamesShort",["jan","feb","mar","apr","may","jun","jul","augt","sep","oct","nov","dec",""]);l(this,"name");l(this,"pmDesignator","p.m.");l(this,"shortDateFormat","dd.MM.yyyy");l(this,"culture","en-GB");l(this,"uiculture","en-GB");this.formats={},Object.assign(this,o)}};async function E(e,t={},o=0){var n;try{let r=await fetch("/api/logging/log-activity",{method:"POST",body:JSON.stringify({article:af.article.id,timeElapsed:o,action:e,parameters:C(m({},t),{_session:T()})}),headers:{"Content-Type":"application/json",Accept:"application/json"}});if(!r.ok)if((n=r.headers.get("Content-Type"))!=null&&n.includes("application/json")){let a=await r.json();console.error(a.error)}else console.error("".concat(r.status," ").concat(r.statusText))}catch(r){}}function oe(e,t={}){let o=performance.now();return(n={})=>E(e,m(m({},t),n),performance.now()-o)}async function re(e){let t=performance.now();return[await e(),performance.now()-t]}async function D(e){var t;try{if(!e)return;let o=typeof e=="string"?{error:e}:typeof e=="object"?"message"in e?{error:e.message,stack:(t=e.stack)!=null?t:null}:{error:e.toString()}:{error:"Unspecified error"};console.error(e);let n=await fetch("/data/Logger/LogError",{method:"POST",body:JSON.stringify(o),headers:{"Content-Type":"application/json; charset=utf-8"}});if(n.ok)return await n.json();console.error(Error("Failed to log error"))}catch(o){}}function _(){var e;return(e=crypto.randomUUID)==null?void 0:e.call(crypto)}var U=Date.now(),H=_(),b="",x="";if("document"in window){let e=()=>{var t;return E("AfSessionInit",{"appframe-core":af.common.version,"appframe-data":(t=af.data)==null?void 0:t.version,"app-version":af.article.version})};document.addEventListener("DOMContentLoaded",()=>{b=localStorage.getItem("_afDeviceId"),x=sessionStorage.getItem("_afSessionId"),b||(b=_(),localStorage.setItem("_afDeviceId",b)),x||(x=H,sessionStorage.setItem("_afSessionId",x)),e()}),document.addEventListener("visibilitychange",function(){document.visibilityState==="hidden"?navigator.sendBeacon("/api/logging/log-activity",JSON.stringify({article:af.article.id,action:"AfSessionEnd",parameters:{_session:T()}})):e()})}function T(){return{browserSessionId:x,sessionStart:U,sessionLength:Date.now()-U,sessionId:H,deviceId:b}}var M;(M=window.window)==null||M.addEventListener("error",e=>{typeof e=="object"&&"error"in e?D(e.error):typeof e=="object"&&"message"in e&&D(e)});function q(e){var t;return[((t=af==null?void 0:af.article)==null?void 0:t.id)||"","common",e].join(".")}var z=class{constructor(){l(this,"isPersisted",()=>!0)}getLocalStorageKey(t,o){return o?["common",t].join("."):q(t)}get(t,o,n){let r=this.getLocalStorageKey(t,n),a=localStorage.getItem(r);return a!==null?JSON.parse(a):o}set(t,o,n){localStorage.setItem(this.getLocalStorageKey(t,n),JSON.stringify(o))}remove(t,o){let n=this.getLocalStorageKey(t,o);return localStorage.getItem(n)!==null?(localStorage.removeItem(n),!0):!1}clear(){let t=q("");for(let o in localStorage)o.slice(0,t.length)===t&&localStorage.removeItem(o)}},ie=new z;function ae(e){return e?k(e).substring(0,10):null}function g(e,t=2){return String(e).padStart(t,"0")}function k(e){return e?"".concat(e.getFullYear(),"-").concat(g(e.getMonth()+1),"-").concat(g(e.getDate()),"T").concat(g(e.getHours()),":").concat(g(e.getMinutes()),":").concat(g(e.getSeconds()),".").concat(g(e.getMilliseconds(),3)):null}function le(e){return e?e.toISOString().substring(0,16):""}function O(e,t){return new Promise(function(o,n){try{let r=URL.createObjectURL(e),a=document.body,i=document.createElement("a");i.setAttribute("download",t),i.href=r,a.append(i),i.click(),a.removeChild(i),setTimeout(function(){URL.revokeObjectURL(r),o()},250)}catch(r){n(r)}})}function c(e,t){if(e)return;let o=typeof t=="function"?t():t;throw new Error(o!=null?o:"Invariant failed")}async function se(e,{fileName:t,signal:o,onProgress:n}){var a;let r=0;n==null||n({status:"requested"});try{let i=await fetch(e);if(!i.ok||!i.body){if((a=i.headers.get("content-type"))!=null&&a.includes("application/json")){let d=await i.json();c(!d.error,d.error)}throw new Error("".concat(i.status," ").concat(i.statusText))}try{let d=i.body.getReader(),v=new ReadableStream({start:function(y){function S(){return d.read().then(function(s){if(s.done){y.close();return}return r+=s.value.length,n==null||n({bytesReceived:r,status:"downloading"}),y.enqueue(s.value),S()})}return S()}});i=new Response(v)}catch(d){}let f=await i.blob();n==null||n({bytesReceived:r,status:"downloaded"}),await O(f,t),n==null||n({bytesReceived:r,status:"completed"})}catch(i){o!=null&&o.aborted?n==null||n({status:"cancelled"}):n==null||n({error:i.message,status:"error"})}}var ce=/^function(?:\s+([a-zA-Z$_][a-zA-Z0-9$_]*))?\s*\(((?:(?:\s*[a-zA-Z$_][a-zA-Z0-9$_]*)(?:\s*,\s*[a-zA-Z$_][a-zA-Z0-9$_]*)*)?)\s*\)\s*\{((?:.|\n|\r)*)\}$/;function j(e){var o;var t=e.toString().match(ce);return c(t,"Unable to parse function!"),{name:(o=e.name)!=null?o:t[1],args:t[2].split(",").map(n=>n.trim()),body:t[3]}}function B(){}B.prototype=Object.create(null);var F=B;function N(e,t){if(typeof e=="object"){if(typeof t=="string"){let o=t.split(".");return N(e,o)}else if(Array.isArray(t)){let o=e;for(let n=0;n<t.length;n++)o=o[t[n]]=o[t[n]]||new F;return o}}}function J(e,t,o={}){if(Array.isArray(t))for(let n of t){let{name:r}=j(n);c(r,"Unable to detect name of function! Name it, or only supply one function and include name in first parameter."),J(e,n)}else{let n,r;if(typeof t=="function"&&(n=j(t).name),typeof e=="string"){let a=e.split(".");n||(n=a[a.length-1],a=a.slice(0,a.length-1)),r=N(window,a)}else n&&(typeof e=="object"||typeof e=="function")?r=e:c(!1,"Invalid typeof parameter 'name', or unable to parse pValue!");Object.hasOwn(r,n)&&(o==null?void 0:o.overwrite)!==!0?console.warn([e,n].join(".")+" is already defined!"):r[n]=t}}var ue={xs:64,sm:128,md:256,lg:512,xl:void 0};function K(e,t,o,n="xs"){if(e&&typeof e=="object")return K(e.primKey,e.login,e.hash,e.size);if(!e||!o)return"";let r=ue[n];return"/api/data/blob/EmployeesLookup/".concat(e,"/Image/").concat(encodeURIComponent(t!=null?t:"")).concat(t?".":"").concat(encodeURIComponent(o),".jpg").concat(r?"?width=".concat(r):"")}async function de(e){try{let t=await fetch("/api/user/localize/new/".concat(af.article.id),{body:JSON.stringify({text:e}),headers:{Accept:"application/json; */*","Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"},method:"POST"});if(t.ok)return await t.json()}catch(t){}return e}function u(e,t){var o,n;if(typeof e=="string"&&e.trim().length===0)return e;if(!(e===void 0||e===""||e===null))if(((n=(o=window.af)==null?void 0:o.article)==null?void 0:n.i18n)!==void 0){if(!Object.hasOwn(af.article.i18n,e)){af.article.i18n[e]=e;let r=de(e).then(a=>(af.article.i18n[e]=a,a));if(t)return r}return af.article.i18n[e]}else return e}function fe(e,...t){c(Array.isArray(e)&&e.length===t.length+1,"Method 'localize' must be used as a tag function");let o=e.map((r,a)=>a===e.length-1?r:"".concat(r,"$").concat(a)).join(""),n=u(o);return t.forEach((r,a)=>{n=n.replace("$"+a,r)}),n}function V(e){let t=e||af.article.id;return"".concat(t,".").concat(af.userSession.login)}function me(e,t){if(!(af!=null&&af.userSession))return null;let o=V(t),n=JSON.parse(localStorage.getItem(o)||"{}");return e?n[e]||null:n}function pe(e,t,o){if(!(af!=null&&af.userSession))return;let n=V(o),r=JSON.parse(localStorage.getItem(n)||"{}");typeof t<"u"?r[e]=t:r=e,localStorage.setItem(n,JSON.stringify(r))}var ge='\n <dialog class="alert-dialog">\n <form method="dialog">\n <article></article>\n <footer>\n <menu></menu>\n </footer>\n </form>\n </dialog>\n';if(window.document&&!document.querySelector("#AlertDialogTemplate")){let e=document.createElement("template");e.id="AlertDialogTemplate",e.innerHTML=ge,document.body.append(e)}function Z(e,t="No"){return new Promise(o=>{let n=new AbortController;e.addEventListener("close",()=>{o(e.returnValue),n.abort()},{signal:n.signal}),e.addEventListener("cancel",()=>{o(t),n.abort()},{signal:n.signal})})}var w=new Map;async function R({buttons:e,content:t,className:o,id:n,title:r}){var y,S;if(n&&w.has(n))return await w.get(n);let a=document.querySelector("#AlertDialogTemplate");if(!a)throw Error("No alert dialog template found");let i=(y=a.content.firstElementChild)==null?void 0:y.cloneNode(!0),f=i==null?void 0:i.querySelector("article"),d=i==null?void 0:i.querySelector("footer menu");if(!i||!f||!d)throw Error("Invalid alert dialog template");if(o&&o.split(/\s+/).forEach(s=>i==null?void 0:i.classList.add(s)),r){let s=document.createElement("header");s.append(r),(S=f.parentNode)==null||S.insertBefore(s,f)}f.appendChild(typeof t=="string"?document.createTextNode(t):t);for(let{label:s,value:X,primary:G}of e){let W=document.createElement("li"),h=document.createElement("button");h.value=X,G&&h.classList.add("primary"),h.textContent=s,W.appendChild(h),d.appendChild(h)}document.body.appendChild(i),i.showModal();let v=Z(i).then(s=>(n&&w.has(n)&&w.delete(n),i&&document.body.removeChild(i),s));return n&&w.set(n,v),await v}var Y=(o=>(o[o.YesNo=0]="YesNo",o[o.OkCancel=1]="OkCancel",o))(Y||{});async function ye(e,t={}){let{buttons:o=0,title:n}=t,r=o===1?[{label:u("OK"),value:"yes",primary:!0},{label:u("Cancel"),value:"no"}]:[{label:u("Yes"),value:"yes",primary:!0},{label:u("No"),value:"no"}];return await R({content:e,buttons:r,className:"alert-dialog-confirm",title:n})==="yes"}async function Se(e,t={}){await R(m({content:e,className:"alert-dialog-alert",buttons:[{label:u("OK"),value:"ok",primary:!0}]},t))}var at="2.11.2";export{Y as ConfirmButtons,p as SessionHandler,L as UserSession,Se as alert,ye as confirm,O as downloadBlob,se as downloadRequest,J as expose,u as getLocalizedString,T as getSessionData,me as getSettings,K as getUserImage,c as invariant,ie as localStorage,fe as localize,E as logActivity,D as logError,I as mitt,R as openAlertDialog,pe as saveSettings,oe as startActivity,re as time,le as toLocalDateTime,ae as toLocalISODate,k as toLocalISODateTime,at as version,Z as waitForDialog};
|
|
1
|
+
var oe=Object.defineProperty,re=Object.defineProperties;var ie=Object.getOwnPropertyDescriptors;var $=Object.getOwnPropertySymbols;var ae=Object.prototype.hasOwnProperty,le=Object.prototype.propertyIsEnumerable;var A=(e,t,o)=>t in e?oe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,g=(e,t)=>{for(var o in t||(t={}))ae.call(t,o)&&A(e,o,t[o]);if($)for(var o of $(t))le.call(t,o)&&A(e,o,t[o]);return e},C=(e,t)=>re(e,ie(t));var l=(e,t,o)=>(A(e,typeof t!="symbol"?t+"":t,o),o);function I(e){return{all:e=e||new Map,on:function(t,o){var n=e.get(t);n?n.push(o):e.set(t,[o])},off:function(t,o){var n=e.get(t);n&&(o?n.splice(n.indexOf(o)>>>0,1):e.set(t,[]))},emit:function(t,o){var n=e.get(t);n&&n.slice().map(function(r){r(o)}),(n=e.get("*"))&&n.slice().map(function(r){r(t,o)})}}}var m=class{constructor(){l(this,"eventHandler",I())}authenticated(){this.eventHandler.emit("onAuthenticated")}async expired(t,o){try{let n=new Promise(i=>{let a=()=>{this.eventHandler.off("onAuthenticated",a),t==null||t(),i()};this.eventHandler.on("onAuthenticated",a)}),r=document.querySelector("dialog.session-expired-dialog");if(r)await n;else{r=document.createElement("dialog"),r.className="session-expired-dialog",r.style.display="flex",r.style.padding="0",r.style.left="50%",r.style.transform="translateX(-50%)";let i="/login?ReturnUrl=%2fapi/sessionexpired/remove";o!=="RequireTwoFactor"?await fetch("/logout",{method:"POST"}):i="/login?RequireTwoFactor=1&ReturnUrl=%2fapi/sessionexpired/remove",r.innerHTML='<iframe sandbox="allow-same-origin allow-scripts allow-modals allow-top-navigation-by-user-activation allow-forms" src="'.concat(i,'" style="border:0;width:min(500px,100vw);height:min(700px, 100vh);"></iframe>'),document.body.append(r),r.showModal(),await n,r.remove()}}catch(n){window.location.href="/login?ReturnUrl=".concat(encodeURIComponent(window.location.pathname)).concat(encodeURIComponent(window.location.search))}}attachEvent(t,o){return this.eventHandler.on(t,o)}detachEvent(t,o){return this.eventHandler.off(t,o)}};var L=class extends m{constructor(o){super();l(this,"amDesignator","a.m.");l(this,"dayNames",["sunday","monday","tuesday","wednesday","thursday","friday","saturday"]);l(this,"dayNamesShort",["sun","mon","tue","wed","thu","fri","sat"]);l(this,"decimalSeparator",".");l(this,"domain","OB");l(this,"email");l(this,"formats");l(this,"groupSeparator",null);l(this,"integratedSecurity",!1);l(this,"isDeveloper",!1);l(this,"login","");l(this,"loginType");l(this,"monthNames",["january","february","march","april","may","june","july","august","september","october","november","december",""]);l(this,"monthNamesShort",["jan","feb","mar","apr","may","jun","jul","augt","sep","oct","nov","dec",""]);l(this,"name");l(this,"pmDesignator","p.m.");l(this,"shortDateFormat","dd.MM.yyyy");l(this,"culture","en-GB");l(this,"uiculture","en-GB");this.formats={},Object.assign(this,o)}};var _,H,M,q,k=(q=(H=(_=window.af)==null?void 0:_.article)==null?void 0:H.id)!=null?q:(M=window.window)==null?void 0:M.location.pathname.substring(1).split("/")[0];async function T(e,t={},o=0){var n;try{let r=await fetch("/api/logging/log-activity",{method:"POST",body:JSON.stringify({article:k,timeElapsed:o,action:e,parameters:C(g({},t),{_session:E()})}),headers:{"Content-Type":"application/json",Accept:"application/json"}});if(!r.ok)if((n=r.headers.get("Content-Type"))!=null&&n.includes("application/json")){let i=await r.json();console.error(i.error)}else console.error("".concat(r.status," ").concat(r.statusText))}catch(r){}}function se(e,t={}){let o=performance.now();return(n={})=>T(e,g(g({},t),n),performance.now()-o)}async function ce(e){let t=performance.now();return[await e(),performance.now()-t]}async function D(e){var t;try{if(!e)return;let o=typeof e=="string"?{error:e}:typeof e=="object"?"message"in e?{error:e.message,stack:(t=e.stack)!=null?t:null}:{error:e.toString()}:{error:"Unspecified error"};console.error(e);let n=await fetch("/data/Logger/LogError",{method:"POST",body:JSON.stringify(o),headers:{"Content-Type":"application/json; charset=utf-8"}});if(n.ok)return await n.json();console.error(Error("Failed to log error"))}catch(o){}}function B(){var e;return(e=crypto.randomUUID)==null?void 0:e.call(crypto)}var U=Date.now(),F=B(),S="",x="";if("document"in window){let e=()=>{var t,o,n,r,i,a;return T("AfSessionInit",{"appframe-core":(o=(t=window.af)==null?void 0:t.common)==null?void 0:o.version,"appframe-data":(r=(n=window.af)==null?void 0:n.data)==null?void 0:r.version,"app-version":(a=(i=window.af)==null?void 0:i.article)==null?void 0:a.version})};document.addEventListener("DOMContentLoaded",()=>{S=localStorage.getItem("_afDeviceId"),x=sessionStorage.getItem("_afSessionId"),S||(S=B(),localStorage.setItem("_afDeviceId",S)),x||(x=F,sessionStorage.setItem("_afSessionId",x)),e()}),document.addEventListener("visibilitychange",function(){document.visibilityState==="hidden"?navigator.sendBeacon("/api/logging/log-activity",JSON.stringify({article:k,action:"AfSessionEnd",parameters:{_session:E()}})):e()})}function E(){return{browserSessionId:x,sessionStart:U,sessionLength:Date.now()-U,sessionId:F,deviceId:S}}var J;(J=window.window)==null||J.addEventListener("error",e=>{typeof e=="object"&&"error"in e?D(e.error):typeof e=="object"&&"message"in e&&D(e)});function K(e){var t;return[((t=af==null?void 0:af.article)==null?void 0:t.id)||"","common",e].join(".")}var z=class{constructor(){l(this,"isPersisted",()=>!0)}getLocalStorageKey(t,o){return o?["common",t].join("."):K(t)}get(t,o,n){let r=this.getLocalStorageKey(t,n),i=localStorage.getItem(r);return i!==null?JSON.parse(i):o}set(t,o,n){localStorage.setItem(this.getLocalStorageKey(t,n),JSON.stringify(o))}remove(t,o){let n=this.getLocalStorageKey(t,o);return localStorage.getItem(n)!==null?(localStorage.removeItem(n),!0):!1}clear(){let t=K("");for(let o in localStorage)o.slice(0,t.length)===t&&localStorage.removeItem(o)}},ue=new z;function de(e){return e?V(e).substring(0,10):null}function p(e,t=2){return String(e).padStart(t,"0")}function V(e){return e?"".concat(e.getFullYear(),"-").concat(p(e.getMonth()+1),"-").concat(p(e.getDate()),"T").concat(p(e.getHours()),":").concat(p(e.getMinutes()),":").concat(p(e.getSeconds()),".").concat(p(e.getMilliseconds(),3)):null}function fe(e){return e?e.toISOString().substring(0,16):""}function O(e,t){return new Promise(function(o,n){try{let r=URL.createObjectURL(e),i=document.body,a=document.createElement("a");a.setAttribute("download",t),a.href=r,i.append(a),a.click(),i.removeChild(a),setTimeout(function(){URL.revokeObjectURL(r),o()},250)}catch(r){n(r)}})}function c(e,t){if(e)return;let o=typeof t=="function"?t():t;throw new Error(o!=null?o:"Invariant failed")}async function ge(e,{fileName:t,signal:o,onProgress:n}){var i;let r=0;n==null||n({status:"requested"});try{let a=await fetch(e);if(!a.ok||!a.body){if((i=a.headers.get("content-type"))!=null&&i.includes("application/json")){let f=await a.json();c(!f.error,f.error)}throw new Error("".concat(a.status," ").concat(a.statusText))}try{let f=a.body.getReader(),v=new ReadableStream({start:function(y){function h(){return f.read().then(function(s){if(s.done){y.close();return}return r+=s.value.length,n==null||n({bytesReceived:r,status:"downloading"}),y.enqueue(s.value),h()})}return h()}});a=new Response(v)}catch(f){}let u=await a.blob();n==null||n({bytesReceived:r,status:"downloaded"}),await O(u,t),n==null||n({bytesReceived:r,status:"completed"})}catch(a){o!=null&&o.aborted?n==null||n({status:"cancelled"}):n==null||n({error:a.message,status:"error"})}}var me=/^function(?:\s+([a-zA-Z$_][a-zA-Z0-9$_]*))?\s*\(((?:(?:\s*[a-zA-Z$_][a-zA-Z0-9$_]*)(?:\s*,\s*[a-zA-Z$_][a-zA-Z0-9$_]*)*)?)\s*\)\s*\{((?:.|\n|\r)*)\}$/;function j(e){var o;var t=e.toString().match(me);return c(t,"Unable to parse function!"),{name:(o=e.name)!=null?o:t[1],args:t[2].split(",").map(n=>n.trim()),body:t[3]}}function Z(){}Z.prototype=Object.create(null);var Y=Z;function N(e,t){if(typeof e=="object"){if(typeof t=="string"){let o=t.split(".");return N(e,o)}else if(Array.isArray(t)){let o=e;for(let n=0;n<t.length;n++)o=o[t[n]]=o[t[n]]||new Y;return o}}}function X(e,t,o={}){if(Array.isArray(t))for(let n of t){let{name:r}=j(n);c(r,"Unable to detect name of function! Name it, or only supply one function and include name in first parameter."),X(e,n)}else{let n,r;if(typeof t=="function"&&(n=j(t).name),typeof e=="string"){let i=e.split(".");n||(n=i[i.length-1],i=i.slice(0,i.length-1)),r=N(window,i)}else n&&(typeof e=="object"||typeof e=="function")?r=e:c(!1,"Invalid typeof parameter 'name', or unable to parse pValue!");Object.hasOwn(r,n)&&(o==null?void 0:o.overwrite)!==!0?console.warn([e,n].join(".")+" is already defined!"):r[n]=t}}var pe={xs:64,sm:128,md:256,lg:512,xl:void 0};function G(e,t,o,n="xs"){if(e&&typeof e=="object")return G(e.primKey,e.login,e.hash,e.size);if(!e||!o)return"";let r=pe[n];return"/api/data/blob/EmployeesLookup/".concat(e,"/Image/").concat(encodeURIComponent(t!=null?t:"")).concat(t?".":"").concat(encodeURIComponent(o),".jpg").concat(r?"?width=".concat(r):"")}async function ye(e){try{let t=await fetch("/api/user/localize/new/".concat(af.article.id),{body:JSON.stringify({text:e}),headers:{Accept:"application/json; */*","Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"},method:"POST"});if(t.ok)return await t.json()}catch(t){}return e}function d(e,t){var o,n;if(typeof e=="string"&&e.trim().length===0)return e;if(!(e===void 0||e===""||e===null))if(((n=(o=window.af)==null?void 0:o.article)==null?void 0:n.i18n)!==void 0){if(!Object.hasOwn(af.article.i18n,e)){af.article.i18n[e]=e;let r=ye(e).then(i=>(af.article.i18n[e]=i,i));if(t)return r}return af.article.i18n[e]}else return e}function he(e,...t){c(Array.isArray(e)&&e.length===t.length+1,"Method 'localize' must be used as a tag function");let o=e.map((r,i)=>i===e.length-1?r:"".concat(r,"$").concat(i)).join(""),n=d(o);return t.forEach((r,i)=>{n=n.replace("$"+i,r)}),n}function W(e){var o,n,r,i,a,u;let t=(i=e!=null?e:(n=(o=window.af)==null?void 0:o.article)==null?void 0:n.id)!=null?i:(r=window.window)==null?void 0:r.location.pathname.substring(1).split("/")[0];return"".concat(t,".").concat((u=(a=window.af)==null?void 0:a.userSession.login)!=null?u:"anonymous")}function be(e,t){var r;if(!((r=window.af)!=null&&r.userSession))return null;let o=W(t),n=JSON.parse(localStorage.getItem(o)||"{}");return e?n[e]||null:n}function Se(e,t,o){var i;if(!((i=window.af)!=null&&i.userSession))return;let n=W(o),r=JSON.parse(localStorage.getItem(n)||"{}");typeof t<"u"?r[e]=t:r=e,localStorage.setItem(n,JSON.stringify(r))}var xe='\n <dialog class="alert-dialog">\n <form method="dialog">\n <article></article>\n <footer>\n <menu></menu>\n </footer>\n </form>\n </dialog>\n';if(window.document&&!document.querySelector("#AlertDialogTemplate")){let e=document.createElement("template");e.id="AlertDialogTemplate",e.innerHTML=xe,document.body.append(e)}function Q(e,t="No"){return new Promise(o=>{let n=new AbortController;e.addEventListener("close",()=>{o(e.returnValue),n.abort()},{signal:n.signal}),e.addEventListener("cancel",()=>{o(t),n.abort()},{signal:n.signal})})}var w=new Map;async function R({buttons:e,content:t,className:o,id:n,title:r}){var y,h;if(n&&w.has(n))return await w.get(n);let i=document.querySelector("#AlertDialogTemplate");if(!i)throw Error("No alert dialog template found");let a=(y=i.content.firstElementChild)==null?void 0:y.cloneNode(!0),u=a==null?void 0:a.querySelector("article"),f=a==null?void 0:a.querySelector("footer menu");if(!a||!u||!f)throw Error("Invalid alert dialog template");if(o&&o.split(/\s+/).forEach(s=>a==null?void 0:a.classList.add(s)),r){let s=document.createElement("header");s.append(r),(h=u.parentNode)==null||h.insertBefore(s,u)}u.appendChild(typeof t=="string"?document.createTextNode(t):t);for(let{label:s,value:ee,primary:te}of e){let ne=document.createElement("li"),b=document.createElement("button");b.value=ee,te&&b.classList.add("primary"),b.textContent=s,ne.appendChild(b),f.appendChild(b)}document.body.appendChild(a),a.showModal();let v=Q(a).then(s=>(n&&w.has(n)&&w.delete(n),a&&document.body.removeChild(a),s));return n&&w.set(n,v),await v}var P=(o=>(o[o.YesNo=0]="YesNo",o[o.OkCancel=1]="OkCancel",o))(P||{});async function we(e,t={}){let{buttons:o=0,title:n}=t,r=o===1?[{label:d("OK"),value:"yes",primary:!0},{label:d("Cancel"),value:"no"}]:[{label:d("Yes"),value:"yes",primary:!0},{label:d("No"),value:"no"}];return await R({content:e,buttons:r,className:"alert-dialog-confirm",title:n})==="yes"}async function ve(e,t={}){await R(g({content:e,className:"alert-dialog-alert",buttons:[{label:d("OK"),value:"ok",primary:!0}]},t))}var dt="2.11.4";export{P as ConfirmButtons,m as SessionHandler,L as UserSession,ve as alert,we as confirm,O as downloadBlob,ge as downloadRequest,X as expose,d as getLocalizedString,E as getSessionData,be as getSettings,G as getUserImage,c as invariant,ue as localStorage,he as localize,T as logActivity,D as logError,I as mitt,R as openAlertDialog,Se as saveSettings,se as startActivity,ce as time,fe as toLocalDateTime,de as toLocalISODate,V as toLocalISODateTime,dt as version,Q as waitForDialog};
|
|
2
2
|
//# sourceMappingURL=af.common.legacy.min.js.map
|