@progress/telerik-jquery-report-viewer 29.26.211 → 29.26.402

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.0.26.211 (https://www.telerik.com/products/reporting.aspx)
2
+ * TelerikReporting v20.0.26.402 (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.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */
16
+ /*! @license DOMPurify 3.3.2 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.2/LICENSE */
17
17
 
18
18
  var purify_cjs;
19
19
  var hasRequiredPurify_cjs;
@@ -49,12 +49,18 @@ var telerikReportViewer = (function (exports) {
49
49
  };
50
50
  }
51
51
  if (!apply) {
52
- apply = function apply(fun, thisValue, args) {
53
- return fun.apply(thisValue, args);
52
+ apply = function apply(func, thisArg) {
53
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
54
+ args[_key - 2] = arguments[_key];
55
+ }
56
+ return func.apply(thisArg, args);
54
57
  };
55
58
  }
56
59
  if (!construct) {
57
- construct = function construct(Func, args) {
60
+ construct = function construct(Func) {
61
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
62
+ args[_key2 - 1] = arguments[_key2];
63
+ }
58
64
  return new Func(...args);
59
65
  };
60
66
  }
@@ -83,8 +89,8 @@ var telerikReportViewer = (function (exports) {
83
89
  if (thisArg instanceof RegExp) {
84
90
  thisArg.lastIndex = 0;
85
91
  }
86
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
87
- args[_key - 1] = arguments[_key];
92
+ for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
93
+ args[_key3 - 1] = arguments[_key3];
88
94
  }
89
95
  return apply(func, thisArg, args);
90
96
  };
@@ -95,12 +101,12 @@ var telerikReportViewer = (function (exports) {
95
101
  * @param func - The constructor function to be wrapped and called.
96
102
  * @returns A new function that constructs an instance of the given constructor function with the provided arguments.
97
103
  */
98
- function unconstruct(func) {
104
+ function unconstruct(Func) {
99
105
  return function () {
100
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
101
- args[_key2] = arguments[_key2];
106
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
107
+ args[_key4] = arguments[_key4];
102
108
  }
103
- return construct(func, args);
109
+ return construct(Func, args);
104
110
  };
105
111
  }
106
112
  /**
@@ -199,8 +205,8 @@ var telerikReportViewer = (function (exports) {
199
205
  return fallbackValue;
200
206
  }
201
207
 
202
- const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);
203
- const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);
208
+ const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);
209
+ const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);
204
210
  const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);
205
211
  // List of SVG elements that are disallowed by default.
206
212
  // We still need to know them so that we can do namespace
@@ -213,8 +219,8 @@ var telerikReportViewer = (function (exports) {
213
219
  const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);
214
220
  const text = freeze(['#text']);
215
221
 
216
- const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);
217
- const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);
222
+ const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);
223
+ const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);
218
224
  const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);
219
225
  const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);
220
226
 
@@ -312,7 +318,7 @@ var telerikReportViewer = (function (exports) {
312
318
  function createDOMPurify() {
313
319
  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
314
320
  const DOMPurify = root => createDOMPurify(root);
315
- DOMPurify.version = '3.2.6';
321
+ DOMPurify.version = '3.3.2';
316
322
  DOMPurify.removed = [];
317
323
  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {
318
324
  // Not running in a browser, provide a factory function
@@ -423,6 +429,21 @@ var telerikReportViewer = (function (exports) {
423
429
  let FORBID_TAGS = null;
424
430
  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */
425
431
  let FORBID_ATTR = null;
432
+ /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */
433
+ const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {
434
+ tagCheck: {
435
+ writable: true,
436
+ configurable: false,
437
+ enumerable: true,
438
+ value: null
439
+ },
440
+ attributeCheck: {
441
+ writable: true,
442
+ configurable: false,
443
+ enumerable: true,
444
+ value: null
445
+ }
446
+ }));
426
447
  /* Decide if ARIA attributes are okay */
427
448
  let ALLOW_ARIA_ATTR = true;
428
449
  /* Decide if custom data attributes are okay */
@@ -592,7 +613,7 @@ var telerikReportViewer = (function (exports) {
592
613
  /* Parse profile info */
593
614
  if (USE_PROFILES) {
594
615
  ALLOWED_TAGS = addToSet({}, text);
595
- ALLOWED_ATTR = [];
616
+ ALLOWED_ATTR = create(null);
596
617
  if (USE_PROFILES.html === true) {
597
618
  addToSet(ALLOWED_TAGS, html$1);
598
619
  addToSet(ALLOWED_ATTR, html);
@@ -613,18 +634,33 @@ var telerikReportViewer = (function (exports) {
613
634
  addToSet(ALLOWED_ATTR, xml);
614
635
  }
615
636
  }
637
+ /* Prevent function-based ADD_ATTR / ADD_TAGS from leaking across calls */
638
+ if (!objectHasOwnProperty(cfg, 'ADD_TAGS')) {
639
+ EXTRA_ELEMENT_HANDLING.tagCheck = null;
640
+ }
641
+ if (!objectHasOwnProperty(cfg, 'ADD_ATTR')) {
642
+ EXTRA_ELEMENT_HANDLING.attributeCheck = null;
643
+ }
616
644
  /* Merge configuration parameters */
617
645
  if (cfg.ADD_TAGS) {
618
- if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
619
- ALLOWED_TAGS = clone(ALLOWED_TAGS);
646
+ if (typeof cfg.ADD_TAGS === 'function') {
647
+ EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;
648
+ } else {
649
+ if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
650
+ ALLOWED_TAGS = clone(ALLOWED_TAGS);
651
+ }
652
+ addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
620
653
  }
621
- addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
622
654
  }
623
655
  if (cfg.ADD_ATTR) {
624
- if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
625
- ALLOWED_ATTR = clone(ALLOWED_ATTR);
656
+ if (typeof cfg.ADD_ATTR === 'function') {
657
+ EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;
658
+ } else {
659
+ if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
660
+ ALLOWED_ATTR = clone(ALLOWED_ATTR);
661
+ }
662
+ addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
626
663
  }
627
- addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
628
664
  }
629
665
  if (cfg.ADD_URI_SAFE_ATTR) {
630
666
  addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
@@ -635,6 +671,12 @@ var telerikReportViewer = (function (exports) {
635
671
  }
636
672
  addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
637
673
  }
674
+ if (cfg.ADD_FORBID_CONTENTS) {
675
+ if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
676
+ FORBID_CONTENTS = clone(FORBID_CONTENTS);
677
+ }
678
+ addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);
679
+ }
638
680
  /* Add #text in case KEEP_CONTENT is set to true */
639
681
  if (KEEP_CONTENT) {
640
682
  ALLOWED_TAGS['#text'] = true;
@@ -932,7 +974,7 @@ var telerikReportViewer = (function (exports) {
932
974
  return true;
933
975
  }
934
976
  /* Remove element if anything forbids its presence */
935
- if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
977
+ if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {
936
978
  /* Check if we have a custom element to handle */
937
979
  if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
938
980
  if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
@@ -996,6 +1038,10 @@ var telerikReportViewer = (function (exports) {
996
1038
  */
997
1039
  // eslint-disable-next-line complexity
998
1040
  const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {
1041
+ /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */
1042
+ if (FORBID_ATTR[lcName]) {
1043
+ return false;
1044
+ }
999
1045
  /* Make sure attribute cannot clobber */
1000
1046
  if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {
1001
1047
  return false;
@@ -1004,12 +1050,12 @@ var telerikReportViewer = (function (exports) {
1004
1050
  (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)
1005
1051
  XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)
1006
1052
  We don't need to check the value; it's always URI safe. */
1007
- if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
1053
+ if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
1008
1054
  if (
1009
1055
  // First condition does a very basic check if a) it's basically a valid custom element tagname AND
1010
1056
  // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
1011
1057
  // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck
1012
- _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||
1058
+ _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||
1013
1059
  // Alternative, second condition checks if it's an `is`-attribute, AND
1014
1060
  // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
1015
1061
  lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {
@@ -1088,7 +1134,12 @@ var telerikReportViewer = (function (exports) {
1088
1134
  value = SANITIZE_NAMED_PROPS_PREFIX + value;
1089
1135
  }
1090
1136
  /* Work around a security issue with comments inside attributes */
1091
- if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title)/i, value)) {
1137
+ if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {
1138
+ _removeAttribute(name, currentNode);
1139
+ continue;
1140
+ }
1141
+ /* Make sure we cannot easily use animated hrefs, even if animations are allowed */
1142
+ if (lcName === 'attributename' && stringMatch(value, 'href')) {
1092
1143
  _removeAttribute(name, currentNode);
1093
1144
  continue;
1094
1145
  }
@@ -1365,28 +1416,28 @@ var telerikReportViewer = (function (exports) {
1365
1416
  t(exports$1, requirePurify_cjs()) ;
1366
1417
  }(commonjsGlobal, function(e, t) {
1367
1418
  function i(e2, t2, i2, n2) {
1368
- return new (i2 || (i2 = Promise))(function(t3, r2) {
1369
- function s2(e3) {
1419
+ return new (i2 || (i2 = Promise))(function(r2, s2) {
1420
+ function o2(e3) {
1370
1421
  try {
1371
- a2(n2.next(e3));
1422
+ l2(n2.next(e3));
1372
1423
  } catch (e4) {
1373
- r2(e4);
1424
+ s2(e4);
1374
1425
  }
1375
1426
  }
1376
- function o2(e3) {
1427
+ function a2(e3) {
1377
1428
  try {
1378
- a2(n2.throw(e3));
1429
+ l2(n2.throw(e3));
1379
1430
  } catch (e4) {
1380
- r2(e4);
1431
+ s2(e4);
1381
1432
  }
1382
1433
  }
1383
- function a2(e3) {
1384
- var n3;
1385
- e3.done ? t3(e3.value) : (n3 = e3.value, n3 instanceof i2 ? n3 : new i2(function(e4) {
1386
- e4(n3);
1387
- })).then(s2, o2);
1434
+ function l2(e3) {
1435
+ var t3;
1436
+ e3.done ? r2(e3.value) : (t3 = e3.value, t3 instanceof i2 ? t3 : new i2(function(e4) {
1437
+ e4(t3);
1438
+ })).then(o2, a2);
1388
1439
  }
1389
- a2((n2 = n2.apply(e2, [])).next());
1440
+ l2((n2 = n2.apply(e2, t2 || [])).next());
1390
1441
  });
1391
1442
  }
1392
1443
  class n {
@@ -1472,7 +1523,7 @@ var telerikReportViewer = (function (exports) {
1472
1523
  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;
1473
1524
  }
1474
1525
  function f(e2) {
1475
- return i(this, 0, void 0, function* () {
1526
+ return i(this, void 0, void 0, function* () {
1476
1527
  if (!e2.ok) {
1477
1528
  let t2 = yield e2.text(), i2 = new g(t2, e2.statusText);
1478
1529
  return Promise.reject(i2);
@@ -1679,7 +1730,7 @@ var telerikReportViewer = (function (exports) {
1679
1730
  if (!(i2 = n2[e2]))
1680
1731
  return this;
1681
1732
  if (i2 === t2 || i2.listener && i2.listener === t2)
1682
- 0 == --this._eventsCount ? this._events = new E() : (delete n2[e2], n2.removeListener && this.emit("removeListener", e2, i2.listener || t2));
1733
+ 0 === --this._eventsCount ? this._events = new E() : (delete n2[e2], n2.removeListener && this.emit("removeListener", e2, i2.listener || t2));
1683
1734
  else if ("function" != typeof i2) {
1684
1735
  for (r2 = -1, s2 = i2.length; s2-- > 0; )
1685
1736
  if (i2[s2] === t2 || i2[s2].listener && i2[s2].listener === t2) {
@@ -1689,7 +1740,7 @@ var telerikReportViewer = (function (exports) {
1689
1740
  if (r2 < 0)
1690
1741
  return this;
1691
1742
  if (1 === i2.length) {
1692
- if (i2[0] = void 0, 0 == --this._eventsCount)
1743
+ if (i2[0] = void 0, 0 === --this._eventsCount)
1693
1744
  return this._events = new E(), this;
1694
1745
  delete n2[e2];
1695
1746
  } else
@@ -1708,7 +1759,7 @@ var telerikReportViewer = (function (exports) {
1708
1759
  if (!(i2 = this._events))
1709
1760
  return this;
1710
1761
  if (!i2.removeListener)
1711
- return 0 === arguments.length ? (this._events = new E(), this._eventsCount = 0) : i2[e2] && (0 == --this._eventsCount ? this._events = new E() : delete i2[e2]), this;
1762
+ return 0 === arguments.length ? (this._events = new E(), this._eventsCount = 0) : i2[e2] && (0 === --this._eventsCount ? this._events = new E() : delete i2[e2]), this;
1712
1763
  if (0 === arguments.length) {
1713
1764
  for (var n2, r2 = Object.keys(i2), s2 = 0; s2 < r2.length; ++s2)
1714
1765
  "removeListener" !== (n2 = r2[s2]) && this.removeAllListeners(n2);
@@ -1794,7 +1845,7 @@ var telerikReportViewer = (function (exports) {
1794
1845
  return delete this._events[e2];
1795
1846
  }
1796
1847
  emit(e2, ...t2) {
1797
- return i(this, 0, void 0, function* () {
1848
+ return i(this, void 0, void 0, function* () {
1798
1849
  O(e2);
1799
1850
  const i2 = this.listeners(e2), n2 = [];
1800
1851
  if (i2 && i2.length) {
@@ -1834,7 +1885,7 @@ var telerikReportViewer = (function (exports) {
1834
1885
  return this.awaitEventEmitter.on(e2, t2), this;
1835
1886
  }
1836
1887
  emitAsync(e2, ...t2) {
1837
- return i(this, 0, void 0, function* () {
1888
+ return i(this, void 0, void 0, function* () {
1838
1889
  yield this.awaitEventEmitter.emit(e2, ...t2);
1839
1890
  });
1840
1891
  }
@@ -3086,7 +3137,7 @@ var telerikReportViewer = (function (exports) {
3086
3137
  this.emit("toolTipClosing", e2);
3087
3138
  }
3088
3139
  printReport() {
3089
- return i(this, 0, void 0, function* () {
3140
+ return i(this, void 0, void 0, function* () {
3090
3141
  let e2 = this.createDeviceInfo();
3091
3142
  e2.ImmediatePrint = true;
3092
3143
  let t2 = new c(e2);
@@ -3099,13 +3150,13 @@ var telerikReportViewer = (function (exports) {
3099
3150
  });
3100
3151
  }
3101
3152
  exportReport(e2) {
3102
- return i(this, 0, void 0, function* () {
3153
+ return i(this, void 0, void 0, function* () {
3103
3154
  let t2 = this.createDeviceInfo(), n2 = new a(t2, e2);
3104
3155
  if (yield this.emitAsync("exportStart", n2), !n2.isCancelled) {
3105
3156
  let r2 = new l(t2, e2);
3106
3157
  if (this.emit("exportStarted", r2), r2.handled)
3107
3158
  return;
3108
- this.setUIState("ExportInProgress", true), this.exportAsync(e2, n2.deviceInfo).then((t3) => i(this, 0, void 0, function* () {
3159
+ this.setUIState("ExportInProgress", true), this.exportAsync(e2, n2.deviceInfo).then((t3) => i(this, void 0, void 0, function* () {
3109
3160
  let i2 = this.serviceClient.getDocumentUrl(this.clientId, this.reportInstanceId, t3);
3110
3161
  i2 += "?response-content-disposition=attachment";
3111
3162
  let n3 = new h(i2, e2, "_self");
@@ -3138,7 +3189,7 @@ var telerikReportViewer = (function (exports) {
3138
3189
  return this.serviceClient.getAIResponse(this.clientId, this.reportInstanceId, this.documentId, this.threadId, e2).then((e3) => e3 || "");
3139
3190
  }
3140
3191
  exportAsync(e2, t2) {
3141
- return this.initializeClient().then(this.registerInstance.bind(this)).then(() => this.registerDocumentAsync(e2, t2, false, this.documentId)).then((e3) => i(this, 0, void 0, function* () {
3192
+ return this.initializeClient().then(this.registerInstance.bind(this)).then(() => this.registerDocumentAsync(e2, t2, false, this.documentId)).then((e3) => i(this, void 0, void 0, function* () {
3142
3193
  return yield this.getDocumentInfo(false, e3).catch((e4) => this.raiseError(e4)), e3;
3143
3194
  }));
3144
3195
  }
@@ -3226,10 +3277,10 @@ var telerikReportViewer = (function (exports) {
3226
3277
  registerInstance() {
3227
3278
  return this.registerInstancePromise || (this.registerInstancePromise = this.serviceClient.createReportInstance(this.clientId, this.getReport(), this.parameterValues).then(this.setReportInstanceId.bind(this)).catch(this.clearReportInstanceId.bind(this))), this.registerInstancePromise;
3228
3279
  }
3229
- registerDocumentAsync(e2, t2, n2, r2 = "", s2 = "") {
3230
- return i(this, 0, void 0, function* () {
3231
- return (yield this.serviceClient.createReportDocument(this.clientId, this.reportInstanceId, e2, t2, !n2, r2, s2).catch((t3) => {
3232
- this.handleRequestError(t3, be(this.options.messages.ReportViewer_ErrorCreatingReportDocument, le(this.getReport()), le(e2)));
3280
+ registerDocumentAsync(e2, t2, n2) {
3281
+ return i(this, arguments, void 0, function* (e3, t3, i2, n3 = "", r2 = "") {
3282
+ return (yield this.serviceClient.createReportDocument(this.clientId, this.reportInstanceId, e3, t3, !i2, n3, r2).catch((t4) => {
3283
+ this.handleRequestError(t4, be(this.options.messages.ReportViewer_ErrorCreatingReportDocument, le(this.getReport()), le(e3)));
3233
3284
  })) || "";
3234
3285
  });
3235
3286
  }
@@ -3279,7 +3330,7 @@ var telerikReportViewer = (function (exports) {
3279
3330
  }
3280
3331
  getDocumentInfo(t2, n2) {
3281
3332
  return t2 && this.emit("beginLoadReport"), new Promise((r2, s2) => {
3282
- let o2 = () => i(this, 0, void 0, function* () {
3333
+ let o2 = () => i(this, void 0, void 0, function* () {
3283
3334
  this.cancelLoad ? s2(this.options.messages.ReportViewer_RenderingCancelled) : (yield this.registerInstancePromise, this.serviceClient.getDocumentInfo(this.clientId, this.reportInstanceId, n2).then((i2) => {
3284
3335
  i2 && i2.documentReady ? r2(i2) : (t2 && (this.getPageMode() === e.PageMode.ContinuousScroll && i2.pageCount > this.pageCount && this.emit("pageLoaded"), this.pageCount = i2.pageCount, this.emit("reportLoadProgress", i2)), window.setTimeout(o2, 500));
3285
3336
  }).catch((e2) => {
@@ -4545,7 +4596,7 @@ ${e3.text} (${e3.id})`;
4545
4596
  }
4546
4597
 
4547
4598
  var sr$1 = {
4548
- // warning and error string resources
4599
+ // Warning and error string resources
4549
4600
  controllerNotInitialized: "Controller is not initialized.",
4550
4601
  noReportInstance: "No report instance.",
4551
4602
  missingTemplate: "!obsolete resource!",
@@ -4581,7 +4632,10 @@ ${e3.text} (${e3.id})`;
4581
4632
  promisesChainStopError: "Error shown. Throwing promises chain stop error.",
4582
4633
  renderingCancelled: "Report processing was canceled.",
4583
4634
  tryReportPreview: "The report may now be previewed.",
4584
- // viewer template string resources
4635
+ optionsNotInitialized: "The report viewer configuration options are not initialized",
4636
+ serviceUrlNotSpecified: "The serviceUrl is not specified.",
4637
+ reportServerUrlNotSpecified: "The report server URL is not specified.",
4638
+ // Viewer template string resources
4585
4639
  parameterEditorSelectNone: "clear selection",
4586
4640
  parameterEditorSelectAll: "select all",
4587
4641
  parametersAreaPreviewButton: "Preview",
@@ -4628,7 +4682,7 @@ ${e3.text} (${e3.id})`;
4628
4682
  sendEmailFormatLabel: "Format:",
4629
4683
  sendEmailSendLabel: "Send",
4630
4684
  sendEmailCancelLabel: "Cancel",
4631
- // accessibility string resources
4685
+ // Accessibility string resources
4632
4686
  ariaLabelPageNumberSelector: "Page number selector. Showing page {0} of {1}.",
4633
4687
  ariaLabelPageNumberEditor: "Page number editor",
4634
4688
  ariaLabelExpandable: "Expandable",
@@ -4689,7 +4743,7 @@ ${e3.text} (${e3.id})`;
4689
4743
  ariaLabelSendEmailFormat: "Report format:",
4690
4744
  ariaLabelSendEmailSend: "Send email",
4691
4745
  ariaLabelSendEmailCancel: "Cancel sending email",
4692
- // search dialog resources
4746
+ // Search dialog resources
4693
4747
  searchDialogTitle: "Search in report contents",
4694
4748
  searchDialogSearchInProgress: "searching...",
4695
4749
  searchDialogNoResultsLabel: "No results",
@@ -4709,6 +4763,7 @@ ${e3.text} (${e3.id})`;
4709
4763
  sendEmailValidationSingleEmail: "The field accepts a single email address only",
4710
4764
  sendEmailValidationFormatRequired: "Format field is required",
4711
4765
  errorSendingDocument: "Error sending report document (Report = '{0}').",
4766
+ // AI Prompt dialog resources
4712
4767
  aiPromptDialogConsentTitle: "Before you start with AI",
4713
4768
  aiPromptDialogConsentAccept: "Consent",
4714
4769
  aiPromptDialogConsentReject: "Cancel",
@@ -8769,6 +8824,161 @@ ${e3.text} (${e3.id})`;
8769
8824
  }
8770
8825
  }
8771
8826
 
8827
+ const NoLicenseIcon = () => `<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
8828
+ <path
8829
+ fillRule="evenodd"
8830
+ clipRule="evenodd"
8831
+ d="M18.5631 11.7812H10.4369L14.5 21.2619L18.5631 11.7812ZM18.5631 9.96875H10.4369L12.3788 5.4375H16.6212L18.5631 9.96875ZM20.5351 11.7812L17.2221 19.5116L23.9861 11.7812H20.5351ZM20.5351 9.96875L18.5931 5.4375H20.8437L24.2422 9.96875H20.5351ZM8.46492 9.96875L10.4069 5.4375H8.15625L4.75781 9.96875H8.46492ZM11.7779 19.5116L8.46492 11.7812H5.01386L11.7779 19.5116ZM27.1875 10.875L14.5 25.375L1.8125 10.875L7.25 3.625H21.75L27.1875 10.875Z"
8832
+ fill="black"
8833
+ />
8834
+ <path
8835
+ d="M23.0996 15.7998L31.0811 30.7578L30.9785 30.9316H15.0215L14.918 30.7578L22.9258 15.7998H23.0996Z"
8836
+ fill="#FFC000"
8837
+ stroke="black"
8838
+ strokeWidth="1.6"
8839
+ />
8840
+ <rect x="22.25" y="21" width="1.5" height="5" rx="0.75" fill="black" />
8841
+ <path
8842
+ d="M24 28C24 27.4477 23.5523 27 23 27C22.4479 27.0002 22 27.4478 22 28C22 28.5522 22.4479 28.9998 23 29C23.5523 29 24 28.5523 24 28Z"
8843
+ fill="black"
8844
+ />
8845
+ </svg>`;
8846
+ const ProductNotLicensedIcon = () => `<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
8847
+ <path
8848
+ fillRule="evenodd"
8849
+ clipRule="evenodd"
8850
+ d="M22.702 2.1821C24.3149 2.51082 25.8077 3.27291 27.0199 4.38645C28.2321 5.49999 29.1179 6.92286 29.582 8.5021C30.012 9.9501 30.076 11.4821 29.768 12.9621C29.3228 14.9898 28.2025 16.8063 26.5904 18.1143C24.9783 19.4223 22.9699 20.1443 20.894 20.1621C20.018 20.1621 19.146 20.0361 18.308 19.7821L16.708 21.6581L15.95 22.0081H14V25.0081L13 26.0081H10V29.0081L9 30.0081H3L2 29.0081V24.3941L2.292 23.6881L12.24 13.7401C11.9577 12.8308 11.8226 11.8821 11.84 10.9301C11.8582 9.59817 12.1701 8.28666 12.7533 7.08907C13.3365 5.89147 14.1767 4.83728 15.214 4.00164C16.2514 3.166 17.4603 2.56949 18.7546 2.25464C20.0489 1.93978 21.3967 1.91633 22.702 2.1821ZM25.338 16.5821C26.5944 15.5647 27.4681 14.1509 27.816 12.5721L27.824 12.5821C28.0718 11.4277 28.0272 10.2297 27.6943 9.09691C27.3614 7.96412 26.7507 6.93248 25.9177 6.09572C25.0847 5.25896 24.0558 4.64361 22.9246 4.30557C21.7933 3.96753 20.5955 3.91753 19.44 4.1601C17.8816 4.506 16.4837 5.36334 15.4688 6.59561C14.454 7.82789 13.8806 9.36426 13.84 10.9601C13.82 11.8721 13.98 12.7761 14.318 13.6201L14.098 14.7061L4 24.8081V28.0081H8V25.0081L9 24.0081H12V21.0081L13 20.0081H15.49L17.242 17.9761L18.364 17.6961C19.1728 18.0121 20.0337 18.1736 20.902 18.1721C22.5181 18.1597 24.082 17.5991 25.338 16.5821ZM23.662 11.1181C23.8197 10.9002 23.9318 10.6527 23.9916 10.3905C24.0515 10.1283 24.0578 9.85665 24.0103 9.59192C23.9627 9.32718 23.8622 9.07476 23.7148 8.84975C23.5675 8.62474 23.3762 8.43177 23.1526 8.28238C22.9289 8.133 22.6774 8.03026 22.4131 7.98033C22.1488 7.93039 21.8771 7.93428 21.6144 7.99176C21.3516 8.04925 21.1031 8.15914 20.8838 8.31487C20.6645 8.4706 20.4789 8.66896 20.338 8.8981C20.067 9.33887 19.9774 9.86752 20.088 10.373C20.1985 10.8784 20.5007 11.3214 20.931 11.6087C21.3613 11.8961 21.8862 12.0055 22.3954 11.914C22.9047 11.8226 23.3587 11.5373 23.662 11.1181Z"
8851
+ fill="black"
8852
+ />
8853
+ <path
8854
+ d="M23.1299 16.0186L31.1387 31.0273L31.0068 31.25H14.9932L14.8604 31.0273L22.8955 16.0186H23.1299Z"
8855
+ fill="#FFC000"
8856
+ stroke="black"
8857
+ strokeWidth="1.5"
8858
+ />
8859
+ <rect x="22.25" y="21.2686" width="1.5" height="5" rx="0.75" fill="black" />
8860
+ <path
8861
+ d="M24 28.2686C24 27.7163 23.5523 27.2686 23 27.2686C22.4479 27.2687 22 27.7164 22 28.2686C22 28.8207 22.4479 29.2684 23 29.2686C23.5523 29.2686 24 28.8208 24 28.2686Z"
8862
+ fill="black"
8863
+ />
8864
+ </svg>`;
8865
+ const ExpiredTrialIcon = () => `<svg width="38" height="38" viewBox="0 0 38 38" fill="none" xmlns="http://www.w3.org/2000/svg">
8866
+ <g clipPath="url(#clip0_1_5398)">
8867
+ <path
8868
+ d="M24.9056 7.60146L34.4998 10.1722L31.9299 19.7659L13.7653 30.2532L6.7419 18.0883L24.9056 7.60146Z"
8869
+ stroke="black"
8870
+ strokeWidth="1.75"
8871
+ />
8872
+ <path
8873
+ d="M13.0913 19.7635L15.4762 23.8942L14.6279 24.384L12.2431 20.2533L13.0913 19.7635ZM14.3623 19.0297L14.7473 19.6964L11.3769 21.6423L10.992 20.9756L14.3623 19.0297ZM14.8475 18.7496L16.388 17.8602C16.7038 17.6778 17.0025 17.5684 17.2841 17.532C17.5675 17.4944 17.8242 17.5328 18.0542 17.6472C18.2841 17.7616 18.4772 17.954 18.6333 18.2244C18.7611 18.4457 18.833 18.6576 18.8491 18.8602C18.866 19.0598 18.8369 19.2518 18.7619 19.4364C18.6876 19.6179 18.5778 19.7923 18.4322 19.9596L18.2446 20.257L16.9055 21.0301L16.5166 20.3695L17.5124 19.7946C17.6618 19.7083 17.7704 19.6103 17.8381 19.5006C17.9059 19.3909 17.9371 19.2745 17.9317 19.1516C17.9281 19.0275 17.8903 18.9031 17.8183 18.7782C17.7418 18.6458 17.6512 18.5456 17.5463 18.4775C17.4415 18.4095 17.3242 18.3788 17.1944 18.3857C17.0647 18.3925 16.9242 18.4395 16.7729 18.5269L16.0835 18.9249L18.0834 22.3889L17.2323 22.8803L14.8475 18.7496ZM19.5417 21.547L17.5367 20.2496L18.4328 19.7247L20.4294 20.9815L20.4523 21.0212L19.5417 21.547ZM19.4746 16.0781L21.8595 20.2088L21.0112 20.6986L18.6264 16.5679L19.4746 16.0781ZM22.4103 15.3251L23.2638 19.398L22.3588 19.9205L21.5088 14.9037L22.0847 14.5712L22.4103 15.3251ZM25.3207 18.2105L22.2174 15.4365L21.7187 14.7825L22.3003 14.4467L26.2285 17.6864L25.3207 18.2105ZM24.3818 16.7023L24.7668 17.369L22.5851 18.6286L22.2002 17.9619L24.3818 16.7023ZM28.8837 15.2683L29.267 15.9321L27.1874 17.1327L26.8041 16.4689L28.8837 15.2683ZM25.0778 12.8432L27.4626 16.9739L26.6115 17.4652L24.2267 13.3345L25.0778 12.8432Z"
8874
+ fill="black"
8875
+ />
8876
+ <circle cx="30.1049" cy="12.7084" r="1.12128" transform="rotate(15 30.1049 12.7084)" fill="black" />
8877
+ </g>
8878
+ <path
8879
+ d="M27.6201 19.7998L35.6016 34.7578L35.499 34.9316H19.542L19.4385 34.7578L27.4463 19.7998H27.6201Z"
8880
+ fill="#FFC000"
8881
+ stroke="black"
8882
+ strokeWidth="1.6"
8883
+ />
8884
+ <rect x="26.7705" y="25" width="1.5" height="5" rx="0.75" fill="black" />
8885
+ <path
8886
+ d="M28.5205 32C28.5205 31.4477 28.0728 31 27.5205 31C26.9684 31.0002 26.5205 31.4478 26.5205 32C26.5205 32.5522 26.9684 32.9998 27.5205 33C28.0728 33 28.5205 32.5523 28.5205 32Z"
8887
+ fill="black"
8888
+ />
8889
+ <defs>
8890
+ <clipPath id="clip0_1_5398">
8891
+ <rect width="30" height="31.1538" fill="white" transform="translate(8.06323) rotate(15)" />
8892
+ </clipPath>
8893
+ </defs>
8894
+ </svg>`;
8895
+ const ExpiredLicenseSubscriptionIcon = () => `<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
8896
+ <path
8897
+ d="M27.8295 9.38659C28.8049 12.1653 28.7404 15.1391 27.774 17.7996C26.8014 20.4767 24.9215 22.8356 22.2691 24.367C19.7765 25.8061 16.9908 26.2908 14.3393 25.9323C11.6293 25.5682 9.06228 24.3215 7.08577 22.3155L8.23679 21.1826C9.95578 22.9294 12.1925 24.0142 14.5527 24.333C16.8583 24.6438 19.2821 24.2206 21.457 22.965C23.7719 21.6284 25.4118 19.5739 26.2565 17.2495C27.0643 15.0253 27.1474 12.5486 26.3976 10.2107L24.951 11.0459L25.5942 7.15112L29.2888 8.54145L27.8284 9.38462L27.8295 9.38659Z"
8898
+ fill="black"
8899
+ />
8900
+ <path
8901
+ fillRule="evenodd"
8902
+ clipRule="evenodd"
8903
+ d="M16.3594 8.08301C17.1842 8.16959 17.8382 8.41741 18.3281 8.8252C18.8135 9.2331 19.1263 9.78023 19.2607 10.4639L17.2939 10.6875C17.1732 10.1497 16.8607 9.78518 16.3594 9.59375V12.2617C17.6035 12.5557 18.4514 12.9408 18.9004 13.4102C19.3516 13.8819 19.5771 14.4863 19.5771 15.2246C19.5771 16.0494 19.2949 16.7425 18.7275 17.3076C18.1601 17.8728 17.3712 18.2233 16.3594 18.3623V19.6387H15.2334V18.3779C14.3448 18.2822 13.6246 17.9934 13.0664 17.5059C12.5081 17.0182 12.155 16.3275 12 15.4365L14.0127 15.2266C14.0947 15.5912 14.2497 15.9036 14.4775 16.168C14.7053 16.4321 14.9555 16.6218 15.2334 16.7402V13.8799C14.2264 13.6247 13.4906 13.2395 13.0234 12.7246C12.554 12.2073 12.3164 11.5801 12.3164 10.8418C12.3165 10.0946 12.5834 9.46575 13.1143 8.95996C13.6452 8.45184 14.3516 8.16053 15.2334 8.08301V7C15.6731 7 15.9197 7 16.3594 7V8.08301ZM16.3574 16.8535H16.3594C16.7467 16.7783 17.0661 16.6149 17.3076 16.3643C17.5537 16.1113 17.6738 15.8147 17.6738 15.4707C17.6738 15.1677 17.5715 14.9033 17.3643 14.6846C17.1615 14.4636 16.8267 14.2943 16.3574 14.1758V16.8535ZM15.2334 9.56836C14.9304 9.66408 14.6911 9.82132 14.5156 10.04C14.3379 10.2588 14.252 10.5004 14.252 10.7646C14.252 11.0062 14.3314 11.2301 14.4932 11.4375C14.655 11.6424 14.9038 11.8113 15.2363 11.9365V9.56836H15.2334Z"
8904
+ fill="black"
8905
+ />
8906
+ <path
8907
+ d="M2.71127 18.5075L4.18352 17.6575C3.21672 14.9028 3.27173 11.9581 4.21167 9.31563C5.17535 6.60942 7.06671 4.22018 9.74281 2.67513C12.0972 1.31581 14.709 0.807832 17.2232 1.05612C19.8041 1.3106 22.2798 2.36266 24.2693 4.10853L23.7361 4.71636L23.2029 5.32418C23.1532 5.27918 23.1016 5.23531 23.0511 5.19342C21.3484 3.75295 19.2504 2.88549 17.0678 2.66937C14.8802 2.45355 12.6065 2.89529 10.5561 4.07914C8.2194 5.42821 6.56974 7.50687 5.7328 9.85834C4.94555 12.068 4.87307 14.5175 5.61235 16.8326L6.69304 16.2087L6.98491 16.4014L6.40585 19.8979L2.71127 18.5075Z"
8908
+ fill="black"
8909
+ />
8910
+ <path
8911
+ d="M23.0996 15.7998L31.0811 30.7578L30.9785 30.9316H15.0215L14.918 30.7578L22.9258 15.7998H23.0996Z"
8912
+ fill="#FFC000"
8913
+ stroke="black"
8914
+ strokeWidth="1.6"
8915
+ />
8916
+ <rect x="22.25" y="21" width="1.5" height="5" rx="0.75" fill="black" />
8917
+ <path
8918
+ d="M24 28C24 27.4477 23.5523 27 23 27C22.4479 27.0002 22 27.4478 22 28C22 28.5522 22.4479 28.9998 23 29C23.5523 29 24 28.5523 24 28Z"
8919
+ fill="black"
8920
+ />
8921
+ </svg>`;
8922
+ const BannerTemplate = (bannerInfo) => `<div class="trv-license-banner">
8923
+ <span class="trv-license-icon">${bannerInfo.icon}</span>
8924
+ <div class="trv-license-content">
8925
+ <span class="trv-license-title">${bannerInfo.title}</span>
8926
+ <span class="trv-license-description">${bannerInfo.message}
8927
+ ${bannerInfo.actionMessage ? `<a title='${bannerInfo.actionMessage}' href='${bannerInfo.actionLink}' target='_blank'>${bannerInfo.actionMessage}</a>` : ""}
8928
+ </span>
8929
+ </div>
8930
+ <div class="trv-license-actions">
8931
+ <a title=${bannerInfo.ctaMessage} class="trv-license-cta-button" href=${bannerInfo.ctaLink} target="_blank">${bannerInfo.ctaMessage}</a>
8932
+ <button title="Close" class="trv-license-close-button">
8933
+ <svg width="20" height="20" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
8934
+ <path
8935
+ d="M11.9309 3.1838C12.1754 2.93933 12.5712 2.93937 12.8157 3.1838C13.0601 3.4283 13.0601 3.82407 12.8157 4.06857L8.885 7.99923L12.8166 11.9309C13.0611 12.1754 13.0611 12.5721 12.8166 12.8166C12.5721 13.0611 12.1754 13.0611 11.9309 12.8166L7.99925 8.88497L4.06859 12.8166C3.8241 13.0611 3.42732 13.0611 3.18285 12.8166C2.93862 12.5721 2.93851 12.1753 3.18285 11.9309L7.11449 7.99923L3.18382 4.06857C2.93947 3.82413 2.93955 3.42829 3.18382 3.1838C3.42831 2.9393 3.82508 2.9393 4.06957 3.1838L7.99925 7.11349L11.9309 3.1838Z"
8936
+ fill="#212529"
8937
+ />
8938
+ </svg>
8939
+ </button>
8940
+ </div>
8941
+ </div>`;
8942
+ class Banner {
8943
+ $banner;
8944
+ constructor(licenseInfo, onClose) {
8945
+ this.title = licenseInfo.title;
8946
+ this.message = licenseInfo.message;
8947
+ this.icon = this.getIconFromId(licenseInfo.messageIcon);
8948
+ this.actionLink = licenseInfo.actionLink;
8949
+ this.actionMessage = licenseInfo.actionMessage;
8950
+ this.ctaMessage = licenseInfo.callToActionMessage;
8951
+ this.ctaLink = licenseInfo.callToActionLink;
8952
+ this.onClose = onClose;
8953
+ }
8954
+ getIconFromId = (iconId) => {
8955
+ switch (iconId) {
8956
+ case 0:
8957
+ return ProductNotLicensedIcon();
8958
+ case 1:
8959
+ return NoLicenseIcon();
8960
+ case 2:
8961
+ return ExpiredLicenseSubscriptionIcon();
8962
+ case 3:
8963
+ return ExpiredTrialIcon();
8964
+ default:
8965
+ return ProductNotLicensedIcon();
8966
+ }
8967
+ };
8968
+ hideBanner = () => {
8969
+ this.onClose();
8970
+ this.$banner.remove();
8971
+ };
8972
+ createBanner = (rootElement) => {
8973
+ if (!rootElement || $(rootElement)?.length === 0) {
8974
+ return;
8975
+ }
8976
+ this.$banner = $(BannerTemplate(this));
8977
+ $(rootElement).prepend(this.$banner);
8978
+ this.$banner.find(".trv-license-close-button").one("click", this.hideBanner);
8979
+ };
8980
+ }
8981
+
8772
8982
  var viewModeReverseMap = {
8773
8983
  [distExports.ViewMode.Interactive]: ViewModes.INTERACTIVE,
8774
8984
  [distExports.ViewMode.PrintPreview]: ViewModes.PRINT_PREVIEW
@@ -8805,7 +9015,6 @@ ${e3.text} (${e3.id})`;
8805
9015
  [PrintModes.FORCE_PDF_PLUGIN]: distExports.PrintMode.ForcePDFPlugin,
8806
9016
  [PrintModes.FORCE_PDF_FILE]: distExports.PrintMode.ForcePDFFile
8807
9017
  };
8808
- var commonMessages = parseMessages();
8809
9018
  var TOOLIP_SHOW_TIMEOUT = 100;
8810
9019
  function parseMessages() {
8811
9020
  var result = {};
@@ -8851,6 +9060,11 @@ ${e3.text} (${e3.id})`;
8851
9060
  };
8852
9061
  }
8853
9062
  function ReportViewer(dom, options) {
9063
+ if (!options) {
9064
+ options = {};
9065
+ }
9066
+ $.extend(stringResources, options.localizationResources || {});
9067
+ var commonMessages = parseMessages();
8854
9068
  var svcApiUrl = options.serviceUrl;
8855
9069
  var reportServerUrlSVCApiUrl = "";
8856
9070
  if (options.reportServer) {
@@ -8864,6 +9078,7 @@ ${e3.text} (${e3.id})`;
8864
9078
  var settings = {};
8865
9079
  var notificationService = {};
8866
9080
  var client = {};
9081
+ var controllerOptions = {};
8867
9082
  var controller = {};
8868
9083
  var perspectiveManager;
8869
9084
  var history = {};
@@ -8874,7 +9089,7 @@ ${e3.text} (${e3.id})`;
8874
9089
  if (!validateOptions(options)) {
8875
9090
  return;
8876
9091
  }
8877
- var version = "20.0.26.211";
9092
+ var version = "20.0.26.402";
8878
9093
  options = $.extend({}, getDefaultOptions(svcApiUrl, version), options);
8879
9094
  settings = new ReportViewerSettings(
8880
9095
  persistanceKey,
@@ -8895,21 +9110,22 @@ ${e3.text} (${e3.id})`;
8895
9110
  );
8896
9111
  notificationService = new NotificationService();
8897
9112
  client = new distExports.ServiceClient(options);
9113
+ controllerOptions = new distExports.ReportControllerOptions(
9114
+ options.keepClientAlive,
9115
+ options.authenticationToken,
9116
+ options.reportSource,
9117
+ printModeMap[options.printMode],
9118
+ pageModeMap[options.pageMode],
9119
+ viewModeMap[options.viewMode],
9120
+ scaleModeMap[options.scaleMode],
9121
+ options.scale,
9122
+ commonMessages,
9123
+ options.enableAccessibility,
9124
+ options.searchMetadataOnDemand
9125
+ );
8898
9126
  controller = new distExports.ReportController(
8899
9127
  client,
8900
- new distExports.ReportControllerOptions(
8901
- options.keepClientAlive,
8902
- options.authenticationToken,
8903
- options.reportSource,
8904
- printModeMap[options.printMode],
8905
- pageModeMap[options.pageMode],
8906
- viewModeMap[options.viewMode],
8907
- scaleModeMap[options.scaleMode],
8908
- options.scale,
8909
- commonMessages,
8910
- options.enableAccessibility,
8911
- options.searchMetadataOnDemand
8912
- )
9128
+ controllerOptions
8913
9129
  );
8914
9130
  history = new HistoryManager({
8915
9131
  controller,
@@ -9241,18 +9457,14 @@ ${e3.text} (${e3.id})`;
9241
9457
  }
9242
9458
  };
9243
9459
  function validateOptions(options2) {
9244
- if (!options2) {
9245
- $placeholder.text("The report viewer configuration options are not initialized.");
9246
- return false;
9247
- }
9248
9460
  if (options2.reportServer) {
9249
9461
  if (!options2.reportServer.url) {
9250
- $placeholder.text("The report server URL is not specified.");
9462
+ $placeholder.text(stringResources.reportServerUrlNotSpecified);
9251
9463
  return false;
9252
9464
  }
9253
9465
  } else {
9254
9466
  if (!options2.serviceUrl) {
9255
- $placeholder.text("The serviceUrl is not specified.");
9467
+ $placeholder.text(stringResources.serviceUrlNotSpecified);
9256
9468
  return false;
9257
9469
  }
9258
9470
  }
@@ -9355,6 +9567,9 @@ ${e3.text} (${e3.id})`;
9355
9567
  },
9356
9568
  options
9357
9569
  );
9570
+ if (options.wrapper && (options.wrapper === "angular" || options.wrapper === "react") && (!options.localizationResources || jQuery.isEmptyObject(options.localizationResources))) {
9571
+ refreshLocalization();
9572
+ }
9358
9573
  new distExports.ContentArea($placeholder[0], controller, commonMessages, {
9359
9574
  enableAccessibility: options.enableAccessibility,
9360
9575
  initialPageAreaImageUrl: options.initialPageAreaImageUrl
@@ -9408,6 +9623,11 @@ ${e3.text} (${e3.id})`;
9408
9623
  }
9409
9624
  );
9410
9625
  }
9626
+ function refreshLocalization() {
9627
+ commonMessages = parseMessages();
9628
+ controllerOptions.message = commonMessages;
9629
+ controller.setOptions(controllerOptions);
9630
+ }
9411
9631
  function initSplitter() {
9412
9632
  var parameterAreaPaneOptions = {
9413
9633
  max: "500px",
@@ -9576,21 +9796,9 @@ ${e3.text} (${e3.id})`;
9576
9796
  init();
9577
9797
  if (!(options.webDesignerPreview || options.serverPreview)) {
9578
9798
  if (controller.shouldShowLicenseBanner()) {
9579
- $(".trv-content-wrapper")?.prepend('<span class="trv-license-banner"></span>');
9580
- const licenseBanner = $(".trv-license-banner").kendoNotification({
9581
- appendTo: ".trv-license-banner",
9582
- hideOnClick: false,
9583
- autoHideAfter: 0,
9584
- button: true,
9585
- hide: () => {
9586
- controller.saveToSessionStorage("hideBanner", "true");
9587
- }
9588
- }).data("kendoNotification");
9589
- const licenseData = controller.getConfigurationInfo()?.license;
9590
- licenseBanner.show(`<span class='trv-license-message'>${licenseData?.title || licenseData?.message} ${licenseData?.actionMessage}</span>
9591
- <a class='trv-license-link' target='_blank' href='${licenseData?.actionLink}'>
9592
- <span class='k-icon k-i-question-circle'></span>
9593
- </a>`, "warning");
9799
+ const configurationInfo = controller.getConfigurationInfo();
9800
+ const banner = new Banner(configurationInfo.license, () => controller.saveToSessionStorage("hideBanner", "true"));
9801
+ banner.createBanner(".trv-content-wrapper");
9594
9802
  }
9595
9803
  if (controller.shouldShowLicenseOverlay()) {
9596
9804
  $(".trv-content-wrapper")?.prepend('<div class="trv-license-overlay"></div>');