@progress/telerik-jquery-report-viewer 31.26.812 → 31.26.1007

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.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * TelerikReporting v20.2.26.812 (https://www.telerik.com/products/reporting.aspx)
2
+ * TelerikReporting v20.2.26.1007 (https://www.telerik.com/products/reporting.aspx)
3
3
  * Copyright 2026 Progress Software EAD. All rights reserved.
4
4
  *
5
5
  * Telerik Reporting commercial licenses may be obtained at
@@ -13,7 +13,7 @@ var telerikReportViewer = (function (exports) {
13
13
 
14
14
  var dist = {exports: {}};
15
15
 
16
- /*! @license DOMPurify 3.4.12 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.12/LICENSE */
16
+ /*! @license DOMPurify 3.4.13 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.13/LICENSE */
17
17
 
18
18
  var purify_cjs;
19
19
  var hasRequiredPurify_cjs;
@@ -446,7 +446,7 @@ var telerikReportViewer = (function (exports) {
446
446
  function createDOMPurify() {
447
447
  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
448
448
  const DOMPurify = root => createDOMPurify(root);
449
- DOMPurify.version = '3.4.12';
449
+ DOMPurify.version = '3.4.13';
450
450
  DOMPurify.removed = [];
451
451
  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {
452
452
  // Not running in a browser, provide a factory function
@@ -477,6 +477,7 @@ var telerikReportViewer = (function (exports) {
477
477
  const getAttributes = lookupGetter(ElementPrototype, 'attributes');
478
478
  const getNodeType = Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeType') : null;
479
479
  const getNodeName = Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeName') : null;
480
+ const getOwnerDocument = Node && Node.prototype ? lookupGetter(Node.prototype, 'ownerDocument') : null;
480
481
  // As per issue #47, the web-components registry is inherited by a
481
482
  // new document created via createHTMLDocument. As per the spec
482
483
  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)
@@ -1395,7 +1396,17 @@ var telerikReportViewer = (function (exports) {
1395
1396
  * @return The created NodeIterator
1396
1397
  */
1397
1398
  const _createNodeIterator = function _createNodeIterator(root) {
1398
- return createNodeIterator.call(root.ownerDocument || root, root,
1399
+ /* Read ownerDocument through the cached Node.prototype getter, never the
1400
+ direct property. HTMLFormElement has [LegacyOverrideBuiltIns], so a
1401
+ clobbering child (<input name="ownerDocument"> or a form-associated
1402
+ external input) shadows the prototype getter and makes a direct read
1403
+ return that <input>. createNodeIterator.call(<input>, ...) then throws
1404
+ "Illegal invocation", and on the IN_PLACE path that throw lands before
1405
+ the walk's fail-closed barrier - leaving the caller's live tree, with
1406
+ any already-armed handler in it, un-neutralized. The cached getter
1407
+ returns the real Document regardless of the clobber. */
1408
+ const doc = getOwnerDocument ? getOwnerDocument(root) : root.ownerDocument;
1409
+ return createNodeIterator.call(doc || root, root,
1399
1410
  // eslint-disable-next-line no-bitwise
1400
1411
  NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);
1401
1412
  };
@@ -1435,7 +1446,11 @@ var telerikReportViewer = (function (exports) {
1435
1446
  const _scrubTemplateExpressions2 = function _scrubTemplateExpressions(node) {
1436
1447
  var _node$querySelectorAl;
1437
1448
  node.normalize();
1438
- const walker = createNodeIterator.call(node.ownerDocument || node, node,
1449
+ /* Clobber-safe ownerDocument read, same reasoning as _createNodeIterator:
1450
+ under SAFE_FOR_TEMPLATES this runs on the live IN_PLACE root, which may
1451
+ carry a form-named-getter override of ownerDocument. */
1452
+ const doc = getOwnerDocument ? getOwnerDocument(node) : node.ownerDocument;
1453
+ const walker = createNodeIterator.call(doc || node, node,
1439
1454
  // eslint-disable-next-line no-bitwise
1440
1455
  NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_PROCESSING_INSTRUCTION, null);
1441
1456
  let currentNode = walker.nextNode();
@@ -1602,7 +1617,7 @@ var telerikReportViewer = (function (exports) {
1602
1617
  * @param tagName the node's transformCaseFunc'd tag name
1603
1618
  * @return true if the node was removed, false if kept
1604
1619
  */
1605
- const _sanitizeDisallowedNode = function _sanitizeDisallowedNode(currentNode, tagName) {
1620
+ const _sanitizeDisallowedNode = function _sanitizeDisallowedNode(currentNode, tagName, root) {
1606
1621
  /* Check if we have a custom element to handle */
1607
1622
  if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
1608
1623
  if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
@@ -1625,27 +1640,26 @@ var telerikReportViewer = (function (exports) {
1625
1640
  const childNodes = getChildNodes(currentNode);
1626
1641
  if (childNodes && parentNode) {
1627
1642
  const childCount = childNodes.length;
1628
- /* In-place: hoist the *original* children so the iterator visits
1629
- and sanitises them through the same allowlist pass as every other
1630
- node. The caller built the tree in the live document, so the
1631
- originals carry already-queued resource events (`<img onerror>`,
1632
- `<video>`/`<audio>` error, lazy/`onload`, …); cloning would leave
1633
- those originals detached but still armed, firing in page scope
1634
- while the returned tree looked clean. Moving is safe in-place: the
1635
- root is pre-validated as an allowed tag and so is never the node
1636
- being removed, which keeps `parentNode` inside the iterator root
1637
- and the relocated child inside the serialised tree.
1638
- Otherwise (string / DOM-copy paths): clone. The iterator is rooted
1639
- at — and the result serialised from — `body`, so a restrictive
1640
- ALLOWED_TAGS that removes `body` itself must leave its content in
1641
- place, which only cloning does; and those paths parse into an
1642
- inert document, so their discarded originals never had a queued
1643
- event to neutralise.
1643
+ /* Hoist by moving each child up one level rather than deep-cloning
1644
+ it. Moving transfers every descendant exactly once, so a chain of
1645
+ nested disallowed elements costs O(n) instead of the O(n^2) that
1646
+ re-cloning the shrinking subtree at each level produced; it also
1647
+ empties the removed original, so `DOMPurify.removed` no longer
1648
+ pins whole subtrees. Moving preserves the in-place guarantee too:
1649
+ an original carrying already-queued resource events (`<img
1650
+ onerror>`, `<video>`/`<audio>` error, lazy/`onload`, …) is
1651
+ relocated and sanitised rather than left detached but still armed.
1652
+ The sole case that must clone is removing the walk root itself.
1653
+ The result is serialised from the root's subtree, so a restrictive
1654
+ ALLOWED_TAGS that strips the root (`body` on the string path) must
1655
+ leave the content inside it, which only cloning does. In IN_PLACE
1656
+ the root is pre-validated as an allowed tag and so is never removed
1657
+ here, so that path always takes the move branch.
1644
1658
  `childNodes` is live; a tail-to-head walk keeps `childNodes[i]`
1645
1659
  valid whether we move (drops the trailing entry) or clone (leaves
1646
1660
  the list intact). */
1647
1661
  for (let i = childCount - 1; i >= 0; --i) {
1648
- const hoisted = IN_PLACE ? childNodes[i] : cloneNode(childNodes[i], true);
1662
+ const hoisted = currentNode === root ? cloneNode(childNodes[i], true) : childNodes[i];
1649
1663
  parentNode.insertBefore(hoisted, getNextSibling(currentNode));
1650
1664
  }
1651
1665
  }
@@ -1653,6 +1667,26 @@ var telerikReportViewer = (function (exports) {
1653
1667
  _forceRemove(currentNode);
1654
1668
  return true;
1655
1669
  };
1670
+ /**
1671
+ * Fork a hook-mutable allowlist off its shared binding the first time a
1672
+ * (possibly lazily-installed) uponSanitize* hook is about to see it, so the
1673
+ * hook cannot widen the per-instance default or the setConfig binding by
1674
+ * reference and leak past the call. Returns the set unchanged once it is
1675
+ * already call-local, so repeated calls across elements are idempotent.
1676
+ *
1677
+ * @param hookList the uponSanitize* hook array for this event
1678
+ * @param set the current ALLOWED_TAGS / ALLOWED_ATTR binding
1679
+ * @param defaultSet the per-instance DEFAULT_ALLOWED_* constant
1680
+ * @param setConfigSet the captured setConfig() binding, or null
1681
+ * @return a call-local clone if a hook is present and set is still shared,
1682
+ * else set unchanged
1683
+ */
1684
+ const _forkSharedAllowlist = function _forkSharedAllowlist(hookList, set, defaultSet, setConfigSet) {
1685
+ if (hookList.length === 0) {
1686
+ return set;
1687
+ }
1688
+ return set === defaultSet || set === setConfigSet ? clone(set) : set;
1689
+ };
1656
1690
  /**
1657
1691
  * _sanitizeElements
1658
1692
  *
@@ -1666,9 +1700,14 @@ var telerikReportViewer = (function (exports) {
1666
1700
  const _sanitizeElements = function _sanitizeElements(currentNode, root) {
1667
1701
  /* Execute a hook if present */
1668
1702
  _executeHooks(hooks.beforeSanitizeElements, currentNode, null);
1669
- /* A hook may have detached the node — treat it as removed (see the
1670
- detached-node comment after the uponSanitizeElement hook below). */
1703
+ /* A hook may have detached the node - treat it as removed (see the
1704
+ detached-node comment after the uponSanitizeElement hook below). On
1705
+ the IN_PLACE path, neutralize the detached subtree first so a queued
1706
+ resource handler on it cannot fire in page scope after we return. */
1671
1707
  if (currentNode !== root && getParentNode(currentNode) === null) {
1708
+ if (IN_PLACE) {
1709
+ _neutralizeSubtree(currentNode);
1710
+ }
1672
1711
  return true;
1673
1712
  }
1674
1713
  /* Check if element is clobbered or can clobber */
@@ -1678,6 +1717,12 @@ var telerikReportViewer = (function (exports) {
1678
1717
  }
1679
1718
  /* Now let's check the element's type and name */
1680
1719
  const tagName = transformCaseFunc(getNodeName ? getNodeName(currentNode) : currentNode.nodeName);
1720
+ /* Close the pre-walk clone-guard's timing gap: an uponSanitizeElement
1721
+ hook may have been installed after that guard sampled the hook arrays
1722
+ (e.g. lazily from beforeSanitizeElements), leaving ALLOWED_TAGS still
1723
+ aliasing a shared binding that a widening hook would mutate by
1724
+ reference. Fork it before exposing it to the hook. */
1725
+ ALLOWED_TAGS = _forkSharedAllowlist(hooks.uponSanitizeElement, ALLOWED_TAGS, DEFAULT_ALLOWED_TAGS, SET_CONFIG_ALLOWED_TAGS);
1681
1726
  /* Execute a hook if present */
1682
1727
  _executeHooks(hooks.uponSanitizeElement, currentNode, {
1683
1728
  tagName,
@@ -1695,10 +1740,22 @@ var telerikReportViewer = (function (exports) {
1695
1740
  opposite of a node that is already safely gone. The walk root is
1696
1741
  exempt: a detached IN_PLACE root is legitimate input and must still
1697
1742
  be fully sanitized, and a kill-decision on it must keep hitting the
1698
- REPORT-3 throw. Nodes detached by hooks are the hook's
1699
- responsibility: they are not recorded in DOMPurify.removed and are
1700
- not neutralized by the post-walk IN_PLACE pass. */
1743
+ REPORT-3 throw. Nodes detached by hooks stay the hook's
1744
+ responsibility for placement: they are not recorded in
1745
+ DOMPurify.removed, so the post-walk IN_PLACE pass (which iterates
1746
+ DOMPurify.removed) does not reach them. But a hook-detached subtree
1747
+ can still hold a queued resource-event handler - e.g. an <img onload>
1748
+ that began loading when the caller built the live tree - which fires
1749
+ in page scope after sanitize returns even though the handler never
1750
+ reached the returned tree. That is the audit-5 F1 hazard, and the
1751
+ documented node.remove() hook pattern walks straight into it. So on
1752
+ the IN_PLACE path we neutralize the detached subtree inline here,
1753
+ stripping its non-allow-listed attributes before returning, exactly
1754
+ as the post-walk pass does for _forceRemove'd subtrees. */
1701
1755
  if (currentNode !== root && getParentNode(currentNode) === null) {
1756
+ if (IN_PLACE) {
1757
+ _neutralizeSubtree(currentNode);
1758
+ }
1702
1759
  return true;
1703
1760
  }
1704
1761
  /* Remove mXSS vectors, processing instructions and risky comments */
@@ -1708,7 +1765,7 @@ var telerikReportViewer = (function (exports) {
1708
1765
  }
1709
1766
  /* Remove element if anything forbids its presence */
1710
1767
  if (FORBID_TAGS[tagName] || !(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && !ALLOWED_TAGS[tagName]) {
1711
- const removed = _sanitizeDisallowedNode(currentNode, tagName);
1768
+ const removed = _sanitizeDisallowedNode(currentNode, tagName, root);
1712
1769
  /* A false return means the node is a custom element kept via
1713
1770
  CUSTOM_ELEMENT_HANDLING - the only keep path through
1714
1771
  _sanitizeDisallowedNode. Run afterSanitizeElements on it so the
@@ -1913,6 +1970,9 @@ var telerikReportViewer = (function (exports) {
1913
1970
  if (!attributes || _isClobbered(currentNode)) {
1914
1971
  return;
1915
1972
  }
1973
+ /* Same lazy-install guard as uponSanitizeElement (see there): fork the
1974
+ attribute allowlist off its shared binding before a hook can see it. */
1975
+ ALLOWED_ATTR = _forkSharedAllowlist(hooks.uponSanitizeAttribute, ALLOWED_ATTR, DEFAULT_ALLOWED_ATTR, SET_CONFIG_ALLOWED_ATTR);
1916
1976
  const hookEvent = {
1917
1977
  attrName: '',
1918
1978
  attrValue: '',
@@ -2285,17 +2345,20 @@ var telerikReportViewer = (function (exports) {
2285
2345
  }
2286
2346
  /* Get node iterator */
2287
2347
  const walkRoot = inPlace ? dirty : body;
2288
- const nodeIterator = _createNodeIterator(walkRoot);
2289
2348
  /* Now start iterating over the created document.
2290
2349
  The walk runs inside an exception barrier (campaign-3 F2): a re-entrant
2291
2350
  engine/custom-element mutation can detach a node mid-walk so
2292
2351
  `_forceRemove`'s parentless guard throws, aborting the loop. Without the
2293
2352
  barrier the caller's in-place tree would be left half-sanitized with the
2294
- unvisited tail still armed. On any throw we fail closed — strip the
2295
- in-place root bare — then rethrow so the existing throw contract is
2296
- preserved. (String/DOM-copy paths never return the partial body, so the
2297
- propagating throw is already fail-closed there.) */
2353
+ unvisited tail still armed. _createNodeIterator itself is inside the
2354
+ barrier too: constructing the iterator dereferences the root's document,
2355
+ and any failure there (e.g. an exotic/clobbered root) must still fail
2356
+ closed rather than skip the neutralize. On any throw we fail closed -
2357
+ strip the in-place root bare - then rethrow so the existing throw
2358
+ contract is preserved. (String/DOM-copy paths never return the partial
2359
+ body, so the propagating throw is already fail-closed there.) */
2298
2360
  try {
2361
+ const nodeIterator = _createNodeIterator(walkRoot);
2299
2362
  while (currentNode = nodeIterator.nextNode()) {
2300
2363
  /* Sanitize tags and elements */
2301
2364
  _sanitizeElements(currentNode, walkRoot);
@@ -2482,73 +2545,78 @@ var telerikReportViewer = (function (exports) {
2482
2545
  l2((n2 = n2.apply(e2, t2 || [])).next());
2483
2546
  });
2484
2547
  }
2548
+ function o(e2, t2, i2, n2) {
2549
+ if ("a" === i2 && !n2) throw new TypeError("Private accessor was defined without a getter");
2550
+ if ("function" == typeof t2 ? e2 !== t2 || !n2 : !t2.has(e2)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
2551
+ return "m" === i2 ? n2 : "a" === i2 ? n2.call(e2) : n2 ? n2.value : t2.get(e2);
2552
+ }
2485
2553
  "function" == typeof SuppressedError && SuppressedError;
2486
- class o {
2554
+ class a {
2487
2555
  constructor() {
2488
2556
  this.BasePath = "", this.ImmediatePrint = false, this.ContentOnly = false, this.UseSVG = false, this.enableSearch = false, this.enableAccessibility = false, this.contentTabIndex = 0;
2489
2557
  }
2490
2558
  }
2491
- class a {
2559
+ class l {
2492
2560
  constructor() {
2493
2561
  this.from = "", this.to = "", this.cc = "", this.subject = "", this.format = "", this.body = "";
2494
2562
  }
2495
2563
  }
2496
- class l {
2564
+ class h {
2497
2565
  constructor(e2, t2) {
2498
2566
  this.cancel = false, this.element = e2, this.action = t2;
2499
2567
  }
2500
2568
  }
2501
- class h {
2569
+ class c {
2502
2570
  constructor(e2, t2) {
2503
2571
  this.id = "", this.type = "", this.id = e2, this.type = t2;
2504
2572
  }
2505
2573
  }
2506
- class c {
2574
+ class d {
2507
2575
  constructor(e2, t2) {
2508
2576
  this.isCancelled = false, this.format = "", this.deviceInfo = e2, this.format = t2;
2509
2577
  }
2510
2578
  }
2511
- class d {
2579
+ class u {
2512
2580
  constructor(e2, t2) {
2513
2581
  this.handled = false, this.deviceInfo = e2, this.format = t2;
2514
2582
  }
2515
2583
  }
2516
- class u {
2584
+ class p {
2517
2585
  constructor(e2, t2, i2) {
2518
2586
  this.handled = false, this.url = e2, this.format = t2, this.windowOpenTarget = i2;
2519
2587
  }
2520
2588
  }
2521
- class p {
2589
+ class g {
2522
2590
  constructor(e2) {
2523
2591
  this.handled = false, this.deviceInfo = e2;
2524
2592
  }
2525
2593
  }
2526
- class g {
2594
+ class f {
2527
2595
  constructor(e2) {
2528
2596
  this.handled = false, this.url = e2;
2529
2597
  }
2530
2598
  }
2531
- class f {
2599
+ class m {
2532
2600
  constructor(e2, t2) {
2533
2601
  this.handled = false, this.deviceInfo = e2, this.format = t2;
2534
2602
  }
2535
2603
  }
2536
- class m extends a {
2604
+ class v extends l {
2537
2605
  constructor(e2, t2, i2) {
2538
2606
  super(), this.handled = false, this.body = e2.body, this.cc = e2.cc, this.format = e2.format, this.from = e2.from, this.subject = e2.subject, this.to = e2.to, this.deviceInfo = t2, this.url = i2;
2539
2607
  }
2540
2608
  }
2541
- class v {
2609
+ class P {
2542
2610
  constructor(e2, t2) {
2543
2611
  this.page = e2, this.reportDocumentId = t2;
2544
2612
  }
2545
2613
  }
2546
- class P {
2614
+ class C {
2547
2615
  constructor(e2, t2, i2, n2 = null) {
2548
2616
  this.element = e2, this.text = t2, this.title = i2, this.eventArgs = n2;
2549
2617
  }
2550
2618
  }
2551
- class C {
2619
+ class y {
2552
2620
  constructor(e2, t2) {
2553
2621
  this._responseText = e2, this._error = t2;
2554
2622
  try {
@@ -2571,14 +2639,14 @@ var telerikReportViewer = (function (exports) {
2571
2639
  return (null === (e2 = this.responseJSON) || void 0 === e2 ? void 0 : e2.exceptionMessage) || (null === (t2 = this.responseJSON) || void 0 === t2 ? void 0 : t2.ExceptionMessage);
2572
2640
  }
2573
2641
  }
2574
- function y(e2, t2 = false, i2 = false) {
2642
+ function S(e2, t2 = false, i2 = false) {
2575
2643
  let n2 = { Accept: "application/json, text/javascript, */*; q=0.01" };
2576
2644
  return t2 && (n2["Content-Type"] = i2 ? "application/x-www-form-urlencoded; charset=UTF-8" : "application/json; charset=UTF-8"), e2 && (n2.authorization = "Bearer " + e2), n2;
2577
2645
  }
2578
- function S(e2) {
2646
+ function b(e2) {
2579
2647
  return s(this, void 0, void 0, function* () {
2580
2648
  if (!e2.ok) {
2581
- let t2 = yield e2.text(), i2 = new C(t2, e2.statusText);
2649
+ let t2 = yield e2.text(), i2 = new y(t2, e2.statusText);
2582
2650
  return Promise.reject(i2);
2583
2651
  }
2584
2652
  if (204 == e2.status) return Promise.resolve();
@@ -2586,14 +2654,14 @@ var telerikReportViewer = (function (exports) {
2586
2654
  });
2587
2655
  }
2588
2656
  function I(e2, t2 = {}, i2 = "", n2 = false) {
2589
- return fetch(e2, { method: "POST", headers: y(i2, true, n2), body: n2 ? t2 : JSON.stringify(t2) }).then(S);
2657
+ return fetch(e2, { method: "POST", headers: S(i2, true, n2), body: n2 ? t2 : JSON.stringify(t2) }).then(b);
2590
2658
  }
2591
- class b {
2659
+ class w {
2592
2660
  authenticatePromise() {
2593
2661
  return Promise.resolve("");
2594
2662
  }
2595
2663
  }
2596
- class w {
2664
+ class L {
2597
2665
  constructor(e2) {
2598
2666
  this.connectionConfig = e2;
2599
2667
  }
@@ -2606,7 +2674,7 @@ var telerikReportViewer = (function (exports) {
2606
2674
  return Promise.reject("Failed to connect to Report Server with user credentials. Are you missing the reportServer.url, reportServer.username or reportServer.password values?");
2607
2675
  }
2608
2676
  }
2609
- class L {
2677
+ class T {
2610
2678
  constructor(e2) {
2611
2679
  this.connectionConfig = e2;
2612
2680
  }
@@ -2615,44 +2683,44 @@ var telerikReportViewer = (function (exports) {
2615
2683
  }
2616
2684
  }
2617
2685
  e.AuthType = void 0, (n = e.AuthType || (e.AuthType = {}))[n.None = 0] = "None", n[n.Basic = 1] = "Basic", n[n.PersonalToken = 2] = "PersonalToken";
2618
- class T {
2686
+ class A {
2619
2687
  constructor(e2) {
2620
2688
  this.baseUrl = null == e2 ? void 0 : e2.replace(/\/$/, "");
2621
2689
  }
2622
2690
  }
2623
- class R extends T {
2691
+ class R extends A {
2624
2692
  constructor(t2) {
2625
2693
  super(t2), this.authType = e.AuthType.None, this.serviceUrl = this.baseUrl;
2626
2694
  }
2627
2695
  }
2628
- class A extends T {
2696
+ class E extends A {
2629
2697
  constructor(t2) {
2630
2698
  super(t2), this.authType = e.AuthType.None, this.serviceUrl = this.baseUrl + "/api/reports";
2631
2699
  }
2632
2700
  }
2633
- class E extends A {
2701
+ class M extends E {
2634
2702
  constructor(t2, i2, n2) {
2635
2703
  super(t2), this.authType = e.AuthType.Basic, this.username = i2, this.password = n2, this.tokenUrl = this.baseUrl + "/Token";
2636
2704
  }
2637
2705
  }
2638
- class M extends A {
2706
+ class k extends E {
2639
2707
  constructor(t2, i2) {
2640
2708
  super(t2), this.authType = e.AuthType.PersonalToken, this.getPersonalAccessToken = i2, this.personalTokenUrl = this.baseUrl + "/PersonalToken", this.refreshTokenUrl = this.baseUrl + "/refresh";
2641
2709
  }
2642
2710
  }
2643
- function k() {
2644
- }
2645
2711
  function x() {
2646
- x.init.call(this);
2647
2712
  }
2648
- function N(e2) {
2649
- return void 0 === e2._maxListeners ? x.defaultMaxListeners : e2._maxListeners;
2713
+ function N() {
2714
+ N.init.call(this);
2715
+ }
2716
+ function D(e2) {
2717
+ return void 0 === e2._maxListeners ? N.defaultMaxListeners : e2._maxListeners;
2650
2718
  }
2651
- function D(e2, t2, i2, n2) {
2719
+ function V(e2, t2, i2, n2) {
2652
2720
  var r2, s2, o2, a2;
2653
2721
  if ("function" != typeof i2) throw new TypeError('"listener" argument must be a function');
2654
- if ((s2 = e2._events) ? (s2.newListener && (e2.emit("newListener", t2, i2.listener ? i2.listener : i2), s2 = e2._events), o2 = s2[t2]) : (s2 = e2._events = new k(), e2._eventsCount = 0), o2) {
2655
- if ("function" == typeof o2 ? o2 = s2[t2] = n2 ? [i2, o2] : [o2, i2] : n2 ? o2.unshift(i2) : o2.push(i2), !o2.warned && (r2 = N(e2)) && r2 > 0 && o2.length > r2) {
2722
+ if ((s2 = e2._events) ? (s2.newListener && (e2.emit("newListener", t2, i2.listener ? i2.listener : i2), s2 = e2._events), o2 = s2[t2]) : (s2 = e2._events = new x(), e2._eventsCount = 0), o2) {
2723
+ if ("function" == typeof o2 ? o2 = s2[t2] = n2 ? [i2, o2] : [o2, i2] : n2 ? o2.unshift(i2) : o2.push(i2), !o2.warned && (r2 = D(e2)) && r2 > 0 && o2.length > r2) {
2656
2724
  o2.warned = true;
2657
2725
  var l2 = new Error("Possible EventEmitter memory leak detected. " + o2.length + " " + t2 + " listeners added. Use emitter.setMaxListeners() to increase limit");
2658
2726
  l2.name = "MaxListenersExceededWarning", l2.emitter = e2, l2.type = t2, l2.count = o2.length, a2 = l2, "function" == typeof console.warn ? console.warn(a2) : console.log(a2);
@@ -2660,14 +2728,14 @@ var telerikReportViewer = (function (exports) {
2660
2728
  } else o2 = s2[t2] = i2, ++e2._eventsCount;
2661
2729
  return e2;
2662
2730
  }
2663
- function V(e2, t2, i2) {
2731
+ function F(e2, t2, i2) {
2664
2732
  var n2 = false;
2665
2733
  function r2() {
2666
2734
  e2.removeListener(t2, r2), n2 || (n2 = true, i2.apply(e2, arguments));
2667
2735
  }
2668
2736
  return r2.listener = i2, r2;
2669
2737
  }
2670
- function F(e2) {
2738
+ function O(e2) {
2671
2739
  var t2 = this._events;
2672
2740
  if (t2) {
2673
2741
  var i2 = t2[e2];
@@ -2676,18 +2744,18 @@ var telerikReportViewer = (function (exports) {
2676
2744
  }
2677
2745
  return 0;
2678
2746
  }
2679
- function O(e2, t2) {
2747
+ function z(e2, t2) {
2680
2748
  for (var i2 = new Array(t2); t2--; ) i2[t2] = e2[t2];
2681
2749
  return i2;
2682
2750
  }
2683
- k.prototype = /* @__PURE__ */ Object.create(null), x.EventEmitter = x, x.usingDomains = false, x.prototype.domain = void 0, x.prototype._events = void 0, x.prototype._maxListeners = void 0, x.defaultMaxListeners = 10, x.init = function() {
2684
- this.domain = null, x.usingDomains && (void 0).active, this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = new k(), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0;
2685
- }, x.prototype.setMaxListeners = function(e2) {
2751
+ x.prototype = /* @__PURE__ */ Object.create(null), N.EventEmitter = N, N.usingDomains = false, N.prototype.domain = void 0, N.prototype._events = void 0, N.prototype._maxListeners = void 0, N.defaultMaxListeners = 10, N.init = function() {
2752
+ this.domain = null, N.usingDomains && (void 0).active, this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = new x(), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0;
2753
+ }, N.prototype.setMaxListeners = function(e2) {
2686
2754
  if ("number" != typeof e2 || e2 < 0 || isNaN(e2)) throw new TypeError('"n" argument must be a positive number');
2687
2755
  return this._maxListeners = e2, this;
2688
- }, x.prototype.getMaxListeners = function() {
2689
- return N(this);
2690
- }, x.prototype.emit = function(e2) {
2756
+ }, N.prototype.getMaxListeners = function() {
2757
+ return D(this);
2758
+ }, N.prototype.emit = function(e2) {
2691
2759
  var t2, i2, n2, r2, s2, o2, a2, l2 = "error" === e2;
2692
2760
  if (o2 = this._events) l2 = l2 && null == o2.error;
2693
2761
  else if (!l2) return false;
@@ -2705,51 +2773,51 @@ var telerikReportViewer = (function (exports) {
2705
2773
  case 1:
2706
2774
  !(function(e3, t3, i3) {
2707
2775
  if (t3) e3.call(i3);
2708
- else for (var n3 = e3.length, r3 = O(e3, n3), s3 = 0; s3 < n3; ++s3) r3[s3].call(i3);
2776
+ else for (var n3 = e3.length, r3 = z(e3, n3), s3 = 0; s3 < n3; ++s3) r3[s3].call(i3);
2709
2777
  })(i2, c2, this);
2710
2778
  break;
2711
2779
  case 2:
2712
2780
  !(function(e3, t3, i3, n3) {
2713
2781
  if (t3) e3.call(i3, n3);
2714
- else for (var r3 = e3.length, s3 = O(e3, r3), o3 = 0; o3 < r3; ++o3) s3[o3].call(i3, n3);
2782
+ else for (var r3 = e3.length, s3 = z(e3, r3), o3 = 0; o3 < r3; ++o3) s3[o3].call(i3, n3);
2715
2783
  })(i2, c2, this, arguments[1]);
2716
2784
  break;
2717
2785
  case 3:
2718
2786
  !(function(e3, t3, i3, n3, r3) {
2719
2787
  if (t3) e3.call(i3, n3, r3);
2720
- else for (var s3 = e3.length, o3 = O(e3, s3), a3 = 0; a3 < s3; ++a3) o3[a3].call(i3, n3, r3);
2788
+ else for (var s3 = e3.length, o3 = z(e3, s3), a3 = 0; a3 < s3; ++a3) o3[a3].call(i3, n3, r3);
2721
2789
  })(i2, c2, this, arguments[1], arguments[2]);
2722
2790
  break;
2723
2791
  case 4:
2724
2792
  !(function(e3, t3, i3, n3, r3, s3) {
2725
2793
  if (t3) e3.call(i3, n3, r3, s3);
2726
- else for (var o3 = e3.length, a3 = O(e3, o3), l3 = 0; l3 < o3; ++l3) a3[l3].call(i3, n3, r3, s3);
2794
+ else for (var o3 = e3.length, a3 = z(e3, o3), l3 = 0; l3 < o3; ++l3) a3[l3].call(i3, n3, r3, s3);
2727
2795
  })(i2, c2, this, arguments[1], arguments[2], arguments[3]);
2728
2796
  break;
2729
2797
  default:
2730
2798
  for (r2 = new Array(n2 - 1), s2 = 1; s2 < n2; s2++) r2[s2 - 1] = arguments[s2];
2731
2799
  !(function(e3, t3, i3, n3) {
2732
2800
  if (t3) e3.apply(i3, n3);
2733
- else for (var r3 = e3.length, s3 = O(e3, r3), o3 = 0; o3 < r3; ++o3) s3[o3].apply(i3, n3);
2801
+ else for (var r3 = e3.length, s3 = z(e3, r3), o3 = 0; o3 < r3; ++o3) s3[o3].apply(i3, n3);
2734
2802
  })(i2, c2, this, r2);
2735
2803
  }
2736
2804
  return true;
2737
- }, x.prototype.addListener = function(e2, t2) {
2738
- return D(this, e2, t2, false);
2739
- }, x.prototype.on = x.prototype.addListener, x.prototype.prependListener = function(e2, t2) {
2740
- return D(this, e2, t2, true);
2741
- }, x.prototype.once = function(e2, t2) {
2805
+ }, N.prototype.addListener = function(e2, t2) {
2806
+ return V(this, e2, t2, false);
2807
+ }, N.prototype.on = N.prototype.addListener, N.prototype.prependListener = function(e2, t2) {
2808
+ return V(this, e2, t2, true);
2809
+ }, N.prototype.once = function(e2, t2) {
2742
2810
  if ("function" != typeof t2) throw new TypeError('"listener" argument must be a function');
2743
- return this.on(e2, V(this, e2, t2)), this;
2744
- }, x.prototype.prependOnceListener = function(e2, t2) {
2811
+ return this.on(e2, F(this, e2, t2)), this;
2812
+ }, N.prototype.prependOnceListener = function(e2, t2) {
2745
2813
  if ("function" != typeof t2) throw new TypeError('"listener" argument must be a function');
2746
- return this.prependListener(e2, V(this, e2, t2)), this;
2747
- }, x.prototype.removeListener = function(e2, t2) {
2814
+ return this.prependListener(e2, F(this, e2, t2)), this;
2815
+ }, N.prototype.removeListener = function(e2, t2) {
2748
2816
  var i2, n2, r2, s2, o2;
2749
2817
  if ("function" != typeof t2) throw new TypeError('"listener" argument must be a function');
2750
2818
  if (!(n2 = this._events)) return this;
2751
2819
  if (!(i2 = n2[e2])) return this;
2752
- if (i2 === t2 || i2.listener && i2.listener === t2) 0 === --this._eventsCount ? this._events = new k() : (delete n2[e2], n2.removeListener && this.emit("removeListener", e2, i2.listener || t2));
2820
+ if (i2 === t2 || i2.listener && i2.listener === t2) 0 === --this._eventsCount ? this._events = new x() : (delete n2[e2], n2.removeListener && this.emit("removeListener", e2, i2.listener || t2));
2753
2821
  else if ("function" != typeof i2) {
2754
2822
  for (r2 = -1, s2 = i2.length; s2-- > 0; ) if (i2[s2] === t2 || i2[s2].listener && i2[s2].listener === t2) {
2755
2823
  o2 = i2[s2].listener, r2 = s2;
@@ -2757,7 +2825,7 @@ var telerikReportViewer = (function (exports) {
2757
2825
  }
2758
2826
  if (r2 < 0) return this;
2759
2827
  if (1 === i2.length) {
2760
- if (i2[0] = void 0, 0 === --this._eventsCount) return this._events = new k(), this;
2828
+ if (i2[0] = void 0, 0 === --this._eventsCount) return this._events = new x(), this;
2761
2829
  delete n2[e2];
2762
2830
  } else !(function(e3, t3) {
2763
2831
  for (var i3 = t3, n3 = i3 + 1, r3 = e3.length; n3 < r3; i3 += 1, n3 += 1) e3[i3] = e3[n3];
@@ -2766,46 +2834,46 @@ var telerikReportViewer = (function (exports) {
2766
2834
  n2.removeListener && this.emit("removeListener", e2, o2 || t2);
2767
2835
  }
2768
2836
  return this;
2769
- }, x.prototype.off = function(e2, t2) {
2837
+ }, N.prototype.off = function(e2, t2) {
2770
2838
  return this.removeListener(e2, t2);
2771
- }, x.prototype.removeAllListeners = function(e2) {
2839
+ }, N.prototype.removeAllListeners = function(e2) {
2772
2840
  var t2, i2;
2773
2841
  if (!(i2 = this._events)) return this;
2774
- if (!i2.removeListener) return 0 === arguments.length ? (this._events = new k(), this._eventsCount = 0) : i2[e2] && (0 === --this._eventsCount ? this._events = new k() : delete i2[e2]), this;
2842
+ if (!i2.removeListener) return 0 === arguments.length ? (this._events = new x(), this._eventsCount = 0) : i2[e2] && (0 === --this._eventsCount ? this._events = new x() : delete i2[e2]), this;
2775
2843
  if (0 === arguments.length) {
2776
2844
  for (var n2, r2 = Object.keys(i2), s2 = 0; s2 < r2.length; ++s2) "removeListener" !== (n2 = r2[s2]) && this.removeAllListeners(n2);
2777
- return this.removeAllListeners("removeListener"), this._events = new k(), this._eventsCount = 0, this;
2845
+ return this.removeAllListeners("removeListener"), this._events = new x(), this._eventsCount = 0, this;
2778
2846
  }
2779
2847
  if ("function" == typeof (t2 = i2[e2])) this.removeListener(e2, t2);
2780
2848
  else if (t2) do {
2781
2849
  this.removeListener(e2, t2[t2.length - 1]);
2782
2850
  } while (t2[0]);
2783
2851
  return this;
2784
- }, x.prototype.listeners = function(e2) {
2852
+ }, N.prototype.listeners = function(e2) {
2785
2853
  var t2, i2 = this._events;
2786
2854
  return i2 && (t2 = i2[e2]) ? "function" == typeof t2 ? [t2.listener || t2] : (function(e3) {
2787
2855
  for (var t3 = new Array(e3.length), i3 = 0; i3 < t3.length; ++i3) t3[i3] = e3[i3].listener || e3[i3];
2788
2856
  return t3;
2789
2857
  })(t2) : [];
2790
- }, x.listenerCount = function(e2, t2) {
2791
- return "function" == typeof e2.listenerCount ? e2.listenerCount(t2) : F.call(e2, t2);
2792
- }, x.prototype.listenerCount = F, x.prototype.eventNames = function() {
2858
+ }, N.listenerCount = function(e2, t2) {
2859
+ return "function" == typeof e2.listenerCount ? e2.listenerCount(t2) : O.call(e2, t2);
2860
+ }, N.prototype.listenerCount = O, N.prototype.eventNames = function() {
2793
2861
  return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];
2794
2862
  };
2795
- const z = "function" == typeof Symbol ? /* @__PURE__ */ Symbol.for("--[[await-event-emitter]]--") : "--[[await-event-emitter]]--";
2796
- function _(e2) {
2797
- if ("string" != typeof e2 && "symbol" != typeof e2) throw new TypeError("type is not type of string or symbol!");
2798
- }
2863
+ const _ = "function" == typeof Symbol ? /* @__PURE__ */ Symbol.for("--[[await-event-emitter]]--") : "--[[await-event-emitter]]--";
2799
2864
  function H(e2) {
2800
- if ("function" != typeof e2) throw new TypeError("fn is not type of Function!");
2865
+ if ("string" != typeof e2 && "symbol" != typeof e2) throw new TypeError("type is not type of string or symbol!");
2801
2866
  }
2802
2867
  function U(e2) {
2803
- return { [z]: "always", fn: e2 };
2868
+ if ("function" != typeof e2) throw new TypeError("fn is not type of Function!");
2804
2869
  }
2805
2870
  function $(e2) {
2806
- return { [z]: "once", fn: e2 };
2871
+ return { [_]: "always", fn: e2 };
2807
2872
  }
2808
- class B {
2873
+ function B(e2) {
2874
+ return { [_]: "once", fn: e2 };
2875
+ }
2876
+ class q {
2809
2877
  constructor() {
2810
2878
  this._events = {};
2811
2879
  }
@@ -2813,25 +2881,25 @@ var telerikReportViewer = (function (exports) {
2813
2881
  return this.on(e2, t2);
2814
2882
  }
2815
2883
  on(e2, t2) {
2816
- return _(e2), H(t2), this._events[e2] = this._events[e2] || [], this._events[e2].push(U(t2)), this;
2884
+ return H(e2), U(t2), this._events[e2] = this._events[e2] || [], this._events[e2].push($(t2)), this;
2817
2885
  }
2818
2886
  prependListener(e2, t2) {
2819
2887
  return this.prepend(e2, t2);
2820
2888
  }
2821
2889
  prepend(e2, t2) {
2822
- return _(e2), H(t2), this._events[e2] = this._events[e2] || [], this._events[e2].unshift(U(t2)), this;
2890
+ return H(e2), U(t2), this._events[e2] = this._events[e2] || [], this._events[e2].unshift($(t2)), this;
2823
2891
  }
2824
2892
  prependOnceListener(e2, t2) {
2825
2893
  return this.prependOnce(e2, t2);
2826
2894
  }
2827
2895
  prependOnce(e2, t2) {
2828
- return _(e2), H(t2), this._events[e2] = this._events[e2] || [], this._events[e2].unshift($(t2)), this;
2896
+ return H(e2), U(t2), this._events[e2] = this._events[e2] || [], this._events[e2].unshift(B(t2)), this;
2829
2897
  }
2830
2898
  listeners(e2) {
2831
2899
  return (this._events[e2] || []).map((e3) => e3.fn);
2832
2900
  }
2833
2901
  once(e2, t2) {
2834
- return _(e2), H(t2), this._events[e2] = this._events[e2] || [], this._events[e2].push($(t2)), this;
2902
+ return H(e2), U(t2), this._events[e2] = this._events[e2] || [], this._events[e2].push(B(t2)), this;
2835
2903
  }
2836
2904
  removeAllListeners() {
2837
2905
  this._events = {};
@@ -2840,7 +2908,7 @@ var telerikReportViewer = (function (exports) {
2840
2908
  return this.removeListener(e2, t2);
2841
2909
  }
2842
2910
  removeListener(e2, t2) {
2843
- _(e2);
2911
+ H(e2);
2844
2912
  const i2 = this.listeners(e2);
2845
2913
  if ("function" == typeof t2) {
2846
2914
  let n2 = -1, r2 = false;
@@ -2851,12 +2919,12 @@ var telerikReportViewer = (function (exports) {
2851
2919
  }
2852
2920
  emit(e2, ...t2) {
2853
2921
  return s(this, void 0, void 0, function* () {
2854
- _(e2);
2922
+ H(e2);
2855
2923
  const i2 = this.listeners(e2), n2 = [];
2856
2924
  if (i2 && i2.length) {
2857
2925
  for (let r2 = 0; r2 < i2.length; r2++) {
2858
2926
  const s2 = i2[r2], o2 = s2.apply(this, t2);
2859
- o2 instanceof Promise && (yield o2), this._events[e2] && this._events[e2][r2] && "once" === this._events[e2][r2][z] && n2.push(s2);
2927
+ o2 instanceof Promise && (yield o2), this._events[e2] && this._events[e2][r2] && "once" === this._events[e2][r2][_] && n2.push(s2);
2860
2928
  }
2861
2929
  return n2.forEach((t3) => this.removeListener(e2, t3)), true;
2862
2930
  }
@@ -2864,21 +2932,21 @@ var telerikReportViewer = (function (exports) {
2864
2932
  });
2865
2933
  }
2866
2934
  emitSync(e2, ...t2) {
2867
- _(e2);
2935
+ H(e2);
2868
2936
  const i2 = this.listeners(e2), n2 = [];
2869
2937
  if (i2 && i2.length) {
2870
2938
  for (let r2 = 0; r2 < i2.length; r2++) {
2871
2939
  const s2 = i2[r2];
2872
- s2.apply(this, t2), this._events[e2] && this._events[e2][r2] && "once" === this._events[e2][r2][z] && n2.push(s2);
2940
+ s2.apply(this, t2), this._events[e2] && this._events[e2][r2] && "once" === this._events[e2][r2][_] && n2.push(s2);
2873
2941
  }
2874
2942
  return n2.forEach((t3) => this.removeListener(e2, t3)), true;
2875
2943
  }
2876
2944
  return false;
2877
2945
  }
2878
2946
  }
2879
- class q {
2947
+ class W {
2880
2948
  constructor() {
2881
- this.eventEmitter = new x(), this.awaitEventEmitter = new B();
2949
+ this.eventEmitter = new N(), this.awaitEventEmitter = new q();
2882
2950
  }
2883
2951
  on(e2, t2) {
2884
2952
  return this.eventEmitter.on(e2, t2), this;
@@ -2895,7 +2963,7 @@ var telerikReportViewer = (function (exports) {
2895
2963
  });
2896
2964
  }
2897
2965
  }
2898
- class W {
2966
+ class Z {
2899
2967
  hasPdfPlugin() {
2900
2968
  let e2 = /Firefox[/\s](\d+\.\d+)/.exec(navigator.userAgent);
2901
2969
  if (null !== e2 && e2.length > 1) {
@@ -2909,7 +2977,7 @@ var telerikReportViewer = (function (exports) {
2909
2977
  return false;
2910
2978
  }
2911
2979
  }
2912
- class Z {
2980
+ class j {
2913
2981
  constructor(e2) {
2914
2982
  this.defaultPlugin = e2;
2915
2983
  }
@@ -2918,12 +2986,12 @@ var telerikReportViewer = (function (exports) {
2918
2986
  return false;
2919
2987
  }
2920
2988
  }
2921
- class j {
2989
+ class G {
2922
2990
  hasPdfPlugin() {
2923
2991
  return false;
2924
2992
  }
2925
2993
  }
2926
- class G {
2994
+ class J {
2927
2995
  constructor() {
2928
2996
  this.hasPdfPlugin = false, this.iframe = null, this.hasPdfPlugin = this.detectPdfSupport(), this.isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
2929
2997
  }
@@ -2931,9 +2999,9 @@ var telerikReportViewer = (function (exports) {
2931
2999
  return "boolean" == typeof navigator.pdfViewerEnabled ? navigator.pdfViewerEnabled : (function() {
2932
3000
  if (window.navigator) {
2933
3001
  let e2 = window.navigator.userAgent.toLowerCase();
2934
- return e2.indexOf("firefox") > -1 ? new W() : e2.indexOf("edg/") > -1 ? new Z("Microsoft Edge PDF Plugin") : e2.indexOf("chrome") > -1 ? new Z("Chrome PDF Viewer") : e2.indexOf("safari") > -1 ? new Z("WebKit built-in PDF") : new j();
3002
+ return e2.indexOf("firefox") > -1 ? new Z() : e2.indexOf("edg/") > -1 ? new j("Microsoft Edge PDF Plugin") : e2.indexOf("chrome") > -1 ? new j("Chrome PDF Viewer") : e2.indexOf("safari") > -1 ? new j("WebKit built-in PDF") : new G();
2935
3003
  }
2936
- return new j();
3004
+ return new G();
2937
3005
  })().hasPdfPlugin();
2938
3006
  }
2939
3007
  destroy() {
@@ -2974,17 +3042,17 @@ var telerikReportViewer = (function (exports) {
2974
3042
  return this.hasPdfPlugin;
2975
3043
  }
2976
3044
  }
2977
- function J(e2) {
3045
+ function K(e2) {
2978
3046
  return 1e3 * e2;
2979
3047
  }
2980
- class K {
3048
+ class X {
2981
3049
  constructor(e2, t2, i2) {
2982
3050
  if (this.pingMilliseconds = 0, !e2) throw "Error";
2983
3051
  this.serviceClient = e2, this.clientID = t2, this.initSessionTimeout(i2);
2984
3052
  }
2985
3053
  initSessionTimeout(e2) {
2986
3054
  if (!isFinite(e2)) throw "sessionTimeoutSeconds must be finite";
2987
- this.pingMilliseconds = e2 <= 120 ? J(e2) / 2 : J(e2 - 60);
3055
+ this.pingMilliseconds = e2 <= 120 ? K(e2) / 2 : K(e2 - 60);
2988
3056
  }
2989
3057
  start() {
2990
3058
  this.pingMilliseconds <= 0 || (this.interval = setInterval(() => {
@@ -2995,31 +3063,31 @@ var telerikReportViewer = (function (exports) {
2995
3063
  this.interval && (clearInterval(this.interval), this.interval = null);
2996
3064
  }
2997
3065
  }
2998
- var X, Y, Q, ee, te;
2999
- function ie(e2, t2 = "", i2 = "") {
3066
+ var Y, Q, ee, te, ie;
3067
+ function ne(e2, t2 = "", i2 = "") {
3000
3068
  let n2 = document.createElement(e2);
3001
- return t2 && (n2.id = t2), ne(n2, i2), n2;
3069
+ return t2 && (n2.id = t2), re(n2, i2), n2;
3002
3070
  }
3003
- function ne(e2, t2) {
3071
+ function re(e2, t2) {
3004
3072
  if ("" === t2 || !e2) return;
3005
3073
  let i2 = t2.trim().split(" ");
3006
3074
  i2 = i2.filter((e3) => "" !== e3.trim()), e2.classList.add(...i2);
3007
3075
  }
3008
- function re(e2, t2) {
3076
+ function se(e2, t2) {
3009
3077
  if ("" === t2 || !e2) return;
3010
3078
  let i2 = t2.trim().split(" ");
3011
3079
  i2 = i2.filter((e3) => "" !== e3.trim()), e2.classList.remove(...i2);
3012
3080
  }
3013
- function se(e2, t2) {
3081
+ function oe(e2, t2) {
3014
3082
  return e2.classList.contains(t2);
3015
3083
  }
3016
- function oe(e2) {
3084
+ function ae(e2) {
3017
3085
  return e2.offsetParent;
3018
3086
  }
3019
- function ae(e2) {
3087
+ function le(e2) {
3020
3088
  return parseInt(e2, 10) || 0;
3021
3089
  }
3022
- function le(e2, t2, i2, n2 = 0, r2 = 0) {
3090
+ function he(e2, t2, i2, n2 = 0, r2 = 0) {
3023
3091
  let s2 = `${n2 = n2 || 0} ${r2 = r2 || 0}`;
3024
3092
  !(function(e3, t3) {
3025
3093
  e3.style.setProperty("transform", t3), e3.style.setProperty("-moz-transform", t3), e3.style.setProperty("-ms-transform", t3), e3.style.setProperty("-webkit-transform", t3), e3.style.setProperty("-o-transform", t3);
@@ -3027,11 +3095,11 @@ var telerikReportViewer = (function (exports) {
3027
3095
  e3.style.setProperty("transform-origin", t3), e3.style.setProperty("-moz-transform-origin", t3), e3.style.setProperty("-ms-transform-origin", t3), e3.style.setProperty("-webkit-transform-origin", t3), e3.style.setProperty("-o-transform-origin", t3);
3028
3096
  })(e2, s2);
3029
3097
  }
3030
- function he(e2) {
3031
- let t2 = ie("div");
3098
+ function ce(e2) {
3099
+ let t2 = ne("div");
3032
3100
  return t2.textContent = e2, t2.innerHTML;
3033
3101
  }
3034
- function ce(e2) {
3102
+ function de(e2) {
3035
3103
  if (e2 && e2.length < 6) {
3036
3104
  let t3 = 1, i2 = e2.split("");
3037
3105
  for ("#" !== i2[0] && (t3 = 0); t3 < i2.length; t3++) i2[t3] = i2[t3] + i2[t3];
@@ -3040,14 +3108,14 @@ var telerikReportViewer = (function (exports) {
3040
3108
  let t2 = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e2);
3041
3109
  return t2 ? parseInt(t2[1], 16) + ", " + parseInt(t2[2], 16) + ", " + parseInt(t2[3], 16) : null;
3042
3110
  }
3043
- function de(e2) {
3111
+ function ue(e2) {
3044
3112
  return !!e2 && e2.indexOf(",") > -1;
3045
3113
  }
3046
- function ue(e2) {
3114
+ function pe(e2) {
3047
3115
  if ("transparent" === e2.toLowerCase()) return 0;
3048
- if (!de(e2)) return 1;
3116
+ if (!ue(e2)) return 1;
3049
3117
  if (-1 !== e2.indexOf("#")) {
3050
- let t3 = ce(e2);
3118
+ let t3 = de(e2);
3051
3119
  if (null === t3) return 1;
3052
3120
  e2 = t3;
3053
3121
  }
@@ -3056,28 +3124,28 @@ var telerikReportViewer = (function (exports) {
3056
3124
  });
3057
3125
  return 4 === t2.length ? parseFloat((parseFloat(t2[3].replace(/[()]/g, "")) / 255).toFixed(2)) : 1;
3058
3126
  }
3059
- function pe(e2, t2) {
3060
- let i2 = ie("div");
3127
+ function ge(e2, t2) {
3128
+ let i2 = ne("div");
3061
3129
  for (i2.innerHTML = t2; i2.childNodes.length; ) e2.appendChild(i2.childNodes[0]);
3062
3130
  }
3063
- function ge(e2, t2) {
3064
- let i2 = ie("div");
3131
+ function fe(e2, t2) {
3132
+ let i2 = ne("div");
3065
3133
  for (i2.innerHTML = t2; i2.childNodes.length; ) e2.prepend(i2.childNodes[i2.childNodes.length - 1]);
3066
3134
  }
3067
- function fe(e2, t2) {
3135
+ function me(e2, t2) {
3068
3136
  return e2 ? e2.querySelector(t2) : null;
3069
3137
  }
3070
- function me(e2) {
3138
+ function ve(e2) {
3071
3139
  let t2 = e2.parentElement;
3072
- return t2 ? t2.clientHeight != t2.scrollHeight ? t2 : me(t2) : null;
3140
+ return t2 ? t2.clientHeight != t2.scrollHeight ? t2 : ve(t2) : null;
3073
3141
  }
3074
- function ve(e2, t2 = 300) {
3142
+ function Pe(e2, t2 = 300) {
3075
3143
  let i2;
3076
3144
  return function(...n2) {
3077
3145
  clearTimeout(i2), i2 = setTimeout(() => e2.apply(this, n2), t2);
3078
3146
  };
3079
3147
  }
3080
- function Pe(e2, t2) {
3148
+ function Ce(e2, t2) {
3081
3149
  let i2 = null;
3082
3150
  return function(n2, ...r2) {
3083
3151
  i2 || (i2 = setTimeout(function() {
@@ -3085,50 +3153,56 @@ var telerikReportViewer = (function (exports) {
3085
3153
  }, t2));
3086
3154
  };
3087
3155
  }
3088
- function Ce(e2, t2) {
3156
+ function ye(e2, t2) {
3089
3157
  return !!e2.responseJSON && e2.responseJSON.exceptionType === t2;
3090
3158
  }
3091
- function ye(e2) {
3092
- return Ce(e2, "Telerik.Reporting.Services.Engine.InvalidClientException");
3093
- }
3094
3159
  function Se(e2) {
3095
- return Ce(e2, "Telerik.Reporting.Services.Engine.InvalidParameterException");
3160
+ return ye(e2, "Telerik.Reporting.Services.Engine.InvalidClientException");
3161
+ }
3162
+ function be(e2) {
3163
+ return ye(e2, "Telerik.Reporting.Services.Engine.InvalidParameterException");
3096
3164
  }
3097
3165
  function Ie(e2) {
3098
3166
  return !!e2 && "internalservererror" === e2.split(" ").join("").toLowerCase();
3099
3167
  }
3100
- function be(e2, ...t2) {
3168
+ function we(e2, ...t2) {
3101
3169
  return e2.replace(/{(\d+)}/g, (e3, i2) => t2[i2] || "");
3102
3170
  }
3103
- function we(e2, t2) {
3171
+ e.PageMode = void 0, (Y = e.PageMode || (e.PageMode = {}))[Y.ContinuousScroll = 0] = "ContinuousScroll", Y[Y.SinglePage = 1] = "SinglePage", e.PrintMode = void 0, (Q = e.PrintMode || (e.PrintMode = {}))[Q.AutoSelect = 0] = "AutoSelect", Q[Q.ForcePDFPlugin = 1] = "ForcePDFPlugin", Q[Q.ForcePDFFile = 2] = "ForcePDFFile", e.ScaleMode = void 0, (ee = e.ScaleMode || (e.ScaleMode = {}))[ee.FitPageWidth = 0] = "FitPageWidth", ee[ee.FitPage = 1] = "FitPage", ee[ee.Specific = 2] = "Specific", e.ServiceType = void 0, (te = e.ServiceType || (e.ServiceType = {}))[te.REST = 0] = "REST", te[te.ReportServer = 1] = "ReportServer", e.ViewMode = void 0, (ie = e.ViewMode || (e.ViewMode = {}))[ie.Interactive = 0] = "Interactive", ie[ie.PrintPreview = 1] = "PrintPreview";
3172
+ const Le = ["javascript:", "vbscript:"];
3173
+ function Te(e2) {
3174
+ if ("string" != typeof e2 || 0 === e2.length) return false;
3175
+ const t2 = e2.replace(/[\u0000-\u0020]/g, "").toLowerCase();
3176
+ return Le.some((e3) => t2.startsWith(e3));
3177
+ }
3178
+ function Ae(e2, t2) {
3104
3179
  let i2, n2;
3105
- if (Le(e2)) for (i2 = e2.length, n2 = 0; n2 < i2 && false !== t2.call(e2[n2], n2, e2[n2]); n2++) ;
3180
+ if (Re(e2)) for (i2 = e2.length, n2 = 0; n2 < i2 && false !== t2.call(e2[n2], n2, e2[n2]); n2++) ;
3106
3181
  else for (n2 in e2) if (false === t2.call(e2[n2], n2, e2[n2])) break;
3107
3182
  return e2;
3108
3183
  }
3109
- function Le(e2) {
3184
+ function Re(e2) {
3110
3185
  if (Array.isArray(e2)) return true;
3111
3186
  return "number" == typeof (!!e2 && "length" in e2 && e2.length);
3112
3187
  }
3113
- function Te(e2) {
3188
+ function Ee(e2) {
3114
3189
  return /^(\-|\+)?([0-9]+)$/.test(e2) ? Number(e2) : NaN;
3115
3190
  }
3116
- function Re(e2) {
3191
+ function Me(e2) {
3117
3192
  return /^(\-|\+)?([0-9]+(\.[0-9]+)?)$/.test(e2) ? Number(e2) : NaN;
3118
3193
  }
3119
- function Ae(e2) {
3194
+ function ke(e2) {
3120
3195
  return e2 instanceof Date ? e2 : (/Z|[\+\-]\d\d:?\d\d/i.test(e2) || (e2 += "Z"), new Date(e2));
3121
3196
  }
3122
- e.PageMode = void 0, (X = e.PageMode || (e.PageMode = {}))[X.ContinuousScroll = 0] = "ContinuousScroll", X[X.SinglePage = 1] = "SinglePage", e.PrintMode = void 0, (Y = e.PrintMode || (e.PrintMode = {}))[Y.AutoSelect = 0] = "AutoSelect", Y[Y.ForcePDFPlugin = 1] = "ForcePDFPlugin", Y[Y.ForcePDFFile = 2] = "ForcePDFFile", e.ScaleMode = void 0, (Q = e.ScaleMode || (e.ScaleMode = {}))[Q.FitPageWidth = 0] = "FitPageWidth", Q[Q.FitPage = 1] = "FitPage", Q[Q.Specific = 2] = "Specific", e.ServiceType = void 0, (ee = e.ServiceType || (e.ServiceType = {}))[ee.REST = 0] = "REST", ee[ee.ReportServer = 1] = "ReportServer", e.ViewMode = void 0, (te = e.ViewMode || (e.ViewMode = {}))[te.Interactive = 0] = "Interactive", te[te.PrintPreview = 1] = "PrintPreview";
3123
- const Ee = "System.Int64", Me = "System.Double", ke = "System.String", xe = "System.DateTime", Ne = "System.Boolean";
3124
- var De = (function() {
3197
+ const xe = "System.Int64", Ne = "System.Double", De = "System.String", Ve = "System.DateTime", Fe = "System.Boolean";
3198
+ var Oe = (function() {
3125
3199
  var e2 = {};
3126
3200
  function t2(e3, t3, i3, n2) {
3127
3201
  var r2 = [].concat(t3).map(function(t4) {
3128
3202
  return (function(e4, t5, i4) {
3129
3203
  if (e4.availableValues) {
3130
3204
  var n3 = false;
3131
- if (we(e4.availableValues, function(e5, r3) {
3205
+ if (Ae(e4.availableValues, function(e5, r3) {
3132
3206
  return !(n3 = i4(t5, r3.value));
3133
3207
  }), !n3) {
3134
3208
  if (e4.allowNull && !t5) return t5;
@@ -3150,7 +3224,7 @@ var telerikReportViewer = (function (exports) {
3150
3224
  function i2(e3, t3) {
3151
3225
  return e3.allowNull && -1 != [null, "", void 0].indexOf(t3);
3152
3226
  }
3153
- return e2[ke] = { validate: function(e3, i3) {
3227
+ return e2[De] = { validate: function(e3, i3) {
3154
3228
  return t2(e3, i3, function(t3) {
3155
3229
  if (!t3) {
3156
3230
  if (e3.allowNull) return null;
@@ -3161,37 +3235,37 @@ var telerikReportViewer = (function (exports) {
3161
3235
  }, function(e4, t3) {
3162
3236
  return e4 == t3;
3163
3237
  });
3164
- } }, e2[Me] = { validate: function(e3, n2) {
3238
+ } }, e2[Ne] = { validate: function(e3, n2) {
3165
3239
  return t2(e3, n2, function(t3) {
3166
- var n3 = Re(t3);
3240
+ var n3 = Me(t3);
3167
3241
  if (isNaN(n3)) {
3168
3242
  if (i2(e3, t3)) return null;
3169
3243
  throw "Parameter value cannot be empty.";
3170
3244
  }
3171
3245
  return n3;
3172
3246
  }, function(e4, t3) {
3173
- return Re(e4) == Re(t3);
3247
+ return Me(e4) == Me(t3);
3174
3248
  });
3175
- } }, e2[Ee] = { validate: function(e3, n2) {
3249
+ } }, e2[xe] = { validate: function(e3, n2) {
3176
3250
  return t2(e3, n2, function(t3) {
3177
- var n3 = Te(t3);
3251
+ var n3 = Ee(t3);
3178
3252
  if (isNaN(n3)) {
3179
3253
  if (i2(e3, t3)) return null;
3180
3254
  throw "Parameter value cannot be empty.";
3181
3255
  }
3182
3256
  return n3;
3183
3257
  }, function(e4, t3) {
3184
- return Te(e4) == Re(t3);
3258
+ return Ee(e4) == Me(t3);
3185
3259
  });
3186
- } }, e2[xe] = { validate: function(e3, i3) {
3260
+ } }, e2[Ve] = { validate: function(e3, i3) {
3187
3261
  return t2(e3, i3, function(t3) {
3188
3262
  if (e3.allowNull && (null === t3 || "" === t3 || void 0 === t3)) return null;
3189
- if (!isNaN(Date.parse(t3))) return e3.availableValues ? t3 : Ae(t3);
3263
+ if (!isNaN(Date.parse(t3))) return e3.availableValues ? t3 : ke(t3);
3190
3264
  throw "Please input a valid date.";
3191
3265
  }, function(e4, t3) {
3192
- return e4 = Ae(e4), t3 = Ae(t3), e4.getTime() == t3.getTime();
3266
+ return e4 = ke(e4), t3 = ke(t3), e4.getTime() == t3.getTime();
3193
3267
  });
3194
- } }, e2[Ne] = { validate: function(e3, n2) {
3268
+ } }, e2[Fe] = { validate: function(e3, n2) {
3195
3269
  return t2(e3, n2, function(t3) {
3196
3270
  if (-1 != ["true", "false"].indexOf(String(t3).toLowerCase())) return Boolean(t3);
3197
3271
  if (i2(e3, t3)) return null;
@@ -3201,11 +3275,11 @@ var telerikReportViewer = (function (exports) {
3201
3275
  });
3202
3276
  } }, { validate: function(t3, i3) {
3203
3277
  var n2 = e2[t3.type];
3204
- if (!n2) throw be("Cannot validate parameter of type {type}.", t3);
3278
+ if (!n2) throw we("Cannot validate parameter of type {type}.", t3);
3205
3279
  return n2.validate(t3, i3);
3206
3280
  } };
3207
3281
  })();
3208
- function Ve(e2, t2, i2) {
3282
+ function ze(e2, t2, i2) {
3209
3283
  try {
3210
3284
  const n2 = e2.availableValues.find((e3) => e3.value === t2);
3211
3285
  if (!n2) {
@@ -3217,17 +3291,17 @@ var telerikReportViewer = (function (exports) {
3217
3291
  return;
3218
3292
  }
3219
3293
  }
3220
- function Fe(e2, t2, i2) {
3294
+ function _e(e2, t2, i2) {
3221
3295
  const n2 = [];
3222
- for (let r2 in t2) n2.push(Ve(e2, t2[r2], i2));
3296
+ for (let r2 in t2) n2.push(ze(e2, t2[r2], i2));
3223
3297
  return n2;
3224
3298
  }
3225
- class Oe {
3299
+ class He {
3226
3300
  constructor(e2 = "", t2 = {}) {
3227
3301
  this.report = e2, this.parameters = t2;
3228
3302
  }
3229
3303
  }
3230
- class ze extends q {
3304
+ class Ue extends W {
3231
3305
  constructor(e2) {
3232
3306
  super(), this.resizeObserver = null, this.element = e2, this.initResizeObserver();
3233
3307
  }
@@ -3235,7 +3309,7 @@ var telerikReportViewer = (function (exports) {
3235
3309
  this.destroyResizeObserver();
3236
3310
  }
3237
3311
  initResizeObserver() {
3238
- this.debounceResize = ve(this.onResize.bind(this), 50), this.resizeObserver = new ResizeObserver(this.debounceResize), this.resizeObserver.observe(this.element);
3312
+ this.debounceResize = Pe(this.onResize.bind(this), 50), this.resizeObserver = new ResizeObserver(this.debounceResize), this.resizeObserver.observe(this.element);
3239
3313
  }
3240
3314
  destroyResizeObserver() {
3241
3315
  this.resizeObserver && this.resizeObserver.unobserve(this.element), this.resizeObserver = this.debounceResize = null;
@@ -3244,8 +3318,8 @@ var telerikReportViewer = (function (exports) {
3244
3318
  e2[0].target === this.element && this.emit("resize");
3245
3319
  }
3246
3320
  }
3247
- const _e = '<div class="trv-report-page trv-skeleton-page trv-skeleton-{0}" data-page="{0}"><div class="trv-skeleton-wrapper"></div></div>';
3248
- class He {
3321
+ const $e = '<div class="trv-report-page trv-skeleton-page trv-skeleton-{0}" data-page="{0}"><div class="trv-skeleton-wrapper"></div></div>';
3322
+ class Be {
3249
3323
  constructor(t2, i2, n2) {
3250
3324
  this.enabled = false, this.viewMode = e.ViewMode.Interactive, this.scrollInProgress = false, this.additionalTopOffset = 130, this.onClickHandler = null, this.debounceScroll = null, this.throttleScroll = null, this.oldScrollTopPosition = 0, this.lastLoadedPage = null, this.placeholder = t2, this.pageContainer = t2.querySelector(".trv-page-container"), this.pageWrapper = t2.querySelector(".trv-page-wrapper"), this.contentArea = i2, this.controller = n2, this.controller.getPageMode() === e.PageMode.ContinuousScroll && this.enable(), this.controller.on("loadedReportChange", this.disable.bind(this)).on("viewModeChanged", this.disable.bind(this)).on("scaleChanged", this.onScaleChanged.bind(this)).on("interactiveActionExecuting", this.onInteractiveActionExecuting.bind(this)).on("pageLoaded", this.onPageLoaded.bind(this));
3251
3325
  }
@@ -3267,10 +3341,10 @@ var telerikReportViewer = (function (exports) {
3267
3341
  return this.enabled;
3268
3342
  }
3269
3343
  enable() {
3270
- this.enabled = true, ne(this.placeholder, "scrollable"), this.initEvents();
3344
+ this.enabled = true, re(this.placeholder, "scrollable"), this.initEvents();
3271
3345
  }
3272
3346
  disable() {
3273
- this.enabled && (this.lastLoadedPage = null, this.pageWrapper.innerHTML = "", this.enabled = false, re(this.placeholder, "scrollable"), this.unbind());
3347
+ this.enabled && (this.lastLoadedPage = null, this.pageWrapper.innerHTML = "", this.enabled = false, se(this.placeholder, "scrollable"), this.unbind());
3274
3348
  }
3275
3349
  renderPage(e2) {
3276
3350
  let t2 = this.controller.getViewMode(), i2 = this.findPageElement(e2.pageNumber);
@@ -3285,7 +3359,7 @@ var telerikReportViewer = (function (exports) {
3285
3359
  this.enabled && this.currentPageNumber() > 0 && this.keepCurrentPageInToView();
3286
3360
  }
3287
3361
  setCurrentPage(e2) {
3288
- e2 !== this.currentPageNumber() && this.controller.setCurrentPageNumber(e2), this.controller.getPageCount() > 1 && (re(this.findElement(".k-state-default"), "k-state-default"), ne(this.findPageElement(e2), "k-state-default")), this.loadNextPreviousPage(e2);
3362
+ e2 !== this.currentPageNumber() && this.controller.setCurrentPageNumber(e2), this.controller.getPageCount() > 1 && (se(this.findElement(".k-state-default"), "k-state-default"), re(this.findPageElement(e2), "k-state-default")), this.loadNextPreviousPage(e2);
3289
3363
  }
3290
3364
  updatePageArea(e2) {
3291
3365
  var t2;
@@ -3310,17 +3384,17 @@ var telerikReportViewer = (function (exports) {
3310
3384
  return this.controller.getCurrentPageNumber();
3311
3385
  }
3312
3386
  isSkeletonScreen(e2, t2) {
3313
- return !(!e2 && !(e2 = this.findPageElement(t2))) && se(e2, "trv-skeleton-" + t2);
3387
+ return !(!e2 && !(e2 = this.findPageElement(t2))) && oe(e2, "trv-skeleton-" + t2);
3314
3388
  }
3315
3389
  addSkeletonScreen(e2, t2) {
3316
- let i2 = be(_e, e2);
3317
- t2 ? ge(this.pageWrapper, i2) : pe(this.pageWrapper, i2);
3390
+ let i2 = we($e, e2);
3391
+ t2 ? fe(this.pageWrapper, i2) : ge(this.pageWrapper, i2);
3318
3392
  }
3319
3393
  generateSkeletonScreens(e2) {
3320
3394
  var t2;
3321
3395
  let i2 = "", n2 = null === (t2 = this.findLastElement(".trv-report-page")) || void 0 === t2 ? void 0 : t2.dataset.page, r2 = n2 ? parseInt(n2) + 1 : 1;
3322
- for (; r2 < e2; r2++) i2 += be(_e, r2);
3323
- pe(this.pageWrapper, i2);
3396
+ for (; r2 < e2; r2++) i2 += we($e, r2);
3397
+ ge(this.pageWrapper, i2);
3324
3398
  }
3325
3399
  loadMorePages() {
3326
3400
  var e2;
@@ -3366,10 +3440,10 @@ var telerikReportViewer = (function (exports) {
3366
3440
  }
3367
3441
  }
3368
3442
  initEvents() {
3369
- this.onClickHandler = this.clickPage.bind(this), this.debounceScroll = ve(() => {
3443
+ this.onClickHandler = this.clickPage.bind(this), this.debounceScroll = Pe(() => {
3370
3444
  let e2 = this.placeholder.querySelectorAll(".trv-report-page"), t2 = Math.round(this.pageContainer.scrollTop + this.pageContainer.offsetHeight);
3371
3445
  !this.scrollInProgress && e2.length && this.oldScrollTopPosition !== t2 && this.advanceCurrentPage(Array.from(e2));
3372
- }, 250), this.throttleScroll = Pe(() => {
3446
+ }, 250), this.throttleScroll = Ce(() => {
3373
3447
  let e2 = this.placeholder.querySelectorAll(".trv-report-page"), t2 = Math.round(this.pageContainer.scrollTop + this.pageContainer.offsetHeight);
3374
3448
  this.scrollInProgress || this.oldScrollTopPosition === t2 || (this.oldScrollTopPosition > t2 ? this.scrollUp(Array.from(e2)) : this.scrollDown(Array.from(e2), t2)), this.oldScrollTopPosition = t2;
3375
3449
  }, 250), this.pageContainer.addEventListener("click", this.onClickHandler), this.pageContainer.addEventListener("scroll", this.debounceScroll), this.pageContainer.addEventListener("scroll", this.throttleScroll);
@@ -3458,7 +3532,7 @@ var telerikReportViewer = (function (exports) {
3458
3532
  return i2 && i2.length ? i2[i2.length - 1] : null;
3459
3533
  }
3460
3534
  }
3461
- class Ue {
3535
+ class qe {
3462
3536
  constructor() {
3463
3537
  this.scaleFactor = 0, this.placeholder = null, this.scrollableContainer = null, this.itemsInitialState = {}, this.xFrozenAreasBounds = {}, this.yFrozenAreasBounds = {}, this.freezeMaxZIndex = {}, this.freezeBGColor = {}, this.currentlyFrozenContainer = { vertical: {}, horizontal: {} }, this.zIndex = 1;
3464
3538
  }
@@ -3466,7 +3540,7 @@ var telerikReportViewer = (function (exports) {
3466
3540
  this.reset(e2), this.attachToScrollEvent();
3467
3541
  }
3468
3542
  reset(e2) {
3469
- this.placeholder = e2, this.scrollableContainer = fe(e2, ".trv-page-container"), this.itemsInitialState = {}, this.xFrozenAreasBounds = {}, this.yFrozenAreasBounds = {}, this.currentlyFrozenContainer = { vertical: {}, horizontal: {} };
3543
+ this.placeholder = e2, this.scrollableContainer = me(e2, ".trv-page-container"), this.itemsInitialState = {}, this.xFrozenAreasBounds = {}, this.yFrozenAreasBounds = {}, this.currentlyFrozenContainer = { vertical: {}, horizontal: {} };
3470
3544
  }
3471
3545
  setScaleFactor(e2) {
3472
3546
  this.scaleFactor = e2;
@@ -3489,7 +3563,7 @@ var telerikReportViewer = (function (exports) {
3489
3563
  saveFreezeItemsInitialState(e2) {
3490
3564
  var t2, i2, n2;
3491
3565
  let r2 = null === (t2 = this.placeholder) || void 0 === t2 ? void 0 : t2.querySelectorAll("[data-sticky-direction][data-sticky-id='" + e2 + "']"), s2 = null === (i2 = this.placeholder) || void 0 === i2 ? void 0 : i2.querySelectorAll("[data-reporting-action][data-sticky-id='" + e2 + "']"), o2 = null, a2 = null, l2 = null, h2 = null;
3492
- this.itemsInitialState[e2] = {}, this.freezeBGColor[e2] = (null === (n2 = fe(this.placeholder, "[data-id='" + e2 + "']")) || void 0 === n2 ? void 0 : n2.dataset.stickyBgColor) || "", r2.forEach((t3) => {
3566
+ this.itemsInitialState[e2] = {}, this.freezeBGColor[e2] = (null === (n2 = me(this.placeholder, "[data-id='" + e2 + "']")) || void 0 === n2 ? void 0 : n2.dataset.stickyBgColor) || "", r2.forEach((t3) => {
3493
3567
  var i3;
3494
3568
  let n3 = t3.dataset.stickyDirection, r3 = (null === (i3 = t3.dataset.id) || void 0 === i3 ? void 0 : i3.toString()) || "", s3 = t3.offsetLeft / this.scaleFactor, c2 = t3.offsetLeft + t3.offsetWidth * this.scaleFactor, d2 = t3.offsetTop / this.scaleFactor, u2 = t3.offsetTop + t3.offsetHeight * this.scaleFactor, p2 = (e3, t4) => null === e3 || t4 < e3 ? t4 : e3, g2 = (e3, t4) => null === e3 || t4 > e3 ? t4 : e3;
3495
3569
  switch (n3) {
@@ -3511,7 +3585,7 @@ var telerikReportViewer = (function (exports) {
3511
3585
  }
3512
3586
  updateFreezeItemsOnScroll(e2, t2, i2) {
3513
3587
  var n2, r2;
3514
- let s2 = fe(this.placeholder, "div[data-id='" + e2 + "']");
3588
+ let s2 = me(this.placeholder, "div[data-id='" + e2 + "']");
3515
3589
  if (!s2) return;
3516
3590
  let o2 = null === (n2 = this.placeholder) || void 0 === n2 ? void 0 : n2.querySelectorAll("[data-sticky-direction*='Horizontal'][data-sticky-id='" + e2 + "']"), a2 = null === (r2 = this.placeholder) || void 0 === r2 ? void 0 : r2.querySelectorAll("[data-sticky-direction*='Vertical'][data-sticky-id='" + e2 + "']");
3517
3591
  if (this.isInScrollVisibleArea(s2)) {
@@ -3534,7 +3608,7 @@ var telerikReportViewer = (function (exports) {
3534
3608
  "IMG" !== e2.tagName && (t2 && this.isFrozen(r2) && !i2 ? e2.style.backgroundColor = this.freezeBGColor[r2] : e2.style.backgroundColor = n2 ? this.freezeBGColor[r2] : "initial");
3535
3609
  }
3536
3610
  hasSetBgColor(e2) {
3537
- return ue(e2) > 0;
3611
+ return pe(e2) > 0;
3538
3612
  }
3539
3613
  isFrozen(e2) {
3540
3614
  return this.currentlyFrozenContainer.horizontal[e2] || this.currentlyFrozenContainer.vertical[e2];
@@ -3553,21 +3627,22 @@ var telerikReportViewer = (function (exports) {
3553
3627
  return e2.top > t2.scrollTop - n2 && e2.top < t2.scrollTop + n2 + i2.height;
3554
3628
  }
3555
3629
  }
3556
- const $e = /{(\w+?)}/g, Be = "trv-initial-image-styles";
3557
- function qe(e2, t2) {
3630
+ const We = /{(\w+?)}/g, Ze = "trv-initial-image-styles";
3631
+ function je(e2, t2) {
3558
3632
  let i2 = Array.isArray(t2);
3559
- return e2 ? e2.replace($e, function(e3, n2) {
3633
+ return e2 ? e2.replace(We, function(e3, n2) {
3560
3634
  return t2[i2 ? parseInt(n2) : n2];
3561
3635
  }) : "";
3562
3636
  }
3563
- const We = "trv-search-dialog-shaded-result", Ze = "trv-search-dialog-highlighted-result";
3564
- e.BasicAuth = w, e.BookmarkNode = class {
3637
+ const Ge = "trv-search-dialog-shaded-result", Je = "trv-search-dialog-highlighted-result";
3638
+ var Ke;
3639
+ Ke = /* @__PURE__ */ new WeakMap(), e.BasicAuth = L, e.BookmarkNode = class {
3565
3640
  constructor() {
3566
3641
  this.id = "", this.text = "", this.page = 0, this.items = null;
3567
3642
  }
3568
- }, e.ConnectionConfig = T, e.ConnectionConfigNoAuth = R, e.ConnectionConfigServerCredentials = E, e.ConnectionConfigServerNoAuth = A, e.ConnectionConfigServerToken = M, e.ContentArea = class {
3643
+ }, e.ConnectionConfig = A, e.ConnectionConfigNoAuth = R, e.ConnectionConfigServerCredentials = M, e.ConnectionConfigServerNoAuth = E, e.ConnectionConfigServerToken = k, e.ContentArea = class {
3569
3644
  constructor(e2, t2, i2, n2 = {}) {
3570
- this.actions = [], this.pendingElement = null, this.documentReady = true, this.reportPageIsLoaded = false, this.navigateToPageOnDocReady = 0, this.navigateToElementOnDocReady = null, this.onClickHandler = null, this.onMouseEnterHandler = null, this.onMouseLeaveHandler = null, this.isNewReportSource = false, this.uiFreezeCoordinator = null, this.initialPageAreaImageUrl = "", this.showPageAreaImage = false, this.placeholder = e2.querySelector(".trv-pages-pane, .trv-pages-area"), this.pageContainer = e2.querySelector(".trv-page-container"), this.pageWrapper = e2.querySelector(".trv-page-wrapper"), this.parametersContainer = e2.querySelector(".trv-parameters-area"), this.notification = e2.querySelector(".trv-notification, .trv-error-pane"), this.scrollManager = new He(this.placeholder, this, t2), this.resizeService = new ze(this.pageContainer), this.resizeService.on("resize", this.onResize.bind(this)), this.controller = t2, this.controller.on("pageReady", this.onPageReady.bind(this)).on("navigateToPage", this.navigateToPage.bind(this)).on("serverActionStarted", this.onServerActionStarted.bind(this)).on("reportSourceChanged", this.onReportSourceChanged.bind(this)).on("scaleChanged", this.updatePageDimensions.bind(this)).on("scaleModeChanged", this.updatePageDimensions.bind(this)).on("printDocumentReady", this.onPrintDocumentReady.bind(this)).on("exportDocumentReady", this.onExportDocumentReady.bind(this)).onAsync("beforeLoadReport", this.onBeforeLoadReport.bind(this)).on("beginLoadReport", this.onBeginLoadReport.bind(this)).on("reportLoadProgress", this.onReportLoadProgress.bind(this)).onAsync("reportLoadComplete", this.onReportLoadComplete.bind(this)).onAsync("reportAutoRunOff", this.onReportAutoRunOff.bind(this)).on("renderingStopped", this.onRenderingStopped.bind(this)).on("missingOrInvalidParameters", this.onMissingOrInvalidParameters.bind(this)).on("noReport", this.onNoReport.bind(this)).on("error", this.onError.bind(this)).on("showNotification", this.onShowNotification.bind(this)), this.messages = i2, this.enableAccessibility = n2.enableAccessibility || false, this.initialPageAreaImageUrl = n2.initialPageAreaImageUrl || "";
3645
+ this.actions = [], this.pendingElement = null, this.documentReady = true, this.reportPageIsLoaded = false, this.navigateToPageOnDocReady = 0, this.navigateToElementOnDocReady = null, this.onClickHandler = null, this.onMouseEnterHandler = null, this.onMouseLeaveHandler = null, this.isNewReportSource = false, this.uiFreezeCoordinator = null, this.initialPageAreaImageUrl = "", this.showPageAreaImage = false, this.placeholder = e2.querySelector(".trv-pages-pane, .trv-pages-area"), this.pageContainer = e2.querySelector(".trv-page-container"), this.pageWrapper = e2.querySelector(".trv-page-wrapper"), this.parametersContainer = e2.querySelector(".trv-parameters-area"), this.notification = e2.querySelector(".trv-notification, .trv-error-pane"), this.scrollManager = new Be(this.placeholder, this, t2), this.resizeService = new Ue(this.pageContainer), this.resizeService.on("resize", this.onResize.bind(this)), this.controller = t2, this.controller.on("pageReady", this.onPageReady.bind(this)).on("navigateToPage", this.navigateToPage.bind(this)).on("serverActionStarted", this.onServerActionStarted.bind(this)).on("reportSourceChanged", this.onReportSourceChanged.bind(this)).on("scaleChanged", this.updatePageDimensions.bind(this)).on("scaleModeChanged", this.updatePageDimensions.bind(this)).on("printDocumentReady", this.onPrintDocumentReady.bind(this)).on("exportDocumentReady", this.onExportDocumentReady.bind(this)).onAsync("beforeLoadReport", this.onBeforeLoadReport.bind(this)).on("beginLoadReport", this.onBeginLoadReport.bind(this)).on("reportLoadProgress", this.onReportLoadProgress.bind(this)).onAsync("reportLoadComplete", this.onReportLoadComplete.bind(this)).onAsync("reportAutoRunOff", this.onReportAutoRunOff.bind(this)).on("renderingStopped", this.onRenderingStopped.bind(this)).on("missingOrInvalidParameters", this.onMissingOrInvalidParameters.bind(this)).on("noReport", this.onNoReport.bind(this)).on("error", this.onError.bind(this)).on("showNotification", this.onShowNotification.bind(this)), this.messages = i2, this.enableAccessibility = n2.enableAccessibility || false, this.initialPageAreaImageUrl = n2.initialPageAreaImageUrl || "";
3571
3646
  }
3572
3647
  destroy() {
3573
3648
  this.resizeService && this.resizeService.destroy();
@@ -3594,10 +3669,10 @@ var telerikReportViewer = (function (exports) {
3594
3669
  this.documentReady = true, this.invalidateCurrentlyLoadedPage();
3595
3670
  }
3596
3671
  onReportLoadProgress(e2) {
3597
- this.navigateWhenPageAvailable(this.navigateToPageOnDocReady, e2.pageCount), this.showNotification(qe(this.messages.ReportViewer_LoadingReportPagesInProgress, [e2.pageCount]));
3672
+ this.navigateWhenPageAvailable(this.navigateToPageOnDocReady, e2.pageCount), this.showNotification(je(this.messages.ReportViewer_LoadingReportPagesInProgress, [e2.pageCount]));
3598
3673
  }
3599
3674
  onReportLoadComplete(t2) {
3600
- 0 === t2.pageCount ? (this.clearPage(), this.showNotification(this.messages.ReportViewer_NoPageToDisplay)) : (this.navigateOnLoadComplete(this.navigateToPageOnDocReady, t2.pageCount), this.showNotification(qe(this.messages.ReportViewer_LoadedReportPagesComplete, [t2.pageCount])), this.showNotificationTimeoutId = window.setTimeout(this.hideNotification.bind(this), 2e3), this.disableParametersArea(false), this.enableInteractivity()), t2.containsFrozenContent && null === this.uiFreezeCoordinator && (this.uiFreezeCoordinator = new Ue(), this.controller.getViewMode() === e.ViewMode.Interactive && this.uiFreezeCoordinator.init(this.placeholder));
3675
+ 0 === t2.pageCount ? (this.clearPage(), this.showNotification(this.messages.ReportViewer_NoPageToDisplay)) : (this.navigateOnLoadComplete(this.navigateToPageOnDocReady, t2.pageCount), this.showNotification(je(this.messages.ReportViewer_LoadedReportPagesComplete, [t2.pageCount])), this.showNotificationTimeoutId = window.setTimeout(this.hideNotification.bind(this), 2e3), this.disableParametersArea(false), this.enableInteractivity()), t2.containsFrozenContent && null === this.uiFreezeCoordinator && (this.uiFreezeCoordinator = new qe(), this.controller.getViewMode() === e.ViewMode.Interactive && this.uiFreezeCoordinator.init(this.placeholder));
3601
3676
  }
3602
3677
  onReportAutoRunOff() {
3603
3678
  this.disableParametersArea(false), this.showNotification(this.messages.ReportViewer_AutoRunDisabled || "Please validate the report parameter values and press Preview to generate the report.");
@@ -3684,14 +3759,14 @@ var telerikReportViewer = (function (exports) {
3684
3759
  }
3685
3760
  let e3 = 0, i3 = 0;
3686
3761
  for (; n2 && n2 !== this.pageContainer; ) {
3687
- if (se(n2, "trv-page-wrapper")) {
3762
+ if (oe(n2, "trv-page-wrapper")) {
3688
3763
  let t3 = n2.dataset.pageScale;
3689
3764
  if ("string" == typeof t3) {
3690
3765
  let n3 = parseFloat(t3);
3691
3766
  e3 *= n3, i3 *= n3;
3692
3767
  }
3693
3768
  }
3694
- e3 += n2.offsetTop, i3 += n2.offsetLeft, n2 = oe(n2);
3769
+ e3 += n2.offsetTop, i3 += n2.offsetLeft, n2 = ae(n2);
3695
3770
  }
3696
3771
  this.scrollManager.getEnabled() && t2 ? this.scrollManager.navigateToElement(e3, t2) : (this.pageContainer.scrollTop = e3, this.pageContainer.scrollLeft = i3);
3697
3772
  } else this.scrollManager.getEnabled() && t2 && this.scrollManager.navigateToElement((null === (i2 = this.placeholder) || void 0 === i2 ? void 0 : i2.querySelector('[data-page="' + t2 + '"]')).offsetTop, t2);
@@ -3703,7 +3778,7 @@ var telerikReportViewer = (function (exports) {
3703
3778
  return !isNaN(t2) && t2 > -1 ? e2 : this.findNextFocusableElement(e2.nextElementSibling);
3704
3779
  }
3705
3780
  disablePagesArea(e2) {
3706
- e2 ? ne(this.placeholder, "trv-loading") : re(this.placeholder, "trv-loading");
3781
+ e2 ? re(this.placeholder, "trv-loading") : se(this.placeholder, "trv-loading");
3707
3782
  }
3708
3783
  disableParametersArea(e2) {
3709
3784
  var t2, i2;
@@ -3714,13 +3789,13 @@ var telerikReportViewer = (function (exports) {
3714
3789
  }
3715
3790
  showNotification(e2 = "", t2 = "info") {
3716
3791
  let i2 = this.notification.dataset.type;
3717
- i2 && re(this.notification, `k-notification-${i2}`), this.notification.dataset.type = t2;
3792
+ i2 && se(this.notification, `k-notification-${i2}`), this.notification.dataset.type = t2;
3718
3793
  let n2 = this.notification.querySelector(".k-notification-content, .trv-error-message"), r2 = null == e2 ? void 0 : e2.split(/\r?\n/);
3719
- n2.innerHTML = r2 && r2.length ? `${r2.join("<br>")}` : "Notification message not found.", ne(this.notification, `k-notification-${t2}`), re(this.notification, "k-hidden");
3794
+ n2.innerHTML = r2 && r2.length ? `${r2.join("<br>")}` : "Notification message not found.", re(this.notification, `k-notification-${t2}`), se(this.notification, "k-hidden");
3720
3795
  }
3721
3796
  hideNotification() {
3722
3797
  let e2 = String(this.notification.dataset.type);
3723
- delete this.notification.dataset.type, re(this.notification, `k-notification-${e2}`), ne(this.notification, "k-hidden");
3798
+ delete this.notification.dataset.type, se(this.notification, `k-notification-${e2}`), re(this.notification, "k-hidden");
3724
3799
  }
3725
3800
  pageNo(e2) {
3726
3801
  var t2;
@@ -3740,7 +3815,7 @@ var telerikReportViewer = (function (exports) {
3740
3815
  if (n2.dataset.box) r2 = JSON.parse(n2.dataset.box);
3741
3816
  else {
3742
3817
  let e2 = getComputedStyle(n2), i3 = getComputedStyle(t2);
3743
- r2 = { padLeft: ae(i3.marginLeft) + ae(e2.borderLeftWidth) + ae(e2.paddingLeft), padRight: ae(i3.marginRight) + ae(e2.borderRightWidth) + ae(e2.paddingRight), padTop: ae(i3.marginTop) + ae(e2.borderTopWidth) + ae(e2.paddingTop), padBottom: ae(i3.marginBottom) + ae(e2.borderBottomWidth) + ae(e2.paddingBottom) }, n2.dataset.box = JSON.stringify(r2);
3818
+ r2 = { padLeft: le(i3.marginLeft) + le(e2.borderLeftWidth) + le(e2.paddingLeft), padRight: le(i3.marginRight) + le(e2.borderRightWidth) + le(e2.paddingRight), padTop: le(i3.marginTop) + le(e2.borderTopWidth) + le(e2.paddingTop), padBottom: le(i3.marginBottom) + le(e2.borderBottomWidth) + le(e2.paddingBottom) }, n2.dataset.box = JSON.stringify(r2);
3744
3819
  }
3745
3820
  let a2 = s2.offsetWidth, l2 = s2.offsetHeight;
3746
3821
  if (0 === a2) {
@@ -3749,7 +3824,7 @@ var telerikReportViewer = (function (exports) {
3749
3824
  }
3750
3825
  const h2 = this.controller.getScaleMode(), c2 = l2 > a2 && h2 === e.ScaleMode.FitPageWidth ? 20 : 0, d2 = (this.pageContainer.clientWidth - c2 - r2.padLeft - r2.padRight) / a2, u2 = (this.pageContainer.clientHeight - 1 - r2.padTop - r2.padBottom) / l2;
3751
3826
  let p2 = this.controller.getScale();
3752
- h2 === e.ScaleMode.FitPageWidth ? p2 = d2 : p2 && h2 !== e.ScaleMode.FitPage || (p2 = Math.min(d2, u2)), null !== this.uiFreezeCoordinator && this.uiFreezeCoordinator.setScaleFactor(p2), t2.dataset.pageScale = p2.toString(), n2.dataset.pageScale = p2.toString(), o2 || le(s2, p2, p2), n2.style.height = p2 * l2 + "px", n2.style.width = p2 * a2 + "px", this.controller.setScale(p2, true);
3827
+ h2 === e.ScaleMode.FitPageWidth ? p2 = d2 : p2 && h2 !== e.ScaleMode.FitPage || (p2 = Math.min(d2, u2)), null !== this.uiFreezeCoordinator && this.uiFreezeCoordinator.setScaleFactor(p2), t2.dataset.pageScale = p2.toString(), n2.dataset.pageScale = p2.toString(), o2 || he(s2, p2, p2), n2.style.height = p2 * l2 + "px", n2.style.width = p2 * a2 + "px", this.controller.setScale(p2, true);
3753
3828
  }
3754
3829
  enableInteractivity() {
3755
3830
  this.disableInteractivity(), this.onClickHandler = this.onClick.bind(this), this.onMouseEnterHandler = this.onMouseEnter.bind(this), this.onMouseLeaveHandler = this.onMouseLeave.bind(this), this.pageContainer.addEventListener("click", this.onClickHandler), this.pageContainer.addEventListener("mouseenter", this.onMouseEnterHandler, true), this.pageContainer.addEventListener("mouseleave", this.onMouseLeaveHandler, true);
@@ -3772,24 +3847,24 @@ var telerikReportViewer = (function (exports) {
3772
3847
  onInteractiveItemClick(e2, t2) {
3773
3848
  var i2;
3774
3849
  let n2 = (null === (i2 = e2.dataset.reportingAction) || void 0 === i2 ? void 0 : i2.toString()) || "", r2 = this.getAction(n2);
3775
- r2 && (this.navigateToPageOnDocReady = this.getNavigateToPageOnDocReady(t2, r2.Type), this.controller.executeReportAction(new l(e2, r2))), t2.stopPropagation();
3850
+ r2 && (this.navigateToPageOnDocReady = this.getNavigateToPageOnDocReady(t2, r2.Type), this.controller.executeReportAction(new h(e2, r2))), t2.stopPropagation();
3776
3851
  }
3777
3852
  onInteractiveItemEnter(e2) {
3778
3853
  var t2;
3779
3854
  let i2 = (null === (t2 = e2.dataset.reportingAction) || void 0 === t2 ? void 0 : t2.toString()) || "", n2 = this.getAction(i2);
3780
- n2 && this.controller.reportActionEnter(new l(e2, n2));
3855
+ n2 && this.controller.reportActionEnter(new h(e2, n2));
3781
3856
  }
3782
3857
  onInteractiveItemLeave(e2) {
3783
3858
  var t2;
3784
3859
  let i2 = (null === (t2 = e2.dataset.reportingAction) || void 0 === t2 ? void 0 : t2.toString()) || "", n2 = this.getAction(i2);
3785
- n2 && this.controller.reportActionLeave(new l(e2, n2));
3860
+ n2 && this.controller.reportActionLeave(new h(e2, n2));
3786
3861
  }
3787
3862
  onToolTipItemEnter(e2, t2) {
3788
3863
  let i2 = e2.dataset.tooltipTitle, n2 = e2.dataset.tooltipText;
3789
- (i2 || n2) && this.controller.reportTooltipOpening(new P(e2, n2 || "", i2 || "", t2));
3864
+ (i2 || n2) && this.controller.reportTooltipOpening(new C(e2, n2 || "", i2 || "", t2));
3790
3865
  }
3791
3866
  onToolTipItemLeave(e2) {
3792
- this.controller.reportTooltipClosing(new P(e2, "", "", null));
3867
+ this.controller.reportTooltipClosing(new C(e2, "", "", null));
3793
3868
  }
3794
3869
  getNavigateToPageOnDocReady(e2, t2) {
3795
3870
  var i2;
@@ -3806,7 +3881,7 @@ var telerikReportViewer = (function (exports) {
3806
3881
  var t2;
3807
3882
  let i2 = "trv-" + this.controller.getClientId() + "-styles";
3808
3883
  null === (t2 = document.getElementById(i2)) || void 0 === t2 || t2.remove();
3809
- let n2 = ie("style", i2);
3884
+ let n2 = ne("style", i2);
3810
3885
  this.applyNonce(n2), n2.innerHTML = e2.pageStyles, document.head.appendChild(n2);
3811
3886
  }
3812
3887
  setPageContent(e2) {
@@ -3818,15 +3893,15 @@ var telerikReportViewer = (function (exports) {
3818
3893
  this.actions && this.actions.length ? this.actions = this.actions.concat(t2.pageActions) : this.actions = t2.pageActions, this.applyPlaceholderViewModeClass(), this.setPageDimensions(e2, t2.pageNumber);
3819
3894
  }
3820
3895
  renderPageElement(e2) {
3821
- let t2 = ie("div");
3896
+ let t2 = ne("div");
3822
3897
  t2.innerHTML = e2.pageContent;
3823
3898
  let i2 = t2.querySelector("div.sheet");
3824
3899
  i2.style.margin = "0";
3825
- let n2 = ie("div", "", "trv-report-page");
3826
- return n2.dataset.page = e2.pageNumber.toString(), n2.append(i2), n2.append(ie("div", "", "k-overlay trv-overlay trv-page-overlay")), n2;
3900
+ let n2 = ne("div", "", "trv-report-page");
3901
+ return n2.dataset.page = e2.pageNumber.toString(), n2.append(i2), n2.append(ne("div", "", "k-overlay trv-overlay trv-page-overlay")), n2;
3827
3902
  }
3828
3903
  applyPlaceholderViewModeClass() {
3829
- this.controller.getViewMode() === e.ViewMode.Interactive ? (re(this.placeholder, "printpreview"), ne(this.placeholder, "interactive")) : (re(this.placeholder, "interactive"), ne(this.placeholder, "printpreview"));
3904
+ this.controller.getViewMode() === e.ViewMode.Interactive ? (se(this.placeholder, "printpreview"), re(this.placeholder, "interactive")) : (se(this.placeholder, "interactive"), re(this.placeholder, "printpreview"));
3830
3905
  }
3831
3906
  applyNonce(e2) {
3832
3907
  const t2 = this.controller.getNonce();
@@ -3834,14 +3909,18 @@ var telerikReportViewer = (function (exports) {
3834
3909
  }
3835
3910
  setPageAreaImage() {
3836
3911
  this.clearPageAreaImage();
3837
- let e2 = ie("style", Be);
3838
- this.applyNonce(e2), e2.innerHTML = qe('.trv-page-container {background: #ffffff url("{0}") no-repeat center 50px}', [this.initialPageAreaImageUrl]), document.head.appendChild(e2), this.showPageAreaImage = true;
3912
+ let e2 = ne("style", Ze);
3913
+ this.applyNonce(e2), e2.innerHTML = je('.trv-page-container {background: #ffffff url("{0}") no-repeat center 50px}', [this.initialPageAreaImageUrl]), document.head.appendChild(e2), this.showPageAreaImage = true;
3839
3914
  }
3840
3915
  clearPageAreaImage() {
3841
3916
  var e2;
3842
- null === (e2 = document.getElementById(Be)) || void 0 === e2 || e2.remove();
3917
+ null === (e2 = document.getElementById(Ze)) || void 0 === e2 || e2.remove();
3918
+ }
3919
+ }, e.CurrentPageChangedEventArgs = P, e.DeviceInfo = a, e.DeviceSetting = class {
3920
+ constructor() {
3921
+ this.name = "", this.type = "string", this.value = null, this.availableValues = null, this.description = "", this.group = "General", this.readOnly = false;
3843
3922
  }
3844
- }, e.CurrentPageChangedEventArgs = v, e.DeviceInfo = o, e.DocumentInfo = class {
3923
+ }, e.DocumentInfo = class {
3845
3924
  constructor() {
3846
3925
  this.documentReady = false, this.documentMapAvailable = false, this.containsFrozenContent = false, this.pageCount = 0, this.documentMapNodes = [], this.bookmarkNodes = [], this.renderingExtensions = [], this.autoRunEnabled = true;
3847
3926
  }
@@ -3849,29 +3928,61 @@ var telerikReportViewer = (function (exports) {
3849
3928
  constructor() {
3850
3929
  this.id = "", this.isExpanded = false, this.label = "", this.text = "", this.page = 0, this.items = [];
3851
3930
  }
3852
- }, e.EmailInfo = a, e.ExportDocumentReadyEventArgs = u, e.ExportStartEventArgs = c, e.ExportStartedEventArgs = d, e.KeepClientAliveSentinel = K, e.NoAuth = b, e.PageAction = class {
3931
+ }, e.EmailInfo = l, e.ExportDocumentReadyEventArgs = p, e.ExportSettingsStore = class {
3932
+ constructor(e2, t2) {
3933
+ Ke.set(this, {});
3934
+ }
3935
+ getValue(e2, t2) {
3936
+ if (t2.readOnly) return t2.value;
3937
+ const i2 = o(this, Ke, "f")[e2];
3938
+ return i2 && Object.prototype.hasOwnProperty.call(i2, t2.name) ? i2[t2.name] : t2.value;
3939
+ }
3940
+ saveValues(e2, t2, i2) {
3941
+ const n2 = this.getFormatValues(e2), r2 = {};
3942
+ return t2.forEach((e3) => {
3943
+ e3.readOnly || (Object.prototype.hasOwnProperty.call(n2, e3.name) && (r2[e3.name] = n2[e3.name]), Object.prototype.hasOwnProperty.call(i2, e3.name) && (r2[e3.name] = i2[e3.name]));
3944
+ }), Object.keys(r2).length > 0 ? o(this, Ke, "f")[e2] = r2 : delete o(this, Ke, "f")[e2], true;
3945
+ }
3946
+ resetValues(e2) {
3947
+ return delete o(this, Ke, "f")[e2], true;
3948
+ }
3949
+ getDeviceInfo(e2, t2) {
3950
+ const i2 = {};
3951
+ return t2.forEach((t3) => {
3952
+ const n2 = this.getValue(e2, t3), r2 = this.hasValue(e2, t3);
3953
+ (t3.readOnly || r2) && null != n2 && (i2[t3.name] = n2);
3954
+ }), i2;
3955
+ }
3956
+ hasValue(e2, t2) {
3957
+ const i2 = o(this, Ke, "f")[e2];
3958
+ return Boolean(i2 && Object.prototype.hasOwnProperty.call(i2, t2.name));
3959
+ }
3960
+ getFormatValues(e2) {
3961
+ return Object.assign({}, o(this, Ke, "f")[e2]);
3962
+ }
3963
+ }, e.ExportStartEventArgs = d, e.ExportStartedEventArgs = u, e.KeepClientAliveSentinel = X, e.NoAuth = w, e.PageAction = class {
3853
3964
  constructor() {
3854
3965
  this.Id = "", this.ReportItemName = "", this.Type = "", this.Value = {};
3855
3966
  }
3856
- }, e.PageActionEventArgs = l, e.PageInfo = class {
3967
+ }, e.PageActionEventArgs = h, e.PageInfo = class {
3857
3968
  constructor() {
3858
3969
  this.pageNumber = 0, this.pageReady = false, this.pageStyles = "", this.pageContent = "", this.pageActions = [];
3859
3970
  }
3860
- }, e.PageTargetElement = h, e.ParameterInfo = class {
3971
+ }, e.PageTargetElement = c, e.ParameterInfo = class {
3861
3972
  constructor() {
3862
3973
  this.name = "", this.type = "", this.text = "", this.multivalue = false, this.allowNull = false, this.allowBlank = false, this.isVisible = false, this.autoRefresh = false, this.hasChildParameters = false, this.childParameters = [], this.availableValues = [], this.value = "", this.id = "", this.label = "";
3863
3974
  }
3864
- }, e.ParameterValidators = De, e.ParameterValue = class {
3975
+ }, e.ParameterValidators = Oe, e.ParameterValue = class {
3865
3976
  constructor() {
3866
3977
  this.name = "", this.value = null;
3867
3978
  }
3868
- }, e.PersonalTokenAuth = L, e.PrintDocumentReadyEventArgs = g, e.PrintStartedEventArgs = p, e.RenderingExtension = class {
3979
+ }, e.PersonalTokenAuth = T, e.PrintDocumentReadyEventArgs = f, e.PrintStartedEventArgs = g, e.RenderingExtension = class {
3869
3980
  constructor() {
3870
- this.name = "", this.localizedName = "";
3981
+ this.name = "", this.localizedName = "", this.settings = [];
3871
3982
  }
3872
- }, e.ReportController = class extends q {
3983
+ }, e.ReportController = class extends W {
3873
3984
  constructor(e2, t2) {
3874
- super(), this.configurationInfo = null, this.keepClientAliveSentinel = null, this.registerClientPromise = null, this.registerInstancePromise = null, this.documentFormatsPromise = null, this.clientId = "", this.reportInstanceId = "", this.documentId = "", this.threadId = "", this.parameterValues = {}, this.bookmarkNodes = [], this.renderingExtensions = null, this.pageCount = 0, this.currentPageNumber = 0, this.clientHasExpired = false, this.cancelLoad = false, this.searchInitiated = false, this.aiPromptInitiated = false, this.contentTabIndex = 0, this.respectAutoRun = true, this.processedParameterValues = {}, this.options = t2, t2.reportSource && this.setParameters(t2.reportSource.parameters), this.printManager = new G(), this.serviceClient = e2, t2.authenticationToken && this.serviceClient.setAccessToken(t2.authenticationToken);
3985
+ super(), this.configurationInfo = null, this.keepClientAliveSentinel = null, this.registerClientPromise = null, this.registerInstancePromise = null, this.documentFormatsPromise = null, this.clientId = "", this.reportInstanceId = "", this.documentId = "", this.threadId = "", this.parameterValues = {}, this.bookmarkNodes = [], this.renderingExtensions = null, this.pageCount = 0, this.currentPageNumber = 0, this.clientHasExpired = false, this.cancelLoad = false, this.searchInitiated = false, this.aiPromptInitiated = false, this.contentTabIndex = 0, this.respectAutoRun = true, this.processedParameterValues = {}, this.options = t2, t2.reportSource && this.setParameters(t2.reportSource.parameters), this.printManager = new J(), this.serviceClient = e2, t2.authenticationToken && this.serviceClient.setAccessToken(t2.authenticationToken);
3875
3986
  }
3876
3987
  get autoRunEnabled() {
3877
3988
  var e2 = !this.parameterValues || !("trv_AutoRun" in this.parameterValues) || this.parameterValues.trv_AutoRun;
@@ -3916,7 +4027,7 @@ var telerikReportViewer = (function (exports) {
3916
4027
  processParameters(e2) {
3917
4028
  let t2 = {}, i2 = [], n2 = false;
3918
4029
  for (let r2 of e2) try {
3919
- let e3 = De.validate(r2, r2.value);
4030
+ let e3 = Oe.validate(r2, r2.value);
3920
4031
  t2[r2.id] = e3;
3921
4032
  } catch (e3) {
3922
4033
  n2 = true, i2.push(r2);
@@ -3937,7 +4048,7 @@ var telerikReportViewer = (function (exports) {
3937
4048
  }
3938
4049
  hasInvalidParameter(e2) {
3939
4050
  for (const t2 of e2) try {
3940
- De.validate(t2, t2.value);
4051
+ Oe.validate(t2, t2.value);
3941
4052
  } catch (e3) {
3942
4053
  return true;
3943
4054
  }
@@ -3969,7 +4080,7 @@ var telerikReportViewer = (function (exports) {
3969
4080
  }
3970
4081
  getReportSource() {
3971
4082
  var e2;
3972
- return new Oe(null === (e2 = this.options.reportSource) || void 0 === e2 ? void 0 : e2.report, this.parameterValues);
4083
+ return new He(null === (e2 = this.options.reportSource) || void 0 === e2 ? void 0 : e2.report, this.parameterValues);
3973
4084
  }
3974
4085
  setReportSource(e2) {
3975
4086
  this.options.reportSource = e2, this.setParameters(this.options.reportSource.parameters), this.emit("reportSourceChanged", e2);
@@ -4014,7 +4125,7 @@ var telerikReportViewer = (function (exports) {
4014
4125
  return this.currentPageNumber;
4015
4126
  }
4016
4127
  setCurrentPageNumber(e2) {
4017
- this.currentPageNumber !== e2 && (this.currentPageNumber = e2, this.emit("currentPageChanged", new v(e2, this.documentId)));
4128
+ this.currentPageNumber !== e2 && (this.currentPageNumber = e2, this.emit("currentPageChanged", new P(e2, this.documentId)));
4018
4129
  }
4019
4130
  getPageCount() {
4020
4131
  return this.pageCount;
@@ -4033,15 +4144,15 @@ var telerikReportViewer = (function (exports) {
4033
4144
  if (!e2.cancel) if ("navigateToReport" === t2.Type) {
4034
4145
  this.emit("serverActionStarted");
4035
4146
  let e3 = t2.Value, i2 = this.fixDataContractJsonSerializer(e3.ParameterValues);
4036
- this.respectAutoRun = true, this.emit("navigateToReport", new Oe(e3.Report, i2));
4147
+ this.respectAutoRun = true, this.emit("navigateToReport", new He(e3.Report, i2));
4037
4148
  } else if ("navigateToBookmark" === t2.Type) {
4038
- let e3 = this.getPageForBookmark(this.bookmarkNodes, t2.Value), i2 = new h(t2.Value, "bookmark");
4149
+ let e3 = this.getPageForBookmark(this.bookmarkNodes, t2.Value), i2 = new c(t2.Value, "bookmark");
4039
4150
  this.navigateToPage(e3, i2);
4040
4151
  } else if ("sorting" === t2.Type) this.execServerAction(t2.Id);
4041
4152
  else if ("toggleVisibility" === t2.Type) this.execServerAction(t2.Id);
4042
4153
  else if ("navigateToUrl" === t2.Type) {
4043
4154
  let e3 = t2.Value;
4044
- window.open(e3.Url, e3.Target);
4155
+ Te(e3.Url) ? console.warn("A NavigateToUrl action was blocked because its URL uses a prohibited scheme (javascript/vbscript).") : window.open(e3.Url, e3.Target);
4045
4156
  } else t2.Type;
4046
4157
  }), 0);
4047
4158
  }
@@ -4067,37 +4178,40 @@ var telerikReportViewer = (function (exports) {
4067
4178
  return s(this, void 0, void 0, function* () {
4068
4179
  let e2 = this.createDeviceInfo();
4069
4180
  e2.ImmediatePrint = true;
4070
- let t2 = new p(e2);
4181
+ let t2 = new g(e2);
4071
4182
  yield this.emitAsync("printStarted", t2), this.emit("printStarted", t2), t2.handled || (this.showNotification(this.options.messages.ReportViewer_PreparingPrint), this.setUIState("PrintInProgress", true), this.exportAsync("PDF", t2.deviceInfo).then((e3) => s(this, void 0, void 0, function* () {
4072
4183
  let t3 = this.serviceClient.getDocumentUrl(this.clientId, this.reportInstanceId, e3);
4073
4184
  t3 += `?${"response-content-disposition=" + (this.getCanUsePlugin() ? "inline" : "attachment")}`;
4074
- let i2 = new g(t3);
4185
+ let i2 = new f(t3);
4075
4186
  yield this.emitAsync("printDocumentReady", i2), this.emit("printDocumentReady", i2), this.setUIState("PrintInProgress", false), i2.handled || this.printManager.print(t3, this.getReportFileName());
4076
4187
  })));
4077
4188
  });
4078
4189
  }
4079
- exportReport(e2) {
4190
+ exportReport(e2, t2) {
4080
4191
  return s(this, void 0, void 0, function* () {
4081
- let t2 = this.createDeviceInfo(), i2 = new c(t2, e2);
4082
- if (yield this.emitAsync("exportStart", i2), !i2.isCancelled) {
4083
- let t3 = new d(i2.deviceInfo, i2.format);
4192
+ const i2 = Object.assign({}, t2);
4193
+ let n2 = new d(i2, e2);
4194
+ if (yield this.emitAsync("exportStart", n2), !n2.isCancelled) {
4195
+ let t3 = new u(n2.deviceInfo, n2.format);
4084
4196
  if (yield this.emitAsync("exportStarted", t3), this.emit("exportStarted", t3), t3.handled) return;
4085
- this.showNotification(this.options.messages.ReportViewer_PreparingDownload), this.setUIState("ExportInProgress", true), this.exportAsync(t3.format, t3.deviceInfo).then((t4) => s(this, void 0, void 0, function* () {
4086
- let i3 = this.serviceClient.getDocumentUrl(this.clientId, this.reportInstanceId, t4);
4087
- i3 += "?response-content-disposition=attachment";
4088
- let n2 = new u(i3, e2, "_self");
4089
- yield this.emitAsync("exportEnd", n2), yield this.emitAsync("exportDocumentReady", n2), this.emit("exportDocumentReady", n2), this.setUIState("ExportInProgress", false), n2.handled || window.open(i3, n2.windowOpenTarget);
4197
+ this.showNotification(this.options.messages.ReportViewer_PreparingDownload), this.setUIState("ExportInProgress", true);
4198
+ const i3 = this.normalizeDeviceInfo(t3.deviceInfo);
4199
+ this.exportAsync(t3.format, i3).then((t4) => s(this, void 0, void 0, function* () {
4200
+ let i4 = this.serviceClient.getDocumentUrl(this.clientId, this.reportInstanceId, t4);
4201
+ i4 += "?response-content-disposition=attachment";
4202
+ let n3 = new p(i4, e2, "_self");
4203
+ yield this.emitAsync("exportEnd", n3), yield this.emitAsync("exportDocumentReady", n3), this.emit("exportDocumentReady", n3), this.setUIState("ExportInProgress", false), n3.handled || window.open(i4, n3.windowOpenTarget);
4090
4204
  }));
4091
4205
  }
4092
4206
  });
4093
4207
  }
4094
4208
  sendReport(e2) {
4095
4209
  return s(this, void 0, void 0, function* () {
4096
- let t2 = this.createDeviceInfo(), i2 = new f(t2, e2.format);
4210
+ let t2 = this.createDeviceInfo(), i2 = new m(t2, e2.format);
4097
4211
  yield this.emitAsync("sendEmailStarted", i2), this.emit("sendEmailStarted", i2), i2.handled || this.exportAsync(e2.format, i2.deviceInfo).then((t3) => s(this, void 0, void 0, function* () {
4098
4212
  let n2 = this.serviceClient.getDocumentUrl(this.clientId, this.reportInstanceId, t3);
4099
4213
  n2 += "?response-content-disposition=attachment";
4100
- let r2 = new m(e2, i2.deviceInfo, n2);
4214
+ let r2 = new v(e2, i2.deviceInfo, n2);
4101
4215
  yield this.emitAsync("sendEmailDocumentReady", r2), this.emit("sendEmailDocumentReady", r2), r2.handled || this.sendDocumentAsync(t3, r2);
4102
4216
  }));
4103
4217
  });
@@ -4121,7 +4235,7 @@ var telerikReportViewer = (function (exports) {
4121
4235
  }
4122
4236
  sendDocumentAsync(e2, t2) {
4123
4237
  return this.serviceClient.sendDocument(this.clientId, this.reportInstanceId, e2, t2).catch((e3) => {
4124
- this.handleRequestError(e3, be(this.options.messages.ReportViewer_ErrorSendingDocument, he(this.getReport())));
4238
+ this.handleRequestError(e3, we(this.options.messages.ReportViewer_ErrorSendingDocument, ce(this.getReport())));
4125
4239
  });
4126
4240
  }
4127
4241
  loadParameters(e2 = void 0) {
@@ -4134,7 +4248,7 @@ var telerikReportViewer = (function (exports) {
4134
4248
  }
4135
4249
  initializeAndStartSentinel() {
4136
4250
  this.options.keepClientAlive && this.clientId && this.serviceClient.getClientsSessionTimeoutSeconds().then((e2) => {
4137
- this.keepClientAliveSentinel = new K(this.serviceClient, this.clientId, e2), this.keepClientAliveSentinel.start();
4251
+ this.keepClientAliveSentinel = new X(this.serviceClient, this.clientId, e2), this.keepClientAliveSentinel.start();
4138
4252
  });
4139
4253
  }
4140
4254
  stopSentinel() {
@@ -4159,14 +4273,14 @@ var telerikReportViewer = (function (exports) {
4159
4273
  this.pageCount = 0, this.currentPageNumber = 0;
4160
4274
  }
4161
4275
  handleSearchRequestError(e2) {
4162
- if (!Ce(e2, "System.ArgumentException")) throw this.handleRequestError(e2, "", true), null;
4276
+ if (!ye(e2, "System.ArgumentException")) throw this.handleRequestError(e2, "", true), null;
4163
4277
  this.throwPromiseError(e2);
4164
4278
  }
4165
4279
  throwPromiseError(e2) {
4166
4280
  throw e2.exceptionMessage ? e2.exceptionMessage : this.options.messages.ReportViewer_PromisesChainStopError;
4167
4281
  }
4168
4282
  handleRequestError(e2, t2 = "", i2 = false) {
4169
- ye(e2) && this.onClientExpired();
4283
+ Se(e2) && this.onClientExpired();
4170
4284
  let n2 = Ie(e2.error) ? "" : e2.error, r2 = this.formatRequestError(e2, n2, t2);
4171
4285
  this.raiseError(r2), i2 || this.throwPromiseError(e2);
4172
4286
  }
@@ -4174,12 +4288,12 @@ var telerikReportViewer = (function (exports) {
4174
4288
  let n2 = e2.responseJSON, r2 = "";
4175
4289
  if (n2) {
4176
4290
  if (401 == n2.status || 403 == n2.status) return this.options.messages.ReportViewer_ErrorUnauthorizedOrForbidden || "You don't have permission to access this report document.";
4177
- if (Se(e2)) return this.options.messages.ReportViewer_MissingOrInvalidParameter;
4178
- r2 = he(n2.message);
4179
- let t3 = he(n2.exceptionMessage || n2.ExceptionMessage || n2.error_description);
4291
+ if (be(e2)) return this.options.messages.ReportViewer_MissingOrInvalidParameter;
4292
+ r2 = ce(n2.message);
4293
+ let t3 = ce(n2.exceptionMessage || n2.ExceptionMessage || n2.error_description);
4180
4294
  t3 && (r2 ? r2 += " " + t3 : r2 = t3);
4181
- } else r2 = he(e2.responseText);
4182
- return (i2 || t2) && (r2 && (r2 = " " + r2), r2 = he(i2 || t2) + r2), ye(e2) && (r2 += "<br />" + this.options.messages.ReportViewer_ClientExpired), r2;
4295
+ } else r2 = ce(e2.responseText);
4296
+ return (i2 || t2) && (r2 && (r2 = " " + r2), r2 = ce(i2 || t2) + r2), Se(e2) && (r2 += "<br />" + this.options.messages.ReportViewer_ClientExpired), r2;
4183
4297
  }
4184
4298
  raiseError(e2, t2 = true) {
4185
4299
  this.emit("error", e2, t2);
@@ -4192,7 +4306,7 @@ var telerikReportViewer = (function (exports) {
4192
4306
  }
4193
4307
  initializeClient() {
4194
4308
  return this.registerClientPromise || (this.registerClientPromise = this.serviceClient.registerClient().catch((e2) => {
4195
- const t2 = be(this.options.messages.ReportViewer_ErrorServiceUrl, [this.serviceClient.getServiceUrl()]);
4309
+ const t2 = we(this.options.messages.ReportViewer_ErrorServiceUrl, [this.serviceClient.getServiceUrl()]);
4196
4310
  this.handleRequestError(e2, t2);
4197
4311
  }).then(this.setClientId.bind(this)).catch(this.clearClientId.bind(this))), this.registerClientPromise;
4198
4312
  }
@@ -4202,7 +4316,7 @@ var telerikReportViewer = (function (exports) {
4202
4316
  registerDocumentAsync(e2, t2, i2) {
4203
4317
  return s(this, arguments, void 0, function* (e3, t3, i3, n2 = "", r2 = "") {
4204
4318
  return (yield this.serviceClient.createReportDocument(this.clientId, this.reportInstanceId, e3, t3, !i3, n2, r2).catch((t4) => {
4205
- this.handleRequestError(t4, be(this.options.messages.ReportViewer_ErrorCreatingReportDocument, he(this.getReport()), he(e3)));
4319
+ this.handleRequestError(t4, we(this.options.messages.ReportViewer_ErrorCreatingReportDocument, ce(this.getReport()), ce(e3)));
4206
4320
  })) || "";
4207
4321
  });
4208
4322
  }
@@ -4228,8 +4342,15 @@ var telerikReportViewer = (function (exports) {
4228
4342
  let e2 = this.createDeviceInfo();
4229
4343
  return e2.ContentOnly = true, e2.UseSVG = true, e2;
4230
4344
  }
4345
+ normalizeDeviceInfo(e2) {
4346
+ const t2 = {}, i2 = /* @__PURE__ */ new Map();
4347
+ return Object.entries(e2 || {}).forEach(([e3, n2]) => {
4348
+ const r2 = e3.toLowerCase(), s2 = i2.get(r2);
4349
+ s2 && delete t2[s2], t2[e3] = n2, i2.set(r2, e3);
4350
+ }), t2;
4351
+ }
4231
4352
  createDeviceInfo() {
4232
- let e2 = new o();
4353
+ let e2 = new a();
4233
4354
  this.options.enableAccessibility && (e2.enableAccessibility = true, e2.contentTabIndex = this.getContentTabIndex());
4234
4355
  let t2 = this.getSearchInitiated(), i2 = this.options.searchMetadataOnDemand;
4235
4356
  return e2.enableSearch = !i2 || t2, e2;
@@ -4244,7 +4365,7 @@ var telerikReportViewer = (function (exports) {
4244
4365
  const e2 = {}, t2 = this.getProcessedParameterValues();
4245
4366
  for (let i2 in t2) {
4246
4367
  const n2 = t2[i2], r2 = this.parameterValues[i2];
4247
- n2 && n2.availableValues ? n2.multivalue ? e2[i2] = Fe(n2, r2, i2) : e2[i2] = Ve(n2, r2, i2) : e2[i2] = r2;
4368
+ n2 && n2.availableValues ? n2.multivalue ? e2[i2] = _e(n2, r2, i2) : e2[i2] = ze(n2, r2, i2) : e2[i2] = r2;
4248
4369
  }
4249
4370
  return e2;
4250
4371
  }
@@ -4399,13 +4520,13 @@ ${e3.text} (${e3.id})`;
4399
4520
  constructor(e2, t2) {
4400
4521
  this.url = e2, this.getPersonalAccessToken = t2;
4401
4522
  }
4402
- }, e.ReportSourceOptions = Oe, e.RequestError = C, e.SearchInfo = class {
4523
+ }, e.ReportSourceOptions = He, e.RequestError = y, e.SearchInfo = class {
4403
4524
  constructor() {
4404
4525
  this.searchToken = "", this.matchCase = false, this.matchWholeWord = false, this.useRegularExpressions = false;
4405
4526
  }
4406
- }, e.SearchManager = class extends q {
4527
+ }, e.SearchManager = class extends W {
4407
4528
  constructor(e2, t2) {
4408
- super(), this.searchResults = [], this.pendingHighlightItem = null, this.highlightedElements = [], this.currentHighlightedElement = null, this.isActive = false, this.controller = t2, this.pageContainer = fe(e2, ".trv-page-container"), this.controller.on("applySearchColors", this.applySearchColors.bind(this)).on("pageReady", this.applySearchColors.bind(this));
4529
+ super(), this.searchResults = [], this.pendingHighlightItem = null, this.highlightedElements = [], this.currentHighlightedElement = null, this.isActive = false, this.controller = t2, this.pageContainer = me(e2, ".trv-page-container"), this.controller.on("applySearchColors", this.applySearchColors.bind(this)).on("pageReady", this.applySearchColors.bind(this));
4409
4530
  }
4410
4531
  search(e2) {
4411
4532
  this.isActive = true, this.clearColoredItems(), this.searchResults = [], e2.searchToken && "" !== e2.searchToken ? this.controller.getSearchResults(e2).then(this.onSearchComplete.bind(this)) : this.onSearchComplete([]);
@@ -4414,15 +4535,15 @@ ${e3.text} (${e3.id})`;
4414
4535
  this.isActive = false, this.clearColoredItems(), this.searchResults = [];
4415
4536
  }
4416
4537
  highlightSearchItem(t2) {
4417
- t2 && (this.currentHighlightedElement && (re(this.currentHighlightedElement, Ze), ne(this.currentHighlightedElement, We)), t2.page === this.controller.getCurrentPageNumber() ? this.highlightItem(t2) : this.controller.getPageMode() === e.PageMode.SinglePage ? this.clearColoredItems() : this.highlightItem(t2), this.pendingHighlightItem = t2, this.navigateToPage(t2));
4538
+ t2 && (this.currentHighlightedElement && (se(this.currentHighlightedElement, Je), re(this.currentHighlightedElement, Ge)), t2.page === this.controller.getCurrentPageNumber() ? this.highlightItem(t2) : this.controller.getPageMode() === e.PageMode.SinglePage ? this.clearColoredItems() : this.highlightItem(t2), this.pendingHighlightItem = t2, this.navigateToPage(t2));
4418
4539
  }
4419
4540
  navigateToPage(e2) {
4420
- this.controller.navigateToPage(e2.page, new h(e2.id, "search"));
4541
+ this.controller.navigateToPage(e2.page, new c(e2.id, "search"));
4421
4542
  }
4422
4543
  colorPageElements(e2) {
4423
4544
  e2 && 0 !== e2.length && (e2.forEach((e3) => {
4424
- let t2 = fe(this.pageContainer, "[data-search-id=" + e3.id + "]");
4425
- t2 && (ne(t2, We), this.highlightedElements.push(t2));
4545
+ let t2 = me(this.pageContainer, "[data-search-id=" + e3.id + "]");
4546
+ t2 && (re(t2, Ge), this.highlightedElements.push(t2));
4426
4547
  }), this.highlightItem(this.pendingHighlightItem));
4427
4548
  }
4428
4549
  highlightItem(e2) {
@@ -4430,13 +4551,13 @@ ${e3.text} (${e3.id})`;
4430
4551
  let t2 = this.highlightedElements.find(function(t3) {
4431
4552
  return t3.dataset.searchId === e2.id;
4432
4553
  });
4433
- t2 && (this.currentHighlightedElement = t2, re(t2, We), ne(t2, Ze));
4554
+ t2 && (this.currentHighlightedElement = t2, se(t2, Ge), re(t2, Je));
4434
4555
  }
4435
4556
  }
4436
4557
  clearColoredItems() {
4437
4558
  this.highlightedElements && this.highlightedElements.length > 0 && this.highlightedElements.forEach((e2) => {
4438
- re(e2, We);
4439
- }), this.currentHighlightedElement && re(this.currentHighlightedElement, Ze), this.highlightedElements = [], this.currentHighlightedElement = null;
4559
+ se(e2, Ge);
4560
+ }), this.currentHighlightedElement && se(this.currentHighlightedElement, Je), this.highlightedElements = [], this.currentHighlightedElement = null;
4440
4561
  }
4441
4562
  applySearchColors() {
4442
4563
  this.isActive && this.colorPageElements(this.searchResults);
@@ -4448,23 +4569,23 @@ ${e3.text} (${e3.id})`;
4448
4569
  constructor() {
4449
4570
  this.description = "", this.id = "", this.page = 0;
4450
4571
  }
4451
- }, e.SendEmailDocumentReadyEventArgs = m, e.SendEmailStartedEventArgs = f, e.ServiceClient = class {
4572
+ }, e.SendEmailDocumentReadyEventArgs = v, e.SendEmailStartedEventArgs = m, e.ServiceClient = class {
4452
4573
  constructor(e2) {
4453
4574
  this.connectionConfig = this.getConnectionConfig(e2), this.authStrategy = this.getAuthStrategy(this.connectionConfig);
4454
4575
  }
4455
4576
  getConnectionConfig(e2) {
4456
- return e2.reportServer && e2.reportServer.url && e2.reportServer.username && e2.reportServer.password ? new E(e2.reportServer.url, e2.reportServer.username, e2.reportServer.password) : e2.reportServer && e2.reportServer.url && e2.reportServer.getPersonalAccessToken ? new M(e2.reportServer.url, e2.reportServer.getPersonalAccessToken) : e2.reportServer && e2.reportServer.url ? new A(e2.reportServer.url) : e2.serverPreview && e2.serverShareToken ? new M("", () => Promise.resolve(e2.serverShareToken)) : new R(e2.serviceUrl);
4577
+ return e2.reportServer && e2.reportServer.url && e2.reportServer.username && e2.reportServer.password ? new M(e2.reportServer.url, e2.reportServer.username, e2.reportServer.password) : e2.reportServer && e2.reportServer.url && e2.reportServer.getPersonalAccessToken ? new k(e2.reportServer.url, e2.reportServer.getPersonalAccessToken) : e2.reportServer && e2.reportServer.url ? new E(e2.reportServer.url) : e2.serverPreview && e2.serverShareToken ? new k("", () => Promise.resolve(e2.serverShareToken)) : new R(e2.serviceUrl);
4457
4578
  }
4458
4579
  getAuthStrategy(t2) {
4459
4580
  switch (t2.authType) {
4460
4581
  case e.AuthType.None:
4461
- return new b();
4582
+ return new w();
4462
4583
  case e.AuthType.Basic:
4463
- return new w(t2);
4464
- case e.AuthType.PersonalToken:
4465
4584
  return new L(t2);
4585
+ case e.AuthType.PersonalToken:
4586
+ return new T(t2);
4466
4587
  default:
4467
- return new b();
4588
+ return new w();
4468
4589
  }
4469
4590
  }
4470
4591
  validateClientID(e2) {
@@ -4472,7 +4593,7 @@ ${e3.text} (${e3.id})`;
4472
4593
  }
4473
4594
  authenticatedGet(e2) {
4474
4595
  return this.login().then((t2) => (null == t2 ? void 0 : t2.expiresAt) < Date.now() ? (this.loginPromise = this.authStrategy.authenticatePromise(true, t2.refreshToken), this.authenticatedGet(e2)) : (function(e3, t3) {
4475
- return fetch(e3, { headers: y(t3) }).then(S);
4596
+ return fetch(e3, { headers: S(t3) }).then(b);
4476
4597
  })(e2, t2.access_token || t2.accessToken));
4477
4598
  }
4478
4599
  authenticatedPost(e2, t2) {
@@ -4480,7 +4601,7 @@ ${e3.text} (${e3.id})`;
4480
4601
  }
4481
4602
  authenticatedDelete(e2) {
4482
4603
  return this.login().then((t2) => t2.expiresAt < Date.now() ? (this.loginPromise = this.authStrategy.authenticatePromise(true, t2.refreshToken), this.authenticatedDelete(e2)) : (function(e3, t3) {
4483
- return fetch(e3, { method: "DELETE", headers: y(t3) }).then(S);
4604
+ return fetch(e3, { method: "DELETE", headers: S(t3) }).then(b);
4484
4605
  })(e2, t2.access_token || t2.accessToken));
4485
4606
  }
4486
4607
  login() {
@@ -4564,16 +4685,18 @@ ${e3.text} (${e3.id})`;
4564
4685
  return e2.clientSessionTimeout;
4565
4686
  });
4566
4687
  }
4567
- }, e.TooltipEventArgs = P, e.addClass = ne, e.appendHtml = pe, e.createElement = ie, e.debounce = ve, e.each = we, e.escapeHtml = he, e.findElement = fe, e.getColorAlphaValue = ue, e.getElementAttributeValue = function(e2, t2) {
4688
+ }, e.TooltipEventArgs = C, e.addClass = re, e.appendHtml = ge, e.createElement = ne, e.debounce = Pe, e.each = Ae, e.escapeHtml = ce, e.findElement = me, e.getColorAlphaValue = pe, e.getElementAttributeValue = function(e2, t2) {
4568
4689
  var i2;
4569
4690
  return e2 && e2.attributes && (null === (i2 = e2.attributes[t2]) || void 0 === i2 ? void 0 : i2.value) || "";
4570
- }, e.getElementScrollParent = me, e.getOffsetParent = oe, e.hasClass = se, e.isArray = Le, e.isExceptionOfType = Ce, e.isInternalServerError = Ie, e.isInvalidClientException = ye, e.isInvalidParameterException = Se, e.isRgbColor = de, e.keepElementInView = function(e2) {
4691
+ }, e.getElementScrollParent = ve, e.getOffsetParent = ae, e.hasClass = oe, e.hasExportSettings = function(e2) {
4692
+ return Array.isArray(e2) && e2.some((e3) => e3 && Array.isArray(e3.settings) && e3.settings.length > 0);
4693
+ }, e.hasProhibitedUrlScheme = Te, e.isArray = Re, e.isExceptionOfType = ye, e.isInternalServerError = Ie, e.isInvalidClientException = Se, e.isInvalidParameterException = be, e.isRgbColor = ue, e.keepElementInView = function(e2) {
4571
4694
  if (!e2) return;
4572
- let t2 = me(e2);
4695
+ let t2 = ve(e2);
4573
4696
  if (!t2) return;
4574
4697
  let i2 = e2.offsetTop, n2 = i2 + e2.offsetHeight, r2 = t2.scrollTop + t2.offsetHeight;
4575
4698
  i2 < t2.scrollTop ? t2.scrollTop = i2 : n2 > r2 && (t2.scrollTop += n2 - r2);
4576
- }, e.parseToLocalDate = Ae, e.prependHtml = ge, e.removeClass = re, e.reportSourcesAreEqual = function(e2) {
4699
+ }, e.parseToLocalDate = ke, e.prependHtml = fe, e.removeClass = se, e.reportSourcesAreEqual = function(e2) {
4577
4700
  const t2 = e2.firstReportSource, i2 = e2.secondReportSource;
4578
4701
  if (t2 && i2 && t2.report === i2.report) {
4579
4702
  let e3 = "";
@@ -4582,12 +4705,27 @@ ${e3.text} (${e3.id})`;
4582
4705
  return i2.parameters && (n2 = JSON.stringify(i2.parameters)), e3 === n2;
4583
4706
  }
4584
4707
  return false;
4585
- }, e.scaleElement = le, e.stringFormat = be, e.throttle = Pe, e.toPixel = ae, e.toRgbColor = ce, e.tryParseFloat = Re, e.tryParseInt = Te, Object.defineProperty(e, "__esModule", { value: true });
4708
+ }, e.scaleElement = he, e.splitPascalCase = function(e2) {
4709
+ return e2.replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/([A-Z])([A-Z][a-z])/g, "$1 $2");
4710
+ }, e.stringFormat = we, e.throttle = Ce, e.toPixel = le, e.toRgbColor = de, e.tryParseFloat = Me, e.tryParseInt = Ee, Object.defineProperty(e, "__esModule", { value: true });
4586
4711
  });
4587
4712
  })(dist, dist.exports);
4588
4713
  var distExports = dist.exports;
4589
4714
 
4590
4715
  var stringFormatRegExp = /{(\w+?)}/g;
4716
+ var renderingExtensionIconClasses = {
4717
+ PDF: "rendering-extension-pdf-icon",
4718
+ IMAGE: "rendering-extension-image-icon",
4719
+ CSV: "rendering-extension-csv-icon",
4720
+ DOCX: "rendering-extension-docx-icon",
4721
+ MHTML: "rendering-extension-mhtml-icon",
4722
+ PPTX: "rendering-extension-pptx-icon",
4723
+ RTF: "rendering-extension-rtf-icon",
4724
+ XLS: "rendering-extension-xls-icon",
4725
+ XLSX: "rendering-extension-xlsx-icon",
4726
+ XPS: "rendering-extension-xps-icon"
4727
+ };
4728
+ var exportOptionsIconClass = "rendering-extension-options-icon";
4591
4729
  var specialKeys = {
4592
4730
  DELETE: 46,
4593
4731
  BACKSPACE: 8,
@@ -4650,6 +4788,12 @@ ${e3.text} (${e3.id})`;
4650
4788
  return v.toString(16);
4651
4789
  });
4652
4790
  }
4791
+ function getRenderingExtensionIconClass(format) {
4792
+ return typeof format === "string" ? renderingExtensionIconClasses[format.toUpperCase()] || "" : "";
4793
+ }
4794
+ function getExportOptionsIconClass() {
4795
+ return exportOptionsIconClass;
4796
+ }
4653
4797
  function trim(s, charlist) {
4654
4798
  return rTrim(lTrim(s, charlist), charlist);
4655
4799
  }
@@ -4824,6 +4968,8 @@ ${e3.text} (${e3.id})`;
4824
4968
  isSpecialKey,
4825
4969
  rectangle,
4826
4970
  generateGuidString,
4971
+ getRenderingExtensionIconClass,
4972
+ getExportOptionsIconClass,
4827
4973
  trim,
4828
4974
  replaceAll,
4829
4975
  lTrim,
@@ -5197,6 +5343,22 @@ ${e3.text} (${e3.id})`;
5197
5343
  if (!historyManager) {
5198
5344
  throw "No options.history.";
5199
5345
  }
5346
+ var exportSettingsStore = options.exportSettingsStore;
5347
+ var exportDialogEnabled = Boolean(options.exportDialog.enabled);
5348
+ var hasConfigurableExportSettings = false;
5349
+ var openExportDialogCommand = new Command(() => {
5350
+ if (exportDialogEnabled && hasConfigurableExportSettings) {
5351
+ notificationService.setExportDialogVisible({ visible: true });
5352
+ }
5353
+ }).setEnabled(false);
5354
+ controller.on("beginLoadReport", () => {
5355
+ hasConfigurableExportSettings = false;
5356
+ openExportDialogCommand.setEnabled(false);
5357
+ }).onAsync("reportLoadComplete", async (info) => {
5358
+ const extensions = Array.isArray(info?.renderingExtensions) ? info.renderingExtensions : await Promise.resolve(controller.getDocumentFormats());
5359
+ hasConfigurableExportSettings = distExports.hasExportSettings(extensions);
5360
+ openExportDialogCommand.setEnabled(exportDialogEnabled && hasConfigurableExportSettings);
5361
+ });
5200
5362
  function getDocumentMapVisible() {
5201
5363
  var args = {};
5202
5364
  notificationService.getDocumentMapState(args);
@@ -5257,9 +5419,16 @@ ${e3.text} (${e3.id})`;
5257
5419
  }),
5258
5420
  "export": new Command((format) => {
5259
5421
  if (format) {
5260
- controller.exportReport(format);
5422
+ Promise.resolve(controller.getDocumentFormats()).then((formats) => {
5423
+ const extension = (formats || []).find((item) => item.name === format);
5424
+ const deviceInfo = extension && exportSettingsStore ? exportSettingsStore.getDeviceInfo(format, extension.settings || []) : {};
5425
+ controller.exportReport(format, deviceInfo);
5426
+ }).catch((error) => {
5427
+ controller.trigger("error", { message: error });
5428
+ });
5261
5429
  }
5262
5430
  }),
5431
+ "openExportDialog": openExportDialogCommand,
5263
5432
  "print": new Command(() => {
5264
5433
  controller.printReport();
5265
5434
  }),
@@ -5618,6 +5787,18 @@ ${e3.text} (${e3.id})`;
5618
5787
  sendEmailFormatLabel: "Format:",
5619
5788
  sendEmailSendLabel: "Send",
5620
5789
  sendEmailCancelLabel: "Cancel",
5790
+ exportDialogSaveLabel: "Save",
5791
+ exportDialogCloseLabel: "Cancel",
5792
+ exportDialogFormatLabel: "Export format",
5793
+ exportOptionsLabel: "Export Options",
5794
+ exportDialogResetLabel: "Reset",
5795
+ exportDialogSettingsSuffix: " Settings",
5796
+ exportDialogDocumentationLabel: "Documentation",
5797
+ exportDialogTextPlaceholder: "Enter text",
5798
+ exportDialogNoSettings: "This export format has no configurable settings.",
5799
+ exportDialogPagesLabel: "Pages",
5800
+ exportDialogAllPagesLabel: "All Pages",
5801
+ exportDialogPageRangeLabel: "Page Range",
5621
5802
  // Accessibility string resources
5622
5803
  ariaLabelPageNumberSelector: "Page number selector. Showing page {0} of {1}.",
5623
5804
  ariaLabelPageNumberEditor: "Page number editor",
@@ -5645,6 +5826,8 @@ ${e3.text} (${e3.id})`;
5645
5826
  ariaLabelSearchDialogArea: "Search area",
5646
5827
  ariaLabelAiPromptDialogArea: "AI prompt area",
5647
5828
  ariaLabelSendEmailDialogArea: "Send email area",
5829
+ ariaLabelSearchDialogInput: "Search input",
5830
+ ariaLabelSearchDialogInputDropdown: "Previous searches",
5648
5831
  ariaLabelSearchDialogStop: "Stop search",
5649
5832
  ariaLabelSearchDialogOptions: "Search options",
5650
5833
  ariaLabelSearchDialogNavigateUp: "Navigate up",
@@ -5680,6 +5863,12 @@ ${e3.text} (${e3.id})`;
5680
5863
  ariaLabelSendEmailFormat: "Report format:",
5681
5864
  ariaLabelSendEmailSend: "Send email",
5682
5865
  ariaLabelSendEmailCancel: "Cancel sending email",
5866
+ // Export dialog accessibility resources
5867
+ ariaLabelExportDialogArea: "Export settings dialog",
5868
+ ariaLabelExportDialogFormat: "Export format",
5869
+ ariaLabelExportDialogSave: "Save export options",
5870
+ ariaLabelExportDialogClose: "Cancel export options",
5871
+ ariaLabelExportDialogReset: "Reset export settings",
5683
5872
  // Search dialog resources
5684
5873
  searchDialogTitle: "Search in report contents",
5685
5874
  searchDialogSearchInProgress: "searching...",
@@ -5695,11 +5884,14 @@ ${e3.text} (${e3.id})`;
5695
5884
  searchDialogPageText: "page",
5696
5885
  // Send Email dialog resources
5697
5886
  sendEmailDialogTitle: "Send Email",
5887
+ sendEmailDialogEmailBody: "Email body textarea",
5698
5888
  sendEmailValidationEmailRequired: "Email field is required",
5699
5889
  sendEmailValidationEmailFormat: "Email format is not valid",
5700
5890
  sendEmailValidationSingleEmail: "The field accepts a single email address only",
5701
5891
  sendEmailValidationFormatRequired: "Format field is required",
5702
5892
  errorSendingDocument: "Error sending report document (Report = '{0}').",
5893
+ // Export dialog resources
5894
+ exportDialogTitle: "Export Options",
5703
5895
  // AI Prompt dialog resources
5704
5896
  aiPromptDialogConsentTitle: "Before you start with AI",
5705
5897
  aiPromptDialogConsentAccept: "Consent",
@@ -7927,7 +8119,7 @@ ${e3.text} (${e3.id})`;
7927
8119
  "button": Button,
7928
8120
  "toggle-button": ToggleButton
7929
8121
  };
7930
- function replaceStringResources$3($search) {
8122
+ function replaceStringResources$4($search) {
7931
8123
  if (!$search) {
7932
8124
  return;
7933
8125
  }
@@ -7994,7 +8186,7 @@ ${e3.text} (${e3.id})`;
7994
8186
  if (this.initialized) {
7995
8187
  return;
7996
8188
  }
7997
- replaceStringResources$3(this.$element);
8189
+ replaceStringResources$4(this.$element);
7998
8190
  this._initDialog();
7999
8191
  this._initSearchbox();
8000
8192
  this._initResultsArea();
@@ -8082,6 +8274,9 @@ ${e3.text} (${e3.id})`;
8082
8274
  },
8083
8275
  select: this.processComboBoxEvent.bind(this)
8084
8276
  });
8277
+ this.kendoComboBox.element[0]?.setAttribute("aria-label", stringResources.ariaLabelSearchDialogInput);
8278
+ this.kendoComboBox.input[0]?.setAttribute("aria-label", stringResources.ariaLabelSearchDialogInput);
8279
+ this.kendoComboBox._arrow[0]?.setAttribute("aria-label", stringResources.ariaLabelSearchDialogInputDropdown);
8085
8280
  }
8086
8281
  _initDialog() {
8087
8282
  this.kendoSearchDialog = new kendo.ui.Window(this.element, {
@@ -8359,15 +8554,13 @@ ${e3.text} (${e3.id})`;
8359
8554
  }
8360
8555
  if (show) {
8361
8556
  $errorIcon[0].title = message;
8362
- $errorIcon.show();
8363
- } else {
8364
- $errorIcon.hide();
8365
8557
  }
8558
+ $errorIcon.toggleClass("k-hidden", !show);
8366
8559
  }
8367
8560
  }
8368
8561
 
8369
8562
  var defaultOptions$1 = {};
8370
- function replaceStringResources$2($sendEmailDialog) {
8563
+ function replaceStringResources$3($sendEmailDialog) {
8371
8564
  if (!$sendEmailDialog) {
8372
8565
  return;
8373
8566
  }
@@ -8457,7 +8650,7 @@ ${e3.text} (${e3.id})`;
8457
8650
  if (this.initialized) {
8458
8651
  return;
8459
8652
  }
8460
- replaceStringResources$2(this.$element);
8653
+ replaceStringResources$3(this.$element);
8461
8654
  this.controller.getDocumentFormats().then((formats) => {
8462
8655
  this.docFormatList = formats;
8463
8656
  this.docFormat?.setDataSource(this.docFormatList);
@@ -8597,6 +8790,7 @@ ${e3.text} (${e3.id})`;
8597
8790
  }
8598
8791
  element.setAttribute("id", `${prefix}-${attrName}`);
8599
8792
  element.setAttribute("name", `${prefix}-${attrName}`);
8793
+ element.setAttribute("aria-label", stringResources.sendEmailDialogEmailBody);
8600
8794
  });
8601
8795
  Array.from(this.element.querySelectorAll(".trv-send-email-label label")).forEach((element) => {
8602
8796
  var attrFor = element.getAttribute("for");
@@ -8748,6 +8942,576 @@ ${e3.text} (${e3.id})`;
8748
8942
  }
8749
8943
  }
8750
8944
 
8945
+ const PAGE_SELECTION_FIELD = "__trvPageSelection";
8946
+ function replaceStringResources$2($dialog) {
8947
+ if (!$dialog) {
8948
+ return;
8949
+ }
8950
+ const labels = $dialog.find(".trv-replace-string");
8951
+ if (labels.length) {
8952
+ Array.from(labels).forEach((element) => {
8953
+ const $element = $(element);
8954
+ const stringResource = stringResources[$element.text()];
8955
+ if (stringResource) {
8956
+ $element.text(stringResource);
8957
+ }
8958
+ });
8959
+ }
8960
+ const ariaLabels = $dialog.find("[aria-label]").add($dialog);
8961
+ if (ariaLabels.length) {
8962
+ Array.from(ariaLabels).forEach((element) => {
8963
+ const $element = $(element);
8964
+ const stringResource = stringResources[$element.attr("aria-label")];
8965
+ if (stringResource) {
8966
+ $element.attr("aria-label", stringResource);
8967
+ }
8968
+ });
8969
+ }
8970
+ }
8971
+ function isPasswordSetting(name) {
8972
+ return typeof name === "string" && name.toLowerCase().includes("password");
8973
+ }
8974
+ function createEditorInput(container, options, type) {
8975
+ return $("<input />").attr({
8976
+ id: options.field,
8977
+ name: options.field,
8978
+ type,
8979
+ "data-bind": `${type === "checkbox" ? "checked" : "value"}:${options.field}`
8980
+ }).appendTo(container);
8981
+ }
8982
+ function createPasswordEditor(container, options) {
8983
+ createEditorInput(container, options, "password").attr("autocomplete", "new-password").kendoTextBox({ enable: options.editorOptions.enabled });
8984
+ }
8985
+ function createDropDownEditor(container, options) {
8986
+ createEditorInput(container, options, "text").kendoDropDownList({
8987
+ dataSource: options.editorOptions.dataSource,
8988
+ enable: options.editorOptions.enabled
8989
+ });
8990
+ }
8991
+ function createCheckBoxEditor(container, options) {
8992
+ container.closest(".k-form-field").addClass("trv-export-boolean-field");
8993
+ createEditorInput(container, options, "checkbox").kendoCheckBox({
8994
+ enabled: options.editorOptions.enabled
8995
+ });
8996
+ }
8997
+ function createNumericEditor(container, options) {
8998
+ createEditorInput(container, options, "text").kendoNumericTextBox({
8999
+ format: "n0",
9000
+ decimals: 0,
9001
+ min: 0,
9002
+ step: 1,
9003
+ autoAdjust: true,
9004
+ enable: options.editorOptions.enabled
9005
+ });
9006
+ }
9007
+ function createTextEditor(container, options) {
9008
+ createEditorInput(container, options, "text").kendoTextBox({
9009
+ placeholder: stringResources.exportDialogTextPlaceholder,
9010
+ enable: options.editorOptions.enabled
9011
+ });
9012
+ }
9013
+ function createPageSelectionEditor(container, options) {
9014
+ const optionName = `${options.field}-${kendo.guid()}`;
9015
+ container.closest(".k-form-field").addClass("trv-export-page-selection");
9016
+ [
9017
+ { selected: false, text: options.editorOptions.allPagesLabel },
9018
+ { selected: true, text: options.editorOptions.pageRangeLabel }
9019
+ ].forEach((pageOption) => {
9020
+ const inputId = kendo.guid();
9021
+ const option = $('<label class="trv-export-page-option"></label>').appendTo(container);
9022
+ const input = $('<input type="radio" />').attr({
9023
+ id: inputId,
9024
+ name: optionName,
9025
+ [kendo.attr("skip")]: true
9026
+ }).appendTo(option).kendoRadioButton({ checked: pageOption.selected === options.editorOptions.pageRangeSelected });
9027
+ $("<span></span>").text(pageOption.text).appendTo(option);
9028
+ input.on("change", () => options.editorOptions.change(pageOption.selected, options.model));
9029
+ });
9030
+ }
9031
+ class ExportDialog {
9032
+ // #region fields
9033
+ // #endregion
9034
+ // #region constructor
9035
+ constructor(element, options, viewerOptions) {
9036
+ this.options = options;
9037
+ this.viewerOptions = viewerOptions;
9038
+ this.element = element;
9039
+ this.$element = $(element);
9040
+ this.controller = options.controller;
9041
+ this.notificationService = options.notificationService;
9042
+ this.exportSettingsStore = options.exportSettingsStore;
9043
+ this.initialized = false;
9044
+ this.dialogVisible = false;
9045
+ this.format = "";
9046
+ this.formats = [];
9047
+ this.pendingValues = {};
9048
+ this.initialValues = {};
9049
+ this.formatDrawer = void 0;
9050
+ this.settingsForm = void 0;
9051
+ this.currentValues = void 0;
9052
+ this.pagingSettingNames = [];
9053
+ this.windowLocation = void 0;
9054
+ if (!this.controller) {
9055
+ throw "No controller (telerikReporting.ReportViewerController) has been specified.";
9056
+ }
9057
+ if (!this.notificationService) {
9058
+ throw "No notificationService (telerikReporting.NotificationService) has been specified.";
9059
+ }
9060
+ this.init();
9061
+ }
9062
+ // #endregion
9063
+ // #region methods
9064
+ init() {
9065
+ if (this.initialized) {
9066
+ return;
9067
+ }
9068
+ replaceStringResources$2(this.$element);
9069
+ this.$settingsContainer = this.$element.find(".trv-export-dialog-settings");
9070
+ this.$noSettingsMessage = this.$element.find(".trv-export-dialog-no-settings");
9071
+ this.$formatSelector = this.$element.find(".trv-export-dialog-formats");
9072
+ this._initDialog();
9073
+ this._attachCommands();
9074
+ this._attachEvents();
9075
+ this.initialized = true;
9076
+ }
9077
+ _initDialog() {
9078
+ this.phoneViewport = this.isPhoneViewport();
9079
+ this.kendoExportDialog = new kendo.ui.Window(this.element, {
9080
+ title: stringResources.exportDialogTitle,
9081
+ visible: false,
9082
+ draggable: !this.phoneViewport,
9083
+ resizable: true,
9084
+ modal: true,
9085
+ close: () => {
9086
+ this.storeDialogPosition();
9087
+ },
9088
+ open: () => {
9089
+ this.updateDialogViewport();
9090
+ this.adjustDialogPosition();
9091
+ },
9092
+ resize: () => {
9093
+ kendo.resize(this.$element, true);
9094
+ },
9095
+ deactivate: () => {
9096
+ this.notificationService.setExportDialogVisible({ visible: false });
9097
+ }
9098
+ });
9099
+ this.kendoExportDialog.element.removeClass("trv-export-dialog k-hidden");
9100
+ this.kendoExportDialog.wrapper.addClass("trv-export-dialog");
9101
+ this.kendoExportDialog.wrapper.find(".k-window-title").prepend(
9102
+ $('<span aria-hidden="true"></span>').addClass(
9103
+ `k-sprite rendering-extension-icon ${getExportOptionsIconClass()}`
9104
+ )
9105
+ );
9106
+ this.$element.find(".trv-export-dialog-reset").kendoButton({
9107
+ icon: "arrow-rotate-cw",
9108
+ fillMode: "flat",
9109
+ themeColor: "base"
9110
+ });
9111
+ this.$element.find(".trv-export-dialog-documentation").attr("title", stringResources.exportDialogDocumentationLabel).prepend(kendo.ui.icon({ icon: "hyperlink-open" }));
9112
+ this.$element.find('[data-command="telerik_ReportViewer_exportDialog_Close"]').kendoButton({
9113
+ fillMode: "solid",
9114
+ themeColor: "base"
9115
+ });
9116
+ this.$element.find('[data-command="telerik_ReportViewer_exportDialog_Save"]').kendoButton({
9117
+ fillMode: "solid",
9118
+ themeColor: "primary"
9119
+ });
9120
+ this.$settingsContainer.kendoTooltip({
9121
+ filter: ".trv-export-setting-info",
9122
+ showOn: "mouseenter focus",
9123
+ position: "top",
9124
+ content: (event) => $('<span class="trv-export-setting-tooltip-text"></span>').text(event.target.attr("data-description") || "")[0].outerHTML
9125
+ });
9126
+ }
9127
+ _attachCommands() {
9128
+ this.optionsCommandSet = {
9129
+ "exportDialog_Close": new Command(() => {
9130
+ this.close();
9131
+ }),
9132
+ "exportDialog_Save": new Command(() => {
9133
+ this.save();
9134
+ }),
9135
+ "exportDialog_Reset": new Command(() => {
9136
+ this.reset();
9137
+ })
9138
+ };
9139
+ Binder.attachCommands(this.$element.find(".trv-export-dialog-layout"), this.optionsCommandSet, this.viewerOptions);
9140
+ }
9141
+ _attachEvents() {
9142
+ this.controller.on("beginLoadReport", this.close.bind(this)).on("viewModeChanged", this.close.bind(this));
9143
+ this.notificationService.setExportDialogVisible((event, args) => {
9144
+ if (args && args.visible === true) {
9145
+ this.open(args.format);
9146
+ } else {
9147
+ this.close();
9148
+ }
9149
+ });
9150
+ $(window).on("resize", () => {
9151
+ if (this.kendoExportDialog && this.kendoExportDialog.options.visible) {
9152
+ if (!this.phoneViewport) {
9153
+ this.storeDialogPosition();
9154
+ }
9155
+ this.updateDialogViewport();
9156
+ this.adjustDialogPosition();
9157
+ }
9158
+ });
9159
+ }
9160
+ isPhoneViewport() {
9161
+ return $(window).innerWidth() <= 767;
9162
+ }
9163
+ updateDialogViewport() {
9164
+ const phone = this.isPhoneViewport();
9165
+ if (phone !== this.phoneViewport) {
9166
+ this.phoneViewport = phone;
9167
+ this.kendoExportDialog.setOptions({ draggable: !phone });
9168
+ }
9169
+ this.updateFormatDrawerForViewport();
9170
+ kendo.resize(this.$element, true);
9171
+ }
9172
+ open() {
9173
+ this.dialogVisible = false;
9174
+ const formatsPromise = this.controller.getDocumentFormats();
9175
+ Promise.resolve(formatsPromise).then((formats) => {
9176
+ if (!distExports.hasExportSettings(formats)) {
9177
+ return;
9178
+ }
9179
+ this.dialogVisible = true;
9180
+ this.pendingValues = {};
9181
+ this.initialValues = {};
9182
+ this.formats = formats || [];
9183
+ this.buildFormatDrawer();
9184
+ this.kendoExportDialog.open();
9185
+ });
9186
+ }
9187
+ close() {
9188
+ this.dialogVisible = false;
9189
+ this.pendingValues = {};
9190
+ this.initialValues = {};
9191
+ this.destroySettingsForm();
9192
+ if (this.kendoExportDialog && this.kendoExportDialog.options.visible) {
9193
+ this.kendoExportDialog.close();
9194
+ }
9195
+ }
9196
+ buildFormatDrawer() {
9197
+ const selectedFormat = this.formats.some((item) => item.name === this.format) ? this.format : this.formats[0]?.name;
9198
+ const drawerItems = this.formats.map((format) => ({
9199
+ format: format.name,
9200
+ text: format.localizedName,
9201
+ selected: format.name === selectedFormat,
9202
+ miniTemplate: () => {
9203
+ const iconClass = getRenderingExtensionIconClass(format.name);
9204
+ const icon = iconClass ? `<span aria-hidden="true" class="k-sprite rendering-extension-icon ${iconClass}"></span>` : `<span aria-hidden="true">${kendo.htmlEncode(format.name.slice(0, 3))}</span>`;
9205
+ return `<li data-role="drawer-item">${icon}</li>`;
9206
+ }
9207
+ }));
9208
+ if (this.formatDrawer) {
9209
+ this.formatDrawer.setOptions({ items: drawerItems });
9210
+ } else {
9211
+ this.formatDrawer = this.$formatSelector.kendoDrawer({
9212
+ items: drawerItems,
9213
+ mode: "push",
9214
+ position: "left",
9215
+ width: 240,
9216
+ mini: { width: 48 },
9217
+ expanded: !this.isPhoneViewport(),
9218
+ autoCollapse: false,
9219
+ swipeToOpen: false,
9220
+ navigatable: true,
9221
+ itemClick: (event) => {
9222
+ if (event.dataItem?.format) {
9223
+ this.showFormat(event.dataItem.format);
9224
+ }
9225
+ }
9226
+ }).data("kendoDrawer");
9227
+ }
9228
+ this.updateFormatDrawerForViewport();
9229
+ this.renderFormatDrawerIcons();
9230
+ this.showFormat(selectedFormat);
9231
+ }
9232
+ updateFormatDrawerForViewport() {
9233
+ if (!this.formatDrawer) {
9234
+ return;
9235
+ }
9236
+ if (this.isPhoneViewport() && this.formatDrawer.visible) {
9237
+ this.formatDrawer.hide();
9238
+ } else if (!this.isPhoneViewport() && !this.formatDrawer.visible) {
9239
+ this.formatDrawer.show();
9240
+ }
9241
+ if (this.formatDrawer.visible) {
9242
+ this.renderFormatDrawerIcons();
9243
+ }
9244
+ }
9245
+ renderFormatDrawerIcons() {
9246
+ if (!this.formatDrawer.visible) {
9247
+ return;
9248
+ }
9249
+ const drawerElements = this.formatDrawer.drawerItemsWrapper.find('[data-role="drawer-item"]');
9250
+ drawerElements.each((index, element) => {
9251
+ const format = this.formats[index];
9252
+ const iconClass = getRenderingExtensionIconClass(format?.name);
9253
+ const $element = $(element);
9254
+ $element.find(".k-item-text").attr("title", format?.localizedName || "");
9255
+ if (iconClass && !$element.find(".rendering-extension-icon").length) {
9256
+ $element.prepend(
9257
+ $('<span aria-hidden="true"></span>').addClass(
9258
+ `k-sprite rendering-extension-icon ${iconClass}`
9259
+ )
9260
+ );
9261
+ }
9262
+ });
9263
+ }
9264
+ showFormat(format) {
9265
+ this.capturePendingValues();
9266
+ this.format = format;
9267
+ const extension = this.formats.find((item) => item.name === format);
9268
+ this.$element.find(".trv-export-dialog-format-name").text(
9269
+ `${extension?.localizedName || format || ""}${stringResources.exportDialogSettingsSuffix}`
9270
+ );
9271
+ this.$element.find(".trv-export-dialog-reset").attr("title", stringResources.ariaLabelExportDialogReset);
9272
+ this.buildSettingsForm(extension ? extension.settings : []);
9273
+ }
9274
+ buildSettingsForm(settings) {
9275
+ this.destroySettingsForm();
9276
+ if (!settings || settings.length === 0) {
9277
+ this.$noSettingsMessage.removeClass("k-hidden");
9278
+ return;
9279
+ }
9280
+ this.$noSettingsMessage.addClass("k-hidden");
9281
+ if (!kendo.ui.Form) {
9282
+ console.error("The Kendo UI Form widget is not available. Export settings cannot be displayed.");
9283
+ this.$noSettingsMessage.removeClass("k-hidden");
9284
+ return;
9285
+ }
9286
+ const formData = {};
9287
+ const groups = /* @__PURE__ */ new Map();
9288
+ settings.forEach((setting) => {
9289
+ const pendingValues = this.pendingValues[this.format];
9290
+ const savedValue = this.exportSettingsStore ? this.exportSettingsStore.getValue(this.format, setting) : setting.value;
9291
+ const initialValue = pendingValues && Object.prototype.hasOwnProperty.call(pendingValues, setting.name) ? pendingValues[setting.name] : savedValue ?? this.getDefaultValue(setting.type);
9292
+ const groupName = setting.group?.trim() || "General";
9293
+ const groupSettings = groups.get(groupName) || [];
9294
+ formData[setting.name] = initialValue;
9295
+ groupSettings.push(setting);
9296
+ groups.set(groupName, groupSettings);
9297
+ });
9298
+ const pageRangeSelected = Number(formData.StartPage) > 0;
9299
+ if (!Object.prototype.hasOwnProperty.call(this.initialValues, this.format)) {
9300
+ this.initialValues[this.format] = { ...formData };
9301
+ }
9302
+ this.currentValues = { ...formData };
9303
+ formData[PAGE_SELECTION_FIELD] = pageRangeSelected;
9304
+ const formElement = $('<div class="trv-export-settings-form"></div>').appendTo(this.$settingsContainer.empty());
9305
+ const items = Array.from(groups, ([name, groupSettings]) => {
9306
+ const isPagingGroup = name === "Paging";
9307
+ const groupItems = groupSettings.map((setting) => this.createFormItem(setting));
9308
+ if (isPagingGroup) {
9309
+ this.pagingSettingNames = groupSettings.map((setting) => setting.name);
9310
+ groupItems.reverse();
9311
+ groupItems.unshift(this.createPageSelectionFormItem(pageRangeSelected));
9312
+ }
9313
+ return {
9314
+ type: "group",
9315
+ label: name,
9316
+ layout: "grid",
9317
+ grid: { cols: 1, gutter: 12 },
9318
+ items: groupItems
9319
+ };
9320
+ });
9321
+ this.settingsForm = formElement.kendoForm({
9322
+ formData: { ...formData },
9323
+ items,
9324
+ renderButtons: false,
9325
+ focusFirst: false,
9326
+ validatable: {
9327
+ validateOnBlur: false,
9328
+ validationSummary: false
9329
+ },
9330
+ change: (event) => {
9331
+ if (event.field !== PAGE_SELECTION_FIELD) {
9332
+ this.currentValues[event.field] = event.value;
9333
+ }
9334
+ }
9335
+ }).data("kendoForm");
9336
+ this.renderSettingInfoIcons(settings);
9337
+ this.togglePagingSettings(pageRangeSelected);
9338
+ }
9339
+ renderSettingInfoIcons(settings) {
9340
+ settings.forEach((setting) => {
9341
+ if (!setting.description) {
9342
+ return;
9343
+ }
9344
+ const label = this.$settingsContainer.find(".k-form-label").filter((index, element) => element.htmlFor === setting.name);
9345
+ const info = $('<span class="trv-export-setting-info" tabindex="0" role="img"></span>').attr({
9346
+ "aria-label": setting.description,
9347
+ "data-description": setting.description
9348
+ }).append(kendo.ui.icon({ icon: "info-circle", type: "font" })).on("click", (event) => event.preventDefault());
9349
+ label.append(info);
9350
+ });
9351
+ }
9352
+ createPageSelectionFormItem(pageRangeSelected) {
9353
+ return {
9354
+ field: PAGE_SELECTION_FIELD,
9355
+ label: stringResources.exportDialogPagesLabel,
9356
+ editor: createPageSelectionEditor,
9357
+ editorOptions: {
9358
+ pageRangeSelected,
9359
+ allPagesLabel: stringResources.exportDialogAllPagesLabel,
9360
+ pageRangeLabel: stringResources.exportDialogPageRangeLabel,
9361
+ change: (selected, model) => this.onPageSelectionChange(selected, model)
9362
+ }
9363
+ };
9364
+ }
9365
+ onPageSelectionChange(pageRangeSelected, model) {
9366
+ model.set(PAGE_SELECTION_FIELD, pageRangeSelected);
9367
+ if (pageRangeSelected) {
9368
+ if (this.pagingSettingNames.includes("StartPage") && Number(model.get("StartPage")) <= 0) {
9369
+ model.set("StartPage", 1);
9370
+ }
9371
+ } else {
9372
+ if (this.pagingSettingNames.includes("StartPage")) {
9373
+ model.set("StartPage", 0);
9374
+ }
9375
+ if (this.pagingSettingNames.includes("EndPage")) {
9376
+ model.set("EndPage", 0);
9377
+ }
9378
+ }
9379
+ this.togglePagingSettings(pageRangeSelected);
9380
+ }
9381
+ togglePagingSettings(pageRangeSelected) {
9382
+ this.pagingSettingNames.forEach((name) => {
9383
+ this.$settingsContainer.find(`[data-container-for="${name}"]`).closest(".k-form-field").toggleClass("k-hidden", !pageRangeSelected);
9384
+ });
9385
+ }
9386
+ createFormItem(setting) {
9387
+ const item = {
9388
+ field: setting.name,
9389
+ label: this.getSettingLabel(setting.name),
9390
+ editorOptions: {
9391
+ enabled: !setting.readOnly
9392
+ }
9393
+ };
9394
+ if (isPasswordSetting(setting.name)) {
9395
+ item.editor = createPasswordEditor;
9396
+ } else if (Array.isArray(setting.availableValues) && setting.availableValues.length > 0) {
9397
+ item.editor = createDropDownEditor;
9398
+ item.editorOptions.dataSource = [...setting.availableValues];
9399
+ } else {
9400
+ switch (setting.type) {
9401
+ case "boolean":
9402
+ item.editor = createCheckBoxEditor;
9403
+ break;
9404
+ case "number":
9405
+ item.editor = createNumericEditor;
9406
+ break;
9407
+ default:
9408
+ item.editor = createTextEditor;
9409
+ break;
9410
+ }
9411
+ }
9412
+ return item;
9413
+ }
9414
+ capturePendingValues() {
9415
+ if (this.currentValues && this.format) {
9416
+ this.pendingValues[this.format] = { ...this.currentValues };
9417
+ }
9418
+ }
9419
+ reset() {
9420
+ if (!this.format || !this.exportSettingsStore?.resetValues(this.format)) {
9421
+ return;
9422
+ }
9423
+ delete this.pendingValues[this.format];
9424
+ delete this.initialValues[this.format];
9425
+ const extension = this.formats.find((item) => item.name === this.format);
9426
+ this.buildSettingsForm(extension ? extension.settings : []);
9427
+ }
9428
+ save() {
9429
+ this.capturePendingValues();
9430
+ let saved = true;
9431
+ this.formats.forEach((extension) => {
9432
+ const values = this.pendingValues[extension.name];
9433
+ if (values && this.exportSettingsStore) {
9434
+ const initialValues = this.initialValues[extension.name] || {};
9435
+ const changedValues = {};
9436
+ Object.keys(values).forEach((name) => {
9437
+ if (values[name] !== initialValues[name]) {
9438
+ changedValues[name] = values[name];
9439
+ }
9440
+ });
9441
+ saved = this.exportSettingsStore.saveValues(
9442
+ extension.name,
9443
+ extension.settings || [],
9444
+ changedValues
9445
+ ) && saved;
9446
+ if (saved) {
9447
+ this.initialValues[extension.name] = { ...values };
9448
+ }
9449
+ }
9450
+ });
9451
+ if (saved) {
9452
+ this.close();
9453
+ }
9454
+ }
9455
+ getDefaultValue(settingType) {
9456
+ switch (settingType) {
9457
+ case "boolean":
9458
+ return false;
9459
+ case "number":
9460
+ return null;
9461
+ default:
9462
+ return "";
9463
+ }
9464
+ }
9465
+ getSettingLabel(name) {
9466
+ return stringResources["exportSetting_" + name] || distExports.splitPascalCase(name);
9467
+ }
9468
+ destroySettingsForm() {
9469
+ if (this.settingsForm) {
9470
+ this.settingsForm.destroy();
9471
+ this.settingsForm = void 0;
9472
+ }
9473
+ this.currentValues = void 0;
9474
+ this.pagingSettingNames = [];
9475
+ if (this.$settingsContainer) {
9476
+ this.$settingsContainer.empty();
9477
+ }
9478
+ }
9479
+ storeDialogPosition() {
9480
+ if (this.phoneViewport) {
9481
+ return;
9482
+ }
9483
+ const kendoWindow = this.kendoExportDialog.element.parent(".k-window");
9484
+ this.windowLocation = kendoWindow.offset();
9485
+ }
9486
+ adjustDialogPosition() {
9487
+ if (this.phoneViewport) {
9488
+ return;
9489
+ }
9490
+ const windowWidth = $(window).innerWidth();
9491
+ const windowHeight = $(window).innerHeight();
9492
+ const width = this.kendoExportDialog.wrapper.outerWidth(true);
9493
+ const height = this.kendoExportDialog.wrapper.outerHeight(true);
9494
+ const padding = 10;
9495
+ if (!this.windowLocation) {
9496
+ this.kendoExportDialog.center();
9497
+ return;
9498
+ }
9499
+ let left = this.windowLocation.left;
9500
+ let top = this.windowLocation.top;
9501
+ const right = left + width;
9502
+ const bottom = top + height;
9503
+ if (right > windowWidth - padding) {
9504
+ left = Math.max(padding, windowWidth - width - padding);
9505
+ this.kendoExportDialog.setOptions({ position: { left } });
9506
+ }
9507
+ if (bottom > windowHeight - padding) {
9508
+ top = Math.max(padding, windowHeight - height - padding);
9509
+ this.kendoExportDialog.setOptions({ position: { top } });
9510
+ }
9511
+ }
9512
+ // #endregion
9513
+ }
9514
+
8751
9515
  function getEventHandlerFromArguments(args) {
8752
9516
  var arg0;
8753
9517
  if (args && args.length) {
@@ -8824,6 +9588,7 @@ ${e3.text} (${e3.id})`;
8824
9588
  GET_SEND_EMAIL_DIALOG_STATE: "trv.GET_SEND_EMAIL_DIALOG_STATE",
8825
9589
  SET_SEARCH_DIALOG_VISIBLE: "trv.SET_SEARCH_DIALOG_VISIBLE",
8826
9590
  SET_SEND_EMAIL_DIALOG_VISIBLE: "trv.SET_SEND_EMAIL_DIALOG_VISIBLE",
9591
+ SET_EXPORT_DIALOG_VISIBLE: "trv.SET_EXPORT_DIALOG_VISIBLE",
8827
9592
  SET_AI_PROMPT_DIALOG_VISIBLE: "trv.SET_AI_PROMPT_DIALOG_VISIBLE"
8828
9593
  };
8829
9594
  on() {
@@ -8866,6 +9631,9 @@ ${e3.text} (${e3.id})`;
8866
9631
  setSendEmailDialogVisible() {
8867
9632
  return this.eventFactory(this.Events.SET_SEND_EMAIL_DIALOG_VISIBLE, arguments);
8868
9633
  }
9634
+ setExportDialogVisible() {
9635
+ return this.eventFactory(this.Events.SET_EXPORT_DIALOG_VISIBLE, arguments);
9636
+ }
8869
9637
  setAiPromptDialogVisible() {
8870
9638
  return this.eventFactory(this.Events.SET_AI_PROMPT_DIALOG_VISIBLE, arguments);
8871
9639
  }
@@ -8904,6 +9672,11 @@ ${e3.text} (${e3.id})`;
8904
9672
  // #endregion
8905
9673
  }
8906
9674
 
9675
+ const notificationWarningIcon = {
9676
+ name: "warning-circle",
9677
+ content: '<circle cx="256" cy="256" r="208" fill="none" stroke="currentColor" stroke-width="32" /><path d="M224 128h64v160h-64zm0 256v-64h64v64z" />',
9678
+ viewBox: "0 0 512 512"
9679
+ };
8907
9680
  const TemplateCache = /* @__PURE__ */ (function() {
8908
9681
  var cache = {};
8909
9682
  return {
@@ -8919,7 +9692,19 @@ ${e3.text} (${e3.id})`;
8919
9692
  var viewerTemplate = $("<div></div>").html(html);
8920
9693
  Array.from(viewerTemplate.find("template")).forEach((element) => {
8921
9694
  var $element = $(element);
8922
- templates[$element.attr("id")] = trim($element.html(), "\n ");
9695
+ var $content = $("<div></div>").html($element.html());
9696
+ $content.find("[data-svg-icon]").each((_, icon) => {
9697
+ var $icon = $(icon);
9698
+ var iconName = $icon.attr("data-svg-icon");
9699
+ var exportName = iconName.replace(/-([a-z])/g, (_2, letter) => letter.toUpperCase()) + "Icon";
9700
+ var svgIcon = iconName === "warning-circle" ? notificationWarningIcon : kendo.ui.svgIcons[exportName];
9701
+ if (!svgIcon) {
9702
+ throw new Error(`Kendo SVG icon not found: ${iconName}`);
9703
+ }
9704
+ kendo.ui.icon($icon, { icon: svgIcon, type: "svg" });
9705
+ $icon.removeAttr("data-svg-icon");
9706
+ });
9707
+ templates[$element.attr("id")] = trim($content.html(), "\n ");
8923
9708
  });
8924
9709
  Array.from(viewerTemplate.find("link")).forEach((element) => {
8925
9710
  styleSheets.push(trim(element.outerHTML, "\n "));
@@ -9110,9 +9895,10 @@ ${e3.text} (${e3.id})`;
9110
9895
  spin: this._onChange.bind(this)
9111
9896
  });
9112
9897
  this._numeric._text[0].dataset.role = "telerik_ReportViewer_PageNumberInput";
9898
+ this._numeric._text[0].setAttribute("aria-label", stringResources.ariaLabelPageNumberEditor);
9113
9899
  this._numeric.element[0].dataset.role = "";
9900
+ this._numeric.element[0].setAttribute("aria-label", stringResources.ariaLabelPageNumberEditor);
9114
9901
  this._numeric.wrapper[0].classList.add("trv-toolbar-numeric");
9115
- this._numeric._text[0].setAttribute("aria-label", stringResources.ariaLabelPageNumberEditor);
9116
9902
  this.options.controller.onAsync("reportLoadComplete", async (reportInfo) => {
9117
9903
  this._numeric.max(reportInfo.pageCount);
9118
9904
  this._numeric.min(Math.min(1, reportInfo.pageCount));
@@ -9277,6 +10063,7 @@ ${e3.text} (${e3.id})`;
9277
10063
  _options;
9278
10064
  /** @type {HTMLElement} */
9279
10065
  _element;
10066
+ _exportDialogEnabled;
9280
10067
  $element;
9281
10068
  _kendoToolbar;
9282
10069
  _neverOverflowToolBarButtons = ["goToPrevPage", "goToNextPage"];
@@ -9285,6 +10072,7 @@ ${e3.text} (${e3.id})`;
9285
10072
  constructor(element, options, viewerOptions) {
9286
10073
  this._element = element;
9287
10074
  this._options = options;
10075
+ this._exportDialogEnabled = Boolean(viewerOptions.exportDialog.enabled);
9288
10076
  this.$element = $(this._element);
9289
10077
  if (this._kendoToolbar === void 0) {
9290
10078
  this.initKendoToolbar();
@@ -9435,14 +10223,31 @@ ${e3.text} (${e3.id})`;
9435
10223
  return;
9436
10224
  }
9437
10225
  const exportDropdownItems = [];
9438
- extensions.forEach((extension) => exportDropdownItems.push({
9439
- id: extension.name,
9440
- text: extension.localizedName,
9441
- attributes: {
9442
- [ToolBarConstants.DataCommandAttr]: "export",
9443
- [ToolBarConstants.DataCommandParameterAttr]: extension.name
10226
+ extensions.forEach((extension) => {
10227
+ const iconClass = getRenderingExtensionIconClass(extension.name);
10228
+ const item = {
10229
+ id: extension.name,
10230
+ text: extension.localizedName,
10231
+ attributes: {
10232
+ [ToolBarConstants.DataCommandAttr]: "export",
10233
+ [ToolBarConstants.DataCommandParameterAttr]: extension.name
10234
+ }
10235
+ };
10236
+ if (iconClass) {
10237
+ item.spriteCssClass = `rendering-extension-icon ${iconClass}`;
9444
10238
  }
9445
- }));
10239
+ exportDropdownItems.push(item);
10240
+ });
10241
+ if (this._exportDialogEnabled && distExports.hasExportSettings(extensions)) {
10242
+ exportDropdownItems.push({
10243
+ text: stringResources.exportOptionsLabel,
10244
+ spriteCssClass: `rendering-extension-icon ${getExportOptionsIconClass()}`,
10245
+ attributes: {
10246
+ class: "trv-export-options-item",
10247
+ [ToolBarConstants.DataCommandAttr]: "openExportDialog"
10248
+ }
10249
+ });
10250
+ }
9446
10251
  const options = kendoExportDropDown.options;
9447
10252
  options.items = exportDropdownItems;
9448
10253
  kendoExportDropDown.setOptions(options);
@@ -10005,6 +10810,9 @@ ${e3.text} (${e3.id})`;
10005
10810
  searchMetadataOnDemand: false,
10006
10811
  initialPageAreaImageUrl: null,
10007
10812
  keepClientAlive: true,
10813
+ exportDialog: {
10814
+ enabled: true
10815
+ },
10008
10816
  webDesignerPreview: false,
10009
10817
  serverPreview: false
10010
10818
  };
@@ -10026,6 +10834,7 @@ ${e3.text} (${e3.id})`;
10026
10834
  var persistanceKey = options.id || "#" + $placeholder.attr("id");
10027
10835
  var accessibility;
10028
10836
  var settings = {};
10837
+ var exportSettingsStore = {};
10029
10838
  var notificationService = {};
10030
10839
  var client = {};
10031
10840
  var controllerOptions = {};
@@ -10039,8 +10848,10 @@ ${e3.text} (${e3.id})`;
10039
10848
  if (!validateOptions(options)) {
10040
10849
  return;
10041
10850
  }
10042
- var version = "20.2.26.812";
10043
- options = $.extend({}, getDefaultOptions(svcApiUrl, version), options);
10851
+ var version = "20.2.26.1007";
10852
+ var defaultOptions = getDefaultOptions(svcApiUrl, version);
10853
+ options = $.extend({}, defaultOptions, options);
10854
+ options.exportDialog = $.extend({}, defaultOptions.exportDialog, options.exportDialog);
10044
10855
  settings = new ReportViewerSettings(
10045
10856
  persistanceKey,
10046
10857
  options.persistSession ? window.sessionStorage : new MemStorage(),
@@ -10058,6 +10869,7 @@ ${e3.text} (${e3.id})`;
10058
10869
  serverPreview: options.serverPreview
10059
10870
  }
10060
10871
  );
10872
+ exportSettingsStore = new distExports.ExportSettingsStore();
10061
10873
  notificationService = new NotificationService();
10062
10874
  client = new distExports.ServiceClient(options);
10063
10875
  controllerOptions = new distExports.ReportControllerOptions(
@@ -10085,7 +10897,9 @@ ${e3.text} (${e3.id})`;
10085
10897
  commands = new CommandSet({
10086
10898
  controller,
10087
10899
  notificationService,
10088
- history
10900
+ history,
10901
+ exportSettingsStore,
10902
+ exportDialog: options.exportDialog
10089
10903
  });
10090
10904
  new UIController({
10091
10905
  controller,
@@ -10514,7 +11328,8 @@ ${e3.text} (${e3.id})`;
10514
11328
  controller,
10515
11329
  notificationService,
10516
11330
  commands,
10517
- templates
11331
+ templates,
11332
+ exportSettingsStore
10518
11333
  },
10519
11334
  options
10520
11335
  );
@@ -10991,6 +11806,10 @@ ${e3.text} (${e3.id})`;
10991
11806
  name: "telerik_ReportViewer_SendEmail",
10992
11807
  constructor: SendEmail
10993
11808
  },
11809
+ {
11810
+ name: "telerik_ReportViewer_ExportDialog",
11811
+ constructor: ExportDialog
11812
+ },
10994
11813
  {
10995
11814
  name: "telerik_ReportViewer_LinkButton",
10996
11815
  constructor: LinkButton