@magicfeedback/popup-sdk 1.4.0 → 1.6.0

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.
@@ -8,7 +8,7 @@ import {
8
8
  sdkLog,
9
9
  sdkWarn,
10
10
  style_default
11
- } from "./chunk-XFA2Y6CK.mjs";
11
+ } from "./chunk-AN7JIVWB.mjs";
12
12
 
13
13
  // node_modules/@magicfeedback/native/dist/magicfeedback-sdk.browser.js
14
14
  var require_magicfeedback_sdk_browser = __commonJS({
@@ -17,7 +17,7 @@ var require_magicfeedback_sdk_browser = __commonJS({
17
17
  !(function(e, t) {
18
18
  "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.magicfeedback = t() : e.magicfeedback = t();
19
19
  })(self, (() => {
20
- return e = { 945: function(e2, t2) {
20
+ return e = { 326: function(e2, t2) {
21
21
  var i = "undefined" != typeof self ? self : this, n = (function() {
22
22
  function e3() {
23
23
  this.fetch = false, this.DOMException = i.DOMException;
@@ -32,9 +32,9 @@ var require_magicfeedback_sdk_browser = __commonJS({
32
32
  } catch (e4) {
33
33
  return false;
34
34
  }
35
- })(), s = "FormData" in e3, a = "ArrayBuffer" in e3;
36
- if (a) var o = ["[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]"], l = ArrayBuffer.isView || function(e4) {
37
- return e4 && o.indexOf(Object.prototype.toString.call(e4)) > -1;
35
+ })(), s = "FormData" in e3, o = "ArrayBuffer" in e3;
36
+ if (o) var a = ["[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]"], l = ArrayBuffer.isView || function(e4) {
37
+ return e4 && a.indexOf(Object.prototype.toString.call(e4)) > -1;
38
38
  };
39
39
  function d(e4) {
40
40
  if ("string" != typeof e4 && (e4 = String(e4)), /[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e4)) throw new TypeError("Invalid character in header field name");
@@ -61,11 +61,11 @@ var require_magicfeedback_sdk_browser = __commonJS({
61
61
  this.append(t4, e4[t4]);
62
62
  }), this);
63
63
  }
64
- function m(e4) {
64
+ function h(e4) {
65
65
  if (e4.bodyUsed) return Promise.reject(new TypeError("Already read"));
66
66
  e4.bodyUsed = true;
67
67
  }
68
- function h(e4) {
68
+ function m(e4) {
69
69
  return new Promise((function(t4, i3) {
70
70
  e4.onload = function() {
71
71
  t4(e4.result);
@@ -75,31 +75,31 @@ var require_magicfeedback_sdk_browser = __commonJS({
75
75
  }));
76
76
  }
77
77
  function f(e4) {
78
- var t4 = new FileReader(), i3 = h(t4);
78
+ var t4 = new FileReader(), i3 = m(t4);
79
79
  return t4.readAsArrayBuffer(e4), i3;
80
80
  }
81
- function v(e4) {
81
+ function g(e4) {
82
82
  if (e4.slice) return e4.slice(0);
83
83
  var t4 = new Uint8Array(e4.byteLength);
84
84
  return t4.set(new Uint8Array(e4)), t4.buffer;
85
85
  }
86
- function g() {
86
+ function v() {
87
87
  return this.bodyUsed = false, this._initBody = function(e4) {
88
88
  var t4;
89
- this._bodyInit = e4, e4 ? "string" == typeof e4 ? this._bodyText = e4 : r2 && Blob.prototype.isPrototypeOf(e4) ? this._bodyBlob = e4 : s && FormData.prototype.isPrototypeOf(e4) ? this._bodyFormData = e4 : i2 && URLSearchParams.prototype.isPrototypeOf(e4) ? this._bodyText = e4.toString() : a && r2 && (t4 = e4) && DataView.prototype.isPrototypeOf(t4) ? (this._bodyArrayBuffer = v(e4.buffer), this._bodyInit = new Blob([this._bodyArrayBuffer])) : a && (ArrayBuffer.prototype.isPrototypeOf(e4) || l(e4)) ? this._bodyArrayBuffer = v(e4) : this._bodyText = e4 = Object.prototype.toString.call(e4) : this._bodyText = "", this.headers.get("content-type") || ("string" == typeof e4 ? this.headers.set("content-type", "text/plain;charset=UTF-8") : this._bodyBlob && this._bodyBlob.type ? this.headers.set("content-type", this._bodyBlob.type) : i2 && URLSearchParams.prototype.isPrototypeOf(e4) && this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"));
89
+ this._bodyInit = e4, e4 ? "string" == typeof e4 ? this._bodyText = e4 : r2 && Blob.prototype.isPrototypeOf(e4) ? this._bodyBlob = e4 : s && FormData.prototype.isPrototypeOf(e4) ? this._bodyFormData = e4 : i2 && URLSearchParams.prototype.isPrototypeOf(e4) ? this._bodyText = e4.toString() : o && r2 && (t4 = e4) && DataView.prototype.isPrototypeOf(t4) ? (this._bodyArrayBuffer = g(e4.buffer), this._bodyInit = new Blob([this._bodyArrayBuffer])) : o && (ArrayBuffer.prototype.isPrototypeOf(e4) || l(e4)) ? this._bodyArrayBuffer = g(e4) : this._bodyText = e4 = Object.prototype.toString.call(e4) : this._bodyText = "", this.headers.get("content-type") || ("string" == typeof e4 ? this.headers.set("content-type", "text/plain;charset=UTF-8") : this._bodyBlob && this._bodyBlob.type ? this.headers.set("content-type", this._bodyBlob.type) : i2 && URLSearchParams.prototype.isPrototypeOf(e4) && this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"));
90
90
  }, r2 && (this.blob = function() {
91
- var e4 = m(this);
91
+ var e4 = h(this);
92
92
  if (e4) return e4;
93
93
  if (this._bodyBlob) return Promise.resolve(this._bodyBlob);
94
94
  if (this._bodyArrayBuffer) return Promise.resolve(new Blob([this._bodyArrayBuffer]));
95
95
  if (this._bodyFormData) throw new Error("could not read FormData body as blob");
96
96
  return Promise.resolve(new Blob([this._bodyText]));
97
97
  }, this.arrayBuffer = function() {
98
- return this._bodyArrayBuffer ? m(this) || Promise.resolve(this._bodyArrayBuffer) : this.blob().then(f);
98
+ return this._bodyArrayBuffer ? h(this) || Promise.resolve(this._bodyArrayBuffer) : this.blob().then(f);
99
99
  }), this.text = function() {
100
- var e4, t4, i3, n3 = m(this);
100
+ var e4, t4, i3, n3 = h(this);
101
101
  if (n3) return n3;
102
- if (this._bodyBlob) return e4 = this._bodyBlob, i3 = h(t4 = new FileReader()), t4.readAsText(e4), i3;
102
+ if (this._bodyBlob) return e4 = this._bodyBlob, i3 = m(t4 = new FileReader()), t4.readAsText(e4), i3;
103
103
  if (this._bodyArrayBuffer) return Promise.resolve((function(e5) {
104
104
  for (var t5 = new Uint8Array(e5), i4 = new Array(t5.length), n4 = 0; n4 < t5.length; n4++) i4[n4] = String.fromCharCode(t5[n4]);
105
105
  return i4.join("");
@@ -161,21 +161,21 @@ var require_magicfeedback_sdk_browser = __commonJS({
161
161
  }
162
162
  })), t4;
163
163
  }
164
- function k(e4, t4) {
164
+ function A(e4, t4) {
165
165
  t4 || (t4 = {}), this.type = "default", this.status = void 0 === t4.status ? 200 : t4.status, this.ok = this.status >= 200 && this.status < 300, this.statusText = "statusText" in t4 ? t4.statusText : "OK", this.headers = new p(t4.headers), this.url = t4.url || "", this._initBody(e4);
166
166
  }
167
167
  b.prototype.clone = function() {
168
168
  return new b(this, { body: this._bodyInit });
169
- }, g.call(b.prototype), g.call(k.prototype), k.prototype.clone = function() {
170
- return new k(this._bodyInit, { status: this.status, statusText: this.statusText, headers: new p(this.headers), url: this.url });
171
- }, k.error = function() {
172
- var e4 = new k(null, { status: 0, statusText: "" });
169
+ }, v.call(b.prototype), v.call(A.prototype), A.prototype.clone = function() {
170
+ return new A(this._bodyInit, { status: this.status, statusText: this.statusText, headers: new p(this.headers), url: this.url });
171
+ }, A.error = function() {
172
+ var e4 = new A(null, { status: 0, statusText: "" });
173
173
  return e4.type = "error", e4;
174
174
  };
175
- var A = [301, 302, 303, 307, 308];
176
- k.redirect = function(e4, t4) {
177
- if (-1 === A.indexOf(t4)) throw new RangeError("Invalid status code");
178
- return new k(null, { status: t4, headers: { location: e4 } });
175
+ var k = [301, 302, 303, 307, 308];
176
+ A.redirect = function(e4, t4) {
177
+ if (-1 === k.indexOf(t4)) throw new RangeError("Invalid status code");
178
+ return new A(null, { status: t4, headers: { location: e4 } });
179
179
  }, t3.DOMException = e3.DOMException;
180
180
  try {
181
181
  new t3.DOMException();
@@ -188,37 +188,37 @@ var require_magicfeedback_sdk_browser = __commonJS({
188
188
  }
189
189
  function C(e4, i3) {
190
190
  return new Promise((function(n3, s2) {
191
- var a2 = new b(e4, i3);
192
- if (a2.signal && a2.signal.aborted) return s2(new t3.DOMException("Aborted", "AbortError"));
193
- var o2 = new XMLHttpRequest();
191
+ var o2 = new b(e4, i3);
192
+ if (o2.signal && o2.signal.aborted) return s2(new t3.DOMException("Aborted", "AbortError"));
193
+ var a2 = new XMLHttpRequest();
194
194
  function l2() {
195
- o2.abort();
195
+ a2.abort();
196
196
  }
197
- o2.onload = function() {
198
- var e5, t4, i4 = { status: o2.status, statusText: o2.statusText, headers: (e5 = o2.getAllResponseHeaders() || "", t4 = new p(), e5.replace(/\r?\n[\t ]+/g, " ").split(/\r?\n/).forEach((function(e6) {
197
+ a2.onload = function() {
198
+ var e5, t4, i4 = { status: a2.status, statusText: a2.statusText, headers: (e5 = a2.getAllResponseHeaders() || "", t4 = new p(), e5.replace(/\r?\n[\t ]+/g, " ").split(/\r?\n/).forEach((function(e6) {
199
199
  var i5 = e6.split(":"), n4 = i5.shift().trim();
200
200
  if (n4) {
201
201
  var r4 = i5.join(":").trim();
202
202
  t4.append(n4, r4);
203
203
  }
204
204
  })), t4) };
205
- i4.url = "responseURL" in o2 ? o2.responseURL : i4.headers.get("X-Request-URL");
206
- var r3 = "response" in o2 ? o2.response : o2.responseText;
207
- n3(new k(r3, i4));
208
- }, o2.onerror = function() {
205
+ i4.url = "responseURL" in a2 ? a2.responseURL : i4.headers.get("X-Request-URL");
206
+ var r3 = "response" in a2 ? a2.response : a2.responseText;
207
+ n3(new A(r3, i4));
208
+ }, a2.onerror = function() {
209
209
  s2(new TypeError("Network request failed"));
210
- }, o2.ontimeout = function() {
210
+ }, a2.ontimeout = function() {
211
211
  s2(new TypeError("Network request failed"));
212
- }, o2.onabort = function() {
212
+ }, a2.onabort = function() {
213
213
  s2(new t3.DOMException("Aborted", "AbortError"));
214
- }, o2.open(a2.method, a2.url, true), "include" === a2.credentials ? o2.withCredentials = true : "omit" === a2.credentials && (o2.withCredentials = false), "responseType" in o2 && r2 && (o2.responseType = "blob"), a2.headers.forEach((function(e5, t4) {
215
- o2.setRequestHeader(t4, e5);
216
- })), a2.signal && (a2.signal.addEventListener("abort", l2), o2.onreadystatechange = function() {
217
- 4 === o2.readyState && a2.signal.removeEventListener("abort", l2);
218
- }), o2.send(void 0 === a2._bodyInit ? null : a2._bodyInit);
214
+ }, a2.open(o2.method, o2.url, true), "include" === o2.credentials ? a2.withCredentials = true : "omit" === o2.credentials && (a2.withCredentials = false), "responseType" in a2 && r2 && (a2.responseType = "blob"), o2.headers.forEach((function(e5, t4) {
215
+ a2.setRequestHeader(t4, e5);
216
+ })), o2.signal && (o2.signal.addEventListener("abort", l2), a2.onreadystatechange = function() {
217
+ 4 === a2.readyState && o2.signal.removeEventListener("abort", l2);
218
+ }), a2.send(void 0 === o2._bodyInit ? null : o2._bodyInit);
219
219
  }));
220
220
  }
221
- C.polyfill = true, e3.fetch || (e3.fetch = C, e3.Headers = p, e3.Request = b, e3.Response = k), t3.Headers = p, t3.Request = b, t3.Response = k, t3.fetch = C, Object.defineProperty(t3, "__esModule", { value: true });
221
+ C.polyfill = true, e3.fetch || (e3.fetch = C, e3.Headers = p, e3.Request = b, e3.Response = A), t3.Headers = p, t3.Request = b, t3.Response = A, t3.fetch = C, Object.defineProperty(t3, "__esModule", { value: true });
222
222
  })({});
223
223
  })(n), n.fetch.ponyfill = true, delete n.fetch.polyfill;
224
224
  var r = n;
@@ -239,14 +239,14 @@ var require_magicfeedback_sdk_browser = __commonJS({
239
239
  "use strict";
240
240
  var n = this && this.__awaiter || function(e3, t3, i2, n2) {
241
241
  return new (i2 || (i2 = Promise))((function(r2, s2) {
242
- function a2(e4) {
242
+ function o2(e4) {
243
243
  try {
244
244
  l2(n2.next(e4));
245
245
  } catch (e5) {
246
246
  s2(e5);
247
247
  }
248
248
  }
249
- function o2(e4) {
249
+ function a2(e4) {
250
250
  try {
251
251
  l2(n2.throw(e4));
252
252
  } catch (e5) {
@@ -257,34 +257,42 @@ var require_magicfeedback_sdk_browser = __commonJS({
257
257
  var t4;
258
258
  e4.done ? r2(e4.value) : (t4 = e4.value, t4 instanceof i2 ? t4 : new i2((function(e5) {
259
259
  e5(t4);
260
- }))).then(a2, o2);
260
+ }))).then(o2, a2);
261
261
  }
262
262
  l2((n2 = n2.apply(e3, t3 || [])).next());
263
263
  }));
264
264
  };
265
265
  Object.defineProperty(t2, "__esModule", { value: true });
266
- const r = i(57), s = i(665), a = i(256), o = i(313), l = i(317);
266
+ const r = i(57), s = i(544), o = i(665), a = i(256), l = i(313), d = i(317);
267
267
  t2.default = function() {
268
- const e3 = new s.Config();
268
+ const e3 = new o.Config();
269
269
  let t3 = new a.Log(e3);
270
270
  return { init: function(i2) {
271
- "boolean" == typeof (null == i2 ? void 0 : i2.debug) && e3.set("debug", i2.debug), "boolean" == typeof (null == i2 ? void 0 : i2.dryRun) && e3.set("dryRun", i2.dryRun), e3.set("url", (null == i2 ? void 0 : i2.env) && "dev" === (null == i2 ? void 0 : i2.env) ? l.HOST_API_URL_DEV : l.HOST_API_URL), e3.set("env", null == i2 ? void 0 : i2.env), t3.log("Initialized Magicfeedback", e3);
272
- }, send: function(i2, r2, s2, a2 = true, l2, d) {
271
+ "boolean" == typeof (null == i2 ? void 0 : i2.debug) && e3.set("debug", i2.debug), "boolean" == typeof (null == i2 ? void 0 : i2.dryRun) && e3.set("dryRun", i2.dryRun), e3.set("url", (null == i2 ? void 0 : i2.env) && "dev" === (null == i2 ? void 0 : i2.env) ? d.HOST_API_URL_DEV : d.HOST_API_URL), e3.set("env", null == i2 ? void 0 : i2.env), t3.log("Initialized Magicfeedback", e3);
272
+ }, send: function(i2, r2, s2, o2 = true, a2, d2) {
273
273
  return n(this, void 0, void 0, (function* () {
274
274
  i2 || t3.err("No appID provided"), r2 || t3.err("No publicKey provided"), s2 || t3.err("No feedback provided"), s2.answers || s2.profile || s2.metrics || s2.metadata || t3.err("No feedback data provided");
275
- const n2 = e3.get("url"), c = { integration: i2, publicKey: r2, privateKey: d, completed: a2, id: l2, feedback: s2 };
275
+ const n2 = e3.get("url"), c = { integration: i2, publicKey: r2, privateKey: d2, completed: o2, id: a2, feedback: s2 };
276
276
  try {
277
277
  if (e3.get("dryRun")) return t3.log("Dry run enabled: skipping native feedback submit"), `dry-run-${Date.now()}`;
278
- const i3 = yield (0, o.sendFeedback)(n2, c, t3);
278
+ const i3 = yield (0, l.sendFeedback)(n2, c, t3);
279
279
  return t3.log("sent native feedback"), i3;
280
280
  } catch (e4) {
281
281
  return t3.err("error native feedback", e4), false;
282
282
  }
283
283
  }));
284
- }, form: function(i2, n2, s2, a2) {
285
- return i2 || t3.err("No appID provided"), n2 || t3.err("No publicKey provided"), new r.Form(e3, i2, n2, s2, a2);
284
+ }, form: function(i2, n2, s2, o2) {
285
+ return i2 || t3.err("No appID provided"), n2 || t3.err("No publicKey provided"), new r.Form(e3, i2, n2, s2, o2);
286
+ }, agentForm: function(i2, n2, r2) {
287
+ return i2 || t3.err("No integrationId provided"), n2 || t3.err("No publicKey provided"), new s.AgentForm(e3, i2, n2, r2);
286
288
  }, session: function(i2) {
287
289
  return i2 || t3.err("No sessionId provided"), new r.Form(e3, i2);
290
+ }, previewPage: function(i2, s2, o2) {
291
+ return n(this, void 0, void 0, (function* () {
292
+ i2 || t3.err("No selector provided"), s2 && s2.page || t3.err("No page provided for preview");
293
+ const n2 = (null == s2 ? void 0 : s2.appId) || `preview-${Date.now()}`, a2 = new r.Form(e3, n2);
294
+ return yield a2.previewPage(i2, s2, o2), a2;
295
+ }));
288
296
  } };
289
297
  };
290
298
  }, 79: (e2, t2) => {
@@ -318,6 +326,243 @@ var require_magicfeedback_sdk_browser = __commonJS({
318
326
  return this.items[e3];
319
327
  }
320
328
  };
329
+ }, 544: function(e2, t2, i) {
330
+ "use strict";
331
+ var n = this && this.__awaiter || function(e3, t3, i2, n2) {
332
+ return new (i2 || (i2 = Promise))((function(r2, s2) {
333
+ function o2(e4) {
334
+ try {
335
+ l2(n2.next(e4));
336
+ } catch (e5) {
337
+ s2(e5);
338
+ }
339
+ }
340
+ function a2(e4) {
341
+ try {
342
+ l2(n2.throw(e4));
343
+ } catch (e5) {
344
+ s2(e5);
345
+ }
346
+ }
347
+ function l2(e4) {
348
+ var t4;
349
+ e4.done ? r2(e4.value) : (t4 = e4.value, t4 instanceof i2 ? t4 : new i2((function(e5) {
350
+ e5(t4);
351
+ }))).then(o2, a2);
352
+ }
353
+ l2((n2 = n2.apply(e3, t3 || [])).next());
354
+ }));
355
+ };
356
+ Object.defineProperty(t2, "__esModule", { value: true }), t2.AgentForm = void 0;
357
+ const r = i(256), s = i(279), o = i(945), a = i(177), l = i(107), d = i(565), c = i(571), u = i(213);
358
+ t2.AgentForm = class {
359
+ constructor(e3, t3, i2, n2) {
360
+ this.config = e3, this.log = new r.Log(e3), this.url = e3.get("url"), this.integrationId = t3, this.publicKey = i2, this.privateKey = n2, this.formOptionsConfig = { addButton: true, sendButtonText: "Send", backButtonText: "Back", nextButtonText: "Next", addSuccessScreen: true, questionFormat: "standard", answerDelimiter: a.DEFAULT_ANSWER_DELIMITER, resume: true, allowBack: false, emptyAnswerText: "" }, this.selector = "", this.language = "en", this.product = { customIcons: false }, this.sessionId = "", this.conversation = [], this.askedRefs = [], this.currentTurn = 1, this.maxTurns = 0, this.currentQuestion = null, this.questionHistory = [], this.busy = false, this.rateLimitTimer = null, this.progress = 0, this.total = 0, this.completed = false, this.timeToCompleted = 0;
361
+ }
362
+ generate(e3, t3 = {}) {
363
+ var i2;
364
+ return n(this, void 0, void 0, (function* () {
365
+ this.formOptionsConfig = Object.assign(Object.assign({}, this.formOptionsConfig), t3), this.selector = e3, t3.lang && (this.language = t3.lang), t3.primaryColor && (this.primaryColor = t3.primaryColor), this.config.get("dryRun") && this.log.log("dryRun has no effect in agent mode: the server drives the conversation");
366
+ try {
367
+ const e4 = false !== this.formOptionsConfig.resume ? this.restore() : null;
368
+ if (e4) this.log.log(`Resuming agent session ${e4.sessionId} at turn ${e4.currentTurn}`), this.mountForm(), this.renderStep();
369
+ else {
370
+ const e5 = yield this.startWithRetry();
371
+ this.sessionId = e5.sessionId, this.maxTurns = e5.maxTurns, this.currentTurn = null !== (i2 = e5.currentTurn) && void 0 !== i2 ? i2 : 1, this.total = Math.max(this.maxTurns - 1, 0);
372
+ const t4 = (0, a.toAgentStep)(e5, this.adapterContext());
373
+ if (this.mountForm(), "END" === t4.kind) return yield this.renderEnd(t4), void (this.formOptionsConfig.onLoadedEvent && (yield this.formOptionsConfig.onLoadedEvent({ loading: false, progress: this.progress, total: this.total, sessionId: this.sessionId, completed: true })));
374
+ this.acceptQuestion(t4), this.renderStep(), this.persist();
375
+ }
376
+ this.timeToCompleted = Date.now(), this.formOptionsConfig.onLoadedEvent && (yield this.formOptionsConfig.onLoadedEvent({ loading: false, progress: this.progress, total: this.total, sessionId: this.sessionId, formOptionsConfig: this.formOptionsConfig }));
377
+ } catch (e4) {
378
+ this.log.err(`Could not start the agent survey ${this.integrationId}:`, e4), this.renderFatal(e4), this.formOptionsConfig.onLoadedEvent && (yield this.formOptionsConfig.onLoadedEvent({ loading: false, error: e4 }));
379
+ }
380
+ }));
381
+ }
382
+ next() {
383
+ return n(this, void 0, void 0, (function* () {
384
+ return this.runTurn();
385
+ }));
386
+ }
387
+ answer() {
388
+ const e3 = document.getElementById(this.formId());
389
+ return e3 ? (0, l.scrapeInputs)(e3) : [];
390
+ }
391
+ getConversation() {
392
+ return [...this.conversation];
393
+ }
394
+ getSessionId() {
395
+ return this.sessionId;
396
+ }
397
+ reset() {
398
+ this.sessionId = "", this.conversation = [], this.askedRefs = [], this.currentTurn = 1, this.maxTurns = 0, this.currentQuestion = null, this.questionHistory = [], this.busy = false, this.completed = false, this.progress = 0, this.clearRateLimitTimer(), this.clearPersisted();
399
+ }
400
+ runTurn() {
401
+ var e3;
402
+ return n(this, void 0, void 0, (function* () {
403
+ if (this.busy || this.completed || !this.currentQuestion) return;
404
+ this.busy = true, this.setSubmitDisabled(true), this.clearError();
405
+ const t3 = this.currentQuestion;
406
+ try {
407
+ const i2 = document.getElementById(this.formId()), n2 = document.getElementById(this.questionsId());
408
+ if (!i2) throw new Error("Agent form not found");
409
+ yield (0, c.awaitUploadReady)(n2);
410
+ const r2 = (0, l.scrapeInputs)(i2);
411
+ let s2 = (0, a.encodeAnswer)(r2, t3, this.formOptionsConfig.answerDelimiter);
412
+ if ("" === s2) {
413
+ if (t3.require) return void this.showError(this.formOptionsConfig.requiredMessage || "Please answer before continuing.");
414
+ s2 = this.formOptionsConfig.emptyAnswerText || "";
415
+ }
416
+ this.formOptionsConfig.beforeSubmitEvent && (yield this.formOptionsConfig.beforeSubmitEvent({ loading: true, progress: this.progress, total: this.total }));
417
+ const d2 = { role: "user", content: s2, questionType: t3.type, questionRef: t3.ref }, u2 = this.currentTurn + 1, p = yield (0, o.nextAgentTurn)(this.url, { publicKey: this.publicKey, privateKey: this.privateKey, integrationId: this.integrationId, sessionId: this.sessionId, conversation: [...this.conversation], currentTurn: u2, lastAnswer: s2, lastQuestionRef: t3.ref, askedRefs: [...this.askedRefs] }, this.log);
418
+ this.conversation.push(d2), this.currentTurn = null !== (e3 = p.currentTurn) && void 0 !== e3 ? e3 : u2, p.maxTurns && (this.maxTurns = p.maxTurns), this.total = Math.max(this.maxTurns - 1, 0);
419
+ const h = (0, a.toAgentStep)(p, this.adapterContext());
420
+ if ("END" === h.kind) return void (yield this.renderEnd(h));
421
+ if (this.maxTurns > 0 && this.currentTurn > this.maxTurns + 1) return void (yield this.renderEnd({ kind: "END", reason: "MAX_TURNS", currentTurn: this.currentTurn, maxTurns: this.maxTurns }));
422
+ this.acceptQuestion(h), this.renderStep(), this.persist(), this.formOptionsConfig.onAgentTurnEvent && (yield this.formOptionsConfig.onAgentTurnEvent({ turn: this.currentTurn, maxTurns: this.maxTurns, question: h.question, isFromBase: h.isFromBase, topic: h.topic, coverageGaps: h.coverageGaps, coverageSummary: h.coverageSummary, conversation: this.getConversation() })), this.formOptionsConfig.afterSubmitEvent && (yield this.formOptionsConfig.afterSubmitEvent({ response: this.sessionId, loading: false, progress: this.progress, total: this.total, completed: false, error: null }));
423
+ } catch (e4) {
424
+ yield this.handleTurnError(e4);
425
+ } finally {
426
+ this.completed || (this.busy = false, this.rateLimitTimer || this.setSubmitDisabled(false));
427
+ }
428
+ }));
429
+ }
430
+ handleTurnError(e3) {
431
+ return n(this, void 0, void 0, (function* () {
432
+ this.log.err(`An error occurred during the agent turn ${this.integrationId}:`, e3), e3 instanceof s.AgentApiError && "RATE_LIMITED" === e3.kind ? this.startRateLimitCountdown(e3.retryAfterMs || 6e4) : this.showError(this.errorMessageFor(e3)), this.formOptionsConfig.afterSubmitEvent && (yield this.formOptionsConfig.afterSubmitEvent({ loading: false, progress: this.progress, total: this.total, completed: false, error: e3 }));
433
+ }));
434
+ }
435
+ acceptQuestion(e3) {
436
+ const t3 = e3.question;
437
+ e3.isFromBase && t3.ref && !this.askedRefs.includes(t3.ref) && this.askedRefs.push(t3.ref), this.conversation.push({ role: "agent", content: t3.title, questionType: t3.type, questionRef: t3.ref }), this.currentQuestion = t3, this.questionHistory.push(t3), this.progress = Math.max(this.currentTurn - 1, 0);
438
+ }
439
+ formId() {
440
+ return "magicfeedback-agent-" + this.integrationId;
441
+ }
442
+ questionsId() {
443
+ return "magicfeedback-agent-questions-" + this.integrationId;
444
+ }
445
+ mountForm() {
446
+ const e3 = (0, d.generateContainer)(this.selector, this.integrationId);
447
+ this.primaryColor && (0, d.applyPrimaryColor)(e3, this.primaryColor);
448
+ const t3 = document.createElement("form");
449
+ t3.classList.add("magicfeedback-form"), t3.classList.add("magicfeedback-agent-form"), t3.id = this.formId(), t3.addEventListener("submit", ((e4) => {
450
+ e4.preventDefault(), this.runTurn();
451
+ }));
452
+ const i2 = document.createElement("div");
453
+ i2.classList.add("magicfeedback-questions"), i2.id = this.questionsId(), t3.appendChild(i2), this.formOptionsConfig.addButton && t3.appendChild((0, u.renderActions)(this.formOptionsConfig.allowBack ? "MAGICSURVEY" : "MAGICFORM", (() => this.back()), this.formOptionsConfig.sendButtonText, this.formOptionsConfig.backButtonText, this.formOptionsConfig.nextButtonText)), e3.appendChild(t3);
454
+ }
455
+ renderStep() {
456
+ const e3 = document.getElementById(this.questionsId());
457
+ e3 && this.currentQuestion && (e3.innerHTML = "", (0, u.renderQuestions)([this.currentQuestion], this.formOptionsConfig.questionFormat, this.language, this.product, (() => this.runTurn())).forEach(((t3) => e3.appendChild(t3))));
458
+ }
459
+ renderEnd(e3) {
460
+ return n(this, void 0, void 0, (function* () {
461
+ this.completed = true, this.currentQuestion = null, this.busy = false, this.timeToCompleted = this.timeToCompleted ? Date.now() - this.timeToCompleted : 0, this.clearRateLimitTimer(), this.clearPersisted();
462
+ const t3 = document.getElementById("magicfeedback-container-" + this.integrationId);
463
+ if (t3 && false !== this.formOptionsConfig.addSuccessScreen) {
464
+ t3.innerHTML = "";
465
+ const i2 = "BLOCKED" === e3.reason ? this.formOptionsConfig.blockedMessage || "Thanks for your time \u2014 we'll end the conversation here." : this.formOptionsConfig.successMessage || "Thank you for your feedback!", n2 = (0, u.renderSuccess)(i2);
466
+ n2.classList.add("magicfeedback-success-message"), n2.classList.add("magicfeedback-agent-end"), "BLOCKED" === e3.reason && n2.classList.add("magicfeedback-agent-end--blocked"), t3.appendChild(n2);
467
+ }
468
+ this.formOptionsConfig.onFinishEvent && (yield this.formOptionsConfig.onFinishEvent({ sessionId: this.sessionId, reason: e3.reason, turns: this.currentTurn, maxTurns: this.maxTurns, conversation: this.getConversation(), coverageSummary: e3.coverageSummary, timeToCompleted: this.timeToCompleted })), this.formOptionsConfig.afterSubmitEvent && (yield this.formOptionsConfig.afterSubmitEvent({ response: this.sessionId, loading: false, progress: this.progress, total: this.total, completed: true, error: null }));
469
+ }));
470
+ }
471
+ back() {
472
+ return n(this, void 0, void 0, (function* () {
473
+ this.busy || this.completed || this.formOptionsConfig.allowBack && (this.questionHistory.length < 2 || (this.questionHistory.pop(), this.conversation.pop(), this.conversation.pop(), this.currentQuestion = this.questionHistory[this.questionHistory.length - 1], this.currentTurn = Math.max(this.currentTurn - 1, 1), this.progress = Math.max(this.currentTurn - 1, 0), this.clearError(), this.renderStep(), this.persist(), this.formOptionsConfig.onBackEvent && (yield this.formOptionsConfig.onBackEvent({ progress: this.progress, total: this.total }))));
474
+ }));
475
+ }
476
+ renderFatal(e3) {
477
+ try {
478
+ (0, d.generateContainer)(this.selector, this.integrationId).appendChild((0, u.renderError)(this.errorMessageFor(e3)));
479
+ } catch (e4) {
480
+ }
481
+ }
482
+ errorMessageFor(e3) {
483
+ if (!(e3 instanceof s.AgentApiError)) return "Something went wrong. Please try again.";
484
+ switch (e3.kind) {
485
+ case "AUTH":
486
+ case "NOT_FOUND":
487
+ case "BAD_CONFIG":
488
+ return "This survey is not available right now.";
489
+ case "AI_UNAVAILABLE":
490
+ return "We couldn't start the survey. Please try again in a moment.";
491
+ default:
492
+ return "Something went wrong. Please try again.";
493
+ }
494
+ }
495
+ adapterContext() {
496
+ return { integrationId: this.integrationId, sessionId: this.sessionId, language: this.language, log: this.log };
497
+ }
498
+ startWithRetry() {
499
+ return n(this, void 0, void 0, (function* () {
500
+ const e3 = { publicKey: this.publicKey, privateKey: this.privateKey, integrationId: this.integrationId };
501
+ try {
502
+ return yield (0, o.startAgentSurvey)(this.url, e3, this.log);
503
+ } catch (t3) {
504
+ if (t3 instanceof s.AgentApiError && "AI_UNAVAILABLE" === t3.kind) return this.log.log("Retrying /start after a transient AI failure"), yield new Promise(((e4) => setTimeout(e4, 1500))), yield (0, o.startAgentSurvey)(this.url, e3, this.log);
505
+ throw t3;
506
+ }
507
+ }));
508
+ }
509
+ setSubmitDisabled(e3) {
510
+ const t3 = document.getElementById("magicfeedback-submit");
511
+ t3 && (t3.disabled = e3);
512
+ }
513
+ clearError() {
514
+ const e3 = document.getElementById(this.questionsId());
515
+ null == e3 || e3.querySelectorAll(".magicfeedback-error").forEach(((e4) => e4.remove()));
516
+ }
517
+ showError(e3) {
518
+ const t3 = document.getElementById(this.questionsId());
519
+ t3 && (this.clearError(), t3.insertBefore((0, u.renderError)(e3), t3.firstChild));
520
+ }
521
+ startRateLimitCountdown(e3) {
522
+ this.clearRateLimitTimer(), this.setSubmitDisabled(true);
523
+ let t3 = Math.ceil(e3 / 1e3);
524
+ const i2 = this.formOptionsConfig.rateLimitMessage || "Too many requests. Retrying in {seconds}s\u2026", n2 = () => {
525
+ if (t3 <= 0) return this.clearRateLimitTimer(), this.clearError(), void this.setSubmitDisabled(false);
526
+ this.showError(i2.replace("{seconds}", String(t3))), t3 -= 1;
527
+ };
528
+ n2(), this.rateLimitTimer = setInterval(n2, 1e3);
529
+ }
530
+ clearRateLimitTimer() {
531
+ this.rateLimitTimer && (clearInterval(this.rateLimitTimer), this.rateLimitTimer = null);
532
+ }
533
+ storageKey() {
534
+ return `magicfeedback-agent-${this.integrationId}`;
535
+ }
536
+ persist() {
537
+ if (false !== this.formOptionsConfig.resume) try {
538
+ const e3 = { sessionId: this.sessionId, conversation: this.conversation, currentTurn: this.currentTurn, maxTurns: this.maxTurns, askedRefs: this.askedRefs, questionHistory: this.questionHistory, savedAt: Date.now() };
539
+ localStorage.setItem(this.storageKey(), JSON.stringify(e3));
540
+ } catch (e3) {
541
+ this.log.log("Could not persist the agent session", e3);
542
+ }
543
+ }
544
+ restore() {
545
+ var e3;
546
+ try {
547
+ const t3 = localStorage.getItem(this.storageKey());
548
+ if (!t3) return null;
549
+ const i2 = JSON.parse(t3);
550
+ return (null == i2 ? void 0 : i2.sessionId) && (null === (e3 = i2.questionHistory) || void 0 === e3 ? void 0 : e3.length) ? Date.now() - (i2.savedAt || 0) > 18e5 ? (this.clearPersisted(), null) : (this.sessionId = i2.sessionId, this.conversation = i2.conversation || [], this.currentTurn = i2.currentTurn || 1, this.maxTurns = i2.maxTurns || 0, this.askedRefs = i2.askedRefs || [], this.questionHistory = i2.questionHistory, this.currentQuestion = this.questionHistory[this.questionHistory.length - 1], this.total = Math.max(this.maxTurns - 1, 0), this.progress = Math.max(this.currentTurn - 1, 0), i2) : null;
551
+ } catch (e4) {
552
+ return this.log.log("Could not restore the agent session", e4), null;
553
+ }
554
+ }
555
+ clearPersisted() {
556
+ try {
557
+ localStorage.removeItem(this.storageKey());
558
+ } catch (e3) {
559
+ }
560
+ }
561
+ applyIntegrationContext(e3) {
562
+ var t3, i2;
563
+ (null === (t3 = null == e3 ? void 0 : e3.lang) || void 0 === t3 ? void 0 : t3.length) && (this.language = e3.lang[0]), (null == e3 ? void 0 : e3.product) && (this.product = e3.product), (null === (i2 = null == e3 ? void 0 : e3.style) || void 0 === i2 ? void 0 : i2.primaryColor) && (this.primaryColor = e3.style.primaryColor);
564
+ }
565
+ };
321
566
  }, 665: (e2, t2) => {
322
567
  "use strict";
323
568
  Object.defineProperty(t2, "__esModule", { value: true }), t2.Config = void 0, t2.Config = class {
@@ -335,14 +580,14 @@ var require_magicfeedback_sdk_browser = __commonJS({
335
580
  "use strict";
336
581
  var n = this && this.__awaiter || function(e3, t3, i2, n2) {
337
582
  return new (i2 || (i2 = Promise))((function(r2, s2) {
338
- function a2(e4) {
583
+ function o2(e4) {
339
584
  try {
340
585
  l2(n2.next(e4));
341
586
  } catch (e5) {
342
587
  s2(e5);
343
588
  }
344
589
  }
345
- function o2(e4) {
590
+ function a2(e4) {
346
591
  try {
347
592
  l2(n2.throw(e4));
348
593
  } catch (e5) {
@@ -353,33 +598,48 @@ var require_magicfeedback_sdk_browser = __commonJS({
353
598
  var t4;
354
599
  e4.done ? r2(e4.value) : (t4 = e4.value, t4 instanceof i2 ? t4 : new i2((function(e5) {
355
600
  e5(t4);
356
- }))).then(a2, o2);
601
+ }))).then(o2, a2);
357
602
  }
358
603
  l2((n2 = n2.apply(e3, t3 || [])).next());
359
604
  }));
360
605
  };
361
606
  Object.defineProperty(t2, "__esModule", { value: true }), t2.Form = void 0;
362
- const r = i(558), s = i(256), a = i(313), o = i(213), l = i(989), d = i(700), c = i(591), u = i(79), p = i(636);
607
+ const r = i(558), s = i(544), o = i(256), a = i(313), l = i(213), d = i(571), c = i(565), u = i(107), p = i(989), h = i(700), m = i(591), f = i(79), g = i(636);
363
608
  t2.Form = class {
364
609
  constructor(e3, t3, i2, n2, r2) {
365
- this.config = e3, this.log = new s.Log(e3), this.formOptionsConfig = { addButton: true, sendButtonText: "Send", backButtonText: "Back", nextButtonText: "Next", addSuccessScreen: true, getMetaData: true, customMetaData: [], questionFormat: "standard" }, this.selector = "", this.appId = t3, this.publicKey = i2 || "", this.url = e3.get("url"), this.id = "", this.formData = null, this.feedback = { text: "", answers: [], profile: null != n2 ? n2 : [], metrics: [], metadata: null != r2 ? r2 : [] }, this.history = new u.History(), this.graph = new l.PageGraph([]), this.progress = 0, this.total = 0, this.completed = false, this.timeToCompleted = 0;
610
+ this.config = e3, this.log = new o.Log(e3), this.formOptionsConfig = { addButton: true, sendButtonText: "Send", backButtonText: "Back", nextButtonText: "Next", addSuccessScreen: true, getMetaData: true, customMetaData: [], questionFormat: "standard" }, this.selector = "", this.appId = t3, this.publicKey = i2 || "", this.url = e3.get("url"), this.id = "", this.formData = null, this.feedback = { text: "", answers: [], profile: null != n2 ? n2 : [], metrics: [], metadata: null != r2 ? r2 : [] }, this.history = new f.History(), this.agentForm = null, this.graph = new p.PageGraph([]), this.progress = 0, this.total = 0, this.completed = false, this.timeToCompleted = 0;
366
611
  }
367
612
  generate(e3, t3) {
368
- var i2, r2, s2, o2, l2, d2, c2;
613
+ var i2, r2, o2, l2, d2, c2, u2;
369
614
  return n(this, void 0, void 0, (function* () {
370
615
  try {
371
616
  this.formOptionsConfig = Object.assign(Object.assign({}, this.formOptionsConfig), t3), this.selector = e3;
372
617
  let n2 = this.formData;
373
618
  if (void 0 !== this.formData && this.formData || (n2 = "" !== this.publicKey ? yield (0, a.getForm)(this.url, this.appId, this.publicKey, this.log) : yield (0, a.getSessionForm)(this.url, this.appId, this.log)), void 0 === n2 || !n2) throw new Error(`No data for app ${this.appId}`);
374
619
  if (null === (i2 = n2.error) || void 0 === i2 ? void 0 : i2.message) throw new Error(n2.error.message);
375
- if (n2.questions = (null === (r2 = n2.questions) || void 0 === r2 ? void 0 : r2.filter(((e4) => "ACTIVE" === e4.status))) || [], n2.pages = (null === (s2 = n2.pages) || void 0 === s2 ? void 0 : s2.filter(((e4) => "ACTIVE" === e4.status))) || [], null === (o2 = n2.pages) || void 0 === o2 || o2.forEach(((e4) => {
620
+ if ("AGENT" === n2.mode) return this.agentForm = new s.AgentForm(this.config, this.appId, this.publicKey), this.agentForm.applyIntegrationContext(n2), void (yield this.agentForm.generate(e3, t3));
621
+ if (n2.questions = (null === (r2 = n2.questions) || void 0 === r2 ? void 0 : r2.filter(((e4) => "ACTIVE" === e4.status))) || [], n2.pages = (null === (o2 = n2.pages) || void 0 === o2 ? void 0 : o2.filter(((e4) => "ACTIVE" === e4.status))) || [], null === (l2 = n2.pages) || void 0 === l2 || l2.forEach(((e4) => {
376
622
  var t4;
377
623
  return e4.integrationQuestions = null === (t4 = e4.integrationQuestions) || void 0 === t4 ? void 0 : t4.filter(((e5) => "ACTIVE" === e5.status));
378
624
  })), this.formData = n2, this.formData.savedAt || (this.formData.savedAt = /* @__PURE__ */ new Date(), localStorage.setItem(`magicfeedback-${this.appId}`, JSON.stringify(this.formData))), void 0 === this.formData.questions || !this.formData.questions) throw new Error(`No questions for app ${this.appId}`);
379
- this.formData.pages && 0 !== (null === (l2 = this.formData.pages) || void 0 === l2 ? void 0 : l2.length) || this.formatPages(), null === (d2 = this.formData.questions) || void 0 === d2 || d2.sort(((e4, t4) => e4.position - t4.position)), this.formData.pages = this.formData.pages.filter(((e4) => {
625
+ this.formData.pages && 0 !== (null === (d2 = this.formData.pages) || void 0 === d2 ? void 0 : d2.length) || this.formatPages(), null === (c2 = this.formData.questions) || void 0 === c2 || c2.sort(((e4, t4) => e4.position - t4.position)), this.formData.pages = this.formData.pages.filter(((e4) => {
380
626
  var t4;
381
627
  return (null === (t4 = e4.integrationQuestions) || void 0 === t4 ? void 0 : t4.length) > 0;
382
- })), this.formOptionsConfig.getMetaData && this.getMetaData(), (null === (c2 = this.formData.style) || void 0 === c2 ? void 0 : c2.startMessage) ? yield this.generateWelcomeMessage(this.formData.style.startMessage) : this.startForm();
628
+ })), this.formOptionsConfig.getMetaData && this.getMetaData(), (null === (u2 = this.formData.style) || void 0 === u2 ? void 0 : u2.startMessage) ? yield this.generateWelcomeMessage(this.formData.style.startMessage) : this.startForm();
629
+ } catch (e4) {
630
+ return this.log.err(e4), void (this.formOptionsConfig.onLoadedEvent && (yield this.formOptionsConfig.onLoadedEvent({ loading: false, error: e4 })));
631
+ }
632
+ }));
633
+ }
634
+ previewPage(e3, t3, i2 = {}) {
635
+ var r2, s2, o2, a2, l2, d2, c2, u2, p2;
636
+ return n(this, void 0, void 0, (function* () {
637
+ try {
638
+ if (!t3 || !t3.page) throw new Error("[MagicFeedback] No page provided for preview");
639
+ if (!t3.page.integrationQuestions || 0 === t3.page.integrationQuestions.length) throw new Error("[MagicFeedback] No questions provided for preview");
640
+ this.config.set("dryRun", true), this.formOptionsConfig = Object.assign(Object.assign(Object.assign({}, this.formOptionsConfig), { getMetaData: false }), i2), this.selector = e3;
641
+ const n2 = (t3.page.integrationQuestions || []).filter(((e4) => !e4.status || "ACTIVE" === e4.status)).sort(((e4, t4) => e4.position - t4.position)), m2 = new h.Page(null !== (r2 = t3.page.id) && void 0 !== r2 ? r2 : "1", null !== (s2 = t3.page.position) && void 0 !== s2 ? s2 : 1, null !== (o2 = t3.appId) && void 0 !== o2 ? o2 : this.appId, n2, null !== (a2 = t3.page.integrationPageRoutes) && void 0 !== a2 ? a2 : []);
642
+ this.formData = { id: null !== (l2 = t3.appId) && void 0 !== l2 ? l2 : this.appId, identity: null !== (d2 = t3.identity) && void 0 !== d2 ? d2 : "MAGICFORM", lang: [null !== (c2 = t3.lang) && void 0 !== c2 ? c2 : "en"], product: null !== (u2 = t3.product) && void 0 !== u2 ? u2 : { customIcons: false }, style: null !== (p2 = t3.style) && void 0 !== p2 ? p2 : {}, questions: n2, pages: [m2] }, yield this.generateForm();
383
643
  } catch (e4) {
384
644
  return this.log.err(e4), void (this.formOptionsConfig.onLoadedEvent && (yield this.formOptionsConfig.onLoadedEvent({ loading: false, error: e4 })));
385
645
  }
@@ -391,35 +651,35 @@ var require_magicfeedback_sdk_browser = __commonJS({
391
651
  case "MAGICSURVEY":
392
652
  this.formData.pages = [], null === (e3 = this.formData.questions) || void 0 === e3 || e3.forEach(((e4) => {
393
653
  var t4, i2;
394
- const n2 = new c.PageRoute(e4.id, e4.ref, c.OperatorType.NOEQUAL, [], c.TransitionType.PAGE, (e4.position + 1).toString(), e4.position.toString()), r2 = new d.Page(e4.position.toString(), e4.position, this.appId, [e4], [n2]);
654
+ const n2 = new m.PageRoute(e4.id, e4.ref, m.OperatorType.NOEQUAL, [], m.TransitionType.PAGE, (e4.position + 1).toString(), e4.position.toString()), r2 = new h.Page(e4.position.toString(), e4.position, this.appId, [e4], [n2]);
395
655
  null === (i2 = null === (t4 = this.formData) || void 0 === t4 ? void 0 : t4.pages) || void 0 === i2 || i2.push(r2);
396
656
  }));
397
657
  break;
398
658
  case "MAGICFORM":
399
- const t3 = new d.Page("1", 1, this.appId, this.formData.questions, []);
659
+ const t3 = new h.Page("1", 1, this.appId, this.formData.questions, []);
400
660
  this.formData.pages = [t3];
401
661
  }
402
662
  }
403
663
  generateContainer() {
404
- let e3 = document.getElementById(this.selector);
405
- if (!e3 && (e3 = document.getElementById("magicfeedback-container-" + this.appId), !e3)) throw new Error(`Element with ID '${this.selector}' not found.`);
406
- return e3.classList.add("magicfeedback-container"), e3.id = "magicfeedback-container-" + this.appId, e3.innerHTML = "", e3;
664
+ var e3, t3;
665
+ const i2 = (0, c.generateContainer)(this.selector, this.appId), n2 = null === (t3 = null === (e3 = this.formData) || void 0 === e3 ? void 0 : e3.style) || void 0 === t3 ? void 0 : t3.primaryColor;
666
+ return n2 && (0, c.applyPrimaryColor)(i2, n2), i2;
407
667
  }
408
668
  generateForm() {
409
669
  var e3, t3, i2, r2;
410
670
  return n(this, void 0, void 0, (function* () {
411
671
  try {
412
672
  if (!this.formData || !this.formData.pages || 0 === this.formData.pages.length) throw new Error("No form data");
413
- this.graph = new l.PageGraph(this.formData.pages.sort(((e4, t4) => e4.position - t4.position)));
673
+ this.graph = new p.PageGraph(this.formData.pages.sort(((e4, t4) => e4.position - t4.position)));
414
674
  let n2 = this.generateContainer();
415
675
  const s2 = document.createElement("form");
416
676
  s2.classList.add("magicfeedback-form"), s2.id = "magicfeedback-" + this.appId, s2.addEventListener("submit", ((e4) => e4.preventDefault()));
417
- const a2 = document.createElement("div");
418
- a2.classList.add("magicfeedback-questions"), a2.id = "magicfeedback-questions-" + this.appId;
419
- const d2 = this.graph.getFirstPage();
420
- if (!d2) throw new Error("No page found");
421
- if (this.total = this.graph.findMaxDepth(), d2.elements = (0, o.renderQuestions)(d2.questions, this.formOptionsConfig.questionFormat, null === (e3 = this.formData) || void 0 === e3 ? void 0 : e3.lang[0], null === (t3 = this.formData) || void 0 === t3 ? void 0 : t3.product, (() => this.send())), null === (i2 = d2.elements) || void 0 === i2 || i2.forEach(((e4) => a2.appendChild(e4))), s2.appendChild(a2), this.history.enqueue(d2), n2.appendChild(s2), this.progress = this.total - this.graph.findMaxDepth(d2), this.formOptionsConfig.addButton) {
422
- const e4 = (0, o.renderActions)(null === (r2 = this.formData) || void 0 === r2 ? void 0 : r2.identity, (() => this.back()), this.formOptionsConfig.sendButtonText, this.formOptionsConfig.backButtonText, this.formOptionsConfig.nextButtonText);
677
+ const o2 = document.createElement("div");
678
+ o2.classList.add("magicfeedback-questions"), o2.id = "magicfeedback-questions-" + this.appId;
679
+ const a2 = this.graph.getFirstPage();
680
+ if (!a2) throw new Error("No page found");
681
+ if (this.total = this.graph.findMaxDepth(), a2.elements = (0, l.renderQuestions)(a2.questions, this.formOptionsConfig.questionFormat, null === (e3 = this.formData) || void 0 === e3 ? void 0 : e3.lang[0], null === (t3 = this.formData) || void 0 === t3 ? void 0 : t3.product, (() => this.send())), null === (i2 = a2.elements) || void 0 === i2 || i2.forEach(((e4) => o2.appendChild(e4))), s2.appendChild(o2), this.history.enqueue(a2), n2.appendChild(s2), this.progress = this.total - this.graph.findMaxDepth(a2), this.formOptionsConfig.addButton) {
682
+ const e4 = (0, l.renderActions)(null === (r2 = this.formData) || void 0 === r2 ? void 0 : r2.identity, (() => this.back()), this.formOptionsConfig.sendButtonText, this.formOptionsConfig.backButtonText, this.formOptionsConfig.nextButtonText);
423
683
  s2.appendChild(e4);
424
684
  }
425
685
  this.formOptionsConfig.addButton && s2.addEventListener("submit", ((e4) => {
@@ -436,7 +696,7 @@ var require_magicfeedback_sdk_browser = __commonJS({
436
696
  generateWelcomeMessage(e3) {
437
697
  return n(this, void 0, void 0, (function* () {
438
698
  try {
439
- const t3 = this.generateContainer(), i2 = (0, o.renderStartMessage)(e3, this.formOptionsConfig.addButton, this.formOptionsConfig.startButtonText, (() => this.startForm()));
699
+ const t3 = this.generateContainer(), i2 = (0, l.renderStartMessage)(e3, this.formOptionsConfig.addButton, this.formOptionsConfig.startButtonText, (() => this.startForm()));
440
700
  t3.appendChild(i2), this.formOptionsConfig.onLoadedEvent && (yield this.formOptionsConfig.onLoadedEvent({ loading: false, formData: this.formData }));
441
701
  } catch (e4) {
442
702
  return this.log.err(e4), void (this.formOptionsConfig.onLoadedEvent && this.formOptionsConfig.onLoadedEvent({ loading: false, error: e4 }));
@@ -451,14 +711,21 @@ var require_magicfeedback_sdk_browser = __commonJS({
451
711
  i2.length > 0 && this.feedback.metadata.push({ key: `query-${t3}`, value: i2 });
452
712
  })), this.feedback.metadata.push({ key: "navigator-user", value: [navigator.userAgent] }), this.feedback.metadata.push({ key: "navigator-language", value: [navigator.language] }), this.feedback.metadata.push({ key: "navigator-platform", value: [navigator.platform] }), this.feedback.metadata.push({ key: "navigator-appVersion", value: [navigator.appVersion] }), this.feedback.metadata.push({ key: "navigator-appName", value: [navigator.appName] }), this.feedback.metadata.push({ key: "navigator-product", value: [navigator.product] }), this.feedback.metadata.push({ key: "screen-width", value: [window.screen.width.toString()] }), this.feedback.metadata.push({ key: "screen-height", value: [window.screen.height.toString()] }), this.appId && "" === this.publicKey && this.feedback.metadata.push({ key: "MAGICFEEDBACK_SESSION", value: [this.appId] });
453
713
  }
454
- send(e3, t3, i2) {
714
+ send(e3, t3, i2, s2) {
455
715
  return n(this, void 0, void 0, (function* () {
716
+ if (this.agentForm) return this.agentForm.next();
456
717
  const n2 = document.getElementById("magicfeedback-questions-" + this.appId);
457
718
  try {
458
- i2 && (this.feedback.profile = [...this.feedback.profile, ...i2]), t3 && (this.feedback.metrics = [...this.feedback.metrics, ...t3]), e3 && (this.feedback.metadata = [...this.feedback.metadata, ...e3]), this.answer(), this.formOptionsConfig.beforeSubmitEvent && (yield this.formOptionsConfig.beforeSubmitEvent({ loading: true, progress: this.progress, total: this.total }));
459
- const s2 = this.history.back();
460
- if (!s2) throw new Error("No page found");
461
- for (const e4 of s2.questions.filter(((e5) => e5.require && ![r.FEEDBACKAPPANSWERTYPE.CONSENT, r.FEEDBACKAPPANSWERTYPE.INFO_PAGE].includes(e5.type)))) {
719
+ if (i2 && (this.feedback.profile = [...this.feedback.profile, ...i2]), t3 && (this.feedback.metrics = [...this.feedback.metrics, ...t3]), e3 && (this.feedback.metadata = [...this.feedback.metadata, ...e3]), s2) {
720
+ this.feedback.answers = [...this.feedback.answers, ...s2], this.formOptionsConfig.beforeSubmitEvent && (yield this.formOptionsConfig.beforeSubmitEvent({ loading: true, progress: this.progress, total: this.total }));
721
+ const e4 = yield this.pushAnswers(false);
722
+ if (!e4) throw new Error("No response");
723
+ return this.id = e4, void (this.formOptionsConfig.afterSubmitEvent && (yield this.formOptionsConfig.afterSubmitEvent({ loading: false, progress: this.progress, total: this.total })));
724
+ }
725
+ yield (0, d.awaitUploadReady)(n2), this.answer(), this.formOptionsConfig.beforeSubmitEvent && (yield this.formOptionsConfig.beforeSubmitEvent({ loading: true, progress: this.progress, total: this.total }));
726
+ const o2 = this.history.back();
727
+ if (!o2) throw new Error("No page found");
728
+ for (const e4 of o2.questions.filter(((e5) => e5.require && ![r.FEEDBACKAPPANSWERTYPE.CONSENT, r.FEEDBACKAPPANSWERTYPE.INFO_PAGE].includes(e5.type)))) {
462
729
  const t4 = e4.assets, i3 = this.feedback.answers.filter(((t5) => t5.key.includes(e4.ref) && !t5.key.includes("extra-option")));
463
730
  if (0 === i3.length || i3.find(((e5) => 0 === e5.value.length))) throw this.log.err(`The question ${e4.ref} is required`), new Error("No response");
464
731
  if (null == t4 ? void 0 : t4.minOptions) {
@@ -489,35 +756,17 @@ var require_magicfeedback_sdk_browser = __commonJS({
489
756
  const e3 = document.getElementById("magicfeedback-" + this.appId);
490
757
  if (!e3) return this.log.err(`Form "${e3}" not found.`), this.feedback.answers = [], [];
491
758
  const t3 = this.history.back();
492
- if (!t3) {
493
- const t4 = e3.querySelectorAll(".magicfeedback-input"), i3 = [], n3 = {};
494
- return t4.forEach(((e4) => {
495
- var t5;
496
- const r2 = e4, s3 = r2.name;
497
- if (!s3) return;
498
- const a2 = r2.type;
499
- if (("radio" === a2 || "checkbox" === a2) && !r2.checked) return;
500
- const o3 = r2.value, l3 = r2.classList[0];
501
- if ((null == l3 ? void 0 : l3.includes("magicfeedback-priority-list")) || (null === (t5 = r2.id) || void 0 === t5 ? void 0 : t5.startsWith("priority-list-"))) return n3[s3] || (n3[s3] = []), void n3[s3].push(o3);
502
- const d3 = "magicfeedback-consent" === l3 ? r2.checked.toString() : o3;
503
- if (null == d3) return;
504
- const c2 = { key: s3, value: [d3] };
505
- i3.push(c2);
506
- })), Object.entries(n3).forEach((([e4, t5]) => {
507
- const n4 = t5.slice().sort(((e5, t6) => Number(e5.split(".")[0]) - Number(t6.split(".")[0])));
508
- i3.push({ key: e4, value: n4 });
509
- })), this.feedback.answers = i3, i3;
510
- }
759
+ if (!t3) return this.feedback.answers = (0, u.scrapeInputs)(e3), this.feedback.answers;
511
760
  const i2 = [];
512
761
  let n2 = false;
513
- const s2 = e3.querySelectorAll(".magicfeedback-input"), o2 = {}, l2 = {}, d2 = {};
762
+ const s2 = e3.querySelectorAll(".magicfeedback-input"), o2 = {}, l2 = {}, c2 = {};
514
763
  if (s2.forEach(((e4) => {
515
- const s3 = e4, c2 = t3.questions.find(((e5) => {
764
+ const s3 = e4, u2 = t3.questions.find(((e5) => {
516
765
  var t4;
517
766
  return null === (t4 = s3.name) || void 0 === t4 ? void 0 : t4.includes(e5.ref);
518
- })), u2 = s3.type, p2 = s3.classList[0], m = { key: s3.name, value: [] }, h = "magicfeedback-consent" === p2 ? s3.checked.toString() : s3.value;
519
- if (m.key && "" !== m.key) if (m.key.startsWith("extra-option-")) "" !== h && (m.value.push(h), i2.push(m));
520
- else switch (null == c2 ? void 0 : c2.type) {
767
+ })), p2 = s3.type, h2 = s3.classList[0], m2 = { key: s3.name, value: [] }, f2 = "magicfeedback-consent" === h2 ? s3.checked.toString() : s3.value;
768
+ if (m2.key && "" !== m2.key) if (m2.key.startsWith("extra-option-")) "" !== f2 && (m2.value.push(f2), i2.push(m2));
769
+ else switch (null == u2 ? void 0 : u2.type) {
521
770
  case r.FEEDBACKAPPANSWERTYPE.EMAIL:
522
771
  case r.FEEDBACKAPPANSWERTYPE.TEXT:
523
772
  case r.FEEDBACKAPPANSWERTYPE.LONGTEXT:
@@ -525,44 +774,49 @@ var require_magicfeedback_sdk_browser = __commonJS({
525
774
  case r.FEEDBACKAPPANSWERTYPE.DATE:
526
775
  case r.FEEDBACKAPPANSWERTYPE.CONTACT:
527
776
  case r.FEEDBACKAPPANSWERTYPE.PASSWORD:
528
- "" !== h && ("email" === u2 ? (0, a.validateEmail)(h) ? (this.feedback.profile.push({ key: "email", value: [h] }), m.value.push(h), i2.push(m)) : (this.log.err("Invalid email"), n2 = true) : (m.value.push(h), i2.push(m)));
777
+ "" !== f2 && ("email" === p2 ? (0, a.validateEmail)(f2) ? (this.feedback.profile.push({ key: "email", value: [f2] }), m2.value.push(f2), i2.push(m2)) : (this.log.err("Invalid email"), n2 = true) : (m2.value.push(f2), i2.push(m2)));
529
778
  break;
530
779
  case r.FEEDBACKAPPANSWERTYPE.RADIO:
531
- s3.checked && (m.value.push(h), i2.push(m));
780
+ s3.checked && (m2.value.push(f2), i2.push(m2));
532
781
  break;
533
782
  case r.FEEDBACKAPPANSWERTYPE.MULTIPLECHOICE:
534
783
  case r.FEEDBACKAPPANSWERTYPE.MULTIPLECHOISE_IMAGE:
535
- s3.checked && (l2[m.key] || (l2[m.key] = []), l2[m.key].push(h));
784
+ s3.checked && (l2[m2.key] || (l2[m2.key] = []), l2[m2.key].push(f2));
536
785
  break;
537
786
  case r.FEEDBACKAPPANSWERTYPE.BOOLEAN:
538
- s3.checked && (m.value.push(h), i2.push(m));
787
+ s3.checked && (m2.value.push(f2), i2.push(m2));
539
788
  break;
540
789
  case r.FEEDBACKAPPANSWERTYPE.CONSENT:
541
- m.value.push(s3.checked.toString()), i2.push(m);
790
+ m2.value.push(s3.checked.toString()), i2.push(m2);
542
791
  break;
543
792
  case r.FEEDBACKAPPANSWERTYPE.RATING_EMOJI:
544
793
  case r.FEEDBACKAPPANSWERTYPE.RATING_NUMBER:
545
794
  case r.FEEDBACKAPPANSWERTYPE.RATING_STAR:
546
- s3.checked && (m.value.push(h), i2.push(m));
795
+ s3.checked && (m2.value.push(f2), i2.push(m2));
547
796
  break;
548
797
  case r.FEEDBACKAPPANSWERTYPE.SELECT:
549
- "" !== h && (m.value.push(h), i2.push(m));
798
+ "" !== f2 && (m2.value.push(f2), i2.push(m2));
550
799
  break;
551
800
  case r.FEEDBACKAPPANSWERTYPE.POINT_SYSTEM:
552
- "number" === u2 && s3.id && (d2[m.key] || (d2[m.key] = []), "" !== h && d2[m.key].push(`${s3.id}:${h}%`));
801
+ "number" === p2 && s3.id && (c2[m2.key] || (c2[m2.key] = []), "" !== f2 && c2[m2.key].push(`${s3.id}:${f2}%`));
553
802
  break;
554
803
  case r.FEEDBACKAPPANSWERTYPE.PRIORITY_LIST:
555
- "hidden" === u2 && (o2[m.key] || (o2[m.key] = []), o2[m.key].push(h));
804
+ "hidden" === p2 && (o2[m2.key] || (o2[m2.key] = []), o2[m2.key].push(f2));
556
805
  break;
557
806
  case r.FEEDBACKAPPANSWERTYPE.MULTI_QUESTION_MATRIX:
558
- e4.checked && (m.value.push(h), i2.push(m));
807
+ e4.checked && (m2.value.push(f2), i2.push(m2));
808
+ break;
559
809
  case r.FEEDBACKAPPANSWERTYPE.UPLOAD_IMAGE:
560
- case r.FEEDBACKAPPANSWERTYPE.UPLOAD_FILE:
810
+ case r.FEEDBACKAPPANSWERTYPE.UPLOAD_FILE: {
811
+ const e5 = (0, d.getUploadValues)(s3);
812
+ e5.length && (m2.value.push(...e5), i2.push(m2));
813
+ break;
814
+ }
561
815
  }
562
816
  })), n2) return [];
563
817
  Object.entries(l2).forEach((([e4, t4]) => {
564
818
  t4 && 0 !== t4.length && i2.push({ key: e4, value: t4 });
565
- })), Object.entries(d2).forEach((([e4, t4]) => {
819
+ })), Object.entries(c2).forEach((([e4, t4]) => {
566
820
  t4 && 0 !== t4.length && i2.push({ key: e4, value: t4 });
567
821
  })), Object.entries(o2).forEach((([e4, t4]) => {
568
822
  if (!t4 || 0 === t4.length) return;
@@ -578,8 +832,8 @@ var require_magicfeedback_sdk_browser = __commonJS({
578
832
  const t5 = i2.findIndex(((t6) => t6.key === e5.key));
579
833
  -1 !== t5 && i2.splice(t5, 1);
580
834
  }
581
- const a2 = i2.findIndex(((t5) => t5.key === e4.ref));
582
- -1 !== a2 ? i2[a2] = s3 : i2.push(s3);
835
+ const o3 = i2.findIndex(((t5) => t5.key === e4.ref));
836
+ -1 !== o3 ? i2[o3] = s3 : i2.push(s3);
583
837
  }));
584
838
  } catch (e4) {
585
839
  this.log.err("Error agrupando MULTI_QUESTION_MATRIX", e4);
@@ -591,7 +845,7 @@ var require_magicfeedback_sdk_browser = __commonJS({
591
845
  if (this.completed = true, this.timeToCompleted = Date.now() - this.timeToCompleted, this.feedback.metadata.push({ key: "time-to-complete", value: [this.timeToCompleted.toString()] }), this.formOptionsConfig.addSuccessScreen) {
592
846
  const e3 = document.getElementById("magicfeedback-container-" + this.appId);
593
847
  e3.childNodes.length > 0 && e3.removeChild(e3.childNodes[0]);
594
- const t3 = (0, o.renderSuccess)(this.formOptionsConfig.successMessage || "Thank you for your feedback!");
848
+ const t3 = (0, l.renderSuccess)(this.formOptionsConfig.successMessage || "Thank you for your feedback!");
595
849
  e3.appendChild(t3);
596
850
  }
597
851
  this.answer();
@@ -623,7 +877,6 @@ var require_magicfeedback_sdk_browser = __commonJS({
623
877
  return n(this, void 0, void 0, (function* () {
624
878
  if (!(null == e3 ? void 0 : e3.followup)) return null;
625
879
  try {
626
- if (this.config.get("dryRun")) return this.log.log(`Dry run enabled: skipping follow up API for question ${e3.ref}`), null;
627
880
  if (0 === this.feedback.answers.length) throw new Error("No answers provided");
628
881
  const i2 = this.config.get("url"), n2 = Object.assign(Object.assign(Object.assign({ answer: null === (t3 = this.feedback.answers.find(((t4) => t4.key === e3.ref))) || void 0 === t3 ? void 0 : t3.value[0] }, "" !== this.publicKey && { publicKey: this.publicKey }), "" === this.publicKey && { campaignSessionId: this.appId }), { sessionId: this.id, question: e3 });
629
882
  return yield (0, a.getFollowUpQuestion)(i2, n2, this.log);
@@ -639,66 +892,66 @@ var require_magicfeedback_sdk_browser = __commonJS({
639
892
  if (!n2) throw new Error("No page found");
640
893
  const s2 = n2.getFollowupQuestions();
641
894
  if (0 === (null == s2 ? void 0 : s2.length)) return void (yield this.renderNextQuestion(e3, n2));
642
- const a2 = [];
895
+ const o2 = [];
643
896
  for (const e4 of s2) {
644
897
  const t4 = n2.questions.find(((t5) => t5.ref === e4));
645
898
  if (t4) {
646
899
  const e5 = yield this.callFollowUpQuestion(t4);
647
- e5 && a2.push(e5);
900
+ e5 && o2.push(e5);
648
901
  }
649
902
  }
650
- if (0 === a2.length) return void (yield this.renderNextQuestion(e3, n2));
651
- const l2 = new d.Page(n2.id, n2.position, this.appId, a2, n2.edges), c2 = new p.PageNode(n2.id, n2.position, n2.edges, l2, a2, true);
652
- c2.elements = (0, o.renderQuestions)(a2, this.formOptionsConfig.questionFormat, null === (t3 = this.formData) || void 0 === t3 ? void 0 : t3.lang[0], null === (i2 = this.formData) || void 0 === i2 ? void 0 : i2.product, (() => this.send())), this.history.enqueue(c2), this.progress += 0.5, e3.innerHTML = "", null === (r2 = c2.elements) || void 0 === r2 || r2.forEach(((t4) => e3.appendChild(t4))), this.formOptionsConfig.afterSubmitEvent && (yield this.formOptionsConfig.afterSubmitEvent({ response: this.id, loading: false, progress: this.progress, total: this.total, followup: c2.isFollowup, completed: this.completed, error: null }));
903
+ if (0 === o2.length) return void (yield this.renderNextQuestion(e3, n2));
904
+ const a2 = new h.Page(n2.id, n2.position, this.appId, o2, n2.edges), d2 = new g.PageNode(n2.id, n2.position, n2.edges, a2, o2, true);
905
+ d2.elements = (0, l.renderQuestions)(o2, this.formOptionsConfig.questionFormat, null === (t3 = this.formData) || void 0 === t3 ? void 0 : t3.lang[0], null === (i2 = this.formData) || void 0 === i2 ? void 0 : i2.product, (() => this.send())), this.history.enqueue(d2), this.progress += 0.5, e3.innerHTML = "", null === (r2 = d2.elements) || void 0 === r2 || r2.forEach(((t4) => e3.appendChild(t4))), this.formOptionsConfig.afterSubmitEvent && (yield this.formOptionsConfig.afterSubmitEvent({ response: this.id, loading: false, progress: this.progress, total: this.total, followup: d2.isFollowup, completed: this.completed, error: null }));
653
906
  }));
654
907
  }
655
908
  renderNextQuestion(e3, t3) {
656
- var i2, s2, a2, l2, d2;
909
+ var i2, s2, o2, a2, d2;
657
910
  return n(this, void 0, void 0, (function* () {
658
911
  let n2 = this.graph.getNextPage(t3, this.feedback.answers);
659
912
  if (!n2) return void this.finish();
660
- const u2 = n2.edges.filter(((e4) => "PRECONDITIONAL" === e4.typeCondition)).sort(((e4, t4) => e4.position < t4.position ? -1 : e4.position > t4.position ? 1 : 0));
661
- if ((null == u2 ? void 0 : u2.length) > 0) {
662
- const t4 = u2.some(((e4) => e4.transition === c.TransitionType.ALLOW));
663
- let a3 = t4;
664
- for (const t5 of u2) {
665
- let o2;
913
+ const c2 = n2.edges.filter(((e4) => "PRECONDITIONAL" === e4.typeCondition)).sort(((e4, t4) => e4.position < t4.position ? -1 : e4.position > t4.position ? 1 : 0));
914
+ if ((null == c2 ? void 0 : c2.length) > 0) {
915
+ const t4 = c2.some(((e4) => e4.transition === m.TransitionType.ALLOW));
916
+ let o3 = t4;
917
+ for (const t5 of c2) {
918
+ let a3;
666
919
  for (let e4 = this.history.size() - 1; e4 >= 0; e4--) {
667
920
  const n3 = this.history.get(e4);
668
- if (n3 && (o2 = null === (i2 = n3.answers) || void 0 === i2 ? void 0 : i2.find(((e5) => e5.key === t5.questionRef)), o2)) break;
921
+ if (n3 && (a3 = null === (i2 = n3.answers) || void 0 === i2 ? void 0 : i2.find(((e5) => e5.key === t5.questionRef)), a3)) break;
669
922
  }
670
- let l3 = false;
671
- if (o2) {
672
- const e4 = null === (s2 = this.formData) || void 0 === s2 ? void 0 : s2.questions.find(((e5) => e5.ref === t5.questionRef)), i3 = Array.isArray(o2.value) ? o2.value : [o2.value], n3 = Array.isArray(t5.value) ? t5.value : [t5.value];
673
- if ((null == e4 ? void 0 : e4.type) === r.FEEDBACKAPPANSWERTYPE.MULTI_QUESTION_MATRIX) l3 = this.evaluateMatrixPreconditional(t5, o2);
923
+ let l2 = false;
924
+ if (a3) {
925
+ const e4 = null === (s2 = this.formData) || void 0 === s2 ? void 0 : s2.questions.find(((e5) => e5.ref === t5.questionRef)), i3 = Array.isArray(a3.value) ? a3.value : [a3.value], n3 = Array.isArray(t5.value) ? t5.value : [t5.value];
926
+ if ((null == e4 ? void 0 : e4.type) === r.FEEDBACKAPPANSWERTYPE.MULTI_QUESTION_MATRIX) l2 = this.evaluateMatrixPreconditional(t5, a3);
674
927
  else switch (t5.typeOperator) {
675
928
  case "EQUAL":
676
929
  case "INQ":
677
- l3 = i3.some(((e5) => n3.includes(e5)));
930
+ l2 = i3.some(((e5) => n3.includes(e5)));
678
931
  break;
679
932
  case "NOEQUAL":
680
933
  case "NINQ":
681
- l3 = i3.every(((e5) => !n3.includes(e5)));
934
+ l2 = i3.every(((e5) => !n3.includes(e5)));
682
935
  break;
683
936
  case "GREATER":
684
- l3 = i3.some(((e5) => Number(e5) > Number(n3[0])));
937
+ l2 = i3.some(((e5) => Number(e5) > Number(n3[0])));
685
938
  break;
686
939
  case "LESS":
687
- l3 = i3.some(((e5) => Number(e5) < Number(n3[0])));
940
+ l2 = i3.some(((e5) => Number(e5) < Number(n3[0])));
688
941
  break;
689
942
  case "GREATEREQUAL":
690
- l3 = i3.some(((e5) => Number(e5) >= Number(n3[0])));
943
+ l2 = i3.some(((e5) => Number(e5) >= Number(n3[0])));
691
944
  break;
692
945
  case "LESSEQUAL":
693
- l3 = i3.some(((e5) => Number(e5) <= Number(n3[0])));
946
+ l2 = i3.some(((e5) => Number(e5) <= Number(n3[0])));
694
947
  }
695
948
  }
696
- if (t5.transition === c.TransitionType.ALLOW) l3 || (a3 = false);
697
- else if (t5.transition === c.TransitionType.NEXT && l3) return this.feedback.answers = [], void (n2 && (yield this.renderNextQuestion(e3, n2)));
949
+ if (t5.transition === m.TransitionType.ALLOW) l2 || (o3 = false);
950
+ else if (t5.transition === m.TransitionType.NEXT && l2) return this.feedback.answers = [], void (n2 && (yield this.renderNextQuestion(e3, n2)));
698
951
  }
699
- if (t4 && !a3) return this.feedback.answers = [], void (n2 && (yield this.renderNextQuestion(e3, n2)));
952
+ if (t4 && !o3) return this.feedback.answers = [], void (n2 && (yield this.renderNextQuestion(e3, n2)));
700
953
  }
701
- n2.elements = (0, o.renderQuestions)(n2.questions, this.formOptionsConfig.questionFormat, null === (a2 = this.formData) || void 0 === a2 ? void 0 : a2.lang[0], null === (l2 = this.formData) || void 0 === l2 ? void 0 : l2.product, (() => this.send())), e3.innerHTML = "", null === (d2 = n2.elements) || void 0 === d2 || d2.forEach(((t4) => e3.appendChild(t4))), this.history.enqueue(n2), this.progress = this.total - this.graph.findMaxDepth(n2), this.formOptionsConfig.afterSubmitEvent && (yield this.formOptionsConfig.afterSubmitEvent({ response: this.id, loading: false, progress: this.progress, total: this.total, followup: n2.isFollowup, completed: this.completed, error: null }));
954
+ n2.elements = (0, l.renderQuestions)(n2.questions, this.formOptionsConfig.questionFormat, null === (o2 = this.formData) || void 0 === o2 ? void 0 : o2.lang[0], null === (a2 = this.formData) || void 0 === a2 ? void 0 : a2.product, (() => this.send())), e3.innerHTML = "", null === (d2 = n2.elements) || void 0 === d2 || d2.forEach(((t4) => e3.appendChild(t4))), this.history.enqueue(n2), this.progress = this.total - this.graph.findMaxDepth(n2), this.formOptionsConfig.afterSubmitEvent && (yield this.formOptionsConfig.afterSubmitEvent({ response: this.id, loading: false, progress: this.progress, total: this.total, followup: n2.isFollowup, completed: this.completed, error: null }));
702
955
  }));
703
956
  }
704
957
  back() {
@@ -712,25 +965,25 @@ var require_magicfeedback_sdk_browser = __commonJS({
712
965
  }));
713
966
  }
714
967
  previewQuestion(e3, t3, i2) {
715
- var n2, r2;
716
- const s2 = Array.isArray(t3) ? t3 : [t3];
717
- if (!s2 || 0 === s2.length) throw new Error("[MagicFeedback] No question provided for preview");
968
+ var n2, r2, s2;
969
+ const o2 = Array.isArray(t3) ? t3 : [t3];
970
+ if (!o2 || 0 === o2.length) throw new Error("[MagicFeedback] No question provided for preview");
718
971
  const a2 = document.getElementById(e3);
719
972
  if (!a2) throw new Error(`[MagicFeedback] Element with ID '${e3}' not found.`);
720
- const { format: l2 = this.formOptionsConfig.questionFormat || "standard", language: d2 = (null === (n2 = this.formData) || void 0 === n2 ? void 0 : n2.lang) && this.formData.lang[0] || "en", product: c2 = (null === (r2 = this.formData) || void 0 === r2 ? void 0 : r2.product) || { customIcons: false }, clearContainer: u2 = true, wrap: p2 = true } = i2 || {};
721
- u2 && (a2.innerHTML = "");
722
- let m = [];
973
+ const { format: d2 = this.formOptionsConfig.questionFormat || "standard", language: u2 = (null === (n2 = this.formData) || void 0 === n2 ? void 0 : n2.lang) && this.formData.lang[0] || "en", product: p2 = (null === (r2 = this.formData) || void 0 === r2 ? void 0 : r2.product) || { customIcons: false }, style: h2 = (null === (s2 = this.formData) || void 0 === s2 ? void 0 : s2.style) || {}, clearContainer: m2 = true, wrap: f2 = true } = i2 || {};
974
+ m2 && (a2.innerHTML = ""), (null == h2 ? void 0 : h2.primaryColor) && (0, c.applyPrimaryColor)(a2, h2.primaryColor);
975
+ let g2 = [];
723
976
  try {
724
- m = (0, o.renderQuestions)(s2, l2, d2, c2);
977
+ g2 = (0, l.renderQuestions)(o2, d2, u2, p2);
725
978
  } catch (e4) {
726
979
  throw this.log.err(e4), e4;
727
980
  }
728
- let h = a2;
729
- if (p2) {
981
+ let v = a2;
982
+ if (f2) {
730
983
  const e4 = document.createElement("div");
731
- e4.classList.add("magicfeedback-preview-question"), h.appendChild(e4), h = e4;
984
+ e4.classList.add("magicfeedback-preview-question"), v.appendChild(e4), v = e4;
732
985
  }
733
- return m.forEach(((e4) => h.appendChild(e4))), a2;
986
+ return g2.forEach(((e4) => v.appendChild(e4))), a2;
734
987
  }
735
988
  parseMatrixAnswerPre(e3) {
736
989
  if (!e3 || !e3.value) return [];
@@ -814,28 +1067,28 @@ var require_magicfeedback_sdk_browser = __commonJS({
814
1067
  if (!e3) return;
815
1068
  e3.edges.sort(((e4, t4) => "DIRECT" === e4.typeCondition ? 1 : "DIRECT" === t4.typeCondition ? -1 : 0));
816
1069
  const n2 = e3.edges.find(((i3) => {
817
- const n3 = e3.questions.find(((e4) => e4.ref === i3.questionRef)), a = null == t3 ? void 0 : t3.filter(((e4) => e4.key === i3.questionRef));
1070
+ const n3 = e3.questions.find(((e4) => e4.ref === i3.questionRef)), o = null == t3 ? void 0 : t3.filter(((e4) => e4.key === i3.questionRef));
818
1071
  if ("DIRECT" === i3.typeCondition) return true;
819
- if (!a || 0 === a.length) return false;
820
- if ((null == n3 ? void 0 : n3.type) === r.FEEDBACKAPPANSWERTYPE.MULTI_QUESTION_MATRIX) return this.evaluateMatrixCondition(i3, a);
821
- const o = Array.isArray(i3.value) ? i3.value : [i3.value];
1072
+ if (!o || 0 === o.length) return false;
1073
+ if ((null == n3 ? void 0 : n3.type) === r.FEEDBACKAPPANSWERTYPE.MULTI_QUESTION_MATRIX) return this.evaluateMatrixCondition(i3, o);
1074
+ const a = Array.isArray(i3.value) ? i3.value : [i3.value];
822
1075
  switch (i3.typeOperator) {
823
1076
  case s.OperatorType.EQUAL:
824
- return a.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => o.includes(e5)))));
1077
+ return o.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => a.includes(e5)))));
825
1078
  case s.OperatorType.NOEQUAL:
826
- return a.every(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).every(((e5) => !o.includes(e5)))));
1079
+ return o.every(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).every(((e5) => !a.includes(e5)))));
827
1080
  case s.OperatorType.GREATER:
828
- return a.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => o.some(((t4) => Number(e5) > Number(t4)))))));
1081
+ return o.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => a.some(((t4) => Number(e5) > Number(t4)))))));
829
1082
  case s.OperatorType.LESS:
830
- return a.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => o.some(((t4) => Number(e5) < Number(t4)))))));
1083
+ return o.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => a.some(((t4) => Number(e5) < Number(t4)))))));
831
1084
  case s.OperatorType.GREATEREQUAL:
832
- return a.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => o.some(((t4) => Number(e5) >= Number(t4)))))));
1085
+ return o.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => a.some(((t4) => Number(e5) >= Number(t4)))))));
833
1086
  case s.OperatorType.LESSEQUAL:
834
- return a.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => o.some(((t4) => Number(e5) <= Number(t4)))))));
1087
+ return o.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => a.some(((t4) => Number(e5) <= Number(t4)))))));
835
1088
  case s.OperatorType.INQ:
836
- return a.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => o.includes(e5)))));
1089
+ return o.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => a.includes(e5)))));
837
1090
  case s.OperatorType.NINQ:
838
- return a.every(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).every(((e5) => !o.includes(e5)))));
1091
+ return o.every(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).every(((e5) => !a.includes(e5)))));
839
1092
  default:
840
1093
  return false;
841
1094
  }
@@ -872,17 +1125,17 @@ var require_magicfeedback_sdk_browser = __commonJS({
872
1125
  DFSUtil(e3, t3, i2) {
873
1126
  t3.add(e3);
874
1127
  let n2 = i2;
875
- const r2 = [...e3.edges.filter(((e4) => e4.typeCondition !== s.ConditionType.PRECONDITIONAL)) || []], a = this.getNextEdgeByDefault(e3);
876
- if (a) {
877
- const i3 = this.getNodeById(a);
1128
+ const r2 = [...e3.edges.filter(((e4) => e4.typeCondition !== s.ConditionType.PRECONDITIONAL)) || []], o = this.getNextEdgeByDefault(e3);
1129
+ if (o) {
1130
+ const i3 = this.getNodeById(o);
878
1131
  i3 && !t3.has(i3) && r2.push(new s.PageRoute(i3.id, "", s.OperatorType.DEFAULT, [""], s.TransitionType.PAGE, i3.id, e3.id));
879
1132
  }
880
1133
  for (const e4 of r2) {
881
1134
  if (!e4.transitionDestiny) continue;
882
1135
  const r3 = this.getNodeById(e4.transitionDestiny);
883
1136
  if (r3 && !t3.has(r3)) {
884
- const e5 = i2 + 1, s2 = new Set(t3), a2 = this.DFSUtil(r3, s2, e5);
885
- n2 = Math.max(n2, a2);
1137
+ const e5 = i2 + 1, s2 = new Set(t3), o2 = this.DFSUtil(r3, s2, e5);
1138
+ n2 = Math.max(n2, o2);
886
1139
  }
887
1140
  }
888
1141
  return n2;
@@ -898,25 +1151,25 @@ var require_magicfeedback_sdk_browser = __commonJS({
898
1151
  return Array.isArray(e3.value) && e3.value.length > 0 && "object" == typeof e3.value[0] && null !== e3.value[0] && "key" in e3.value[0] ? e3.value : [];
899
1152
  }
900
1153
  evaluateMatrixCondition(e3, t3) {
901
- const i2 = Array.isArray(e3.value) ? e3.value : [e3.value], n2 = new Set(e3.option || []), r2 = t3[0], a = this.parseMatrixAnswer(r2);
902
- if (!a.length) return false;
903
- const o = n2.size > 0 ? a.filter(((e4) => n2.has(e4.key))) : a;
1154
+ const i2 = Array.isArray(e3.value) ? e3.value : [e3.value], n2 = new Set(e3.option || []), r2 = t3[0], o = this.parseMatrixAnswer(r2);
904
1155
  if (!o.length) return false;
1156
+ const a = n2.size > 0 ? o.filter(((e4) => n2.has(e4.key))) : o;
1157
+ if (!a.length) return false;
905
1158
  switch (e3.typeOperator) {
906
1159
  case s.OperatorType.EQUAL:
907
1160
  case s.OperatorType.INQ:
908
- return o.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => i2.includes(e5)))));
1161
+ return a.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => i2.includes(e5)))));
909
1162
  case s.OperatorType.NOEQUAL:
910
1163
  case s.OperatorType.NINQ:
911
- return o.every(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).every(((e5) => !i2.includes(e5)))));
1164
+ return a.every(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).every(((e5) => !i2.includes(e5)))));
912
1165
  case s.OperatorType.GREATER:
913
- return o.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => i2.some(((t4) => Number(e5) > Number(t4)))))));
1166
+ return a.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => i2.some(((t4) => Number(e5) > Number(t4)))))));
914
1167
  case s.OperatorType.LESS:
915
- return o.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => i2.some(((t4) => Number(e5) < Number(t4)))))));
1168
+ return a.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => i2.some(((t4) => Number(e5) < Number(t4)))))));
916
1169
  case s.OperatorType.GREATEREQUAL:
917
- return o.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => i2.some(((t4) => Number(e5) >= Number(t4)))))));
1170
+ return a.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => i2.some(((t4) => Number(e5) >= Number(t4)))))));
918
1171
  case s.OperatorType.LESSEQUAL:
919
- return o.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => i2.some(((t4) => Number(e5) <= Number(t4)))))));
1172
+ return a.some(((e4) => (Array.isArray(e4.value) ? e4.value : [e4.value]).some(((e5) => i2.some(((t4) => Number(e5) <= Number(t4)))))));
920
1173
  default:
921
1174
  return false;
922
1175
  }
@@ -946,17 +1199,26 @@ var require_magicfeedback_sdk_browser = __commonJS({
946
1199
  })(i = t2.ConditionType || (t2.ConditionType = {})), (r = t2.OperatorType || (t2.OperatorType = {})).EQUAL = "EQUAL", r.NOEQUAL = "NOEQUAL", r.GREATER = "GREATER", r.LESS = "LESS", r.GREATEREQUAL = "GREATEREQUAL", r.LESSEQUAL = "LESSEQUAL", r.INQ = "INQ", r.NINQ = "NINQ", r.DEFAULT = "DEFAULT", (function(e3) {
947
1200
  e3.ACTIVE = "ACTIVE", e3.DEPRECATED = "DEPRECATED", e3.DELETE = "DELETE";
948
1201
  })(n = t2.StatusType || (t2.StatusType = {})), t2.PageRoute = class {
949
- constructor(e3, t3, r2, s2, a, o, l, d, c, u) {
950
- this.id = e3, this.questionRef = t3, this.typeCondition = d || i.LOGICAL, this.typeOperator = r2, this.value = s2 || [], this.transition = a, this.transitionDestiny = o, this.status = n.ACTIVE, this.generatedAt = /* @__PURE__ */ new Date(), this.updatedAt = /* @__PURE__ */ new Date(), this.integrationPageId = l, this.position = c || 0, this.option = u || [];
1202
+ constructor(e3, t3, r2, s2, o, a, l, d, c, u) {
1203
+ this.id = e3, this.questionRef = t3, this.typeCondition = d || i.LOGICAL, this.typeOperator = r2, this.value = s2 || [], this.transition = o, this.transitionDestiny = a, this.status = n.ACTIVE, this.generatedAt = /* @__PURE__ */ new Date(), this.updatedAt = /* @__PURE__ */ new Date(), this.integrationPageId = l, this.position = c || 0, this.option = u || [];
951
1204
  }
952
1205
  };
953
1206
  }, 558: (e2, t2) => {
954
1207
  "use strict";
955
1208
  var i, n;
956
- Object.defineProperty(t2, "__esModule", { value: true }), t2.QuestionType = t2.FEEDBACKAPPANSWERTYPE = void 0, (n = t2.FEEDBACKAPPANSWERTYPE || (t2.FEEDBACKAPPANSWERTYPE = {})).CONTACT = "CONTACT", n.MULTIPLECHOISE_IMAGE = "MULTIPLECHOISE_IMAGE", n.EMAIL = "EMAIL", n.RATING_STAR = "RATING_STAR", n.RADIO = "RADIO", n.MULTIPLECHOICE = "MULTIPLECHOICE", n.SELECT = "SELECT", n.TEXT = "TEXT", n.LONGTEXT = "LONGTEXT", n.NUMBER = "NUMBER", n.RATING_EMOJI = "RATING_EMOJI", n.RATING_NUMBER = "RATING_NUMBER", n.DATE = "DATE", n.BOOLEAN = "BOOLEAN", n.PASSWORD = "PASSWORD", n.CONSENT = "CONSENT", n.MULTI_QUESTION_MATRIX = "MULTI_QUESTION_MATRIX", n.POINT_SYSTEM = "POINT_SYSTEM", n.PRIORITY_LIST = "PRIORITY_LIST", n.INFO_PAGE = "INFO_PAGE", n.UPLOAD_FILE = "UPLOAD_FILE", n.UPLOAD_IMAGE = "UPLOAD_IMAGE", t2.QuestionType = class {
957
- }, (function(e3) {
1209
+ Object.defineProperty(t2, "__esModule", { value: true }), t2.AGENT_ANSWER_TYPE_BLOCKED = t2.QuestionType = t2.FEEDBACKAPPANSWERTYPE = void 0, (n = t2.FEEDBACKAPPANSWERTYPE || (t2.FEEDBACKAPPANSWERTYPE = {})).CONTACT = "CONTACT", n.MULTIPLECHOISE_IMAGE = "MULTIPLECHOISE_IMAGE", n.EMAIL = "EMAIL", n.RATING_STAR = "RATING_STAR", n.RADIO = "RADIO", n.MULTIPLECHOICE = "MULTIPLECHOICE", n.SELECT = "SELECT", n.TEXT = "TEXT", n.LONGTEXT = "LONGTEXT", n.NUMBER = "NUMBER", n.RATING_EMOJI = "RATING_EMOJI", n.RATING_NUMBER = "RATING_NUMBER", n.DATE = "DATE", n.BOOLEAN = "BOOLEAN", n.PASSWORD = "PASSWORD", n.CONSENT = "CONSENT", n.MULTI_QUESTION_MATRIX = "MULTI_QUESTION_MATRIX", n.POINT_SYSTEM = "POINT_SYSTEM", n.PRIORITY_LIST = "PRIORITY_LIST", n.INFO_PAGE = "INFO_PAGE", n.UPLOAD_FILE = "UPLOAD_FILE", n.UPLOAD_IMAGE = "UPLOAD_IMAGE", t2.QuestionType = class {
1210
+ }, t2.AGENT_ANSWER_TYPE_BLOCKED = "ABUSIVE_OR_OFFENSIVE", (function(e3) {
958
1211
  e3.FORM = "form", e3.DIV = "div";
959
1212
  })(i || (i = {}));
1213
+ }, 565: (e2, t2) => {
1214
+ "use strict";
1215
+ Object.defineProperty(t2, "__esModule", { value: true }), t2.applyPrimaryColor = t2.generateContainer = void 0, t2.generateContainer = function(e3, t3) {
1216
+ let i = document.getElementById(e3);
1217
+ if (!i && (i = document.getElementById("magicfeedback-container-" + t3), !i)) throw new Error(`Element with ID '${e3}' not found.`);
1218
+ return i.classList.add("magicfeedback-container"), i.id = "magicfeedback-container-" + t3, i.innerHTML = "", i;
1219
+ }, t2.applyPrimaryColor = function(e3, t3) {
1220
+ e3.style.setProperty("--mf-primary", t3), e3.style.setProperty("--mf-primary-hover", `color-mix(in srgb, ${t3} 85%, black)`), e3.style.setProperty("--mf-primary-light", `color-mix(in srgb, ${t3} 15%, white)`), e3.style.setProperty("--mf-primary-border", `color-mix(in srgb, ${t3} 35%, transparent)`), e3.style.setProperty("--mf-border-focus", t3);
1221
+ };
960
1222
  }, 516: (e2, t2) => {
961
1223
  "use strict";
962
1224
  Object.defineProperty(t2, "__esModule", { value: true }), t2.getUrlParam = t2.getBooleanOptions = t2.parseTitle = void 0, t2.parseTitle = function(e3, t3) {
@@ -1004,81 +1266,106 @@ var require_magicfeedback_sdk_browser = __commonJS({
1004
1266
  };
1005
1267
  }, 559: (e2, t2) => {
1006
1268
  "use strict";
1007
- function i(e3, t3, i2, n, r = false, s = true, a = "ltr", o = "row") {
1008
- const l = document.createElement("div");
1009
- l.classList.add("magicfeedback-rating-placeholder"), l.style.display = "flex", l.style.flexDirection = o, l.style.alignItems = "center", l.style.justifyContent = "space-between", l.style.width = r ? `calc(100% - (100% / ${t3 + 1}))` : "100%", l.style.marginRight = "auto", s && window.innerWidth < 600 && (l.style.flexDirection = "column");
1010
- const d = document.createElement("span");
1011
- d.textContent = null != i2 ? i2 : null, d.classList.add("magicfeedback-rating-placeholder-value"), d.style.fontSize = "15px", d.style.display = "block", d.style.minWidth = "0", d.style.overflowWrap = "anywhere", d.style.wordBreak = "break-word", d.style.textAlign = "ltr" === a ? "left" : "right", d.style.width = "50%", (s && window.innerWidth < 600 || "column" === o) && (d.textContent = `${e3} = ${i2}`, d.style.width = "100%", d.style.textAlign = "left", d.style.marginBottom = "5px");
1012
- const c = document.createElement("span");
1013
- return c.textContent = null != n ? n : null, c.classList.add("magicfeedback-rating-placeholder-value"), c.style.fontSize = "15px", c.style.display = "block", c.style.minWidth = "0", c.style.overflowWrap = "anywhere", c.style.wordBreak = "break-word", c.style.textAlign = "ltr" === a ? "right" : "left", c.style.width = "50%", (s && window.innerWidth < 600 || "column" === o) && (c.textContent = `${t3} = ${n}`, c.style.width = "100%", c.style.textAlign = "left", c.style.marginBottom = "5px"), "ltr" === a ? (i2 && l.appendChild(d), n && l.appendChild(c)) : (n && l.appendChild(c), i2 && l.appendChild(d)), l;
1269
+ function i(e3, t3, i2 = "ltr") {
1270
+ const n = document.createElement("div");
1271
+ n.classList.add("magicfeedback-rating-placeholder");
1272
+ const r = document.createElement("span");
1273
+ r.textContent = null != e3 ? e3 : "", r.classList.add("magicfeedback-rating-placeholder-value");
1274
+ const s = document.createElement("span");
1275
+ return s.textContent = null != t3 ? t3 : "", s.classList.add("magicfeedback-rating-placeholder-value"), "ltr" === i2 ? (e3 && n.appendChild(r), t3 && n.appendChild(s)) : (t3 && n.appendChild(s), e3 && n.appendChild(r)), n;
1014
1276
  }
1015
1277
  Object.defineProperty(t2, "__esModule", { value: true }), t2.createRatingNumberElement = t2.createStarRating = t2.createRatingPlaceholder = void 0, t2.createRatingPlaceholder = i, t2.createStarRating = function(e3, t3, n, r = () => {
1016
1278
  }, s) {
1017
- const a = "magicfeedback-rating-star-selected", o = document.createElement("div");
1018
- o.classList.add("magicfeedback-rating-star-container"), o.style.maxWidth = "300px", o.style.margin = "auto", o.dataset.originalSelection = "0";
1279
+ const o = "magicfeedback-rating-star-selected", a = document.createElement("div");
1280
+ a.classList.add("magicfeedback-rating-star-container"), a.style.maxWidth = "300px", a.style.margin = "auto", a.dataset.originalSelection = "0";
1019
1281
  for (let t4 = 1; t4 <= 5; t4++) {
1020
1282
  const i2 = document.createElement("label");
1021
1283
  i2.classList.add("magicfeedback-rating-star-option");
1022
1284
  const n2 = document.createElement("input");
1023
1285
  n2.id = `rating-${e3}-${t4}`, n2.type = "radio", n2.name = e3, n2.value = t4.toString(), n2.style.position = "absolute", n2.style.opacity = "0", n2.style.width = "0", n2.style.height = "0", n2.classList.add("magicfeedback-input"), s && s === n2.value && (n2.checked = true), n2.addEventListener("change", (() => {
1024
- const e4 = o.querySelectorAll(".rating__star");
1025
- for (let t5 = 0; t5 < e4.length; t5++) t5 + 1 <= Number(n2.value) ? e4[t5].classList.contains(a) || e4[t5].classList.add(a) : e4[t5].classList.contains(a) && e4[t5].classList.remove(a);
1026
- o.dataset.originalSelection = n2.value, r && r();
1286
+ const e4 = a.querySelectorAll(".rating__star");
1287
+ for (let t5 = 0; t5 < e4.length; t5++) t5 + 1 <= Number(n2.value) ? e4[t5].classList.contains(o) || e4[t5].classList.add(o) : e4[t5].classList.contains(o) && e4[t5].classList.remove(o);
1288
+ a.dataset.originalSelection = n2.value, r && r();
1027
1289
  })), i2.appendChild(n2);
1028
1290
  const l2 = document.createElement("label");
1029
1291
  l2.htmlFor = `rating-${e3}-${t4}`, l2.classList.add("rating__star"), l2.textContent = "\u2605", l2.style.fontSize = "40px", l2.style.color = "#CCCCCC", l2.style.cursor = "pointer", l2.addEventListener("mouseenter", (() => {
1030
- const e4 = o.querySelectorAll(".rating__star"), i3 = t4 - 1;
1292
+ const e4 = a.querySelectorAll(".rating__star"), i3 = t4 - 1;
1031
1293
  e4.forEach(((e5, t5) => {
1032
- t5 <= i3 ? e5.classList.contains(a) || e5.classList.add(a) : e5.classList.contains(a) && e5.classList.remove(a);
1294
+ t5 <= i3 ? e5.classList.contains(o) || e5.classList.add(o) : e5.classList.contains(o) && e5.classList.remove(o);
1033
1295
  }));
1034
1296
  })), l2.addEventListener("mouseleave", (() => {
1035
- const e4 = Number(o.dataset.originalSelection || "0");
1036
- o.querySelectorAll(".rating__star").forEach(((t5, i3) => {
1037
- i3 < e4 ? t5.classList.contains(a) || t5.classList.add(a) : t5.classList.contains(a) && t5.classList.remove(a);
1297
+ const e4 = Number(a.dataset.originalSelection || "0");
1298
+ a.querySelectorAll(".rating__star").forEach(((t5, i3) => {
1299
+ i3 < e4 ? t5.classList.contains(o) || t5.classList.add(o) : t5.classList.contains(o) && t5.classList.remove(o);
1038
1300
  }));
1039
- })), i2.appendChild(l2), o.appendChild(i2);
1301
+ })), i2.appendChild(l2), a.appendChild(i2);
1302
+ }
1303
+ const l = i(t3, n);
1304
+ return l.childElementCount > 0 && a.appendChild(l), a;
1305
+ }, t2.createRatingNumberElement = function(e3, t3, i2, n, r, s, o) {
1306
+ var a, l;
1307
+ const d = document.createElement("div");
1308
+ d.classList.add("magicfeedback-rating-number");
1309
+ const c = "column" === n, u = "ltr" === i2 ? n : `${n}-reverse`, p = document.createElement("div");
1310
+ p.classList.add("magicfeedback-rating-number-container"), p.classList.add(`magicfeedback-rating-number-container-${i2}`), p.classList.add(`magicfeedback-rating-number-container-${n}`), p.style.display = "flex", p.style.flexDirection = u, p.setAttribute("role", "radiogroup"), p.setAttribute("aria-label", (null == t3 ? void 0 : t3.ariaLabel) || "Rating");
1311
+ const h = (null == t3 ? void 0 : t3.max) ? Number(null == t3 ? void 0 : t3.max) : 10, m = (null == t3 ? void 0 : t3.min) ? Number(null == t3 ? void 0 : t3.min) : 0;
1312
+ !c && h - m + 1 > 6 && p.classList.add("magicfeedback-rating-number-container-row--dense");
1313
+ const f = (null == t3 ? void 0 : t3.numberPlaceholders) || null, g = !(!f || !Object.keys(f).length);
1314
+ let v = null;
1315
+ if (!c && ((null == t3 ? void 0 : t3.minPlaceholder) || (null == t3 ? void 0 : t3.maxPlaceholder))) {
1316
+ v = document.createElement("div"), v.classList.add("magicfeedback-rating-number-scale-labels");
1317
+ const e4 = document.createElement("span");
1318
+ e4.classList.add("magicfeedback-rating-number-scale-label"), e4.textContent = null !== (a = null == t3 ? void 0 : t3.minPlaceholder) && void 0 !== a ? a : "";
1319
+ const n2 = document.createElement("span");
1320
+ n2.classList.add("magicfeedback-rating-number-scale-label"), n2.textContent = null !== (l = null == t3 ? void 0 : t3.maxPlaceholder) && void 0 !== l ? l : "", "ltr" === i2 ? (v.appendChild(e4), v.appendChild(n2)) : (v.appendChild(n2), v.appendChild(e4));
1321
+ }
1322
+ let y = null;
1323
+ if (c && !g && (p.classList.add("magicfeedback-rating-number-container-column--bare"), (null == t3 ? void 0 : t3.minPlaceholder) || (null == t3 ? void 0 : t3.maxPlaceholder))) {
1324
+ const e4 = "ltr" === i2 ? null == t3 ? void 0 : t3.minPlaceholder : null == t3 ? void 0 : t3.maxPlaceholder, n2 = "ltr" === i2 ? null == t3 ? void 0 : t3.maxPlaceholder : null == t3 ? void 0 : t3.minPlaceholder;
1325
+ if (e4) {
1326
+ const t4 = document.createElement("div");
1327
+ t4.classList.add("magicfeedback-rating-number-scale-label-block"), t4.textContent = e4, d.appendChild(t4);
1328
+ }
1329
+ n2 && (y = document.createElement("div"), y.classList.add("magicfeedback-rating-number-scale-label-block"), y.textContent = n2);
1040
1330
  }
1041
- const l = i(1, 5, t3, n, false, false);
1042
- return l.childElementCount > 0 && (o.classList.add("magicfeedback-rating-container--with-placeholder"), o.insertBefore(l, o.firstChild)), o;
1043
- }, t2.createRatingNumberElement = function(e3, t3, n, r, s, a, o, l) {
1044
- var d;
1045
- const c = document.createElement("div");
1046
- c.classList.add("magicfeedback-rating-number");
1047
- const u = "ltr" === n ? r : `${r}-reverse`, p = document.createElement("div");
1048
- p.classList.add("magicfeedback-rating-number-container"), p.classList.add(`magicfeedback-rating-number-container-${n}`), p.classList.add(`magicfeedback-rating-number-container-${r}`), p.style.display = "flex", p.style.flexDirection = u, p.setAttribute("role", "radiogroup"), p.setAttribute("aria-label", (null == t3 ? void 0 : t3.ariaLabel) || "Rating");
1049
- const m = (null == t3 ? void 0 : t3.max) ? Number(null == t3 ? void 0 : t3.max) : 10, h = (null == t3 ? void 0 : t3.min) ? Number(null == t3 ? void 0 : t3.min) : 0, f = (null == t3 ? void 0 : t3.numberPlaceholders) || null, v = !(s || "column" === r) && ((null == t3 ? void 0 : t3.minPlaceholder) || (null == t3 ? void 0 : t3.maxPlaceholder));
1050
- if (v) {
1051
- const e4 = i(h, m, null == t3 ? void 0 : t3.minPlaceholder, null == t3 ? void 0 : t3.maxPlaceholder, null !== (d = null == t3 ? void 0 : t3.extraOption) && void 0 !== d && d, false, n, "row");
1052
- e4.childElementCount > 0 && (p.classList.add("magicfeedback-rating-number-container--with-placeholder"), p.insertBefore(e4, p.firstChild));
1053
- }
1054
- for (let i2 = h; i2 <= m; i2++) {
1055
- const n2 = document.createElement("div");
1056
- n2.classList.add("magicfeedback-rating-number-option"), n2.classList.add(`magicfeedback-rating-number-option-${r}`);
1057
- const d2 = document.createElement("label");
1058
- d2.htmlFor = `rating-${e3}-${i2}`, d2.classList.add("magicfeedback-rating-number-option-label-container");
1059
- let c2 = i2.toString();
1060
- v ? f && f[i2] && !s && (d2.title = f[i2]) : f && f[i2] ? c2 += ` = ${f[i2]}` : i2 === h && (null == t3 ? void 0 : t3.minPlaceholder) ? c2 += ` = ${null == t3 ? void 0 : t3.minPlaceholder}` : i2 === m && (null == t3 ? void 0 : t3.maxPlaceholder) && (c2 += ` = ${null == t3 ? void 0 : t3.maxPlaceholder}`);
1061
- const u2 = document.createElement("input");
1062
- u2.id = `rating-${e3}-${i2}`, u2.type = "radio", u2.name = e3, u2.value = i2.toString(), u2.classList.add(a), u2.classList.add("magicfeedback-input"), u2.setAttribute("aria-label", `${i2}`), o && u2.addEventListener("change", (() => o())), l && l === u2.value && (u2.checked = true);
1063
- const g = document.createElement("label");
1064
- g.htmlFor = `rating-${e3}-${i2}`, g.textContent = c2, g.classList.add("magicfeedback-rating-number-value"), d2.appendChild(u2), d2.appendChild(g), n2.appendChild(d2), p.appendChild(n2);
1065
- }
1066
- if ((null == t3 ? void 0 : t3.extraOption) && (null == t3 ? void 0 : t3.extraOptionText)) {
1067
- const i2 = document.createElement("div");
1068
- i2.classList.add("magicfeedback-rating-number-option");
1069
- const r2 = document.createElement("label");
1070
- r2.htmlFor = `rating-${e3}-extra`, r2.classList.add("magicfeedback-rating-number-option-label-container");
1071
- const s2 = document.createElement("input");
1072
- s2.id = `rating-${e3}-extra`, s2.type = "radio", s2.name = e3, s2.value = "-", s2.classList.add(a), s2.classList.add("magicfeedback-input"), s2.setAttribute("aria-label", null == t3 ? void 0 : t3.extraOptionText), o && s2.addEventListener("change", (() => o()));
1331
+ for (let i3 = m; i3 <= h; i3++) {
1332
+ const a2 = document.createElement("div");
1333
+ a2.classList.add("magicfeedback-rating-number-option"), a2.classList.add(`magicfeedback-rating-number-option-${n}`);
1073
1334
  const l2 = document.createElement("label");
1074
- l2.htmlFor = `rating-${e3}-extra`, l2.textContent = null == t3 ? void 0 : t3.extraOptionText, l2.classList.add("magicfeedback-rating-number-value"), r2.appendChild(s2), r2.appendChild(l2), i2.appendChild(r2), "ltr" === n ? p.appendChild(i2) : p.insertBefore(i2, p.firstChild);
1335
+ l2.htmlFor = `rating-${e3}-${i3}`, l2.classList.add("magicfeedback-rating-number-option-label-container");
1336
+ const d2 = g && (f[i3] || (i3 === m ? null == t3 ? void 0 : t3.minPlaceholder : void 0) || (i3 === h ? null == t3 ? void 0 : t3.maxPlaceholder : void 0)), u2 = document.createElement("input");
1337
+ u2.id = `rating-${e3}-${i3}`, u2.type = "radio", u2.name = e3, u2.value = i3.toString(), u2.classList.add(r), u2.classList.add("magicfeedback-input"), u2.setAttribute("aria-label", d2 ? `${i3} \u2014 ${d2}` : `${i3}`), s && u2.addEventListener("change", (() => s())), o && o === u2.value && (u2.checked = true), l2.appendChild(u2);
1338
+ const v2 = document.createElement("span");
1339
+ v2.classList.add("magicfeedback-rating-number-value");
1340
+ const y2 = document.createElement("span");
1341
+ if (y2.textContent = i3.toString(), y2.classList.add("magicfeedback-rating-number-value-num"), v2.appendChild(y2), c) {
1342
+ if (d2) {
1343
+ const e4 = document.createElement("span");
1344
+ e4.textContent = d2, e4.classList.add("magicfeedback-rating-number-value-label"), v2.appendChild(e4);
1345
+ }
1346
+ } else f && f[i3] && (l2.title = f[i3]);
1347
+ l2.appendChild(v2), a2.appendChild(l2), p.appendChild(a2);
1348
+ }
1349
+ if (d.appendChild(p), v && d.appendChild(v), y && d.appendChild(y), (null == t3 ? void 0 : t3.extraOption) && (null == t3 ? void 0 : t3.extraOptionText)) {
1350
+ const i3 = document.createElement("div");
1351
+ i3.classList.add("magicfeedback-rating-number-extra-row");
1352
+ const n2 = document.createElement("div");
1353
+ n2.classList.add("magicfeedback-rating-number-option"), n2.classList.add("magicfeedback-rating-number-option--extra");
1354
+ const o2 = document.createElement("label");
1355
+ o2.htmlFor = `rating-${e3}-extra`, o2.classList.add("magicfeedback-rating-number-option-label-container");
1356
+ const a2 = document.createElement("input");
1357
+ a2.id = `rating-${e3}-extra`, a2.type = "radio", a2.name = e3, a2.value = "-", a2.classList.add(r), a2.classList.add("magicfeedback-input"), a2.setAttribute("aria-label", null == t3 ? void 0 : t3.extraOptionText), s && a2.addEventListener("change", (() => s()));
1358
+ const l2 = document.createElement("span");
1359
+ l2.classList.add("magicfeedback-rating-number-value");
1360
+ const c2 = document.createElement("span");
1361
+ c2.textContent = null == t3 ? void 0 : t3.extraOptionText, c2.classList.add("magicfeedback-rating-number-value-label"), l2.appendChild(c2), o2.appendChild(a2), o2.appendChild(l2), n2.appendChild(o2), i3.appendChild(n2), d.appendChild(i3);
1075
1362
  }
1076
- return c.appendChild(p), c;
1363
+ return d;
1077
1364
  };
1078
1365
  }, 42: (e2, t2, i) => {
1079
1366
  "use strict";
1080
1367
  Object.defineProperty(t2, "__esModule", { value: true }), t2.getQuestionRenderer = void 0;
1081
- const n = i(558), r = i(998), s = i(72), a = i(732), o = i(90), l = i(65), d = i(85), c = i(817), u = i(965), p = i(180), m = i(991), h = i(152), f = i(917), v = i(452), g = i(644), y = i(773), b = i(66), E = i(843), k = i(250), A = i(409), C = i(282), T = /* @__PURE__ */ new Map([[n.FEEDBACKAPPANSWERTYPE.TEXT, o.renderText], [n.FEEDBACKAPPANSWERTYPE.LONGTEXT, s.renderLongText], [n.FEEDBACKAPPANSWERTYPE.NUMBER, a.renderNumber], [n.FEEDBACKAPPANSWERTYPE.RADIO, r.renderChoice], [n.FEEDBACKAPPANSWERTYPE.MULTIPLECHOICE, r.renderChoice], [n.FEEDBACKAPPANSWERTYPE.BOOLEAN, l.renderBoolean], [n.FEEDBACKAPPANSWERTYPE.SELECT, d.renderSelect], [n.FEEDBACKAPPANSWERTYPE.DATE, c.renderDate], [n.FEEDBACKAPPANSWERTYPE.EMAIL, u.renderEmail], [n.FEEDBACKAPPANSWERTYPE.PASSWORD, p.renderPassword], [n.FEEDBACKAPPANSWERTYPE.CONSENT, m.renderConsent], [n.FEEDBACKAPPANSWERTYPE.RATING_EMOJI, h.renderRatingEmoji], [n.FEEDBACKAPPANSWERTYPE.RATING_NUMBER, f.renderRatingNumber], [n.FEEDBACKAPPANSWERTYPE.RATING_STAR, v.renderRatingStar], [n.FEEDBACKAPPANSWERTYPE.MULTI_QUESTION_MATRIX, g.renderMatrix], [n.FEEDBACKAPPANSWERTYPE.PRIORITY_LIST, y.renderPriorityList], [n.FEEDBACKAPPANSWERTYPE.POINT_SYSTEM, b.renderPointSystem], [n.FEEDBACKAPPANSWERTYPE.UPLOAD_IMAGE, E.renderUploadImage], [n.FEEDBACKAPPANSWERTYPE.UPLOAD_FILE, k.renderUploadFile], [n.FEEDBACKAPPANSWERTYPE.MULTIPLECHOISE_IMAGE, A.renderMultipleChoiceImage], [n.FEEDBACKAPPANSWERTYPE.INFO_PAGE, C.renderInfoPage]]);
1368
+ const n = i(558), r = i(998), s = i(72), o = i(732), a = i(90), l = i(65), d = i(85), c = i(817), u = i(965), p = i(180), h = i(991), m = i(152), f = i(917), g = i(452), v = i(644), y = i(773), b = i(66), E = i(843), A = i(250), k = i(409), C = i(282), T = /* @__PURE__ */ new Map([[n.FEEDBACKAPPANSWERTYPE.TEXT, a.renderText], [n.FEEDBACKAPPANSWERTYPE.LONGTEXT, s.renderLongText], [n.FEEDBACKAPPANSWERTYPE.NUMBER, o.renderNumber], [n.FEEDBACKAPPANSWERTYPE.RADIO, r.renderChoice], [n.FEEDBACKAPPANSWERTYPE.MULTIPLECHOICE, r.renderChoice], [n.FEEDBACKAPPANSWERTYPE.BOOLEAN, l.renderBoolean], [n.FEEDBACKAPPANSWERTYPE.SELECT, d.renderSelect], [n.FEEDBACKAPPANSWERTYPE.DATE, c.renderDate], [n.FEEDBACKAPPANSWERTYPE.EMAIL, u.renderEmail], [n.FEEDBACKAPPANSWERTYPE.PASSWORD, p.renderPassword], [n.FEEDBACKAPPANSWERTYPE.CONSENT, h.renderConsent], [n.FEEDBACKAPPANSWERTYPE.RATING_EMOJI, m.renderRatingEmoji], [n.FEEDBACKAPPANSWERTYPE.RATING_NUMBER, f.renderRatingNumber], [n.FEEDBACKAPPANSWERTYPE.RATING_STAR, g.renderRatingStar], [n.FEEDBACKAPPANSWERTYPE.MULTI_QUESTION_MATRIX, v.renderMatrix], [n.FEEDBACKAPPANSWERTYPE.PRIORITY_LIST, y.renderPriorityList], [n.FEEDBACKAPPANSWERTYPE.POINT_SYSTEM, b.renderPointSystem], [n.FEEDBACKAPPANSWERTYPE.UPLOAD_IMAGE, E.renderUploadImage], [n.FEEDBACKAPPANSWERTYPE.UPLOAD_FILE, A.renderUploadFile], [n.FEEDBACKAPPANSWERTYPE.MULTIPLECHOISE_IMAGE, k.renderMultipleChoiceImage], [n.FEEDBACKAPPANSWERTYPE.INFO_PAGE, C.renderInfoPage]]);
1082
1369
  t2.getQuestionRenderer = function(e3) {
1083
1370
  return T.get(e3);
1084
1371
  };
@@ -1087,59 +1374,59 @@ var require_magicfeedback_sdk_browser = __commonJS({
1087
1374
  Object.defineProperty(t2, "__esModule", { value: true }), t2.renderBoolean = void 0;
1088
1375
  const n = i(516);
1089
1376
  t2.renderBoolean = ({ question: e3, language: t3, urlParamValue: i2, send: r }) => {
1090
- const { ref: s, assets: a } = e3, o = document.createElement("div"), l = "magicfeedback-radio", d = document.createElement("div");
1091
- return d.classList.add("magicfeedback-boolean-container"), d.style.display = "flex", d.style.flexDirection = "row", d.style.justifyContent = "space-between", d.style.width = "70%", d.style.margin = "auto", ((null == a ? void 0 : a.addIcon) ? ["\u{1F44D}", "\u{1F44E}"] : (0, n.getBooleanOptions)(t3)).forEach(((e4, t4) => {
1377
+ const { ref: s, assets: o } = e3, a = document.createElement("div"), l = "magicfeedback-radio", d = document.createElement("div");
1378
+ return d.classList.add("magicfeedback-boolean-container"), d.style.display = "flex", d.style.flexDirection = "row", d.style.justifyContent = "space-between", d.style.width = "70%", d.style.margin = "auto", ((null == o ? void 0 : o.addIcon) ? ["\u{1F44D}", "\u{1F44E}"] : (0, n.getBooleanOptions)(t3)).forEach(((e4, t4) => {
1092
1379
  const n2 = document.createElement("label");
1093
1380
  n2.classList.add("magicfeedback-boolean-option"), n2.htmlFor = `rating-${s}-${t4}`, n2.style.cursor = "pointer", n2.style.display = "flex", n2.style.justifyContent = "center", n2.style.alignItems = "center", n2.style.margin = "auto", n2.style.padding = "0", n2.style.width = "45%", n2.style.height = "38px";
1094
- const a2 = document.createElement("label");
1095
- a2.htmlFor = `rating-${s}-${t4}`, a2.textContent = e4, a2.style.margin = "0", a2.style.padding = "0";
1096
- const o2 = document.createElement("input");
1097
- o2.id = `rating-${s}-${t4}`, o2.type = "radio", o2.name = s, o2.value = ["Yes", "No"][t4], o2.classList.add(l), o2.classList.add("magicfeedback-input"), o2.style.position = "absolute", o2.style.opacity = "0", o2.style.width = "0", o2.style.height = "0", o2.style.margin = "0", o2.addEventListener("change", (() => {
1381
+ const o2 = document.createElement("label");
1382
+ o2.htmlFor = `rating-${s}-${t4}`, o2.textContent = e4, o2.style.margin = "0", o2.style.padding = "0";
1383
+ const a2 = document.createElement("input");
1384
+ a2.id = `rating-${s}-${t4}`, a2.type = "radio", a2.name = s, a2.value = ["Yes", "No"][t4], a2.classList.add(l), a2.classList.add("magicfeedback-input"), a2.style.position = "absolute", a2.style.opacity = "0", a2.style.width = "0", a2.style.height = "0", a2.style.margin = "0", a2.addEventListener("change", (() => {
1098
1385
  r && r();
1099
- })), i2 && i2.toLowerCase() === o2.value.toLowerCase() && (o2.checked = true), n2.appendChild(o2), n2.appendChild(a2), d.appendChild(n2);
1100
- })), o.appendChild(d), { element: o, elementTypeClass: l };
1386
+ })), i2 && i2.toLowerCase() === a2.value.toLowerCase() && (a2.checked = true), n2.appendChild(a2), n2.appendChild(o2), d.appendChild(n2);
1387
+ })), a.appendChild(d), { element: a, elementTypeClass: l };
1101
1388
  };
1102
1389
  }, 998: (e2, t2, i) => {
1103
1390
  "use strict";
1104
1391
  Object.defineProperty(t2, "__esModule", { value: true }), t2.renderChoice = void 0;
1105
1392
  const n = i(558), r = i(784);
1106
- t2.renderChoice = ({ question: e3, language: t3, urlParamValue: i2, randomPosition: s, send: a }) => {
1107
- const { type: o, ref: l, value: d, defaultValue: c, assets: u } = e3, p = document.createElement("div"), m = "magicfeedback-" + ("MULTIPLECHOICE" === o ? "checkbox" : "radio");
1108
- let h = d || [];
1109
- s && (h = h.sort((() => Math.random() - 0.5)));
1393
+ t2.renderChoice = ({ question: e3, language: t3, urlParamValue: i2, randomPosition: s, send: o }) => {
1394
+ const { type: a, ref: l, value: d, defaultValue: c, assets: u } = e3, p = document.createElement("div"), h = "magicfeedback-" + ("MULTIPLECHOICE" === a ? "checkbox" : "radio");
1395
+ let m = d || [];
1396
+ s && (m = m.sort((() => Math.random() - 0.5)));
1110
1397
  let f = (null == u ? void 0 : u.exclusiveAnswers) || [];
1111
1398
  (null == u ? void 0 : u.extraOption) && (f = f.filter(((e4) => e4 !== u.extraOptionText))), f.length > 0 && (null == f || f.forEach(((e4) => {
1112
- h.includes(e4) || h.push(e4);
1399
+ m.includes(e4) || m.push(e4);
1113
1400
  })));
1114
- const v = null == u ? void 0 : u.extraOptionText;
1115
- return (null == u ? void 0 : u.extraOption) && v && !h.includes(v) && h.push(v), h.forEach(((e4, s2) => {
1401
+ const g = null == u ? void 0 : u.extraOptionText;
1402
+ return (null == u ? void 0 : u.extraOption) && g && !m.includes(g) && m.push(g), m.forEach(((e4, s2) => {
1116
1403
  const d2 = document.createElement("div");
1117
- d2.classList.add(`magicfeedback-${"MULTIPLECHOICE" === o ? "checkbox" : "radio"}-container`);
1118
- const v2 = document.createElement("label"), g = document.createElement("input");
1119
- if (g.id = `rating-${l}-${s2}`, g.type = "MULTIPLECHOICE" === o ? "checkbox" : "radio", g.name = l, g.value = e4, g.classList.add(m), g.classList.add("magicfeedback-input"), o === n.FEEDBACKAPPANSWERTYPE.MULTIPLECHOICE && (null == u ? void 0 : u.maxOptions) && (null == u ? void 0 : u.maxOptions) > 0 && g.addEventListener("change", (() => {
1120
- document.querySelectorAll(`input[name="${l}"]:checked`).length > (null == u ? void 0 : u.maxOptions) && (g.checked = false);
1121
- })), o === n.FEEDBACKAPPANSWERTYPE.RADIO && a && (!(null == u ? void 0 : u.extraOptionText) || (null == u ? void 0 : u.extraOptionText) && e4 !== (null == u ? void 0 : u.extraOptionText)) && g.addEventListener("change", (() => {
1122
- a();
1123
- })), e4 !== c && e4 !== i2 || (g.checked = true), v2.textContent = e4, v2.htmlFor = `rating-${l}-${s2}`, g.addEventListener("change", ((t4) => {
1404
+ d2.classList.add(`magicfeedback-${"MULTIPLECHOICE" === a ? "checkbox" : "radio"}-container`);
1405
+ const g2 = document.createElement("label"), v = document.createElement("input");
1406
+ if (v.id = `rating-${l}-${s2}`, v.type = "MULTIPLECHOICE" === a ? "checkbox" : "radio", v.name = l, v.value = e4, v.classList.add(h), v.classList.add("magicfeedback-input"), a === n.FEEDBACKAPPANSWERTYPE.MULTIPLECHOICE && (null == u ? void 0 : u.maxOptions) && (null == u ? void 0 : u.maxOptions) > 0 && v.addEventListener("change", (() => {
1407
+ document.querySelectorAll(`input[name="${l}"]:checked`).length > (null == u ? void 0 : u.maxOptions) && (v.checked = false);
1408
+ })), a === n.FEEDBACKAPPANSWERTYPE.RADIO && o && (!(null == u ? void 0 : u.extraOptionText) || (null == u ? void 0 : u.extraOptionText) && e4 !== (null == u ? void 0 : u.extraOptionText)) && v.addEventListener("change", (() => {
1409
+ o();
1410
+ })), e4 !== c && e4 !== i2 || (v.checked = true), g2.textContent = e4, g2.htmlFor = `rating-${l}-${s2}`, v.addEventListener("change", ((t4) => {
1124
1411
  const i3 = document.getElementById(`extra-option-${l}`);
1125
- t4.target.checked && f.includes(e4) ? (h.forEach(((t5) => {
1412
+ t4.target.checked && f.includes(e4) ? (m.forEach(((t5) => {
1126
1413
  t5 !== e4 && (document.querySelector(`input[value="${t5}"]`).checked = false);
1127
1414
  })), i3 && (i3.style.display = "none")) : f.forEach(((t5) => {
1128
1415
  t5 !== e4 && (document.querySelector(`input[value="${t5}"]`).checked = false);
1129
1416
  })), (null == u ? void 0 : u.extraOption) && e4 === (null == u ? void 0 : u.extraOptionText) && i3 && (i3.style.display = t4.target.checked ? "block" : "none");
1130
- })), d2.appendChild(g), d2.appendChild(v2), p.appendChild(d2), (null == u ? void 0 : u.extraOption) && e4 === (null == u ? void 0 : u.extraOptionText)) {
1417
+ })), d2.appendChild(v), d2.appendChild(g2), p.appendChild(d2), (null == u ? void 0 : u.extraOption) && e4 === (null == u ? void 0 : u.extraOptionText)) {
1131
1418
  const e5 = document.createElement("input");
1132
1419
  e5.type = "text", e5.placeholder = (null == u ? void 0 : u.extraOptionPlaceholder) || r.placeholder.answer(t3 || "en"), e5.classList.add("magicfeedback-extra-option"), e5.classList.add("magicfeedback-input"), e5.id = `extra-option-${l}`, e5.name = `extra-option-${l}`, e5.style.display = "none", p.appendChild(e5);
1133
1420
  }
1134
- })), { element: p, elementTypeClass: m };
1421
+ })), { element: p, elementTypeClass: h };
1135
1422
  };
1136
1423
  }, 991: (e2, t2) => {
1137
1424
  "use strict";
1138
1425
  Object.defineProperty(t2, "__esModule", { value: true }), t2.renderConsent = void 0, t2.renderConsent = ({ question: e3, urlParamValue: t3, send: i }) => {
1139
- const { id: n, ref: r, value: s, require: a } = e3, o = document.createElement("input");
1140
- return o.type = "checkbox", o.id = `magicfeedback-${n}`, o.name = r, o.value = "true", o.required = a, o.classList.add("magicfeedback-consent"), o.classList.add("magicfeedback-input"), t3 && s.includes(t3) && (o.checked = true), i && o.addEventListener("change", (() => {
1426
+ const { id: n, ref: r, value: s, require: o } = e3, a = document.createElement("input");
1427
+ return a.type = "checkbox", a.id = `magicfeedback-${n}`, a.name = r, a.value = "true", a.required = o, a.classList.add("magicfeedback-consent"), a.classList.add("magicfeedback-input"), t3 && s.includes(t3) && (a.checked = true), i && a.addEventListener("change", (() => {
1141
1428
  i();
1142
- })), { element: o, elementTypeClass: "magicfeedback-consent" };
1429
+ })), { element: a, elementTypeClass: "magicfeedback-consent" };
1143
1430
  };
1144
1431
  }, 817: (e2, t2, i) => {
1145
1432
  "use strict";
@@ -1177,8 +1464,8 @@ var require_magicfeedback_sdk_browser = __commonJS({
1177
1464
  }, 644: (e2, t2) => {
1178
1465
  "use strict";
1179
1466
  Object.defineProperty(t2, "__esModule", { value: true }), t2.renderMatrix = void 0, t2.renderMatrix = ({ question: e3, isPhone: t3, randomPosition: i }) => {
1180
- const { ref: n, value: r, assets: s } = e3, a = document.createElement("div"), o = document.createElement("div");
1181
- o.classList.add("magicfeedback-multi-question-matrix-container");
1467
+ const { ref: n, value: r, assets: s } = e3, o = document.createElement("div"), a = document.createElement("div");
1468
+ a.classList.add("magicfeedback-multi-question-matrix-container");
1182
1469
  let l = (null == s ? void 0 : s.options) || [], d = [...r], c = [];
1183
1470
  if (i && (l = null == l ? void 0 : l.sort((() => Math.random() - 0.5)), d = [...d].sort((() => Math.random() - 0.5))), (null == s ? void 0 : s.exclusiveAnswers) && (c = null == s ? void 0 : s.exclusiveAnswers, null == c || c.forEach(((e4) => {
1184
1471
  d.includes(e4) || d.push(e4);
@@ -1191,10 +1478,10 @@ var require_magicfeedback_sdk_browser = __commonJS({
1191
1478
  r2.classList.add("magicfeedback-multi-question-matrix-label"), r2.style.paddingBottom = "10px", r2.textContent = t4, i2.appendChild(r2), d.forEach(((e5) => {
1192
1479
  const r3 = document.createElement("div");
1193
1480
  r3.classList.add("magicfeedback-radio-container"), r3.style.display = "flex", r3.style.alignItems = "center", r3.style.justifyContent = "flex-start", r3.style.width = "99%", r3.style.margin = "5px auto";
1194
- const s2 = document.createElement("label"), a2 = document.createElement("input");
1195
- a2.id = `${n}-${t4}-${e5}`, a2.type = "radio", a2.name = `${n}-${t4}`, a2.value = e5, a2.classList.add("magicfeedback-input"), s2.textContent = e5, s2.htmlFor = `${n}-${t4}-${e5}`, r3.appendChild(a2), r3.appendChild(s2), i2.appendChild(r3);
1481
+ const s2 = document.createElement("label"), o2 = document.createElement("input");
1482
+ o2.id = `${n}-${t4}-${e5}`, o2.type = "radio", o2.name = `${n}-${t4}`, o2.value = e5, o2.classList.add("magicfeedback-input"), s2.textContent = e5, s2.htmlFor = `${n}-${t4}-${e5}`, r3.appendChild(o2), r3.appendChild(s2), i2.appendChild(r3);
1196
1483
  })), e4.appendChild(i2);
1197
- })), o.appendChild(e4);
1484
+ })), a.appendChild(e4);
1198
1485
  } else {
1199
1486
  const e4 = document.createElement("table");
1200
1487
  e4.classList.add("magicfeedback-multi-question-matrix-table");
@@ -1216,18 +1503,18 @@ var require_magicfeedback_sdk_browser = __commonJS({
1216
1503
  const r4 = document.createElement("td"), s3 = document.createElement("input");
1217
1504
  s3.type = "radio", s3.name = `${n}-${e5}`, s3.value = i4, s3.id = `${n}-${e5}-${i4}`, s3.classList.add("magicfeedback-input"), r4.appendChild(s3), t5.appendChild(r4);
1218
1505
  })), s2.appendChild(t5);
1219
- })), e4.appendChild(s2), o.appendChild(e4);
1506
+ })), e4.appendChild(s2), a.appendChild(e4);
1220
1507
  }
1221
- return a.appendChild(o), { element: a, elementTypeClass: "magicfeedback-multi-question-matrix" };
1508
+ return o.appendChild(a), { element: o, elementTypeClass: "magicfeedback-multi-question-matrix" };
1222
1509
  };
1223
1510
  }, 409: (e2, t2) => {
1224
1511
  "use strict";
1225
1512
  Object.defineProperty(t2, "__esModule", { value: true }), t2.renderMultipleChoiceImage = void 0, t2.renderMultipleChoiceImage = ({ question: e3, randomPosition: t3, urlParamValue: i, send: n }) => {
1226
- const r = document.createElement("div"), { ref: s, assets: a } = e3;
1227
- let o = [...e3.value];
1513
+ const r = document.createElement("div"), { ref: s, assets: o } = e3;
1514
+ let a = [...e3.value];
1228
1515
  const l = document.createElement("div");
1229
1516
  l.classList.add("magicfeedback-multiple-choice-image-container"), l.style.display = "flex", l.style.flexDirection = "row", l.style.flexWrap = "wrap", l.style.justifyContent = "center";
1230
- const d = o.length;
1517
+ const d = a.length;
1231
1518
  let c = 1, u = 1;
1232
1519
  if (window.innerWidth < 600) c = 1, u = d;
1233
1520
  else switch (d) {
@@ -1249,38 +1536,38 @@ var require_magicfeedback_sdk_browser = __commonJS({
1249
1536
  default:
1250
1537
  u = 4, c = Math.ceil(d / u);
1251
1538
  }
1252
- const p = void 0 !== (null == a ? void 0 : a.addTitle) && (null == a ? void 0 : a.addTitle), m = void 0 !== (null == a ? void 0 : a.multiOption) && (null == a ? void 0 : a.multiOption), h = void 0 !== (null == a ? void 0 : a.extraOption) && (null == a ? void 0 : a.extraOption);
1539
+ const p = void 0 !== (null == o ? void 0 : o.addTitle) && (null == o ? void 0 : o.addTitle), h = void 0 !== (null == o ? void 0 : o.multiOption) && (null == o ? void 0 : o.multiOption), m = void 0 !== (null == o ? void 0 : o.extraOption) && (null == o ? void 0 : o.extraOption);
1253
1540
  function f(e4) {
1254
1541
  try {
1255
- const { position: t4, url: r2, value: a2 } = e4, o2 = document.createElement("div");
1256
- o2.classList.add("magicfeedback-multiple-choice-image-option"), o2.style.width = `calc(100% / ${c} - 2px)`, o2.style.height = `calc(100% / ${u} - 2px)`, o2.style.padding = "8px", o2.style.margin = "0";
1542
+ const { position: t4, url: r2, value: o2 } = e4, a2 = document.createElement("div");
1543
+ a2.classList.add("magicfeedback-multiple-choice-image-option"), a2.style.width = `calc(100% / ${c} - 2px)`, a2.style.height = `calc(100% / ${u} - 2px)`, a2.style.padding = "8px", a2.style.margin = "0";
1257
1544
  const d2 = document.createElement("label");
1258
1545
  d2.classList.add("magicfeedback-image-option-label-container"), d2.htmlFor = `rating-${s}-${t4}`, d2.style.cursor = "pointer", d2.addEventListener("click", (() => {
1259
1546
  d2.style.border = "2px solid #000";
1260
1547
  }));
1261
- const h2 = document.createElement("label");
1262
- h2.textContent = a2, h2.classList.add("magicfeedback-multiple-choice-image-label");
1548
+ const m2 = document.createElement("label");
1549
+ m2.textContent = o2, m2.classList.add("magicfeedback-multiple-choice-image-label");
1263
1550
  const f2 = document.createElement("input");
1264
- f2.id = `rating-${s}-${t4}`, f2.type = m ? "checkbox" : "radio", f2.name = s, f2.value = a2, f2.style.position = "absolute", f2.style.opacity = "0", f2.style.width = "0", f2.style.height = "0", f2.classList.add("magicfeedback-input"), i && i === f2.value && (f2.checked = true), !m && n && f2.addEventListener("change", (() => {
1551
+ f2.id = `rating-${s}-${t4}`, f2.type = h ? "checkbox" : "radio", f2.name = s, f2.value = o2, f2.style.position = "absolute", f2.style.opacity = "0", f2.style.width = "0", f2.style.height = "0", f2.classList.add("magicfeedback-input"), i && i === f2.value && (f2.checked = true), !h && n && f2.addEventListener("change", (() => {
1265
1552
  n();
1266
1553
  }));
1267
- const v = document.createElement("img");
1268
- v.classList.add("magicfeedback-multiple-choice-image-image"), v.src = r2, v.style.cursor = "pointer", v.style.backgroundSize = "cover", v.style.backgroundPosition = "center", v.style.width = "100%", v.style.height = "100%", v.style.objectFit = "cover", v.style.margin = "auto", d2.appendChild(f2), d2.appendChild(v), p && d2.appendChild(h2), o2.appendChild(d2), l.appendChild(o2);
1554
+ const g = document.createElement("img");
1555
+ g.classList.add("magicfeedback-multiple-choice-image-image"), g.src = r2, g.style.cursor = "pointer", g.style.backgroundSize = "cover", g.style.backgroundPosition = "center", g.style.width = "100%", g.style.height = "100%", g.style.objectFit = "cover", g.style.margin = "auto", d2.appendChild(f2), d2.appendChild(g), p && d2.appendChild(m2), a2.appendChild(d2), l.appendChild(a2);
1269
1556
  } catch (e5) {
1270
1557
  console.error(e5);
1271
1558
  }
1272
1559
  }
1273
- return t3 && (o = o.sort((() => Math.random() - 0.5))), o.forEach(((e4) => f(JSON.parse(e4)))), h && (null == a ? void 0 : a.extraOptionValue) && (null == a ? void 0 : a.extraOptionValue.length) > 0 && f(null == a ? void 0 : a.extraOptionValue[0]), r.appendChild(l), { element: r, elementTypeClass: "magicfeedback-multiple-choice-image" };
1560
+ return t3 && (a = a.sort((() => Math.random() - 0.5))), a.forEach(((e4) => f(JSON.parse(e4)))), m && (null == o ? void 0 : o.extraOptionValue) && (null == o ? void 0 : o.extraOptionValue.length) > 0 && f(null == o ? void 0 : o.extraOptionValue[0]), r.appendChild(l), { element: r, elementTypeClass: "magicfeedback-multiple-choice-image" };
1274
1561
  };
1275
1562
  }, 732: (e2, t2, i) => {
1276
1563
  "use strict";
1277
1564
  Object.defineProperty(t2, "__esModule", { value: true }), t2.renderNumber = void 0;
1278
1565
  const n = i(784), r = i(516);
1279
1566
  t2.renderNumber = ({ question: e3, format: t3, language: i2, urlParamValue: s }) => {
1280
- const a = document.createElement("input");
1281
- a.type = "number", a.placeholder = "slim" === t3 ? (0, r.parseTitle)(e3.title, i2) : n.placeholder.number(i2 || "en");
1282
- const { value: o } = e3;
1283
- return o.length && (o.sort(((e4, t4) => Number(e4) - Number(t4))), a.max = o[o.length - 1], a.min = o[0], a.value = o[0]), s && !isNaN(Number(s)) && (a.value = s), { element: a, elementTypeClass: "magicfeedback-number" };
1567
+ const o = document.createElement("input");
1568
+ o.type = "number", o.placeholder = "slim" === t3 ? (0, r.parseTitle)(e3.title, i2) : n.placeholder.number(i2 || "en");
1569
+ const { value: a } = e3;
1570
+ return a.length && (a.sort(((e4, t4) => Number(e4) - Number(t4))), o.max = a[a.length - 1], o.min = a[0], o.value = a[0]), s && !isNaN(Number(s)) && (o.value = s), { element: o, elementTypeClass: "magicfeedback-number" };
1284
1571
  };
1285
1572
  }, 180: (e2, t2, i) => {
1286
1573
  "use strict";
@@ -1295,10 +1582,10 @@ var require_magicfeedback_sdk_browser = __commonJS({
1295
1582
  Object.defineProperty(t2, "__esModule", { value: true }), t2.renderPointSystem = void 0;
1296
1583
  const n = i(784);
1297
1584
  t2.renderPointSystem = ({ question: e3, language: t3 }) => {
1298
- const { ref: i2, value: r } = e3, s = document.createElement("div"), a = document.createElement("div");
1299
- a.classList.add("magicfeedback-point-system-container");
1300
- const o = document.createElement("ul");
1301
- o.classList.add("magicfeedback-point-system-list"), o.style.padding = "0";
1585
+ const { ref: i2, value: r } = e3, s = document.createElement("div"), o = document.createElement("div");
1586
+ o.classList.add("magicfeedback-point-system-container");
1587
+ const a = document.createElement("ul");
1588
+ a.classList.add("magicfeedback-point-system-list"), a.style.padding = "0";
1302
1589
  const l = 100 / r.length, d = document.createElement("div");
1303
1590
  d.classList.add("magicfeedback-error"), d.textContent = n.placeholder.pointsystemerror(t3 || "en"), d.style.color = "#C70039", d.style.fontSize = "14px", d.style.textAlign = "right", d.style.width = "100%", d.style.display = "none";
1304
1591
  const c = document.createElement("div");
@@ -1309,108 +1596,108 @@ var require_magicfeedback_sdk_browser = __commonJS({
1309
1596
  r2.textContent = e4, r2.style.fontSize = "15px", n2.appendChild(r2);
1310
1597
  const s2 = document.createElement("span");
1311
1598
  s2.classList.add("magicfeedback-point-system-input-container");
1312
- const a2 = document.createElement("input");
1313
- a2.name = i2, a2.id = `${e4}`, a2.type = "number", a2.min = "0", a2.max = "100", a2.value = "0", a2.classList.add("magicfeedback-input"), a2.style.width = "40px", a2.style.border = "0", a2.style.textAlign = "center", a2.style.margin = "0 5px", a2.autofocus = 0 === t4;
1599
+ const o2 = document.createElement("input");
1600
+ o2.name = i2, o2.id = `${e4}`, o2.type = "number", o2.min = "0", o2.max = "100", o2.value = "0", o2.classList.add("magicfeedback-input"), o2.style.width = "40px", o2.style.border = "0", o2.style.textAlign = "center", o2.style.margin = "0 5px", o2.autofocus = 0 === t4;
1314
1601
  const u = document.createElement("span");
1315
- u.textContent = "%", u.style.color = "#000", a2.addEventListener("input", (() => {
1316
- const e5 = o.querySelectorAll("input");
1602
+ u.textContent = "%", u.style.color = "#000", o2.addEventListener("input", (() => {
1603
+ const e5 = a.querySelectorAll("input");
1317
1604
  let t5 = 0;
1318
1605
  e5.forEach(((e6) => {
1319
1606
  t5 += Number(e6.value);
1320
- })), t5 > 100 && (a2.value = `${l}%`, t5 -= Number(a2.value));
1607
+ })), t5 > 100 && (o2.value = `${l}%`, t5 -= Number(o2.value));
1321
1608
  const i3 = document.getElementById("magicfeedback-submit");
1322
1609
  i3 && (t5 < 100 ? (c.style.color = "orange", i3.setAttribute("disabled", "true")) : (d.style.display = "none", c.style.color = "green", i3.removeAttribute("disabled"))), c.textContent = `${t5} / 100 %`;
1323
- })), a2.addEventListener("focus", (() => {
1610
+ })), o2.addEventListener("focus", (() => {
1324
1611
  const e5 = document.getElementById("magicfeedback-submit");
1325
1612
  e5 && (e5.setAttribute("disabled", "true"), e5.addEventListener("pointerover", (() => {
1326
- const e6 = o.querySelectorAll("input");
1613
+ const e6 = a.querySelectorAll("input");
1327
1614
  let t5 = 0;
1328
1615
  e6.forEach(((e7) => {
1329
1616
  t5 += Number(e7.value);
1330
1617
  })), t5 < 100 && (d.style.display = "block");
1331
1618
  })));
1332
- })), s2.appendChild(a2), s2.appendChild(u), n2.appendChild(s2), o.appendChild(n2);
1333
- })), a.appendChild(o), a.appendChild(c), a.appendChild(d), s.appendChild(a), { element: s, elementTypeClass: "magicfeedback-point-system" };
1619
+ })), s2.appendChild(o2), s2.appendChild(u), n2.appendChild(s2), a.appendChild(n2);
1620
+ })), o.appendChild(a), o.appendChild(c), o.appendChild(d), s.appendChild(o), { element: s, elementTypeClass: "magicfeedback-point-system" };
1334
1621
  };
1335
1622
  }, 773: (e2, t2) => {
1336
1623
  "use strict";
1337
1624
  Object.defineProperty(t2, "__esModule", { value: true }), t2.renderPriorityList = void 0, t2.renderPriorityList = ({ question: e3, randomPosition: t3, language: i }) => {
1338
1625
  var n, r, s;
1339
- const a = document.createElement("div"), o = (function(e4) {
1340
- const { value: t4, ref: i2, randomPosition: n2 = false, limitPriority: r2 = false, maxPriority: s2 = 0, language: a2 = "en", placeholder: o2 = "" } = e4, l = (e5) => {
1626
+ const o = document.createElement("div"), a = (function(e4) {
1627
+ const { value: t4, ref: i2, randomPosition: n2 = false, limitPriority: r2 = false, maxPriority: s2 = 0, language: o2 = "en", placeholder: a2 = "" } = e4, l = (e5) => {
1341
1628
  const t5 = { en: { selectUpTo: "Select up to", options: "options", thenOrder: "and then order them", selectOptions: "Select options", cancel: "Cancel", confirm: "Confirm", selectOptionNumber: "Select option #", prioritized: "Prioritized", of: "of", instruction: "Your priority list can be seen below. If you wish, you can rearrange your choices using the arrows. Click 'Next' to confirm your selection and proceed." }, es: { selectUpTo: "Selecciona hasta", options: "opciones", thenOrder: "y luego ord\xE9nalas", selectOptions: "Seleccionar opciones", cancel: "Cancelar", confirm: "Confirmar", selectOptionNumber: "Selecciona la opci\xF3n #", prioritized: "Priorizadas", of: "de", instruction: 'Tu lista priorizada se muestra abajo. Si deseas, puedes reordenar las opciones con las flechas. Haz clic en "Siguiente" para confirmar y continuar.' }, pt: { selectUpTo: "Selecione at\xE9", options: "op\xE7\xF5es", thenOrder: "e depois ordene-as", selectOptions: "Selecionar op\xE7\xF5es", cancel: "Cancelar", confirm: "Confirmar", selectOptionNumber: "Selecione a op\xE7\xE3o #", prioritized: "Priorizadas", of: "de", instruction: 'Sua lista de prioridades pode ser vista abaixo. Se quiser, voc\xEA pode reorganizar suas escolhas usando as setas. Clique em "Pr\xF3ximo" para confirmar sua sele\xE7\xE3o e continuar.' }, fr: { selectUpTo: "S\xE9lectionnez jusqu'\xE0", options: "options", thenOrder: "puis classez-les", selectOptions: "S\xE9lectionner des options", cancel: "Annuler", confirm: "Confirmer", selectOptionNumber: "S\xE9lectionnez l'option #", prioritized: "Prioris\xE9es", of: "sur", instruction: `Votre liste de priorit\xE9s est affich\xE9e ci-dessous. Si vous le souhaitez, vous pouvez r\xE9organiser vos choix \xE0 l'aide des fl\xE8ches. Cliquez sur "Suivant" pour confirmer votre s\xE9lection et continuer.` }, de: { selectUpTo: "W\xE4hlen Sie bis zu", options: "Optionen", thenOrder: "und ordnen Sie sie dann", selectOptions: "Optionen ausw\xE4hlen", cancel: "Abbrechen", confirm: "Best\xE4tigen", selectOptionNumber: "W\xE4hlen Sie Option #", prioritized: "Priorisiert", of: "von", instruction: 'Ihre Priorit\xE4tenliste wird unten angezeigt. Wenn Sie m\xF6chten, k\xF6nnen Sie Ihre Auswahl mit den Pfeilen neu anordnen. Klicken Sie auf "Weiter", um Ihre Auswahl zu best\xE4tigen und fortzufahren.' }, it: { selectUpTo: "Seleziona fino a", options: "opzioni", thenOrder: "e poi ordinali", selectOptions: "Seleziona opzioni", cancel: "Annulla", confirm: "Conferma", selectOptionNumber: "Seleziona opzione #", prioritized: "Prioritizzate", of: "di", instruction: 'La tua lista di priorit\xE0 \xE8 mostrata qui sotto. Se vuoi, puoi riordinare le tue scelte usando le frecce. Clicca su "Avanti" per confermare la selezione e continuare.' }, nl: { selectUpTo: "Selecteer tot", options: "opties", thenOrder: "en rangschik ze vervolgens", selectOptions: "Selecteer opties", cancel: "Annuleren", confirm: "Bevestigen", selectOptionNumber: "Selecteer optie #", prioritized: "Geprioriteerd", of: "van", instruction: 'Je prioriteitenlijst wordt hieronder weergegeven. Als je wilt, kun je je keuzes herschikken met behulp van de pijlen. Klik op "Volgende" om je selectie te bevestigen en door te gaan.' }, pl: { selectUpTo: "Wybierz do", options: "opcje", thenOrder: "a nast\u0119pnie je uporz\u0105dkuj", selectOptions: "Wybierz opcje", cancel: "Anuluj", confirm: "Potwierd\u017A", selectOptionNumber: "Wybierz opcj\u0119 #", prioritized: "Priorytetowe", of: "z", instruction: 'Twoja lista priorytet\xF3w jest pokazana poni\u017Cej. Je\u015Bli chcesz, mo\u017Cesz zmieni\u0107 kolejno\u015B\u0107 swoich wybor\xF3w za pomoc\u0105 strza\u0142ek. Kliknij "Dalej", aby potwierdzi\u0107 wyb\xF3r i kontynuowa\u0107.' }, ru: { selectUpTo: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u043E", options: "\u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432", thenOrder: "\u0430 \u0437\u0430\u0442\u0435\u043C \u0443\u043F\u043E\u0440\u044F\u0434\u043E\u0447\u044C\u0442\u0435 \u0438\u0445", selectOptions: "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B", cancel: "\u041E\u0442\u043C\u0435\u043D\u0430", confirm: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C", selectOptionNumber: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043D\u0442 #", prioritized: "\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u044B", of: "\u0438\u0437", instruction: '\u0412\u0430\u0448 \u0441\u043F\u0438\u0441\u043E\u043A \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u043E\u0432 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043D\u0438\u0436\u0435. \u0415\u0441\u043B\u0438 \u0445\u043E\u0442\u0438\u0442\u0435, \u0432\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u043E\u0440\u044F\u0434\u043E\u043A \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u0441\u0442\u0440\u0435\u043B\u043E\u043A. \u041D\u0430\u0436\u043C\u0438\u0442\u0435 "\u0414\u0430\u043B\u0435\u0435", \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \u0432\u044B\u0431\u043E\u0440 \u0438 \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C.' }, ja: { selectUpTo: "\u6700\u5927", options: "\u500B\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u9078\u629E", thenOrder: "\u305D\u306E\u5F8C\u4E26\u3079\u66FF\u3048\u3066\u304F\u3060\u3055\u3044", selectOptions: "\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u9078\u629E", cancel: "\u30AD\u30E3\u30F3\u30BB\u30EB", confirm: "\u78BA\u8A8D", selectOptionNumber: "\u30AA\u30D7\u30B7\u30E7\u30F3 # \u3092\u9078\u629E", prioritized: "\u512A\u5148\u9806\u4F4D", of: "\u306E\u3046\u3061", instruction: "\u512A\u5148\u9806\u4F4D\u30EA\u30B9\u30C8\u306F\u4EE5\u4E0B\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u3001\u77E2\u5370\u3092\u4F7F\u3063\u3066\u9078\u629E\u80A2\u3092\u4E26\u3079\u66FF\u3048\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u300C\u6B21\u3078\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u9078\u629E\u3092\u78BA\u5B9A\u3057\u3001\u7D9A\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002" }, zh: { selectUpTo: "\u6700\u591A\u9009\u62E9", options: "\u4E2A\u9009\u9879", thenOrder: "\u7136\u540E\u6392\u5E8F\u5B83\u4EEC", selectOptions: "\u9009\u62E9\u9009\u9879", cancel: "\u53D6\u6D88", confirm: "\u786E\u8BA4", selectOptionNumber: "\u9009\u62E9\u9009\u9879 #", prioritized: "\u5DF2\u4F18\u5148", of: "\u5171", instruction: "\u4F60\u7684\u4F18\u5148\u5217\u8868\u5982\u4E0B\u6240\u793A\u3002\u5982\u6709\u9700\u8981\uFF0C\u53EF\u4EE5\u4F7F\u7528\u7BAD\u5934\u91CD\u65B0\u6392\u5E8F\u9009\u9879\u3002\u70B9\u51FB\u201C\u4E0B\u4E00\u6B65\u201D\u786E\u8BA4\u9009\u62E9\u5E76\u7EE7\u7EED\u3002" }, ko: { selectUpTo: "\uCD5C\uB300", options: "\uAC1C\uC758 \uC635\uC158 \uC120\uD0DD", thenOrder: "\uADF8\uB7F0 \uB2E4\uC74C \uC815\uB82C\uD558\uC138\uC694", selectOptions: "\uC635\uC158 \uC120\uD0DD", cancel: "\uCDE8\uC18C", confirm: "\uD655\uC778", selectOptionNumber: "\uC635\uC158 # \uC120\uD0DD", prioritized: "\uC6B0\uC120\uC21C\uC704", of: "\uC911", instruction: '\uC6B0\uC120\uC21C\uC704 \uBAA9\uB85D\uC740 \uC544\uB798\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4. \uC6D0\uD55C\uB2E4\uBA74 \uD654\uC0B4\uD45C\uB97C \uC0AC\uC6A9\uD574 \uC120\uD0DD \uD56D\uBAA9\uC744 \uC7AC\uC815\uB82C\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. "\uB2E4\uC74C"\uC744 \uD074\uB9AD\uD558\uC5EC \uC120\uD0DD\uC744 \uD655\uC778\uD558\uACE0 \uACC4\uC18D\uD558\uC138\uC694.' }, ar: { selectUpTo: "\u0627\u062E\u062A\u0631 \u062D\u062A\u0649", options: "\u062E\u064A\u0627\u0631\u0627\u062A", thenOrder: "\u062B\u0645 \u0631\u062A\u0628\u0647\u0627", selectOptions: "\u0627\u062E\u062A\u0631 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A", cancel: "\u0625\u0644\u063A\u0627\u0621", confirm: "\u062A\u0623\u0643\u064A\u062F", selectOptionNumber: "\u0627\u062E\u062A\u0631 \u0627\u0644\u062E\u064A\u0627\u0631 #", prioritized: "\u062A\u0645 \u0627\u0644\u062A\u0631\u062A\u064A\u0628", of: "\u0645\u0646", instruction: '\u062A\u0638\u0647\u0631 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0623\u0648\u0644\u0648\u064A\u0627\u062A \u0627\u0644\u062E\u0627\u0635\u0629 \u0628\u0643 \u0623\u062F\u0646\u0627\u0647. \u0625\u0630\u0627 \u0631\u063A\u0628\u062A\u060C \u064A\u0645\u0643\u0646\u0643 \u0625\u0639\u0627\u062F\u0629 \u062A\u0631\u062A\u064A\u0628 \u0627\u062E\u062A\u064A\u0627\u0631\u0627\u062A\u0643 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u0623\u0633\u0647\u0645. \u0627\u0646\u0642\u0631 \u0639\u0644\u0649 "\u0627\u0644\u062A\u0627\u0644\u064A" \u0644\u062A\u0623\u0643\u064A\u062F \u0627\u062E\u062A\u064A\u0627\u0631\u0643 \u0648\u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629.' }, bn: { selectUpTo: "\u09B8\u09B0\u09CD\u09AC\u09CB\u099A\u09CD\u099A \u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09A8 \u0995\u09B0\u09C1\u09A8", options: "\u099F\u09BF \u09AC\u09BF\u0995\u09B2\u09CD\u09AA", thenOrder: "\u09A4\u09BE\u09B0\u09AA\u09B0 \u09B8\u09C7\u0997\u09C1\u09B2\u09CB \u09B8\u09BE\u099C\u09BE\u09A8", selectOptions: "\u09AC\u09BF\u0995\u09B2\u09CD\u09AA \u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09A8 \u0995\u09B0\u09C1\u09A8", cancel: "\u09AC\u09BE\u09A4\u09BF\u09B2", confirm: "\u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4 \u0995\u09B0\u09C1\u09A8", selectOptionNumber: "\u09AC\u09BF\u0995\u09B2\u09CD\u09AA # \u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09A8 \u0995\u09B0\u09C1\u09A8", prioritized: "\u0985\u0997\u09CD\u09B0\u09BE\u09A7\u09BF\u0995\u09BE\u09B0\u09AA\u09CD\u09B0\u09BE\u09AA\u09CD\u09A4", of: "\u098F\u09B0 \u09AE\u09A7\u09CD\u09AF\u09C7", instruction: "\u0986\u09AA\u09A8\u09BE\u09B0 \u0985\u0997\u09CD\u09B0\u09BE\u09A7\u09BF\u0995\u09BE\u09B0 \u09A4\u09BE\u09B2\u09BF\u0995\u09BE \u09A8\u09BF\u099A\u09C7 \u09A6\u09C7\u0996\u09BE\u09A8\u09CB \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964 \u099A\u09BE\u0987\u09B2\u09C7 \u09A4\u09C0\u09B0 \u099A\u09BF\u09B9\u09CD\u09A8 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09C7 \u0986\u09AA\u09A8\u09BE\u09B0 \u09AA\u099B\u09A8\u09CD\u09A6\u0997\u09C1\u09B2\u09CB \u09AA\u09C1\u09A8\u09B0\u09BE\u09AF\u09BC \u09B8\u09BE\u099C\u09BE\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u09A8\u0964 \u201C\u09AA\u09B0\u09AC\u09B0\u09CD\u09A4\u09C0\u201D \u0995\u09CD\u09B2\u09BF\u0995 \u0995\u09B0\u09C7 \u0986\u09AA\u09A8\u09BE\u09B0 \u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09A8 \u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4 \u0995\u09B0\u09C1\u09A8 \u098F\u09AC\u0982 \u098F\u0997\u09BF\u09AF\u09BC\u09C7 \u09AF\u09BE\u09A8\u0964" }, da: { selectUpTo: "V\xE6lg op til", options: "muligheder", thenOrder: "og sorter dem derefter", selectOptions: "V\xE6lg muligheder", cancel: "Annuller", confirm: "Bekr\xE6ft", selectOptionNumber: "V\xE6lg mulighed #", prioritized: "Prioriteret", of: "af", instruction: 'Din prioritetsliste vises nedenfor. Hvis du \xF8nsker det, kan du omarrangere dine valg ved hj\xE6lp af pilene. Klik p\xE5 "N\xE6ste" for at bekr\xE6fte dit valg og forts\xE6tte.' }, fi: { selectUpTo: "Valitse enint\xE4\xE4n", options: "vaihtoehtoa", thenOrder: "ja j\xE4rjest\xE4 ne sitten", selectOptions: "Valitse vaihtoehdot", cancel: "Peruuta", confirm: "Vahvista", selectOptionNumber: "Valitse vaihtoehto #", prioritized: "Priorisoitu", of: " / ", instruction: 'Prioriteettilistasi n\xE4kyy alla. Voit halutessasi j\xE4rjest\xE4\xE4 valinnat uudelleen nuolien avulla. Napsauta "Seuraava" vahvistaaksesi valinnan ja jatkaaksesi.' }, sv: { selectUpTo: "V\xE4lj upp till", options: "alternativ", thenOrder: "och ordna dem sedan", selectOptions: "V\xE4lj alternativ", cancel: "Avbryt", confirm: "Bekr\xE4fta", selectOptionNumber: "V\xE4lj alternativ #", prioritized: "Prioriterat", of: "av", instruction: 'Din prioriteringslista visas nedan. Om du vill kan du ordna om dina val med hj\xE4lp av pilarna. Klicka p\xE5 "N\xE4sta" f\xF6r att bekr\xE4fta ditt val och forts\xE4tta.' }, no: { selectUpTo: "Velg opptil", options: "alternativer", thenOrder: "og ordne dem deretter", selectOptions: "Velg alternativer", cancel: "Avbryt", confirm: "Bekreft", selectOptionNumber: "Velg alternativ #", prioritized: "Prioritert", of: "av", instruction: 'Prioriteringslisten din vises nedenfor. Hvis du \xF8nsker det, kan du ordne valgene dine ved hjelp av pilene. Klikk p\xE5 "Neste" for \xE5 bekrefte valget ditt og fortsette.' } };
1342
- return t5[t5[a2] ? a2 : "en"][e5];
1629
+ return t5[t5[o2] ? o2 : "en"][e5];
1343
1630
  }, d = document.createElement("div");
1344
1631
  if (d.classList.add("magicfeedback-priority-list-container"), r2 && s2 && s2 > 0) {
1345
1632
  const e5 = [], r3 = document.createElement("div");
1346
1633
  r3.classList.add("magicfeedback-priority-list-header");
1347
- const a3 = document.createElement("div");
1348
- a3.classList.add("magicfeedback-priority-list-instruction"), a3.textContent = "" !== o2 ? o2 : `${l("instruction")}`, a3.style.display = "none";
1634
+ const o3 = document.createElement("div");
1635
+ o3.classList.add("magicfeedback-priority-list-instruction"), o3.textContent = "" !== a2 ? a2 : `${l("instruction")}`, o3.style.display = "none";
1349
1636
  const c2 = document.createElement("button");
1350
- c2.type = "button", c2.textContent = l("selectOptions"), c2.classList.add("magicfeedback-button"), c2.classList.add("magicfeedback-priority-list-open-btn"), r3.appendChild(c2), r3.appendChild(a3);
1637
+ c2.type = "button", c2.textContent = l("selectOptions"), c2.classList.add("magicfeedback-button"), c2.classList.add("magicfeedback-priority-list-open-btn"), r3.appendChild(c2), r3.appendChild(o3);
1351
1638
  const u2 = document.createElement("div");
1352
1639
  u2.classList.add("magicfeedback-priority-list-reorder");
1353
1640
  const p = document.createElement("ul");
1354
1641
  p.classList.add("magicfeedback-priority-list-list"), u2.appendChild(p);
1355
- const m = () => {
1642
+ const h = () => {
1356
1643
  p.innerHTML = "", e5.forEach(((t5, n3) => {
1357
1644
  const r4 = document.createElement("li");
1358
1645
  r4.classList.add("magicfeedback-priority-list-item");
1359
1646
  const s3 = document.createElement("input");
1360
1647
  s3.classList.add("magicfeedback-input-magicfeedback-priority-list"), s3.classList.add("magicfeedback-input"), s3.type = "hidden", s3.id = `priority-list-${i2}`, s3.name = i2, s3.value = `${n3 + 1}. ${t5}`, r4.appendChild(s3);
1361
- const a4 = document.createElement("label");
1362
- a4.classList.add("magicfeedback-priority-list-item-label"), a4.textContent = `${n3 + 1}. ${t5}`, r4.appendChild(a4);
1363
- const o3 = document.createElement("div");
1364
- o3.classList.add("magicfeedback-priority-list-arrows");
1648
+ const o4 = document.createElement("label");
1649
+ o4.classList.add("magicfeedback-priority-list-item-label"), o4.textContent = `${n3 + 1}. ${t5}`, r4.appendChild(o4);
1650
+ const a3 = document.createElement("div");
1651
+ a3.classList.add("magicfeedback-priority-list-arrows");
1365
1652
  const l2 = document.createElement("img");
1366
1653
  l2.classList.add("magicfeedback-priority-list-arrow-up"), l2.src = "https://magicfeedback-c6458-dev.web.app/assets/arrow.svg", l2.style.visibility = 0 === n3 ? "hidden" : "visible";
1367
1654
  const d2 = document.createElement("img");
1368
1655
  d2.classList.add("magicfeedback-priority-list-arrow-down"), d2.src = "https://magicfeedback-c6458-dev.web.app/assets/arrow.svg", d2.style.transform = "rotate(180deg)", d2.style.visibility = n3 === e5.length - 1 ? "hidden" : "visible", l2.addEventListener("click", (() => {
1369
- var i3, n4, o4, c3;
1656
+ var i3, n4, a4, c3;
1370
1657
  const u3 = r4.previousElementSibling;
1371
1658
  if (u3) {
1372
- const m2 = Number(null === (i3 = s3.value) || void 0 === i3 ? void 0 : i3.split(".")[0]) - 1;
1373
- s3.value = `${m2}. ${t5}`, a4.textContent = `${m2}. ${t5}`, l2.style.visibility = 1 === m2 ? "hidden" : "visible", d2.style.visibility = m2 === e5.length ? "hidden" : "visible";
1374
- const h2 = u3.querySelector(".magicfeedback-input-magicfeedback-priority-list"), f2 = u3.querySelector(".magicfeedback-priority-list-item-label"), v2 = u3.querySelector(".magicfeedback-priority-list-arrow-up"), g2 = u3.querySelector(".magicfeedback-priority-list-arrow-down");
1375
- if (h2 && f2 && v2 && g2) {
1376
- const t6 = Number(null === (n4 = h2.value) || void 0 === n4 ? void 0 : n4.split(".")[0]) + 1;
1377
- h2.value = `${t6}.${null === (o4 = f2.textContent) || void 0 === o4 ? void 0 : o4.split(".")[1]}`, f2.textContent = `${t6}.${null === (c3 = f2.textContent) || void 0 === c3 ? void 0 : c3.split(".")[1]}`, v2.style.visibility = 1 === t6 ? "hidden" : "visible", g2.style.visibility = t6 === e5.length ? "hidden" : "visible";
1659
+ const h2 = Number(null === (i3 = s3.value) || void 0 === i3 ? void 0 : i3.split(".")[0]) - 1;
1660
+ s3.value = `${h2}. ${t5}`, o4.textContent = `${h2}. ${t5}`, l2.style.visibility = 1 === h2 ? "hidden" : "visible", d2.style.visibility = h2 === e5.length ? "hidden" : "visible";
1661
+ const m2 = u3.querySelector(".magicfeedback-input-magicfeedback-priority-list"), f2 = u3.querySelector(".magicfeedback-priority-list-item-label"), g2 = u3.querySelector(".magicfeedback-priority-list-arrow-up"), v2 = u3.querySelector(".magicfeedback-priority-list-arrow-down");
1662
+ if (m2 && f2 && g2 && v2) {
1663
+ const t6 = Number(null === (n4 = m2.value) || void 0 === n4 ? void 0 : n4.split(".")[0]) + 1;
1664
+ m2.value = `${t6}.${null === (a4 = f2.textContent) || void 0 === a4 ? void 0 : a4.split(".")[1]}`, f2.textContent = `${t6}.${null === (c3 = f2.textContent) || void 0 === c3 ? void 0 : c3.split(".")[1]}`, g2.style.visibility = 1 === t6 ? "hidden" : "visible", v2.style.visibility = t6 === e5.length ? "hidden" : "visible";
1378
1665
  }
1379
1666
  p.insertBefore(r4, u3);
1380
1667
  }
1381
1668
  })), d2.addEventListener("click", (() => {
1382
- var i3, n4, o4;
1669
+ var i3, n4, a4;
1383
1670
  const c3 = r4.nextElementSibling;
1384
1671
  if (c3) {
1385
1672
  const u3 = Number(null === (i3 = s3.value) || void 0 === i3 ? void 0 : i3.split(".")[0]) + 1;
1386
- s3.value = `${u3}. ${t5}`, a4.textContent = `${u3}. ${t5}`, l2.style.visibility = 1 === u3 ? "hidden" : "visible", d2.style.visibility = u3 === e5.length ? "hidden" : "visible";
1387
- const m2 = c3.querySelector(".magicfeedback-input-magicfeedback-priority-list"), h2 = c3.querySelector(".magicfeedback-priority-list-item-label"), f2 = c3.querySelector(".magicfeedback-priority-list-arrow-up"), v2 = c3.querySelector(".magicfeedback-priority-list-arrow-down");
1388
- if (m2 && h2 && f2 && v2) {
1389
- const t6 = Number(m2.value.split(".")[0]) - 1;
1390
- m2.value = `${t6}.${null === (n4 = h2.textContent) || void 0 === n4 ? void 0 : n4.split(".")[1]}`, h2.textContent = `${t6}.${null === (o4 = h2.textContent) || void 0 === o4 ? void 0 : o4.split(".")[1]}`, f2.style.visibility = 1 === t6 ? "hidden" : "visible", v2.style.visibility = t6 === e5.length ? "hidden" : "visible";
1673
+ s3.value = `${u3}. ${t5}`, o4.textContent = `${u3}. ${t5}`, l2.style.visibility = 1 === u3 ? "hidden" : "visible", d2.style.visibility = u3 === e5.length ? "hidden" : "visible";
1674
+ const h2 = c3.querySelector(".magicfeedback-input-magicfeedback-priority-list"), m2 = c3.querySelector(".magicfeedback-priority-list-item-label"), f2 = c3.querySelector(".magicfeedback-priority-list-arrow-up"), g2 = c3.querySelector(".magicfeedback-priority-list-arrow-down");
1675
+ if (h2 && m2 && f2 && g2) {
1676
+ const t6 = Number(h2.value.split(".")[0]) - 1;
1677
+ h2.value = `${t6}.${null === (n4 = m2.textContent) || void 0 === n4 ? void 0 : n4.split(".")[1]}`, m2.textContent = `${t6}.${null === (a4 = m2.textContent) || void 0 === a4 ? void 0 : a4.split(".")[1]}`, f2.style.visibility = 1 === t6 ? "hidden" : "visible", g2.style.visibility = t6 === e5.length ? "hidden" : "visible";
1391
1678
  }
1392
1679
  p.insertBefore(c3, r4);
1393
1680
  }
1394
- })), o3.appendChild(l2), o3.appendChild(d2), r4.appendChild(o3), p.appendChild(r4);
1681
+ })), a3.appendChild(l2), a3.appendChild(d2), r4.appendChild(a3), p.appendChild(r4);
1395
1682
  }));
1396
- }, h = document.createElement("div");
1397
- h.classList.add("magicfeedback-modal-backdrop"), h.style.position = "fixed", h.style.top = "0", h.style.left = "0", h.style.width = "100vw", h.style.height = "100vh", h.style.background = "rgba(0,0,0,0.4)", h.style.display = "none", h.style.alignItems = "center", h.style.justifyContent = "center", h.style.zIndex = "9999";
1683
+ }, m = document.createElement("div");
1684
+ m.classList.add("magicfeedback-modal-backdrop"), m.style.position = "fixed", m.style.top = "0", m.style.left = "0", m.style.width = "100vw", m.style.height = "100vh", m.style.background = "rgba(0,0,0,0.4)", m.style.display = "none", m.style.alignItems = "center", m.style.justifyContent = "center", m.style.zIndex = "9999";
1398
1685
  const f = document.createElement("div");
1399
- f.classList.add("magicfeedback-modal"), f.style.background = "#fff", f.style.borderRadius = "8px", f.style.boxShadow = "0 8px 24px rgba(0,0,0,0.2)", f.style.maxWidth = "520px", f.style.width = "90%", f.style.maxHeight = "80vh", f.style.overflow = "auto", f.style.padding = "16px", f.style.position = "relative";
1400
- const v = document.createElement("h5");
1401
- v.classList.add("magicfeedback-modal-title");
1402
- const g = () => Math.min(e5.length + 1, s2), y = () => {
1403
- v.textContent = `${l("selectOptionNumber")}${g()}`;
1686
+ f.classList.add("magicfeedback-modal"), f.style.background = "#fff", f.style.borderRadius = "8px", f.style.boxShadow = "0 8px 24px rgba(0,0,0,0.2)", f.style.maxWidth = "520px", f.style.width = "90%", f.style.maxHeight = "80vh", f.style.display = "flex", f.style.flexDirection = "column", f.style.overflow = "hidden", f.style.padding = "16px", f.style.position = "relative";
1687
+ const g = document.createElement("h5");
1688
+ g.classList.add("magicfeedback-modal-title"), g.style.flexShrink = "0", g.style.marginTop = "0";
1689
+ const v = () => Math.min(e5.length + 1, s2), y = () => {
1690
+ g.textContent = `${l("selectOptionNumber")}${v()}`;
1404
1691
  };
1405
1692
  y();
1406
1693
  const b = document.createElement("div");
1407
- b.classList.add("magicfeedback-modal-list"), (n2 ? [...t4].sort((() => Math.random() - 0.5)) : [...t4]).forEach(((t5) => {
1694
+ b.classList.add("magicfeedback-modal-list"), b.style.flex = "1 1 auto", b.style.overflowY = "auto", b.style.minHeight = "0", (n2 ? [...t4].sort((() => Math.random() - 0.5)) : [...t4]).forEach(((t5) => {
1408
1695
  const n3 = document.createElement("label");
1409
1696
  n3.classList.add("magicfeedback-modal-row");
1410
1697
  const r4 = document.createElement("input");
1411
1698
  r4.type = "checkbox", r4.classList.add("magicfeedback-input"), r4.name = `${i2}-selection`, r4.value = t5;
1412
- const a4 = document.createElement("span");
1413
- a4.textContent = t5, r4.addEventListener("change", (() => {
1699
+ const o4 = document.createElement("span");
1700
+ o4.textContent = t5, r4.addEventListener("change", (() => {
1414
1701
  if (r4.checked) {
1415
1702
  if (e5.length >= s2) return r4.checked = false, n3.classList.add("magicfeedback-warning"), void setTimeout((() => {
1416
1703
  n3.classList.remove("magicfeedback-warning");
@@ -1420,30 +1707,36 @@ var require_magicfeedback_sdk_browser = __commonJS({
1420
1707
  const i3 = e5.indexOf(t5);
1421
1708
  -1 !== i3 && e5.splice(i3, 1);
1422
1709
  }
1423
- y(), A();
1424
- })), n3.appendChild(r4), n3.appendChild(a4), b.appendChild(n3);
1710
+ y(), k();
1711
+ })), n3.appendChild(r4), n3.appendChild(o4), b.appendChild(n3);
1425
1712
  }));
1426
1713
  const E = document.createElement("div");
1427
- E.classList.add("magicfeedback-modal-actions");
1428
- const k = document.createElement("div");
1429
- k.classList.add("magicfeedback-modal-counter");
1430
- const A = () => {
1714
+ E.classList.add("magicfeedback-modal-actions"), E.style.flexShrink = "0";
1715
+ const A = document.createElement("div");
1716
+ A.classList.add("magicfeedback-modal-counter");
1717
+ const k = () => {
1431
1718
  const t5 = l("of");
1432
- k.textContent = `${l("prioritized")} ${e5.length} ${t5} ${s2}`, a3.style.display = e5.length > 0 ? "block" : "none";
1719
+ A.textContent = `${l("prioritized")} ${e5.length} ${t5} ${s2}`, o3.style.display = e5.length > 0 ? "block" : "none";
1433
1720
  };
1434
- A();
1721
+ k();
1435
1722
  const C = document.createElement("button");
1436
- C.type = "button", C.classList.add("magicfeedback-modal-close"), C.setAttribute("aria-label", l("cancel")), C.title = l("cancel"), C.textContent = "\xD7", C.style.position = "absolute", C.style.top = "8px", C.style.right = "8px", C.style.border = "none", C.style.background = "transparent", C.style.fontSize = "24px", C.style.cursor = "pointer", C.addEventListener("click", (() => {
1437
- h.style.display = "none";
1723
+ C.type = "button", C.classList.add("magicfeedback-modal-close"), C.setAttribute("aria-label", l("cancel")), C.title = l("cancel"), C.textContent = "\xD7", C.style.position = "absolute", C.style.top = "8px", C.style.right = "8px", C.style.border = "none", C.style.background = "transparent", C.style.fontSize = "24px", C.style.cursor = "pointer";
1724
+ const T = () => {
1725
+ document.body.appendChild(m), m.style.display = "flex", y(), k();
1726
+ }, P = () => {
1727
+ m.style.display = "none", d.appendChild(m);
1728
+ };
1729
+ C.addEventListener("click", (() => {
1730
+ P();
1438
1731
  }));
1439
- const T = document.createElement("button");
1440
- return T.type = "button", T.textContent = l("confirm"), T.classList.add("magicfeedback-button"), T.classList.add("magicfeedback-button-primary"), T.addEventListener("click", (() => {
1441
- h.style.display = "none", m();
1442
- })), E.appendChild(k), E.appendChild(T), f.appendChild(C), f.appendChild(v), f.appendChild(b), f.appendChild(E), h.appendChild(f), c2.addEventListener("click", (() => {
1443
- h.style.display = "flex", y(), A();
1444
- })), h.addEventListener("click", ((e6) => {
1445
- e6.target === h && (h.style.display = "none");
1446
- })), d.appendChild(r3), d.appendChild(u2), d.appendChild(h), m(), d;
1732
+ const O = document.createElement("button");
1733
+ return O.type = "button", O.textContent = l("confirm"), O.classList.add("magicfeedback-button"), O.classList.add("magicfeedback-button-primary"), O.addEventListener("click", (() => {
1734
+ P(), h();
1735
+ })), E.appendChild(A), E.appendChild(O), f.appendChild(C), f.appendChild(g), f.appendChild(b), f.appendChild(E), m.appendChild(f), c2.addEventListener("click", (() => {
1736
+ T();
1737
+ })), m.addEventListener("click", ((e6) => {
1738
+ e6.target === m && P();
1739
+ })), d.appendChild(r3), d.appendChild(u2), d.appendChild(m), h(), d;
1447
1740
  }
1448
1741
  const c = document.createElement("ul");
1449
1742
  c.classList.add("magicfeedback-priority-list-list");
@@ -1455,108 +1748,107 @@ var require_magicfeedback_sdk_browser = __commonJS({
1455
1748
  r3.classList.add("magicfeedback-input-magicfeedback-priority-list"), r3.classList.add("magicfeedback-input"), r3.type = "hidden", r3.id = `priority-list-${i2}`, r3.name = i2, r3.value = `${t5 + 1}. ${e5}`, n3.appendChild(r3);
1456
1749
  const s3 = document.createElement("label");
1457
1750
  s3.classList.add("magicfeedback-priority-list-item-label"), s3.textContent = `${t5 + 1}. ${e5}`, n3.appendChild(s3);
1458
- const a3 = document.createElement("div");
1459
- a3.style.display = "flex", a3.style.alignItems = "center", a3.style.justifyContent = "space-between";
1460
- const o3 = document.createElement("img");
1461
- o3.classList.add("magicfeedback-priority-list-arrow-up"), o3.src = "https://magicfeedback-c6458-dev.web.app/assets/arrow.svg", o3.style.width = "20px", o3.style.height = "20px", o3.style.cursor = "pointer", o3.style.margin = "0 5px", o3.style.color = "#000", o3.style.visibility = 0 === t5 ? "hidden" : "visible", o3.addEventListener("click", (() => {
1462
- var t6, i3, a4, d2;
1751
+ const o3 = document.createElement("div");
1752
+ o3.style.display = "flex", o3.style.alignItems = "center", o3.style.justifyContent = "space-between";
1753
+ const a3 = document.createElement("img");
1754
+ a3.classList.add("magicfeedback-priority-list-arrow-up"), a3.src = "https://magicfeedback-c6458-dev.web.app/assets/arrow.svg", a3.style.width = "20px", a3.style.height = "20px", a3.style.cursor = "pointer", a3.style.margin = "0 5px", a3.style.color = "#000", a3.style.visibility = 0 === t5 ? "hidden" : "visible", a3.addEventListener("click", (() => {
1755
+ var t6, i3, o4, d2;
1463
1756
  const p = n3.previousElementSibling;
1464
1757
  if (p) {
1465
- const m = Number(null === (t6 = r3.value) || void 0 === t6 ? void 0 : t6.split(".")[0]) - 1;
1466
- r3.value = `${m}. ${e5}`, s3.textContent = `${m}. ${e5}`, o3.style.visibility = 1 === m ? "hidden" : "visible", l2.style.visibility = m === u.length ? "hidden" : "visible";
1467
- const h = p.querySelector(".magicfeedback-input-magicfeedback-priority-list"), f = p.querySelector(".magicfeedback-priority-list-item-label"), v = p.querySelector(".magicfeedback-priority-list-arrow-up"), g = p.querySelector(".magicfeedback-priority-list-arrow-down");
1468
- if (h && f && v && g) {
1469
- const e6 = Number(null === (i3 = h.value) || void 0 === i3 ? void 0 : i3.split(".")[0]) + 1;
1470
- h.value = `${e6}.${null === (a4 = f.textContent) || void 0 === a4 ? void 0 : a4.split(".")[1]}`, f.textContent = `${e6}.${null === (d2 = f.textContent) || void 0 === d2 ? void 0 : d2.split(".")[1]}`, v.style.visibility = 1 === e6 ? "hidden" : "visible", g.style.visibility = e6 === u.length ? "hidden" : "visible";
1758
+ const h = Number(null === (t6 = r3.value) || void 0 === t6 ? void 0 : t6.split(".")[0]) - 1;
1759
+ r3.value = `${h}. ${e5}`, s3.textContent = `${h}. ${e5}`, a3.style.visibility = 1 === h ? "hidden" : "visible", l2.style.visibility = h === u.length ? "hidden" : "visible";
1760
+ const m = p.querySelector(".magicfeedback-input-magicfeedback-priority-list"), f = p.querySelector(".magicfeedback-priority-list-item-label"), g = p.querySelector(".magicfeedback-priority-list-arrow-up"), v = p.querySelector(".magicfeedback-priority-list-arrow-down");
1761
+ if (m && f && g && v) {
1762
+ const e6 = Number(null === (i3 = m.value) || void 0 === i3 ? void 0 : i3.split(".")[0]) + 1;
1763
+ m.value = `${e6}.${null === (o4 = f.textContent) || void 0 === o4 ? void 0 : o4.split(".")[1]}`, f.textContent = `${e6}.${null === (d2 = f.textContent) || void 0 === d2 ? void 0 : d2.split(".")[1]}`, g.style.visibility = 1 === e6 ? "hidden" : "visible", v.style.visibility = e6 === u.length ? "hidden" : "visible";
1471
1764
  }
1472
1765
  c.insertBefore(n3, p);
1473
1766
  }
1474
1767
  }));
1475
1768
  const l2 = document.createElement("img");
1476
1769
  l2.classList.add("magicfeedback-priority-list-arrow-down"), l2.src = "https://magicfeedback-c6458-dev.web.app/assets/arrow.svg", l2.style.width = "20px", l2.style.height = "20px", l2.style.cursor = "pointer", l2.style.margin = "0 5px", l2.style.color = "#000", l2.style.transform = "rotate(180deg)", l2.style.visibility = t5 === u.length - 1 ? "hidden" : "visible", l2.addEventListener("click", (() => {
1477
- var t6, i3, a4;
1770
+ var t6, i3, o4;
1478
1771
  const d2 = n3.nextElementSibling;
1479
1772
  if (d2) {
1480
1773
  const p = Number(null === (t6 = r3.value) || void 0 === t6 ? void 0 : t6.split(".")[0]) + 1;
1481
- r3.value = `${p}. ${e5}`, s3.textContent = `${p}. ${e5}`, o3.style.visibility = 1 === p ? "hidden" : "visible", l2.style.visibility = p === u.length ? "hidden" : "visible";
1482
- const m = d2.querySelector(".magicfeedback-input-magicfeedback-priority-list"), h = d2.querySelector(".magicfeedback-priority-list-item-label"), f = d2.querySelector(".magicfeedback-priority-list-arrow-up"), v = d2.querySelector(".magicfeedback-priority-list-arrow-down");
1483
- if (m && h && f && v) {
1484
- const e6 = Number(m.value.split(".")[0]) - 1;
1485
- m.value = `${e6}.${null === (i3 = h.textContent) || void 0 === i3 ? void 0 : i3.split(".")[1]}`, h.textContent = `${e6}.${null === (a4 = h.textContent) || void 0 === a4 ? void 0 : a4.split(".")[1]}`, f.style.visibility = 1 === e6 ? "hidden" : "visible", v.style.visibility = e6 === u.length ? "hidden" : "visible";
1774
+ r3.value = `${p}. ${e5}`, s3.textContent = `${p}. ${e5}`, a3.style.visibility = 1 === p ? "hidden" : "visible", l2.style.visibility = p === u.length ? "hidden" : "visible";
1775
+ const h = d2.querySelector(".magicfeedback-input-magicfeedback-priority-list"), m = d2.querySelector(".magicfeedback-priority-list-item-label"), f = d2.querySelector(".magicfeedback-priority-list-arrow-up"), g = d2.querySelector(".magicfeedback-priority-list-arrow-down");
1776
+ if (h && m && f && g) {
1777
+ const e6 = Number(h.value.split(".")[0]) - 1;
1778
+ h.value = `${e6}.${null === (i3 = m.textContent) || void 0 === i3 ? void 0 : i3.split(".")[1]}`, m.textContent = `${e6}.${null === (o4 = m.textContent) || void 0 === o4 ? void 0 : o4.split(".")[1]}`, f.style.visibility = 1 === e6 ? "hidden" : "visible", g.style.visibility = e6 === u.length ? "hidden" : "visible";
1486
1779
  }
1487
1780
  c.insertBefore(d2, n3);
1488
1781
  }
1489
- })), a3.appendChild(o3), a3.appendChild(l2), n3.appendChild(a3), c.appendChild(n3);
1782
+ })), o3.appendChild(a3), o3.appendChild(l2), n3.appendChild(o3), c.appendChild(n3);
1490
1783
  })), d.appendChild(c), d;
1491
1784
  })({ value: e3.value, ref: e3.ref, randomPosition: t3, limitPriority: (null === (n = e3.assets) || void 0 === n ? void 0 : n.limitPriority) || false, maxPriority: (null === (r = e3.assets) || void 0 === r ? void 0 : r.maxPriority) || 0, placeholder: (null === (s = e3.assets) || void 0 === s ? void 0 : s.placeholder) || "", language: i || "en" });
1492
- return a.appendChild(o), { element: a, elementTypeClass: "magicfeedback-priority-list" };
1785
+ return o.appendChild(a), { element: o, elementTypeClass: "magicfeedback-priority-list" };
1493
1786
  };
1494
1787
  }, 152: (e2, t2, i) => {
1495
1788
  "use strict";
1496
1789
  Object.defineProperty(t2, "__esModule", { value: true }), t2.renderRatingEmoji = void 0;
1497
1790
  const n = i(559), r = "https://survey-dev.magicfeedback.io/assets/emojis";
1498
1791
  t2.renderRatingEmoji = ({ question: e3, url: t3, send: i2, urlParamValue: s }) => {
1499
- var a;
1500
- const { ref: o, assets: l } = e3, d = document.createElement("div"), c = "magicfeedback-rating", u = document.createElement("div");
1501
- u.classList.add("magicfeedback-rating-container");
1502
- const p = (null == l ? void 0 : l.max) ? Number(null == l ? void 0 : l.max) : 5, m = (null == l ? void 0 : l.min) ? Number(null == l ? void 0 : l.min) : 1, h = (0, n.createRatingPlaceholder)(m, p, null == l ? void 0 : l.minPlaceholder, null == l ? void 0 : l.maxPlaceholder, null !== (a = null == l ? void 0 : l.extraOption) && void 0 !== a && a);
1503
- for (let e4 = m; e4 <= p; e4++) {
1792
+ const { ref: o, assets: a } = e3, l = document.createElement("div"), d = "magicfeedback-rating", c = document.createElement("div");
1793
+ c.classList.add("magicfeedback-rating-container");
1794
+ const u = (null == a ? void 0 : a.max) ? Number(null == a ? void 0 : a.max) : 5, p = (null == a ? void 0 : a.min) ? Number(null == a ? void 0 : a.min) : 1, h = (0, n.createRatingPlaceholder)(null == a ? void 0 : a.minPlaceholder, null == a ? void 0 : a.maxPlaceholder);
1795
+ for (let e4 = p; e4 <= u; e4++) {
1504
1796
  const n2 = document.createElement("div");
1505
1797
  n2.classList.add("magicfeedback-rating-option");
1506
1798
  const a2 = document.createElement("label");
1507
1799
  a2.htmlFor = `rating-${o}-${e4}`, a2.classList.add("magicfeedback-rating-option-label-container");
1508
1800
  const l2 = document.createElement("label");
1509
1801
  l2.htmlFor = `rating-${o}-${e4}`, l2.textContent = e4.toString();
1510
- const d2 = document.createElement("img");
1511
- if (d2.alt = `face-${o}-${e4}`, d2.className = `rating-image${e4}`, 0 === m && 10 === p) d2.src = `${t3}/${e4}.svg`, d2.onerror = () => d2.src = `${r}/${e4}.svg`;
1512
- else if (1 === m && 5 === p) switch (e4) {
1802
+ const h2 = document.createElement("img");
1803
+ if (h2.alt = `face-${o}-${e4}`, h2.className = `rating-image${e4}`, 0 === p && 10 === u) h2.src = `${t3}/${e4}.svg`, h2.onerror = () => h2.src = `${r}/${e4}.svg`;
1804
+ else if (1 === p && 5 === u) switch (e4) {
1513
1805
  case 1:
1514
- d2.src = `${t3}/1.svg`, d2.onerror = () => d2.src = `${r}/1.svg`;
1806
+ h2.src = `${t3}/1.svg`, h2.onerror = () => h2.src = `${r}/1.svg`;
1515
1807
  break;
1516
1808
  case 2:
1517
- d2.src = `${t3}/2.svg`, d2.onerror = () => d2.src = `${r}/2.svg`;
1809
+ h2.src = `${t3}/2.svg`, h2.onerror = () => h2.src = `${r}/2.svg`;
1518
1810
  break;
1519
1811
  case 3:
1520
- d2.src = `${t3}/6.svg`, d2.onerror = () => d2.src = `${r}/6.svg`;
1812
+ h2.src = `${t3}/6.svg`, h2.onerror = () => h2.src = `${r}/6.svg`;
1521
1813
  break;
1522
1814
  case 4:
1523
- d2.src = `${t3}/9.svg`, d2.onerror = () => d2.src = `${r}/9.svg`;
1815
+ h2.src = `${t3}/9.svg`, h2.onerror = () => h2.src = `${r}/9.svg`;
1524
1816
  break;
1525
1817
  case 5:
1526
- d2.src = `${t3}/10.svg`, d2.onerror = () => d2.src = `${r}/10.svg`;
1818
+ h2.src = `${t3}/10.svg`, h2.onerror = () => h2.src = `${r}/10.svg`;
1527
1819
  }
1528
1820
  else {
1529
- const i3 = Math.round(10 / (p - m) * (e4 - m));
1530
- d2.src = `${t3}/${i3}.svg`, d2.onerror = () => d2.src = `${r}/${i3}.svg`;
1821
+ const i3 = Math.round(10 / (u - p) * (e4 - p));
1822
+ h2.src = `${t3}/${i3}.svg`, h2.onerror = () => h2.src = `${r}/${i3}.svg`;
1531
1823
  }
1532
- const h2 = document.createElement("input");
1533
- h2.id = `rating-${o}-${e4}`, h2.type = "radio", h2.name = o, h2.value = e4.toString(), h2.classList.add(c), h2.classList.add("magicfeedback-input"), i2 && h2.addEventListener("change", (() => {
1824
+ const m = document.createElement("input");
1825
+ m.id = `rating-${o}-${e4}`, m.type = "radio", m.name = o, m.value = e4.toString(), m.classList.add(d), m.classList.add("magicfeedback-input"), i2 && m.addEventListener("change", (() => {
1534
1826
  i2();
1535
- })), s && s === h2.value && (h2.checked = true), a2.appendChild(h2), a2.appendChild(d2), a2.appendChild(l2), n2.appendChild(a2), u.appendChild(n2);
1827
+ })), s && s === m.value && (m.checked = true), a2.appendChild(m), a2.appendChild(h2), a2.appendChild(l2), n2.appendChild(a2), c.appendChild(n2);
1536
1828
  }
1537
- if ((null == l ? void 0 : l.extraOption) && (null == l ? void 0 : l.extraOptionText)) {
1829
+ if ((null == a ? void 0 : a.extraOption) && (null == a ? void 0 : a.extraOptionText)) {
1538
1830
  const e4 = document.createElement("div");
1539
1831
  e4.classList.add("magicfeedback-rating-option");
1540
1832
  const t4 = document.createElement("label");
1541
1833
  t4.htmlFor = `rating-${o}-extra`, t4.classList.add("magicfeedback-rating-option-label-container");
1542
1834
  const n2 = document.createElement("label");
1543
- n2.htmlFor = `rating-${o}-extra`, n2.textContent = null == l ? void 0 : l.extraOptionText;
1835
+ n2.htmlFor = `rating-${o}-extra`, n2.textContent = null == a ? void 0 : a.extraOptionText;
1544
1836
  const r2 = document.createElement("img");
1545
1837
  r2.src = "https://magicfeedback-c6458-dev.web.app/assets/question.svg", r2.alt = `face-${o}-extra`, r2.className = "magicfeedback-rating-image-extra";
1546
1838
  const s2 = document.createElement("input");
1547
- s2.id = `rating-${o}-extra`, s2.type = "radio", s2.name = o, s2.value = "-", s2.classList.add(c), s2.classList.add("magicfeedback-input"), i2 && s2.addEventListener("change", (() => {
1839
+ s2.id = `rating-${o}-extra`, s2.type = "radio", s2.name = o, s2.value = "-", s2.classList.add(d), s2.classList.add("magicfeedback-input"), i2 && s2.addEventListener("change", (() => {
1548
1840
  i2();
1549
- })), t4.appendChild(s2), t4.appendChild(r2), t4.appendChild(n2), e4.appendChild(t4), u.appendChild(e4);
1841
+ })), t4.appendChild(s2), t4.appendChild(r2), t4.appendChild(n2), e4.appendChild(t4), c.appendChild(e4);
1550
1842
  }
1551
- return h.childElementCount > 0 && (u.classList.add("magicfeedback-rating-container--with-placeholder"), u.insertBefore(h, u.firstChild)), d.appendChild(u), { element: d, elementTypeClass: c };
1843
+ return h.childElementCount > 0 && c.appendChild(h), l.appendChild(c), { element: l, elementTypeClass: d };
1552
1844
  };
1553
1845
  }, 917: (e2, t2, i) => {
1554
1846
  "use strict";
1555
1847
  Object.defineProperty(t2, "__esModule", { value: true }), t2.renderRatingNumber = void 0;
1556
1848
  const n = i(559);
1557
- t2.renderRatingNumber = ({ question: e3, order: t3, direction: i2, isPhone: r, send: s, urlParamValue: a }) => {
1849
+ t2.renderRatingNumber = ({ question: e3, order: t3, direction: i2, send: r, urlParamValue: s }) => {
1558
1850
  const o = "magicfeedback-rating-number";
1559
- return { element: (0, n.createRatingNumberElement)(e3.ref, e3.assets, t3, i2, r, o, s, a), elementTypeClass: o };
1851
+ return { element: (0, n.createRatingNumberElement)(e3.ref, e3.assets, t3, i2, o, r, s), elementTypeClass: o };
1560
1852
  };
1561
1853
  }, 452: (e2, t2, i) => {
1562
1854
  "use strict";
@@ -1564,21 +1856,19 @@ var require_magicfeedback_sdk_browser = __commonJS({
1564
1856
  const n = i(559);
1565
1857
  t2.renderRatingStar = ({ question: e3, send: t3, urlParamValue: i2 }) => {
1566
1858
  var r, s;
1567
- const a = document.createElement("div"), o = (0, n.createStarRating)(e3.ref, null === (r = e3.assets) || void 0 === r ? void 0 : r.minPlaceholder, null === (s = e3.assets) || void 0 === s ? void 0 : s.maxPlaceholder, t3, i2);
1568
- return a.appendChild(o), { element: a, elementTypeClass: "magicfeedback-rating-star" };
1859
+ const o = document.createElement("div"), a = (0, n.createStarRating)(e3.ref, null === (r = e3.assets) || void 0 === r ? void 0 : r.minPlaceholder, null === (s = e3.assets) || void 0 === s ? void 0 : s.maxPlaceholder, t3, i2);
1860
+ return o.appendChild(a), { element: o, elementTypeClass: "magicfeedback-rating-star" };
1569
1861
  };
1570
1862
  }, 85: (e2, t2, i) => {
1571
1863
  "use strict";
1572
1864
  Object.defineProperty(t2, "__esModule", { value: true }), t2.renderSelect = void 0;
1573
1865
  const n = i(516);
1574
- t2.renderSelect = ({ question: e3, format: t3, language: i2, urlParamValue: r, send: s }) => {
1575
- const { title: a, value: o, defaultValue: l } = e3, d = document.createElement("select"), c = document.createElement("option");
1576
- return c.value = "", c.text = "slim" === t3 ? (0, n.parseTitle)(a, i2) : l || "Select an option", c.disabled = true, c.selected = true, d.appendChild(c), o.forEach(((e4) => {
1866
+ t2.renderSelect = ({ question: e3, format: t3, language: i2, urlParamValue: r }) => {
1867
+ const { title: s, value: o, defaultValue: a } = e3, l = document.createElement("select"), d = document.createElement("option");
1868
+ return d.value = "", d.text = "slim" === t3 ? (0, n.parseTitle)(s, i2) : a || "Select an option", d.disabled = true, d.selected = true, l.appendChild(d), o.forEach(((e4) => {
1577
1869
  const t4 = document.createElement("option");
1578
- t4.value = e4, t4.text = e4, d.appendChild(t4);
1579
- })), r && o.includes(r) && (d.value = r), s && d.addEventListener("change", (() => {
1580
- s();
1581
- })), { element: d, elementTypeClass: "magicfeedback-select" };
1870
+ t4.value = e4, t4.text = e4, l.appendChild(t4);
1871
+ })), r && o.includes(r) && (l.value = r), { element: l, elementTypeClass: "magicfeedback-select" };
1582
1872
  };
1583
1873
  }, 90: (e2, t2, i) => {
1584
1874
  "use strict";
@@ -1590,23 +1880,314 @@ var require_magicfeedback_sdk_browser = __commonJS({
1590
1880
  e4.preventDefault(), "Enter" === e4.key && r && r();
1591
1881
  })), { element: s, elementTypeClass: "magicfeedback-text" };
1592
1882
  };
1593
- }, 250: (e2, t2) => {
1883
+ }, 250: (e2, t2, i) => {
1884
+ "use strict";
1885
+ Object.defineProperty(t2, "__esModule", { value: true }), t2.renderUploadFile = void 0;
1886
+ const n = i(571);
1887
+ t2.renderUploadFile = ({ question: e3, language: t3 }) => (0, n.createUploadControl)(e3, t3, "file");
1888
+ }, 843: (e2, t2, i) => {
1889
+ "use strict";
1890
+ Object.defineProperty(t2, "__esModule", { value: true }), t2.renderUploadImage = void 0;
1891
+ const n = i(571);
1892
+ t2.renderUploadImage = ({ question: e3, language: t3 }) => (0, n.createUploadControl)(e3, t3, "image");
1893
+ }, 571: function(e2, t2, i) {
1894
+ "use strict";
1895
+ var n = this && this.__awaiter || function(e3, t3, i2, n2) {
1896
+ return new (i2 || (i2 = Promise))((function(r2, s2) {
1897
+ function o2(e4) {
1898
+ try {
1899
+ l2(n2.next(e4));
1900
+ } catch (e5) {
1901
+ s2(e5);
1902
+ }
1903
+ }
1904
+ function a2(e4) {
1905
+ try {
1906
+ l2(n2.throw(e4));
1907
+ } catch (e5) {
1908
+ s2(e5);
1909
+ }
1910
+ }
1911
+ function l2(e4) {
1912
+ var t4;
1913
+ e4.done ? r2(e4.value) : (t4 = e4.value, t4 instanceof i2 ? t4 : new i2((function(e5) {
1914
+ e5(t4);
1915
+ }))).then(o2, a2);
1916
+ }
1917
+ l2((n2 = n2.apply(e3, t3 || [])).next());
1918
+ }));
1919
+ };
1920
+ Object.defineProperty(t2, "__esModule", { value: true }), t2.createUploadControl = t2.awaitUploadReady = t2.getUploadValues = t2.formatFileSize = void 0;
1921
+ const r = i(784), s = i(516), o = "__mfUploadValues", a = "__mfUploadReady";
1922
+ function l(e3) {
1923
+ if ("number" != typeof e3 || isNaN(e3)) return "";
1924
+ if (e3 < 1024) return `${e3} B`;
1925
+ const t3 = e3 / 1024;
1926
+ if (t3 < 1024) return `${t3 < 10 ? t3.toFixed(1) : Math.round(t3)} KB`;
1927
+ const i2 = t3 / 1024;
1928
+ return `${i2 < 10 ? i2.toFixed(1) : Math.round(i2)} MB`;
1929
+ }
1930
+ t2.formatFileSize = l, t2.getUploadValues = function(e3) {
1931
+ const t3 = e3[o];
1932
+ return Array.isArray(t3) ? t3 : [];
1933
+ }, t2.awaitUploadReady = function(e3) {
1934
+ return n(this, void 0, void 0, (function* () {
1935
+ if (!e3) return;
1936
+ const t3 = Array.from(e3.querySelectorAll(".magicfeedback-upload-native"));
1937
+ yield Promise.all(t3.map(((e4) => e4[a])).filter(Boolean));
1938
+ }));
1939
+ }, t2.createUploadControl = function(e3, t3, i2) {
1940
+ const { ref: n2, require: d, title: c, assets: u } = e3, p = "image" === i2 ? "magicfeedback-upload-image" : "magicfeedback-upload-file", h = (null == u ? void 0 : u.multiple) || false, m = h ? (null == u ? void 0 : u.maxFiles) || 0 : 1, f = Number(null == u ? void 0 : u.maxFileSize) > 0 ? Number(null == u ? void 0 : u.maxFileSize) : 0, g = 1024 * f * 1024, v = document.createElement("div");
1941
+ v.classList.add("magicfeedback-upload");
1942
+ const y = document.createElement("input");
1943
+ y.type = "file", "image" === i2 && (y.accept = "image/*"), y.multiple = h, y.required = d, y.name = n2, y.id = `magicfeedback-upload-input-${n2}`, y.classList.add(p), y.classList.add("magicfeedback-input"), y.classList.add("magicfeedback-upload-native"), y[o] = [], y[a] = Promise.resolve();
1944
+ const b = (0, s.parseTitle)(c, t3);
1945
+ b && y.setAttribute("aria-label", b);
1946
+ const E = document.createElement("div");
1947
+ E.classList.add("magicfeedback-upload-dropzone");
1948
+ const A = document.createElement("span");
1949
+ A.classList.add("magicfeedback-upload-icon"), A.innerHTML = "image" === i2 ? '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/><circle cx="8.5" cy="8.5" r="1.5"/><path d="M21 15l-5-5L5 21"/></svg>' : '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M16 16l-4-4-4 4"/><path d="M12 12v9"/><path d="M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3"/></svg>';
1950
+ const k = document.createElement("span");
1951
+ k.classList.add("magicfeedback-upload-cta"), k.textContent = r.placeholder.upload.cta(t3);
1952
+ const C = document.createElement("span");
1953
+ C.classList.add("magicfeedback-upload-hint"), C.textContent = (function(e4, t4, i3, n3, s2) {
1954
+ const o2 = [r.placeholder.upload.formats(e4, t4)];
1955
+ return i3 && n3 > 0 && o2.push(r.placeholder.upload.maxFiles(e4, n3)), s2 > 0 && o2.push(r.placeholder.upload.maxSize(e4, s2)), o2.filter(Boolean).join(" \xB7 ");
1956
+ })(t3, i2, h, m, f), E.appendChild(y), E.appendChild(A), E.appendChild(k), E.appendChild(C);
1957
+ const T = document.createElement("div");
1958
+ T.classList.add("magicfeedback-upload-error");
1959
+ const P = document.createElement("ul");
1960
+ P.classList.add("magicfeedback-upload-list"), v.appendChild(E), v.appendChild(T), v.appendChild(P);
1961
+ const O = /* @__PURE__ */ new WeakMap(), x = (e4) => {
1962
+ const t4 = O.get(e4);
1963
+ return t4 ? Promise.resolve(t4) : new Promise(((t5) => {
1964
+ const i3 = new FileReader(), n3 = (i4) => {
1965
+ const n4 = JSON.stringify({ name: e4.name, type: e4.type, size: e4.size, content: i4 });
1966
+ O.set(e4, n4), t5(n4);
1967
+ };
1968
+ i3.onload = () => n3("string" == typeof i3.result ? i3.result : ""), i3.onerror = () => n3(""), i3.readAsDataURL(e4);
1969
+ }));
1970
+ }, w = [], L = (e4) => {
1971
+ try {
1972
+ const t4 = m > 0 ? e4.slice(0, m) : e4, i3 = new DataTransfer();
1973
+ t4.forEach(((e5) => i3.items.add(e5))), y.files = i3.files;
1974
+ } catch (e5) {
1975
+ }
1976
+ !(function() {
1977
+ w.forEach(((e6) => URL.revokeObjectURL(e6))), w.length = 0, P.innerHTML = "";
1978
+ const e5 = Array.from(y.files || []);
1979
+ v.classList.toggle("magicfeedback-upload--has-files", e5.length > 0), e5.forEach(((e6, n3) => {
1980
+ const s2 = document.createElement("li");
1981
+ s2.classList.add("magicfeedback-upload-file-item");
1982
+ const o2 = document.createElement("span");
1983
+ if (o2.classList.add("magicfeedback-upload-thumb"), "image" === i2 && e6.type.startsWith("image/")) {
1984
+ const t4 = URL.createObjectURL(e6);
1985
+ w.push(t4);
1986
+ const i3 = document.createElement("img");
1987
+ i3.src = t4, i3.alt = e6.name, o2.appendChild(i3);
1988
+ } else o2.innerHTML = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/></svg>';
1989
+ const a2 = document.createElement("span");
1990
+ a2.classList.add("magicfeedback-upload-file-info");
1991
+ const d2 = document.createElement("span");
1992
+ d2.classList.add("magicfeedback-upload-file-name"), d2.textContent = e6.name, d2.title = e6.name;
1993
+ const c2 = document.createElement("span");
1994
+ c2.classList.add("magicfeedback-upload-file-size"), c2.textContent = l(e6.size), a2.appendChild(d2), a2.appendChild(c2);
1995
+ const u2 = document.createElement("button");
1996
+ u2.type = "button", u2.classList.add("magicfeedback-upload-remove"), u2.setAttribute("aria-label", `${r.placeholder.upload.remove(t3)}: ${e6.name}`), u2.innerHTML = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>', u2.addEventListener("click", ((e7) => {
1997
+ e7.preventDefault(), e7.stopPropagation(), L(Array.from(y.files || []).filter(((e8, t4) => t4 !== n3)));
1998
+ })), s2.appendChild(o2), s2.appendChild(a2), s2.appendChild(u2), P.appendChild(s2);
1999
+ }));
2000
+ })(), (() => {
2001
+ const e5 = Array.from(y.files || []), t4 = Promise.all(e5.map(x)).then(((e6) => {
2002
+ y[o] = e6;
2003
+ }));
2004
+ y[a] = t4;
2005
+ })();
2006
+ }, S = (e4) => {
2007
+ if (!e4.length) return T.textContent = "", void T.classList.remove("is-visible");
2008
+ const i3 = e4.map(((e5) => e5.name)).join(", ");
2009
+ T.textContent = `${r.placeholder.upload.tooLarge(t3, f)}: ${i3}`, T.classList.add("is-visible");
2010
+ }, N = (e4) => {
2011
+ if (!g) return { accepted: e4, rejected: [] };
2012
+ const t4 = [], i3 = [];
2013
+ return e4.forEach(((e5) => (e5.size <= g ? t4 : i3).push(e5))), { accepted: t4, rejected: i3 };
2014
+ };
2015
+ y.addEventListener("change", (() => {
2016
+ const { accepted: e4, rejected: t4 } = N(Array.from(y.files || []));
2017
+ S(t4), L(e4);
2018
+ }));
2019
+ const I = (e4) => {
2020
+ e4.preventDefault(), e4.stopPropagation();
2021
+ };
2022
+ return ["dragenter", "dragover"].forEach(((e4) => E.addEventListener(e4, ((e5) => {
2023
+ I(e5), E.classList.add("is-dragover");
2024
+ })))), ["dragleave", "dragend"].forEach(((e4) => E.addEventListener(e4, ((e5) => {
2025
+ I(e5), E.classList.remove("is-dragover");
2026
+ })))), E.addEventListener("drop", ((e4) => {
2027
+ I(e4), E.classList.remove("is-dragover");
2028
+ const t4 = e4.dataTransfer;
2029
+ let n3 = t4 ? Array.from(t4.files) : [];
2030
+ if ("image" === i2 && (n3 = n3.filter(((e5) => e5.type.startsWith("image/")))), !n3.length) return;
2031
+ const { accepted: r2, rejected: s2 } = N(n3);
2032
+ if (S(s2), !r2.length) return;
2033
+ const o2 = h ? Array.from(y.files || []) : [];
2034
+ L(o2.concat(r2));
2035
+ })), { element: v, elementTypeClass: p };
2036
+ };
2037
+ }, 945: function(e2, t2, i) {
2038
+ "use strict";
2039
+ var n = this && this.__awaiter || function(e3, t3, i2, n2) {
2040
+ return new (i2 || (i2 = Promise))((function(r2, s2) {
2041
+ function o2(e4) {
2042
+ try {
2043
+ l2(n2.next(e4));
2044
+ } catch (e5) {
2045
+ s2(e5);
2046
+ }
2047
+ }
2048
+ function a2(e4) {
2049
+ try {
2050
+ l2(n2.throw(e4));
2051
+ } catch (e5) {
2052
+ s2(e5);
2053
+ }
2054
+ }
2055
+ function l2(e4) {
2056
+ var t4;
2057
+ e4.done ? r2(e4.value) : (t4 = e4.value, t4 instanceof i2 ? t4 : new i2((function(e5) {
2058
+ e5(t4);
2059
+ }))).then(o2, a2);
2060
+ }
2061
+ l2((n2 = n2.apply(e3, t3 || [])).next());
2062
+ }));
2063
+ }, r = this && this.__importDefault || function(e3) {
2064
+ return e3 && e3.__esModule ? e3 : { default: e3 };
2065
+ };
2066
+ Object.defineProperty(t2, "__esModule", { value: true }), t2.nextAgentTurn = t2.startAgentSurvey = void 0;
2067
+ const s = r(i(326)), o = i(313), a = i(857), l = i(279);
2068
+ function d(e3, t3, i2, r2, a2) {
2069
+ var d2;
2070
+ return n(this, void 0, void 0, (function* () {
2071
+ let n2;
2072
+ try {
2073
+ n2 = yield (0, s.default)(e3 + t3, { method: "POST", headers: Object.assign({ "Content-Type": "application/json" }, o.header), body: JSON.stringify(i2) });
2074
+ } catch (e4) {
2075
+ throw r2.err(`[agentSurvey/${a2}] network error`, e4), new l.AgentApiError("NETWORK", (null == e4 ? void 0 : e4.message) || "Network error");
2076
+ }
2077
+ if (!n2.ok) {
2078
+ let e4 = null;
2079
+ try {
2080
+ e4 = yield n2.json();
2081
+ } catch (e5) {
2082
+ }
2083
+ const t4 = (0, l.mapAgentStatus)(n2.status, a2);
2084
+ throw r2.err(`[agentSurvey/${a2}] ${n2.status}`, e4), new l.AgentApiError(t4, (null === (d2 = null == e4 ? void 0 : e4.error) || void 0 === d2 ? void 0 : d2.message) || (null == e4 ? void 0 : e4.message) || n2.statusText, n2.status, "RATE_LIMITED" === t4 ? (function(e5) {
2085
+ var t5, i3;
2086
+ const n3 = null === (i3 = null === (t5 = null == e5 ? void 0 : e5.headers) || void 0 === t5 ? void 0 : t5.get) || void 0 === i3 ? void 0 : i3.call(t5, "Retry-After"), r3 = n3 ? Number(n3) : NaN;
2087
+ return Number.isFinite(r3) && r3 > 0 ? 1e3 * r3 : 6e4;
2088
+ })(n2) : void 0, e4);
2089
+ }
2090
+ try {
2091
+ const e4 = yield n2.json();
2092
+ return r2.log(`[agentSurvey/${a2}] ok`, e4), e4;
2093
+ } catch (e4) {
2094
+ throw new l.AgentApiError("MALFORMED", "Unreadable response body", n2.status);
2095
+ }
2096
+ }));
2097
+ }
2098
+ t2.startAgentSurvey = function(e3, t3, i2) {
2099
+ return d(e3, a.endpoints.sdk.agentSurveyStart, t3, i2, "start");
2100
+ }, t2.nextAgentTurn = function(e3, t3, i2) {
2101
+ return d(e3, a.endpoints.sdk.agentSurveyNext, t3, i2, "next");
2102
+ };
2103
+ }, 279: (e2, t2) => {
1594
2104
  "use strict";
1595
- Object.defineProperty(t2, "__esModule", { value: true }), t2.renderUploadFile = void 0, t2.renderUploadFile = ({ question: e3 }) => {
1596
- var t3, i;
1597
- const n = document.createElement("input");
1598
- return n.type = "file", n.required = e3.require, n.multiple = (null === (t3 = e3.assets) || void 0 === t3 ? void 0 : t3.multiple) || false, n.maxLength = (null === (i = e3.assets) || void 0 === i ? void 0 : i.maxFiles) || 1, { element: n, elementTypeClass: "magicfeedback-upload-file" };
2105
+ Object.defineProperty(t2, "__esModule", { value: true }), t2.mapAgentStatus = t2.AgentApiError = void 0;
2106
+ class i extends Error {
2107
+ constructor(e3, t3, n, r, s) {
2108
+ super(t3), this.kind = e3, this.status = n, this.retryAfterMs = r, this.body = s, this.name = "AgentApiError", Object.setPrototypeOf(this, i.prototype);
2109
+ }
2110
+ get retryable() {
2111
+ return "RATE_LIMITED" === this.kind || "AI_UNAVAILABLE" === this.kind || "NETWORK" === this.kind;
2112
+ }
2113
+ }
2114
+ t2.AgentApiError = i, t2.mapAgentStatus = function(e3, t3) {
2115
+ return 429 === e3 ? "RATE_LIMITED" : 406 === e3 || 401 === e3 || 403 === e3 ? "AUTH" : 404 === e3 ? "NOT_FOUND" : 400 === e3 || 422 === e3 ? "BAD_CONFIG" : e3 >= 500 ? "start" === t3 ? "AI_UNAVAILABLE" : "NETWORK" : "MALFORMED";
2116
+ };
2117
+ }, 177: (e2, t2, i) => {
2118
+ "use strict";
2119
+ Object.defineProperty(t2, "__esModule", { value: true }), t2.encodeAnswer = t2.toAgentStep = t2.ratingBounds = t2.mapAgentType = t2.DEFAULT_ANSWER_DELIMITER = void 0;
2120
+ const n = i(558), r = i(516);
2121
+ t2.DEFAULT_ANSWER_DELIMITER = ", ";
2122
+ const s = [n.FEEDBACKAPPANSWERTYPE.RADIO, n.FEEDBACKAPPANSWERTYPE.MULTIPLECHOICE, n.FEEDBACKAPPANSWERTYPE.SELECT, n.FEEDBACKAPPANSWERTYPE.MULTIPLECHOISE_IMAGE], o = Object.values(n.FEEDBACKAPPANSWERTYPE);
2123
+ function a(e3, t3, i2) {
2124
+ var a2, l2, d2;
2125
+ const c2 = String(e3 || "").trim().toUpperCase();
2126
+ return "RATING" === c2 ? n.FEEDBACKAPPANSWERTYPE.RATING_NUMBER : c2 === n.FEEDBACKAPPANSWERTYPE.CONTACT ? (null === (a2 = i2.log) || void 0 === a2 || a2.log("[agentSurvey] CONTACT has no renderer, falling back to TEXT"), n.FEEDBACKAPPANSWERTYPE.TEXT) : o.includes(c2) ? s.includes(c2) && 0 === t3.length ? (null === (d2 = i2.log) || void 0 === d2 || d2.err(`[agentSurvey] ${c2} arrived with no options, falling back to TEXT`), n.FEEDBACKAPPANSWERTYPE.TEXT) : c2 !== n.FEEDBACKAPPANSWERTYPE.BOOLEAN || 2 !== t3.length || (function(e4, t4) {
2127
+ if (2 !== e4.length) return false;
2128
+ const i3 = e4.map(((e5) => String(e5).trim().toLowerCase())), n2 = (0, r.getBooleanOptions)(t4).map(((e5) => e5.toLowerCase())), s2 = ["yes", "no"];
2129
+ return i3[0] === s2[0] && i3[1] === s2[1] || i3[0] === n2[0] && i3[1] === n2[1];
2130
+ })(t3, i2.language) ? c2 : n.FEEDBACKAPPANSWERTYPE.RADIO : (null === (l2 = i2.log) || void 0 === l2 || l2.err(`[agentSurvey] unknown question type "${e3}", falling back to TEXT`), n.FEEDBACKAPPANSWERTYPE.TEXT);
2131
+ }
2132
+ function l(e3) {
2133
+ const t3 = e3.map(Number).filter(((e4) => Number.isFinite(e4)));
2134
+ return t3.length >= 2 ? { min: Math.min(...t3), max: Math.max(...t3) } : { min: 1, max: 5 };
2135
+ }
2136
+ function d(e3, t3, i2) {
2137
+ const r2 = { randomPosition: false, direction: "row", order: "ltr" };
2138
+ return e3 !== n.FEEDBACKAPPANSWERTYPE.RATING_NUMBER && e3 !== n.FEEDBACKAPPANSWERTYPE.RATING_EMOJI || Object.assign(r2, l(t3)), e3 === n.FEEDBACKAPPANSWERTYPE.LONGTEXT && (r2.maxCharacters = 0), Object.assign(Object.assign({}, r2), (null == i2 ? void 0 : i2.assets) || {});
2139
+ }
2140
+ function c(e3, t3, i2) {
2141
+ var n2, r2, s2, o2;
2142
+ const { full: l2, title: c2 } = t3, u = [...null !== (r2 = null !== (n2 = e3.questionValues) && void 0 !== n2 ? n2 : null == l2 ? void 0 : l2.value) && void 0 !== r2 ? r2 : []], p = a(null !== (s2 = null == l2 ? void 0 : l2.type) && void 0 !== s2 ? s2 : e3.questionType, u, i2), h = e3.questionRef || (null == l2 ? void 0 : l2.ref) || `agent-q-${e3.currentTurn}`;
2143
+ return { id: (null == l2 ? void 0 : l2.id) || `agent-${i2.sessionId}-${e3.currentTurn}`, title: c2 || "", type: p, questionType: { conf: null }, ref: h, require: null === (o2 = null == l2 ? void 0 : l2.require) || void 0 === o2 || o2, external_id: (null == l2 ? void 0 : l2.external_id) || "", value: u, defaultValue: (null == l2 ? void 0 : l2.defaultValue) || "", followup: false, position: e3.currentTurn, assets: d(p, u, l2), refMetric: (null == l2 ? void 0 : l2.refMetric) || "", integrationId: i2.integrationId, integrationPageId: "", status: "ACTIVE" };
2144
+ }
2145
+ t2.mapAgentType = a, t2.ratingBounds = l, t2.toAgentStep = function(e3, t3) {
2146
+ var i2, r2, s2;
2147
+ const o2 = e3, a2 = e3.currentTurn, l2 = e3.maxTurns, d2 = o2.coverageSummary, u = (e4) => ({ kind: "END", reason: e4, currentTurn: a2, maxTurns: l2, coverageSummary: d2 });
2148
+ if (o2.answerType === n.AGENT_ANSWER_TYPE_BLOCKED) return u("BLOCKED");
2149
+ if (true === o2.shouldEnd) return u("SHOULD_END");
2150
+ const p = (function(e4) {
2151
+ const t4 = e4.question && "object" == typeof e4.question ? e4.question : e4.nextQuestion && "object" == typeof e4.nextQuestion ? e4.nextQuestion : null;
2152
+ if (t4) {
2153
+ const e5 = t4, i3 = e5.title;
2154
+ return { full: e5, title: "string" == typeof i3 ? i3 : i3 ? JSON.stringify(i3) : null };
2155
+ }
2156
+ return { full: null, title: "string" == typeof e4.nextQuestion ? e4.nextQuestion : null };
2157
+ })(e3);
2158
+ return "NONE" === String(null !== (s2 = null !== (r2 = null === (i2 = p.full) || void 0 === i2 ? void 0 : i2.type) && void 0 !== r2 ? r2 : e3.questionType) && void 0 !== s2 ? s2 : "").trim().toUpperCase() ? u("TYPE_NONE") : p.title && p.title.trim() ? { kind: "QUESTION", question: c(e3, p, t3), isFromBase: true === e3.isFromBase, currentTurn: a2, maxTurns: l2, topic: o2.topic, coverageGaps: e3.coverageGaps, coverageSummary: d2 } : u("NO_QUESTION");
2159
+ }, t2.encodeAnswer = function(e3, i2, n2 = t2.DEFAULT_ANSWER_DELIMITER) {
2160
+ const r2 = i2.ref, s2 = (e4) => e4.flatMap(((e5) => Array.isArray(e5.value) ? e5.value : [e5.value])).map(((e5) => "string" == typeof e5 ? e5 : JSON.stringify(e5))).map(((e5) => (e5 || "").trim())).filter(((e5) => "" !== e5)), o2 = s2(e3.filter(((e4) => e4.key === r2))), a2 = s2(e3.filter(((e4) => e4.key === `extra-option-${r2}`)));
2161
+ return [o2.filter(((e4, t3) => o2.indexOf(e4) === t3)).join(n2), a2.join(n2)].filter(((e4) => "" !== e4)).join(n2);
1599
2162
  };
1600
- }, 843: (e2, t2) => {
2163
+ }, 107: (e2, t2, i) => {
1601
2164
  "use strict";
1602
- Object.defineProperty(t2, "__esModule", { value: true }), t2.renderUploadImage = void 0, t2.renderUploadImage = ({ question: e3 }) => {
1603
- var t3, i;
1604
- const n = document.createElement("input");
1605
- return n.type = "file", n.accept = "image/*", n.required = e3.require, n.multiple = (null === (t3 = e3.assets) || void 0 === t3 ? void 0 : t3.multiple) || false, n.maxLength = (null === (i = e3.assets) || void 0 === i ? void 0 : i.maxFiles) || 1, { element: n, elementTypeClass: "magicfeedback-upload-image" };
2165
+ Object.defineProperty(t2, "__esModule", { value: true }), t2.scrapeInputs = void 0;
2166
+ const n = i(571);
2167
+ t2.scrapeInputs = function(e3) {
2168
+ const t3 = e3.querySelectorAll(".magicfeedback-input"), i2 = [], r = {};
2169
+ return t3.forEach(((e4) => {
2170
+ var t4;
2171
+ const s = e4, o = s.name;
2172
+ if (!o) return;
2173
+ const a = s.type;
2174
+ if (("radio" === a || "checkbox" === a) && !s.checked) return;
2175
+ const l = s.value, d = s.classList[0];
2176
+ if ((null == d ? void 0 : d.includes("magicfeedback-priority-list")) || (null === (t4 = s.id) || void 0 === t4 ? void 0 : t4.startsWith("priority-list-"))) return r[o] || (r[o] = []), void r[o].push(l);
2177
+ if (null == d ? void 0 : d.includes("magicfeedback-upload")) {
2178
+ const e5 = (0, n.getUploadValues)(s);
2179
+ return void (e5.length && i2.push({ key: o, value: e5 }));
2180
+ }
2181
+ const c = "magicfeedback-consent" === d ? s.checked.toString() : l;
2182
+ null != c && i2.push({ key: o, value: [c] });
2183
+ })), Object.entries(r).forEach((([e4, t4]) => {
2184
+ const n2 = t4.slice().sort(((e5, t5) => Number(e5.split(".")[0]) - Number(t5.split(".")[0])));
2185
+ i2.push({ key: e4, value: n2 });
2186
+ })), i2;
1606
2187
  };
1607
2188
  }, 857: (e2, t2) => {
1608
2189
  "use strict";
1609
- Object.defineProperty(t2, "__esModule", { value: true }), t2.endpoints = void 0, t2.endpoints = { sdk: { app: (e3, t3) => `sdk/app/${e3}/${t3}`, app_info: (e3, t3) => `sdk/app/${e3}/${t3}/info`, session: (e3) => `sdk/app/session/${e3}/info`, feedback: "sdk/feedback", followUpQuestion: "sdk/followUpQuestion" } };
2190
+ Object.defineProperty(t2, "__esModule", { value: true }), t2.endpoints = void 0, t2.endpoints = { sdk: { app: (e3, t3) => `sdk/app/${e3}/${t3}`, app_info: (e3, t3) => `sdk/app/${e3}/${t3}/info`, session: (e3) => `sdk/app/session/${e3}/info`, feedback: "sdk/feedback", followUpQuestion: "sdk/followUpQuestion", agentSurveyStart: "sdk/agentSurvey/start", agentSurveyNext: "sdk/agentSurvey/next" } };
1610
2191
  }, 784: (e2, t2) => {
1611
2192
  "use strict";
1612
2193
  Object.defineProperty(t2, "__esModule", { value: true }), t2.placeholder = void 0, t2.placeholder = { answer: (e3) => {
@@ -1729,44 +2310,175 @@ var require_magicfeedback_sdk_browser = __commonJS({
1729
2310
  case "bn":
1730
2311
  return "\u09AE\u09CB\u099F \u09AA\u09AF\u09BC\u09C7\u09A8\u09CD\u099F 100 % \u09B9\u09A4\u09C7 \u09B9\u09AC\u09C7";
1731
2312
  }
1732
- } };
2313
+ }, upload: { cta: (e3) => {
2314
+ switch (e3) {
2315
+ case "es":
2316
+ return "Arrastra y suelta o haz clic para subir";
2317
+ case "da":
2318
+ return "Tr\xE6k og slip eller klik for at uploade";
2319
+ case "fi":
2320
+ return "Ved\xE4 ja pudota tai napsauta ladataksesi";
2321
+ case "sv":
2322
+ return "Dra och sl\xE4pp eller klicka f\xF6r att ladda upp";
2323
+ case "no":
2324
+ return "Dra og slipp eller klikk for \xE5 laste opp";
2325
+ case "ar":
2326
+ return "\u0627\u0633\u062D\u0628 \u0648\u0623\u0641\u0644\u062A \u0623\u0648 \u0627\u0646\u0642\u0631 \u0644\u0644\u062A\u062D\u0645\u064A\u0644";
2327
+ case "bn":
2328
+ return "\u099F\u09C7\u09A8\u09C7 \u0986\u09A8\u09C1\u09A8 \u09AC\u09BE \u0986\u09AA\u09B2\u09CB\u09A1 \u0995\u09B0\u09A4\u09C7 \u0995\u09CD\u09B2\u09BF\u0995 \u0995\u09B0\u09C1\u09A8";
2329
+ default:
2330
+ return "Drag & drop or click to upload";
2331
+ }
2332
+ }, formats: (e3, t3) => {
2333
+ if ("image" === t3) switch (e3) {
2334
+ case "es":
2335
+ return "Solo im\xE1genes";
2336
+ case "da":
2337
+ return "Kun billeder";
2338
+ case "fi":
2339
+ return "Vain kuvat";
2340
+ case "sv":
2341
+ return "Endast bilder";
2342
+ case "no":
2343
+ return "Kun bilder";
2344
+ case "ar":
2345
+ return "\u0627\u0644\u0635\u0648\u0631 \u0641\u0642\u0637";
2346
+ case "bn":
2347
+ return "\u09B6\u09C1\u09A7\u09C1\u09AE\u09BE\u09A4\u09CD\u09B0 \u099B\u09AC\u09BF";
2348
+ default:
2349
+ return "Images only";
2350
+ }
2351
+ switch (e3) {
2352
+ case "es":
2353
+ return "Cualquier tipo de archivo";
2354
+ case "da":
2355
+ return "Enhver filtype";
2356
+ case "fi":
2357
+ return "Mik\xE4 tahansa tiedostotyyppi";
2358
+ case "sv":
2359
+ return "Alla filtyper";
2360
+ case "no":
2361
+ return "Alle filtyper";
2362
+ case "ar":
2363
+ return "\u0623\u064A \u0646\u0648\u0639 \u0645\u0646 \u0627\u0644\u0645\u0644\u0641\u0627\u062A";
2364
+ case "bn":
2365
+ return "\u09AF\u09C7\u0995\u09CB\u09A8\u09CB \u09A7\u09B0\u09A8\u09C7\u09B0 \u09AB\u09BE\u0987\u09B2";
2366
+ default:
2367
+ return "Any file type";
2368
+ }
2369
+ }, maxFiles: (e3, t3) => {
2370
+ switch (e3) {
2371
+ case "es":
2372
+ return `M\xE1x. ${t3} archivos`;
2373
+ case "da":
2374
+ return `Maks. ${t3} filer`;
2375
+ case "fi":
2376
+ return `Enint\xE4\xE4n ${t3} tiedostoa`;
2377
+ case "sv":
2378
+ return `Max ${t3} filer`;
2379
+ case "no":
2380
+ return `Maks ${t3} filer`;
2381
+ case "ar":
2382
+ return `${t3} \u0645\u0644\u0641\u0627\u062A \u0643\u062D\u062F \u0623\u0642\u0635\u0649`;
2383
+ case "bn":
2384
+ return `\u09B8\u09B0\u09CD\u09AC\u09CB\u099A\u09CD\u099A ${t3}\u099F\u09BF \u09AB\u09BE\u0987\u09B2`;
2385
+ default:
2386
+ return `Max ${t3} files`;
2387
+ }
2388
+ }, maxSize: (e3, t3) => {
2389
+ switch (e3) {
2390
+ case "es":
2391
+ return `M\xE1x. ${t3} MB`;
2392
+ case "da":
2393
+ return `Maks. ${t3} MB`;
2394
+ case "fi":
2395
+ return `Enint\xE4\xE4n ${t3} MB`;
2396
+ case "sv":
2397
+ case "en":
2398
+ default:
2399
+ return `Max ${t3} MB`;
2400
+ case "no":
2401
+ return `Maks ${t3} MB`;
2402
+ case "ar":
2403
+ return `${t3} \u0645\u064A\u063A\u0627\u0628\u0627\u064A\u062A \u0643\u062D\u062F \u0623\u0642\u0635\u0649`;
2404
+ case "bn":
2405
+ return `\u09B8\u09B0\u09CD\u09AC\u09CB\u099A\u09CD\u099A ${t3} MB`;
2406
+ }
2407
+ }, tooLarge: (e3, t3) => {
2408
+ switch (e3) {
2409
+ case "es":
2410
+ return `Archivo demasiado grande (m\xE1x. ${t3} MB)`;
2411
+ case "da":
2412
+ return `Filen er for stor (maks. ${t3} MB)`;
2413
+ case "fi":
2414
+ return `Tiedosto on liian suuri (enint\xE4\xE4n ${t3} MB)`;
2415
+ case "sv":
2416
+ return `Filen \xE4r f\xF6r stor (max ${t3} MB)`;
2417
+ case "no":
2418
+ return `Filen er for stor (maks ${t3} MB)`;
2419
+ case "ar":
2420
+ return `\u0627\u0644\u0645\u0644\u0641 \u0643\u0628\u064A\u0631 \u062C\u062F\u064B\u0627 (\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 ${t3} \u0645\u064A\u063A\u0627\u0628\u0627\u064A\u062A)`;
2421
+ case "bn":
2422
+ return `\u09AB\u09BE\u0987\u09B2\u099F\u09BF \u0996\u09C1\u09AC \u09AC\u09A1\u09BC (\u09B8\u09B0\u09CD\u09AC\u09CB\u099A\u09CD\u099A ${t3} MB)`;
2423
+ default:
2424
+ return `File is too large (max ${t3} MB)`;
2425
+ }
2426
+ }, remove: (e3) => {
2427
+ switch (e3) {
2428
+ case "es":
2429
+ return "Eliminar";
2430
+ case "da":
2431
+ case "no":
2432
+ return "Fjern";
2433
+ case "fi":
2434
+ return "Poista";
2435
+ case "sv":
2436
+ return "Ta bort";
2437
+ case "ar":
2438
+ return "\u0625\u0632\u0627\u0644\u0629";
2439
+ case "bn":
2440
+ return "\u09B8\u09B0\u09BE\u09A8";
2441
+ default:
2442
+ return "Remove";
2443
+ }
2444
+ } } };
1733
2445
  }, 213: (e2, t2, i) => {
1734
2446
  "use strict";
1735
2447
  Object.defineProperty(t2, "__esModule", { value: true }), t2.renderStartMessage = t2.renderSuccess = t2.renderError = t2.renderActions = t2.renderQuestions = void 0;
1736
2448
  const n = i(42), r = i(516), s = { small: "1rem", medium: "1.2rem", large: "1.5rem" };
1737
- t2.renderQuestions = function e3(t3, i2 = "standard", a = "en", o = { customIcons: false }, l) {
2449
+ t2.renderQuestions = function e3(t3, i2 = "standard", o = "en", a = { customIcons: false }, l) {
1738
2450
  if (!t3) throw new Error("[MagicFeedback] No questions provided");
1739
- const d = [], { customIcons: c, id: u } = o;
2451
+ const d = [], { customIcons: c, id: u } = a;
1740
2452
  return t3.forEach(((p) => {
1741
- var m, h;
1742
- if ((null === (h = null === (m = null == p ? void 0 : p.questionType) || void 0 === m ? void 0 : m.conf) || void 0 === h ? void 0 : h.length) > 0) {
2453
+ var h, m;
2454
+ if ((null === (m = null === (h = null == p ? void 0 : p.questionType) || void 0 === h ? void 0 : h.conf) || void 0 === m ? void 0 : m.length) > 0) {
1743
2455
  let t4 = document.createElement("div");
1744
2456
  t4.classList.add("magicfeedback-div");
1745
2457
  const n2 = document.createElement("label");
1746
- n2.setAttribute("for", `magicfeedback-${p.id}`), n2.textContent = (0, r.parseTitle)(p.title, a), n2.classList.add("magicfeedback-label"), t4.appendChild(n2), p.questionType.conf.forEach(((e4) => {
2458
+ n2.setAttribute("for", `magicfeedback-${p.id}`), n2.textContent = (0, r.parseTitle)(p.title, o), n2.classList.add("magicfeedback-label"), t4.appendChild(n2), p.questionType.conf.forEach(((e4) => {
1747
2459
  e4.ref = p.ref, p.assets[e4.id] && (e4.assets = { placeholder: p.assets[e4.id] });
1748
- })), e3(p.questionType.conf, i2, a, o, l).forEach(((e4) => {
2460
+ })), e3(p.questionType.conf, i2, o, a, l).forEach(((e4) => {
1749
2461
  t4.appendChild(e4);
1750
2462
  })), d.push(t4);
1751
2463
  } else {
1752
- const e4 = (function(e5, t4, i3, a2, o2) {
2464
+ const e4 = (function(e5, t4, i3, o2, a2) {
1753
2465
  var l2, d2, c2;
1754
- let u2, p2, { id: m2, title: h2, type: f, ref: v, require: g, defaultValue: y, assets: b } = e5, E = document.createElement("div");
2466
+ let u2, p2, { id: h2, title: m2, type: f, ref: g, require: v, defaultValue: y, assets: b } = e5, E = document.createElement("div");
1755
2467
  E.classList.add("magicfeedback-div");
1756
- const k = window.innerWidth < 600, A = "slim" === t4 ? (0, r.parseTitle)(h2, i3) : null == b ? void 0 : b.placeholder, C = (0, r.getUrlParam)(v), T = (null == b ? void 0 : b.maxCharacters) || 0, P = void 0 !== (null == b ? void 0 : b.randomPosition) && (null == b ? void 0 : b.randomPosition), w = (null == b ? void 0 : b.direction) || "row", x = (null == b ? void 0 : b.order) || "ltr", O = (0, n.getQuestionRenderer)(f);
1757
- if (!O) return E;
2468
+ const A = window.innerWidth < 600, k = "slim" === t4 ? (0, r.parseTitle)(m2, i3) : null == b ? void 0 : b.placeholder, C = (0, r.getUrlParam)(g), T = (null == b ? void 0 : b.maxCharacters) || 0, P = void 0 !== (null == b ? void 0 : b.randomPosition) && (null == b ? void 0 : b.randomPosition), O = (null == b ? void 0 : b.direction) || "row", x = (null == b ? void 0 : b.order) || "ltr", w = (0, n.getQuestionRenderer)(f);
2469
+ if (!w) return E;
1758
2470
  {
1759
- const n2 = O({ question: e5, format: t4, language: i3, url: a2, send: o2, isPhone: k, urlParamValue: C, placeholderText: A, maxCharacters: T, randomPosition: P, direction: w, order: x });
2471
+ const n2 = w({ question: e5, format: t4, language: i3, url: o2, send: a2, isPhone: A, urlParamValue: C, placeholderText: k, maxCharacters: T, randomPosition: P, direction: O, order: x });
1760
2472
  u2 = n2.element, p2 = n2.elementTypeClass;
1761
2473
  }
1762
- u2.id = `magicfeedback-${m2}`, u2.setAttribute("name", v), u2.classList.add(p2), (void 0 !== y || null !== C) && (u2.value = C || y), ["RADIO", "MULTIPLECHOICE"].includes(f) || (u2.classList.add("magicfeedback-input"), u2.required = g);
2474
+ u2.id = `magicfeedback-${h2}`, u2.setAttribute("name", g), u2.classList.add(p2), (void 0 !== y || null !== C) && (u2.value = C || y), ["RADIO", "MULTIPLECHOICE", "UPLOAD_IMAGE", "UPLOAD_FILE"].includes(f) || (u2.classList.add("magicfeedback-input"), u2.required = v);
1763
2475
  const L = document.createElement("label");
1764
- L.setAttribute("for", `magicfeedback-${m2}`), L.textContent = (0, r.parseTitle)(h2, i3), L.classList.add("magicfeedback-label"), (function(e6, t5) {
2476
+ L.setAttribute("for", `magicfeedback-${h2}`), L.textContent = (0, r.parseTitle)(m2, i3), L.classList.add("magicfeedback-label"), (function(e6, t5) {
1765
2477
  if ("INFO_PAGE" !== t5.type) return;
1766
2478
  const { assets: i4 } = t5, n2 = (function(e7) {
1767
2479
  if (e7) return s[e7] || e7;
1768
- })(null == i4 ? void 0 : i4.titleSize), r2 = (a3 = null == i4 ? void 0 : i4.titleStyle, Array.isArray(a3) ? a3 : a3 ? [a3] : []);
1769
- var a3;
2480
+ })(null == i4 ? void 0 : i4.titleSize), r2 = (o3 = null == i4 ? void 0 : i4.titleStyle, Array.isArray(o3) ? o3 : o3 ? [o3] : []);
2481
+ var o3;
1770
2482
  n2 && e6.style.setProperty("font-size", n2, "important"), (null == i4 ? void 0 : i4.titleAlign) && (e6.style.setProperty("width", "100%", "important"), e6.style.setProperty("align-self", "stretch", "important"), e6.style.setProperty("text-align", i4.titleAlign, "important")), r2.includes("italic") && e6.style.setProperty("font-style", "italic", "important"), r2.includes("bold") && e6.style.setProperty("font-weight", "bold", "important"), r2.includes("underline") && e6.style.setProperty("text-decoration", "underline", "important");
1771
2483
  })(L, e5);
1772
2484
  const S = document.createElement("label");
@@ -1784,28 +2496,28 @@ var require_magicfeedback_sdk_browser = __commonJS({
1784
2496
  const e7 = document.createElement("div");
1785
2497
  e7.classList.add("magicfeedback-skip-container"), e7.classList.add("magicfeedback-checkbox-container"), e7.style.display = "flex", e7.style.justifyContent = "flex-start";
1786
2498
  const t5 = document.createElement("input");
1787
- t5.classList.add("magicfeedback-skip"), t5.type = "checkbox", t5.id = `skip-${v}`, t5.name = v, t5.value = "-", t5.style.cursor = "pointer";
2499
+ t5.classList.add("magicfeedback-skip"), t5.type = "checkbox", t5.id = `skip-${g}`, t5.name = g, t5.value = "-", t5.style.cursor = "pointer";
1788
2500
  const i4 = document.createElement("label");
1789
- i4.htmlFor = `skip-${v}`, i4.textContent = null == b ? void 0 : b.extraOptionText, i4.style.fontSize = "15px", i4.style.cursor = "pointer", i4.style.margin = "0 5px", t5.addEventListener("click", (() => {
1790
- u2.value = "-", o2 && o2();
2501
+ i4.htmlFor = `skip-${g}`, i4.textContent = null == b ? void 0 : b.extraOptionText, i4.style.fontSize = "15px", i4.style.cursor = "pointer", i4.style.margin = "0 5px", t5.addEventListener("click", (() => {
2502
+ u2.value = "-", a2 && a2();
1791
2503
  })), e7.appendChild(t5), e7.appendChild(i4), E.appendChild(e7);
1792
2504
  }
1793
2505
  } else E.appendChild(u2);
1794
2506
  }
1795
2507
  return E;
1796
- })(p, i2, a, "https://survey-dev.magicfeedback.io/assets/emojis" + (c ? `/${u}` : ""), 1 === t3.length ? l : void 0);
2508
+ })(p, i2, o, "https://survey-dev.magicfeedback.io/assets/emojis" + (c ? `/${u}` : ""), 1 === t3.length ? l : void 0);
1797
2509
  d.push(e4);
1798
2510
  }
1799
2511
  })), d;
1800
2512
  }, t2.renderActions = function(e3 = "", t3, i2 = "Submit", n2 = "Back", r2 = "Next") {
1801
2513
  const s2 = document.createElement("div");
1802
2514
  s2.classList.add("magicfeedback-action-container");
1803
- const a = document.createElement("button");
1804
- a.id = "magicfeedback-submit", a.type = "submit", a.classList.add("magicfeedback-submit"), a.textContent = "MAGICSURVEY" === e3 ? r2 || "Next" : i2 || "Submit";
1805
2515
  const o = document.createElement("button");
1806
- return o.id = "magicfeedback-back", o.type = "button", o.classList.add("magicfeedback-back"), o.textContent = n2 || "Back", o.addEventListener("click", t3), o.addEventListener("click", (() => {
1807
- a.removeAttribute("disabled");
1808
- })), "MAGICSURVEY" === e3 && s2.appendChild(o), s2.appendChild(a), s2;
2516
+ o.id = "magicfeedback-submit", o.type = "submit", o.classList.add("magicfeedback-submit"), o.textContent = "MAGICSURVEY" === e3 ? r2 || "Next" : i2 || "Submit";
2517
+ const a = document.createElement("button");
2518
+ return a.id = "magicfeedback-back", a.type = "button", a.classList.add("magicfeedback-back"), a.textContent = n2 || "Back", a.addEventListener("click", t3), a.addEventListener("click", (() => {
2519
+ o.removeAttribute("disabled");
2520
+ })), "MAGICSURVEY" === e3 && s2.appendChild(a), s2.appendChild(o), s2;
1809
2521
  }, t2.renderError = function(e3) {
1810
2522
  const t3 = document.createElement("div");
1811
2523
  return t3.classList.add("magicfeedback-error"), t3.textContent = e3, t3;
@@ -1827,84 +2539,84 @@ var require_magicfeedback_sdk_browser = __commonJS({
1827
2539
  "use strict";
1828
2540
  var n = this && this.__awaiter || function(e3, t3, i2, n2) {
1829
2541
  return new (i2 || (i2 = Promise))((function(r2, s2) {
1830
- function a2(e4) {
2542
+ function o2(e4) {
1831
2543
  try {
1832
- l2(n2.next(e4));
2544
+ l(n2.next(e4));
1833
2545
  } catch (e5) {
1834
2546
  s2(e5);
1835
2547
  }
1836
2548
  }
1837
- function o2(e4) {
2549
+ function a2(e4) {
1838
2550
  try {
1839
- l2(n2.throw(e4));
2551
+ l(n2.throw(e4));
1840
2552
  } catch (e5) {
1841
2553
  s2(e5);
1842
2554
  }
1843
2555
  }
1844
- function l2(e4) {
2556
+ function l(e4) {
1845
2557
  var t4;
1846
2558
  e4.done ? r2(e4.value) : (t4 = e4.value, t4 instanceof i2 ? t4 : new i2((function(e5) {
1847
2559
  e5(t4);
1848
- }))).then(a2, o2);
2560
+ }))).then(o2, a2);
1849
2561
  }
1850
- l2((n2 = n2.apply(e3, t3 || [])).next());
2562
+ l((n2 = n2.apply(e3, t3 || [])).next());
1851
2563
  }));
1852
2564
  }, r = this && this.__importDefault || function(e3) {
1853
2565
  return e3 && e3.__esModule ? e3 : { default: e3 };
1854
2566
  };
1855
- Object.defineProperty(t2, "__esModule", { value: true }), t2.getFollowUpQuestion = t2.sendFeedback = t2.getQuestions = t2.getSessionForm = t2.getForm = t2.validateEmail = void 0;
1856
- const s = r(i(945)), a = r(i(330)), o = i(857), l = { Accept: "application/json", "Magicfeedback-Sdk-Version": a.default.version, "x-magicfeedback-parameters": window.location.search || "" };
1857
- t2.validateEmail = function(e3) {
2567
+ Object.defineProperty(t2, "__esModule", { value: true }), t2.getFollowUpQuestion = t2.sendFeedback = t2.getQuestions = t2.getSessionForm = t2.getForm = t2.validateEmail = t2.header = void 0;
2568
+ const s = r(i(326)), o = r(i(330)), a = i(857);
2569
+ t2.header = { Accept: "application/json", "Magicfeedback-Sdk-Version": o.default.version, "x-magicfeedback-parameters": window.location.search || "" }, t2.validateEmail = function(e3) {
1858
2570
  return /\S+@\S+\.\S+/.test(e3);
1859
- }, t2.getForm = function(e3, t3, i2, r2) {
2571
+ }, t2.getForm = function(e3, i2, r2, o2) {
1860
2572
  return n(this, void 0, void 0, (function* () {
1861
2573
  try {
1862
- const n2 = yield (0, s.default)(e3 + o.endpoints.sdk.app_info(t3, i2), { method: "GET", headers: l });
2574
+ const n2 = yield (0, s.default)(e3 + a.endpoints.sdk.app_info(i2, r2), { method: "GET", headers: t2.header });
1863
2575
  return yield n2.json();
1864
2576
  } catch (e4) {
1865
- r2.err(e4);
2577
+ o2.err(e4);
1866
2578
  }
1867
2579
  }));
1868
- }, t2.getSessionForm = function(e3, t3, i2) {
2580
+ }, t2.getSessionForm = function(e3, i2, r2) {
1869
2581
  return n(this, void 0, void 0, (function* () {
1870
2582
  try {
1871
- const i3 = yield (0, s.default)(e3 + o.endpoints.sdk.session(t3), { method: "GET", headers: l });
1872
- return yield i3.json();
2583
+ const n2 = yield (0, s.default)(e3 + a.endpoints.sdk.session(i2), { method: "GET", headers: t2.header });
2584
+ return yield n2.json();
1873
2585
  } catch (e4) {
1874
- i2.err(e4);
2586
+ r2.err(e4);
1875
2587
  }
1876
2588
  }));
1877
- }, t2.getQuestions = function(e3, t3, i2, r2) {
2589
+ }, t2.getQuestions = function(e3, i2, r2, o2) {
1878
2590
  return n(this, void 0, void 0, (function* () {
1879
2591
  try {
1880
- const n2 = yield (0, s.default)(e3 + o.endpoints.sdk.app(t3, i2), { method: "GET", headers: l });
2592
+ const n2 = yield (0, s.default)(e3 + a.endpoints.sdk.app(i2, r2), { method: "GET", headers: t2.header });
1881
2593
  if (n2.ok) {
1882
2594
  const e4 = yield n2.json();
1883
- return r2.log(`Received questions for app ${t3}`, e4), e4;
2595
+ return o2.log(`Received questions for app ${i2}`, e4), e4;
1884
2596
  }
1885
- throw r2.err(`Failed to get questions for app ${t3}:`, n2.status, n2.statusText), new Error("[MagicFeedback] Bad response from server");
2597
+ throw o2.err(`Failed to get questions for app ${i2}:`, n2.status, n2.statusText), new Error("[MagicFeedback] Bad response from server");
1886
2598
  } catch (e4) {
1887
- return r2.err(e4), [];
2599
+ return o2.err(e4), [];
1888
2600
  }
1889
2601
  }));
1890
- }, t2.sendFeedback = function(e3, t3, i2) {
2602
+ }, t2.sendFeedback = function(e3, i2, r2) {
1891
2603
  return n(this, void 0, void 0, (function* () {
1892
2604
  try {
1893
- const n2 = yield (0, s.default)(e3 + o.endpoints.sdk.feedback, { method: "POST", headers: Object.assign({ "Content-Type": "application/json" }, l), body: JSON.stringify(t3) });
1894
- if (n2.ok) return i2.log(`Form ${t3.integration} submitted successfully!`), (yield n2.json()).sessionId;
1895
- throw i2.err(`Failed to submit form ${t3.integration}:`, n2.status, n2.statusText), new Error(n2.statusText);
2605
+ const n2 = yield (0, s.default)(e3 + a.endpoints.sdk.feedback, { method: "POST", headers: Object.assign({ "Content-Type": "application/json" }, t2.header), body: JSON.stringify(i2) });
2606
+ if (n2.ok) return r2.log(`Form ${i2.integration} submitted successfully!`), (yield n2.json()).sessionId;
2607
+ throw r2.err(`Failed to submit form ${i2.integration}:`, n2.status, n2.statusText), new Error(n2.statusText);
1896
2608
  } catch (e4) {
1897
- return i2.err(e4), "";
2609
+ return r2.err(e4), "";
1898
2610
  }
1899
2611
  }));
1900
- }, t2.getFollowUpQuestion = function(e3, t3, i2) {
2612
+ }, t2.getFollowUpQuestion = function(e3, i2, r2) {
1901
2613
  return n(this, void 0, void 0, (function* () {
1902
2614
  try {
1903
- const n2 = yield (0, s.default)(e3 + o.endpoints.sdk.followUpQuestion, { method: "POST", headers: Object.assign({ "Content-Type": "application/json" }, l), body: JSON.stringify(t3) });
1904
- if (n2.ok) return i2.log(`Received follow up question for form ${t3.integration}`), (yield n2.json()) || "";
1905
- throw i2.err(`Failed to get follow up question for form ${t3.integration}:`, n2.status, n2.statusText), new Error(n2.statusText);
2615
+ const n2 = yield (0, s.default)(e3 + a.endpoints.sdk.followUpQuestion, { method: "POST", headers: Object.assign({ "Content-Type": "application/json" }, t2.header), body: JSON.stringify(i2) });
2616
+ if (n2.ok) return r2.log(`Received follow up question for form ${i2.integration}`), (yield n2.json()) || "";
2617
+ throw r2.err(`Failed to get follow up question for form ${i2.integration}:`, n2.status, n2.statusText), new Error(n2.statusText);
1906
2618
  } catch (e4) {
1907
- return i2.err(e4), "";
2619
+ return r2.err(e4), "";
1908
2620
  }
1909
2621
  }));
1910
2622
  };
@@ -1923,7 +2635,7 @@ var require_magicfeedback_sdk_browser = __commonJS({
1923
2635
  };
1924
2636
  }, 330: (e2) => {
1925
2637
  "use strict";
1926
- e2.exports = JSON.parse('{"name":"@magicfeedback/native","version":"2.2.1","main":"./dist/magicfeedback-sdk.node.js","browser":"./dist/magicfeedback-sdk.browser.js","types":"./dist/types/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/MagicFeedback/magicfeedback-sdk.git"},"author":"farias@magicfeedback.io","license":"MIT","private":false,"scripts":{"dev":"vite","build":"webpack","build:watch":"webpack --watch --mode development","release":"npm publish --access public","release:beta":"npm publish --access public --tag beta","release:alpha":"npm publish --access public --tag alpha","test":"jest","test:watch":"jest --watchAll","coverage":"vitest run --coverage","publish:sdk":"bash publish.sh","publish:sdk:dry-run":"NPM_DRY_RUN=1 bash publish.sh"},"files":["dist"],"devDependencies":{"@babel/preset-typescript":"^7.22.5","@types/node":"^17.0.21","@types/webpack":"^5.28.0","@types/webpack-node-externals":"^2.5.3","c8":"^7.11.0","copy-webpack-plugin":"^11.0.0","jest":"^29.5.0","jest-environment-jsdom":"^29.5.0","jest-fetch-mock":"^3.0.3","nock":"^13.2.4","ts-jest":"^29.1.0","ts-loader":"^9.2.7","ts-node":"^10.7.0","typescript":"^4.6.2","vite":"^2.8.0","vite-plugin-dts":"^0.9.9","vitest":"^0.5.9","webpack":"^5.70.0","webpack-cli":"^4.9.2","webpack-node-externals":"^3.0.0"},"dependencies":{"cross-fetch":"^3.1.5","is-bundling-for-browser-or-node":"^1.1.1"},"description":"MagicFeedbackAI JavaScript Library for [MagicFeedback.io](https://magicfeedback.io/)","bugs":{"url":"https://github.com/MagicFeedback/magicfeedback-sdk/issues"},"homepage":"https://github.com/MagicFeedback/magicfeedback-sdk#readme","directories":{"example":"examples","test":"test"},"style":"./dist/styles/magicfeedback-default.css"}');
2638
+ e2.exports = JSON.parse('{"name":"@magicfeedback/native","version":"2.2.8","main":"./dist/magicfeedback-sdk.node.js","browser":"./dist/magicfeedback-sdk.browser.js","types":"./dist/types/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/MagicFeedback/magicfeedback-sdk.git"},"author":"farias@magicfeedback.io","license":"MIT","private":false,"scripts":{"dev":"vite","build":"webpack","build:watch":"webpack --watch --mode development","release":"npm publish --access public","release:beta":"npm publish --access public --tag beta","release:alpha":"npm publish --access public --tag alpha","test":"jest","test:watch":"jest --watchAll","coverage":"vitest run --coverage","publish:sdk":"bash publish.sh","publish:sdk:dry-run":"NPM_DRY_RUN=1 bash publish.sh"},"files":["dist"],"devDependencies":{"@babel/preset-typescript":"^7.22.5","@types/node":"^17.0.21","@types/webpack":"^5.28.0","@types/webpack-node-externals":"^2.5.3","c8":"^7.11.0","copy-webpack-plugin":"^11.0.0","jest":"^29.5.0","jest-environment-jsdom":"^29.5.0","jest-fetch-mock":"^3.0.3","nock":"^13.2.4","ts-jest":"^29.1.0","ts-loader":"^9.2.7","ts-node":"^10.7.0","typescript":"^4.6.2","vite":"^2.8.0","vite-plugin-dts":"^0.9.9","vitest":"^0.5.9","webpack":"^5.70.0","webpack-cli":"^4.9.2","webpack-node-externals":"^3.0.0"},"dependencies":{"cross-fetch":"^3.1.5","is-bundling-for-browser-or-node":"^1.1.1"},"description":"MagicFeedbackAI JavaScript Library for [MagicFeedback.io](https://magicfeedback.io/)","bugs":{"url":"https://github.com/MagicFeedback/magicfeedback-sdk/issues"},"homepage":"https://github.com/MagicFeedback/magicfeedback-sdk#readme","directories":{"example":"examples","test":"test"},"style":"./dist/styles/magicfeedback-default.css"}');
1927
2639
  } }, t = {}, (function i(n) {
1928
2640
  var r = t[n];
1929
2641
  if (void 0 !== r) return r.exports;
@@ -1935,6 +2647,41 @@ var require_magicfeedback_sdk_browser = __commonJS({
1935
2647
  }
1936
2648
  });
1937
2649
 
2650
+ // src/ui/logo.ts
2651
+ var BASE_CSS = "max-height:40px; max-width:100%; object-fit:contain; display:block; margin:12px 0 0 0;";
2652
+ var MAX_HEIGHT = {
2653
+ small: "30px",
2654
+ medium: "50px",
2655
+ large: "70px"
2656
+ };
2657
+ function insertPopupLogo(parent, anchor, style, id) {
2658
+ if (!style?.logo) return null;
2659
+ if (parent.ownerDocument.getElementById(id)) return null;
2660
+ const img = parent.ownerDocument.createElement("img");
2661
+ img.id = id;
2662
+ img.src = style.logo;
2663
+ img.alt = "Logo";
2664
+ img.style.cssText = BASE_CSS;
2665
+ if (style.logoSize && MAX_HEIGHT[style.logoSize]) {
2666
+ img.style.maxHeight = MAX_HEIGHT[style.logoSize];
2667
+ }
2668
+ switch (style.logoPosition) {
2669
+ case "left":
2670
+ img.style.margin = "12px 16px 0 0";
2671
+ img.style.marginLeft = "0";
2672
+ break;
2673
+ case "right":
2674
+ img.style.margin = "12px 0 0 16px";
2675
+ img.style.marginLeft = "auto";
2676
+ break;
2677
+ case "center":
2678
+ img.style.margin = "12px auto 0 auto";
2679
+ break;
2680
+ }
2681
+ parent.insertBefore(img, anchor);
2682
+ return img;
2683
+ }
2684
+
1938
2685
  // src/ui/renderPopup.ts
1939
2686
  var import_native = __toESM(require_magicfeedback_sdk_browser());
1940
2687
  function ensureMagicFeedbackStyles(_popup) {
@@ -1950,6 +2697,10 @@ function ensureSpinnerStyles(_popup) {
1950
2697
  const style = document.createElement("style");
1951
2698
  style.id = "deepdots-spinner-styles";
1952
2699
  style.textContent = `
2700
+ /* El enunciado trae margin-top:20px del CSS de surveys, que sumaba al hueco de la barra
2701
+ de progreso y descompensaba la simetr\xEDa. Solo se anula en el primero: entre preguntas
2702
+ de la misma p\xE1gina sigue separando. */
2703
+ .deepdots-popup .magicfeedback-questions .magicfeedback-div:first-child .magicfeedback-label { margin-top: 0; }
1953
2704
  @keyframes ddspin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
1954
2705
  .mf-spinner { display:flex; justify-content:center; align-items:center; padding:8px 0; }
1955
2706
  .mf-spinner-circle { width:28px; height:28px; border:3px solid #e0e6ed; border-top-color:#1E293B; border-radius:50%; animation: ddspin 0.9s linear infinite; }
@@ -1976,7 +2727,9 @@ function ensureResponsiveStyles(_popup) {
1976
2727
  .deepdots-popup button { font-size: 16px !important; }
1977
2728
  .deepdots-popup-header button { width:48px; height:48px; }
1978
2729
  .deepdots-popup-header button svg { width:26px; height:26px; }
1979
- .deepdots-popup-footer { flex-direction: column-reverse !important; gap: 12px !important; }
2730
+ /* Apilados en el orden del DOM: la acci\xF3n principal (Send/Start/Complete) arriba y
2731
+ Back debajo. */
2732
+ .deepdots-popup-footer { flex-direction: column !important; gap: 4px !important; }
1980
2733
  .deepdots-popup-footer button { width: 100%; }
1981
2734
  }
1982
2735
  @media (max-width: 400px) {
@@ -1994,6 +2747,18 @@ function ensureResponsiveStyles(_popup) {
1994
2747
  `;
1995
2748
  document.head.appendChild(style);
1996
2749
  }
2750
+ function ensureCustomCss(css) {
2751
+ const STYLE_ID = "deepdots-custom-css";
2752
+ const existing = document.getElementById(STYLE_ID);
2753
+ if (!css) {
2754
+ existing?.remove();
2755
+ return;
2756
+ }
2757
+ const el = existing ?? document.createElement("style");
2758
+ el.id = STYLE_ID;
2759
+ if (el.textContent !== css) el.textContent = css;
2760
+ document.head.appendChild(el);
2761
+ }
1997
2762
  function ensureFontFace(family, url) {
1998
2763
  const css = buildFontFaceCss(family, url);
1999
2764
  if (!css) return;
@@ -2006,9 +2771,11 @@ function ensureFontFace(family, url) {
2006
2771
  }
2007
2772
  if (el.textContent !== css) el.textContent = css;
2008
2773
  }
2009
- async function renderPopup(container, surveyId, productId, actions, emit, onClose, env = "production", userId, style, sessionId, miniService, analyticsFeedbackSessionId) {
2774
+ async function renderPopup(container, surveyId, productId, actions, emit, onClose, env = "production", userId, style, sessionId, miniService, analyticsFeedbackSessionId, options) {
2010
2775
  let surveyCompletedEmitted = false;
2011
2776
  let stylesInjected = false;
2777
+ let pageDepth = 0;
2778
+ let onStartPage = false;
2012
2779
  const isDark = style?.theme === "dark";
2013
2780
  const theme = {
2014
2781
  popupBg: isDark ? "#1e1e1e" : "#fff",
@@ -2018,8 +2785,9 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2018
2785
  // oscuros con texto blanco sobre el fondo claro del popup.
2019
2786
  colorScheme: isDark ? "dark" : "light",
2020
2787
  textPrimary: isDark ? "#f0f0f0" : "#111",
2021
- closeBtnHoverBg: isDark ? "rgba(255,255,255,0.10)" : "rgba(0,0,0,0.06)",
2022
- closeBtnHoverColor: isDark ? "#fff" : "#000000"
2788
+ closeBtnHoverColor: isDark ? "#fff" : "#000000",
2789
+ textMuted: isDark ? "#9ca3af" : "#6b7280",
2790
+ progressTrack: isDark ? "#3f3f46" : "#e5e7eb"
2023
2791
  };
2024
2792
  const positionMap = {
2025
2793
  "center": { justifyContent: "center", alignItems: "center", background: "rgba(0,0,0,0.5)" },
@@ -2032,6 +2800,7 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2032
2800
  };
2033
2801
  const pos = positionMap[style?.position ?? "center"] ?? positionMap["center"];
2034
2802
  const popup = document.createElement("div");
2803
+ popup.id = "dd-popup";
2035
2804
  popup.className = "deepdots-popup";
2036
2805
  popup.style.cssText = `
2037
2806
  position: relative;
@@ -2045,6 +2814,7 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2045
2814
  box-shadow: 0 4px 6px rgba(0,0,0,0.1);
2046
2815
  max-width: 600px;
2047
2816
  width: 90%;
2817
+ max-height: 90vh;
2048
2818
  min-height: 200px;
2049
2819
  `;
2050
2820
  const font = style?.font;
@@ -2057,13 +2827,26 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2057
2827
  }
2058
2828
  const header = document.createElement("div");
2059
2829
  header.className = "deepdots-popup-header";
2060
- header.style.cssText = "display:flex; justify-content:flex-end; align-items:center; width:100%;";
2830
+ header.style.cssText = "display:flex; justify-content:space-between; align-items:center; gap:12px; width:100%; flex:0 0 auto;";
2831
+ const titleEl = document.createElement("h2");
2832
+ titleEl.id = "dd-title";
2833
+ titleEl.className = "deepdots-popup-title";
2834
+ titleEl.style.cssText = `margin:0; font-size:17px; font-weight:600; line-height:1.3; color:${theme.textPrimary}; text-transform:none; text-align:left; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;`;
2835
+ titleEl.hidden = true;
2836
+ const setTitle = (value) => {
2837
+ if (!value) return;
2838
+ titleEl.textContent = value;
2839
+ titleEl.hidden = false;
2840
+ };
2841
+ setTitle(options?.title);
2842
+ header.appendChild(titleEl);
2061
2843
  const closeBtn = document.createElement("button");
2844
+ closeBtn.id = "dd-close";
2062
2845
  closeBtn.type = "button";
2063
2846
  closeBtn.setAttribute("aria-label", "Close popup");
2064
2847
  closeBtn.innerHTML = `
2065
- <svg width="28" height="28" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2066
- <path d="M6 6L18 18M6 18L18 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
2848
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2849
+ <path d="M5 5L19 19M5 19L19 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="butt"/>
2067
2850
  </svg>
2068
2851
  `;
2069
2852
  closeBtn.style.cssText = `
@@ -2078,42 +2861,101 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2078
2861
  cursor:pointer;
2079
2862
  color:${theme.textPrimary};
2080
2863
  padding:4px;
2081
- transition: color .15s ease, transform .15s ease, background .15s ease;
2864
+ transition: color .15s ease, transform .15s ease;
2082
2865
  box-shadow: none !important;
2083
2866
  `;
2084
2867
  closeBtn.onmouseenter = () => {
2085
2868
  closeBtn.style.color = theme.closeBtnHoverColor;
2086
- closeBtn.style.background = theme.closeBtnHoverBg;
2087
2869
  closeBtn.style.transform = "scale(1.06)";
2088
2870
  };
2089
2871
  closeBtn.onmouseleave = () => {
2090
2872
  closeBtn.style.color = theme.textPrimary;
2091
- closeBtn.style.background = "transparent";
2092
2873
  closeBtn.style.transform = "scale(1)";
2093
2874
  };
2094
2875
  closeBtn.onclick = () => {
2095
2876
  emit("popup_clicked", surveyId, { action: "close_icon" });
2096
2877
  onClose();
2097
2878
  };
2879
+ closeBtn.style.flex = "0 0 auto";
2880
+ closeBtn.style.marginLeft = "auto";
2098
2881
  header.appendChild(closeBtn);
2882
+ let progressEnabled = options?.showProgressBar === true;
2883
+ let progressShowUnit = true;
2884
+ let progressUnit = "fraction";
2885
+ const progressEl = document.createElement("div");
2886
+ progressEl.id = "dd-progress";
2887
+ progressEl.className = "deepdots-progress";
2888
+ progressEl.style.cssText = "display:none; flex-direction:column; gap:8px; width:100%; flex:0 0 auto; padding:16px 0; box-sizing:border-box;";
2889
+ const progressHead = document.createElement("div");
2890
+ progressHead.className = "deepdots-progress-head";
2891
+ progressHead.style.cssText = "display:flex; flex-direction:row; justify-content:space-between; align-items:center; width:100%; gap:8px;";
2892
+ const progressLabel = document.createElement("span");
2893
+ progressLabel.id = "dd-progress-label";
2894
+ progressLabel.style.cssText = "font-size:13px; line-height:1.2;";
2895
+ const progressCurrent = document.createElement("span");
2896
+ progressCurrent.id = "dd-progress-current";
2897
+ progressCurrent.style.cssText = `font-weight:700; color:${theme.textPrimary};`;
2898
+ const progressTotal = document.createElement("span");
2899
+ progressTotal.id = "dd-progress-total";
2900
+ progressTotal.style.cssText = `font-weight:400; color:${theme.textMuted};`;
2901
+ progressLabel.appendChild(progressCurrent);
2902
+ progressLabel.appendChild(progressTotal);
2903
+ const progressFollowUp = document.createElement("span");
2904
+ progressFollowUp.id = "dd-progress-followup";
2905
+ progressFollowUp.textContent = "Follow-up";
2906
+ progressFollowUp.style.cssText = "display:none; font-size:12px; font-weight:600; color:#fff; background:rgba(59,130,246,0.44); border-radius:999px; padding:2px 10px;";
2907
+ progressHead.appendChild(progressLabel);
2908
+ progressHead.appendChild(progressFollowUp);
2909
+ const progressTrack = document.createElement("div");
2910
+ progressTrack.className = "deepdots-progress-track";
2911
+ progressTrack.style.cssText = `width:100%; height:4px; border-radius:999px; background:${theme.progressTrack}; overflow:hidden;`;
2912
+ const progressBar = document.createElement("div");
2913
+ progressBar.id = "dd-progress-bar";
2914
+ progressBar.style.cssText = "height:100%; width:0%; background:#22C55E; border-radius:999px; transition:width 450ms ease;";
2915
+ progressTrack.appendChild(progressBar);
2916
+ progressEl.appendChild(progressHead);
2917
+ progressEl.appendChild(progressTrack);
2918
+ function updateProgress(p) {
2919
+ const total = typeof p.total === "number" ? p.total : 0;
2920
+ const progress = typeof p.progress === "number" ? p.progress : 0;
2921
+ if (!progressEnabled || onStartPage || p.completed || total <= 1) {
2922
+ progressEl.style.display = "none";
2923
+ containerContent.style.paddingTop = "16px";
2924
+ return;
2925
+ }
2926
+ progressEl.style.display = "flex";
2927
+ containerContent.style.paddingTop = "0";
2928
+ const current = Math.min(total, Math.max(1, progress + 1));
2929
+ const pct = Math.min(100, Math.max(0, current / total * 100));
2930
+ progressBar.style.width = `${pct}%`;
2931
+ const label = Math.min(total, Math.max(1, Math.floor(progress) + 1));
2932
+ progressLabel.style.display = progressShowUnit ? "block" : "none";
2933
+ if (progressUnit === "percentage") {
2934
+ progressCurrent.textContent = `${Math.round(pct)}%`;
2935
+ progressTotal.textContent = "";
2936
+ } else {
2937
+ progressCurrent.textContent = `Question ${label}`;
2938
+ progressTotal.textContent = ` of ${total}`;
2939
+ }
2940
+ progressFollowUp.style.display = p.followup ? "inline-block" : "none";
2941
+ }
2099
2942
  ensureMagicFeedbackStyles(popup);
2100
2943
  ensureSpinnerStyles(popup);
2101
2944
  ensureResponsiveStyles(popup);
2945
+ ensureCustomCss(options?.surveyCss);
2102
2946
  const containerContent = document.createElement("div");
2103
- containerContent.className = "deepdots-popup-container-conetent";
2104
- containerContent.style.cssText = `
2105
- display:flex;
2106
- flex-direction:column;
2107
- padding: 0 20px 12px 20px;
2108
- max-height: 80vh; /* l\xEDmite general del popup */
2109
- overflow: hidden; /* quita scroll del contenedor principal */
2110
- `;
2947
+ containerContent.id = "dd-content";
2948
+ containerContent.className = "deepdots-popup-container-content";
2949
+ containerContent.style.cssText = "display:flex; flex-direction:column; flex:1 1 auto; min-height:0; padding:16px 0 0 0; overflow:hidden;";
2111
2950
  const main = document.createElement("div");
2951
+ main.id = "dd-main";
2112
2952
  main.className = "deepdots-popup-main";
2113
- main.style.cssText = "display:flex; flex-direction:column; width:100%; max-height:80vh; overflow-y:auto;";
2953
+ main.style.cssText = "display:flex; flex-direction:column; width:100%; flex:1 1 auto; min-height:0; overflow-y:auto;";
2114
2954
  const formWrapper = document.createElement("div");
2955
+ formWrapper.id = "dd-form-wrapper";
2115
2956
  formWrapper.style.cssText = "width:100%; flex: 1 1 auto;";
2116
2957
  const errorHint = document.createElement("div");
2958
+ errorHint.id = "dd-error";
2117
2959
  errorHint.className = "deepdots-error-hint";
2118
2960
  errorHint.style.cssText = `
2119
2961
  display: none;
@@ -2142,20 +2984,24 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2142
2984
  main.appendChild(formWrapper);
2143
2985
  main.appendChild(errorHint);
2144
2986
  const footer = document.createElement("div");
2987
+ footer.id = "dd-footer";
2145
2988
  footer.className = "deepdots-popup-footer";
2146
2989
  footer.setAttribute("data-actions-wrapper", "true");
2147
- footer.style.cssText = "display:flex; flex-direction: row-reverse ;justify-content:space-between; align-items:center; gap:8px; margin-top:auto; width:100%; padding-top:16px;";
2990
+ footer.style.cssText = "display:flex; flex-direction: row-reverse ;justify-content:space-between; align-items:center; gap:4px; margin-top:auto; width:100%; padding-top:12px;";
2148
2991
  const backButton = document.createElement("button");
2992
+ backButton.id = "dd-back";
2993
+ backButton.className = "dd-nav-btn";
2149
2994
  backButton.textContent = actions?.back ? actions.back.label : "Back";
2150
2995
  backButton.style.cssText = `
2151
2996
  background: transparent;
2152
- color: #333;
2153
- border: 1px solid #999;
2997
+ color: ${theme.textMuted};
2998
+ border: none;
2999
+ min-height: 44px;
2154
3000
  padding: 12px 24px;
2155
- border-radius: 4px;
3001
+ border-radius: 6px;
2156
3002
  cursor: pointer;
2157
- font-size: 14px;
2158
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
3003
+ font-size: 15px;
3004
+ font-weight: 600;
2159
3005
  transition: filter .15s ease;
2160
3006
  display: inline-flex;
2161
3007
  align-items: center;
@@ -2173,15 +3019,19 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2173
3019
  formInstance?.back?.();
2174
3020
  };
2175
3021
  const startButton = document.createElement("button");
3022
+ startButton.id = "dd-start";
3023
+ startButton.className = "dd-nav-btn";
2176
3024
  startButton.textContent = actions?.start ? actions.start.label : "Start survey";
2177
3025
  startButton.style.cssText = `
2178
3026
  background: #1E293B;
2179
3027
  color: #fff;
2180
3028
  border: none;
3029
+ min-height: 44px;
2181
3030
  padding: 12px 24px;
2182
- border-radius: 4px;
3031
+ border-radius: 6px;
2183
3032
  cursor: pointer;
2184
- font-size: 14px;
3033
+ font-size: 15px;
3034
+ font-weight: 600;
2185
3035
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
2186
3036
  transition: filter .15s ease;
2187
3037
  display: inline-flex;
@@ -2192,17 +3042,23 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2192
3042
  startButton.onclick = () => {
2193
3043
  emit("popup_clicked", surveyId, { action: "start_survey" });
2194
3044
  formInstance?.startForm?.();
3045
+ onStartPage = false;
3046
+ updateProgress({ progress: formInstance?.progress, total: formInstance?.total });
2195
3047
  };
2196
3048
  const closeButton = document.createElement("button");
3049
+ closeButton.id = "dd-complete";
3050
+ closeButton.className = "dd-nav-btn";
2197
3051
  closeButton.textContent = actions?.complete ? actions.complete.label : "Complete survey";
2198
3052
  closeButton.style.cssText = `
2199
3053
  background: #1E293B;
2200
3054
  color: #fff;
2201
3055
  border: none;
3056
+ min-height: 44px;
2202
3057
  padding: 12px 24px;
2203
- border-radius: 4px;
3058
+ border-radius: 6px;
2204
3059
  cursor: pointer;
2205
- font-size: 14px;
3060
+ font-size: 15px;
3061
+ font-weight: 600;
2206
3062
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
2207
3063
  transition: filter .15s ease;
2208
3064
  display: inline-flex;
@@ -2221,15 +3077,19 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2221
3077
  onClose();
2222
3078
  };
2223
3079
  const submitButton = document.createElement("button");
3080
+ submitButton.id = "dd-submit";
3081
+ submitButton.className = "dd-nav-btn";
2224
3082
  submitButton.textContent = actions?.accept ? actions.accept.label : "Send";
2225
3083
  submitButton.style.cssText = `
2226
3084
  background: #1E293B;
2227
3085
  color: #fff;
2228
3086
  border: none;
3087
+ min-height: 44px;
2229
3088
  padding: 12px 24px;
2230
- border-radius: 4px;
3089
+ border-radius: 6px;
2231
3090
  cursor: pointer;
2232
- font-size: 14px;
3091
+ font-size: 15px;
3092
+ font-weight: 600;
2233
3093
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
2234
3094
  transition: filter .15s ease;
2235
3095
  display: inline-flex;
@@ -2251,8 +3111,9 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2251
3111
  footer.appendChild(backButton);
2252
3112
  footer.appendChild(closeButton);
2253
3113
  footer.appendChild(startButton);
2254
- main.appendChild(footer);
2255
3114
  containerContent.appendChild(main);
3115
+ footer.style.flex = "0 0 auto";
3116
+ containerContent.appendChild(footer);
2256
3117
  function updateButtons(state) {
2257
3118
  backButton.style.display = "none";
2258
3119
  startButton.style.display = "none";
@@ -2289,7 +3150,27 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2289
3150
  break;
2290
3151
  }
2291
3152
  }
3153
+ function updateNavButtons() {
3154
+ updateButtons(pageDepth > 0 ? "in_progress_next" : "in_progress_first");
3155
+ }
3156
+ let successMessageHtml = "";
3157
+ function showSuccessScreen() {
3158
+ progressEl.style.display = "none";
3159
+ formWrapper.style.display = "none";
3160
+ let done = main.querySelector(".deepdots-success");
3161
+ if (!done) {
3162
+ done = document.createElement("div");
3163
+ done.className = "deepdots-success";
3164
+ done.style.cssText = `width:100%; text-align:center; padding:24px 0; color:${theme.textPrimary};`;
3165
+ main.insertBefore(done, errorHint);
3166
+ }
3167
+ done.innerHTML = successMessageHtml || "<p>Thank you for your feedback!</p>";
3168
+ done.querySelectorAll("img").forEach((img) => {
3169
+ img.style.cssText = "max-width:100%; height:auto; margin:0 auto 16px auto; display:block;";
3170
+ });
3171
+ }
2292
3172
  popup.appendChild(header);
3173
+ popup.appendChild(progressEl);
2293
3174
  popup.appendChild(containerContent);
2294
3175
  container.innerHTML = "";
2295
3176
  container.appendChild(popup);
@@ -2335,7 +3216,11 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2335
3216
  formInstance = import_native.default.form(surveyId, productId, profile, metadata);
2336
3217
  const generateOptions = {
2337
3218
  addButton: false,
2338
- getMetaData: true
3219
+ getMetaData: true,
3220
+ // La pantalla final la pinta el popup: `renderSuccess` de @magicfeedback/native usa
3221
+ // textContent, así que el mensaje de la plataforma (HTML con imagen) no se vería, y
3222
+ // su fallback es un literal genérico que ignora `style.successMessage`.
3223
+ addSuccessScreen: false
2339
3224
  };
2340
3225
  generateOptions.onLoadedEvent = ({ formData }) => {
2341
3226
  try {
@@ -2344,6 +3229,14 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2344
3229
  const s = formData?.style;
2345
3230
  if (s && !stylesInjected) {
2346
3231
  stylesInjected = true;
3232
+ if (s.successMessage) successMessageHtml = s.successMessage;
3233
+ if (options?.showProgressBar === void 0) progressEnabled = s.showProgressBar === true;
3234
+ if (s.showProgressUnit !== void 0) progressShowUnit = s.showProgressUnit !== false;
3235
+ if (s.progressUnit) progressUnit = s.progressUnit;
3236
+ if (s.loadingBarColor) {
3237
+ progressBar.style.background = s.loadingBarColor;
3238
+ progressFollowUp.style.background = s.loadingBarColor;
3239
+ }
2347
3240
  if (s.boxBackgroundColor) {
2348
3241
  popup.style.background = s.boxBackgroundColor;
2349
3242
  }
@@ -2362,53 +3255,14 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2362
3255
  closeButton.style.color = "#fff";
2363
3256
  }
2364
3257
  if (s.buttonSecondaryColor) {
2365
- backButton.style.background = "#fff";
3258
+ backButton.style.background = "transparent";
2366
3259
  backButton.style.color = s.buttonSecondaryColor;
2367
- backButton.style.border = `1px solid ${s.buttonSecondaryColor}`;
2368
- }
2369
- if (s.logo) {
2370
- if (!document.getElementById("deepdots-popup-logo")) {
2371
- const logoImg = document.createElement("img");
2372
- logoImg.id = "deepdots-popup-logo";
2373
- logoImg.src = s.logo;
2374
- logoImg.alt = "Logo";
2375
- logoImg.style.cssText = "max-height:40px; max-width:100%; object-fit:contain;";
2376
- if (s.logoSize) {
2377
- switch (s.logoSize) {
2378
- case "small":
2379
- logoImg.style.maxHeight = "30px";
2380
- break;
2381
- case "medium":
2382
- logoImg.style.maxHeight = "50px";
2383
- break;
2384
- case "large":
2385
- logoImg.style.maxHeight = "70px";
2386
- break;
2387
- }
2388
- }
2389
- if (s.logoPosition) {
2390
- switch (s.logoPosition) {
2391
- case "left":
2392
- logoImg.style.margin = "0 16px 42px 0";
2393
- logoImg.style.display = "block";
2394
- logoImg.style.marginLeft = "0";
2395
- break;
2396
- case "right":
2397
- logoImg.style.margin = "0 0 42px 16px";
2398
- logoImg.style.display = "block";
2399
- logoImg.style.marginLeft = "auto";
2400
- break;
2401
- case "center":
2402
- logoImg.style.margin = "0 auto 42px auto";
2403
- logoImg.style.display = "block";
2404
- break;
2405
- }
2406
- }
2407
- containerContent.insertBefore(logoImg, main);
2408
- }
3260
+ backButton.style.border = "none";
2409
3261
  }
3262
+ insertPopupLogo(popup, progressEl, s, "deepdots-popup-logo");
2410
3263
  if (s.startMessage && s.startMessage !== "") {
2411
3264
  sdkLog(s.startMessage);
3265
+ onStartPage = true;
2412
3266
  updateButtons("start");
2413
3267
  } else {
2414
3268
  updateButtons("in_progress_first");
@@ -2416,6 +3270,7 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2416
3270
  } else {
2417
3271
  updateButtons("in_progress_first");
2418
3272
  }
3273
+ updateProgress({ progress: formInstance.progress, total: formInstance.total });
2419
3274
  emit("popup_clicked", surveyId, { action: "loaded" });
2420
3275
  setLoading(false);
2421
3276
  };
@@ -2423,7 +3278,7 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2423
3278
  setLoading(true);
2424
3279
  emit("popup_clicked", surveyId, { action: "before_submit" });
2425
3280
  };
2426
- generateOptions.afterSubmitEvent = ({ error, completed, total, progress }) => {
3281
+ generateOptions.afterSubmitEvent = ({ error, completed, total, progress, followup }) => {
2427
3282
  const errText = error ? typeof error === "string" ? error : error.message ?? String(error) : "";
2428
3283
  if (errText) {
2429
3284
  setLoading(false);
@@ -2431,7 +3286,7 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2431
3286
  errorHint.textContent = "Please answer the required question to continue.";
2432
3287
  errorHint.style.display = "block";
2433
3288
  emit("popup_clicked", surveyId, { action: "validation_error_required" });
2434
- updateButtons("in_progress_next");
3289
+ updateNavButtons();
2435
3290
  return;
2436
3291
  }
2437
3292
  errorHint.textContent = "An error occurred while submitting. Please try again or close the popup.";
@@ -2444,23 +3299,21 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2444
3299
  if (completed) {
2445
3300
  emit("survey_completed", surveyId, { action: "completed" });
2446
3301
  surveyCompletedEmitted = true;
3302
+ showSuccessScreen();
2447
3303
  updateButtons("completed");
3304
+ updateProgress({ progress, total, completed: true });
2448
3305
  return;
2449
3306
  }
2450
3307
  emit("popup_clicked", surveyId, { action: "partial" });
2451
- if (total > 1 && progress > 0 && progress < total) {
2452
- updateButtons("in_progress_next");
2453
- } else {
2454
- updateButtons("in_progress_first");
2455
- }
3308
+ pageDepth++;
3309
+ updateNavButtons();
3310
+ updateProgress({ progress, total, followup });
2456
3311
  };
2457
- generateOptions.onBackEvent = ({ progress }) => {
3312
+ generateOptions.onBackEvent = ({ progress, error, followup }) => {
2458
3313
  emit("popup_clicked", surveyId, { action: "back" });
2459
- if (progress === 0) {
2460
- updateButtons("in_progress_first");
2461
- } else {
2462
- updateButtons("in_progress_next");
2463
- }
3314
+ if (!error) pageDepth = Math.max(0, pageDepth - 1);
3315
+ updateNavButtons();
3316
+ updateProgress({ progress, total: formInstance.total, followup });
2464
3317
  };
2465
3318
  formInstance.generate(formDivId, generateOptions).catch((err) => {
2466
3319
  sdkError("[MagicFeedback] Error generating form:", err);
@@ -2474,4 +3327,4 @@ async function renderPopup(container, surveyId, productId, actions, emit, onClos
2474
3327
  export {
2475
3328
  renderPopup
2476
3329
  };
2477
- //# sourceMappingURL=renderPopup-TCKR5Z3P.mjs.map
3330
+ //# sourceMappingURL=renderPopup-M6MKTDEH.mjs.map