wj-elements 0.7.6 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/dist/animations.js +28 -51
  2. package/dist/animations.js.map +1 -1
  3. package/dist/base-path.js +19 -31
  4. package/dist/base-path.js.map +1 -1
  5. package/dist/custom-elements.json +9053 -9048
  6. package/dist/dark.css +1 -302
  7. package/dist/date.js +16 -36
  8. package/dist/date.js.map +1 -1
  9. package/dist/element-utils.js +20 -81
  10. package/dist/element-utils.js.map +1 -1
  11. package/dist/event.js +49 -165
  12. package/dist/event.js.map +1 -1
  13. package/dist/form-associated-element-BjeJn7j8.js +101 -0
  14. package/dist/{form-associated-element-DEQ4y-jn.js.map → form-associated-element-BjeJn7j8.js.map} +1 -1
  15. package/dist/icon-DmsqtDpL.js +102 -0
  16. package/dist/{icon-CReYMzAK.js.map → icon-DmsqtDpL.js.map} +1 -1
  17. package/dist/light.css +1 -731
  18. package/dist/localize.js +36 -111
  19. package/dist/localize.js.map +1 -1
  20. package/dist/packages/wje-accordion-item/accordion-item.element.d.ts +3 -2
  21. package/dist/packages/wje-img/img.element.d.ts +4 -4
  22. package/dist/permissions.js +14 -41
  23. package/dist/permissions.js.map +1 -1
  24. package/dist/popup.element-CbkhthPP.js +806 -0
  25. package/dist/{popup.element-CwXvVFK7.js.map → popup.element-CbkhthPP.js.map} +1 -1
  26. package/dist/router-links-CNsJ-elb.js +105 -0
  27. package/dist/{router-links-wjqCnncc.js.map → router-links-CNsJ-elb.js.map} +1 -1
  28. package/dist/skeleton.css +1 -197
  29. package/dist/styles.css +1 -866
  30. package/dist/universal-service.js +48 -109
  31. package/dist/universal-service.js.map +1 -1
  32. package/dist/utils.js +11 -18
  33. package/dist/utils.js.map +1 -1
  34. package/dist/web-types.json +698 -698
  35. package/dist/wje-accordion-item.js +33 -106
  36. package/dist/wje-accordion-item.js.map +1 -1
  37. package/dist/wje-accordion.js +19 -84
  38. package/dist/wje-accordion.js.map +1 -1
  39. package/dist/wje-animation.js +37 -4258
  40. package/dist/wje-animation.js.map +1 -1
  41. package/dist/wje-aside.js +9 -34
  42. package/dist/wje-aside.js.map +1 -1
  43. package/dist/wje-avatar.js +36 -126
  44. package/dist/wje-avatar.js.map +1 -1
  45. package/dist/wje-badge.js +10 -52
  46. package/dist/wje-badge.js.map +1 -1
  47. package/dist/wje-breadcrumb.js +205 -668
  48. package/dist/wje-breadcrumb.js.map +1 -1
  49. package/dist/wje-breadcrumbs.js +177 -633
  50. package/dist/wje-breadcrumbs.js.map +1 -1
  51. package/dist/wje-button-group.js +48 -153
  52. package/dist/wje-button-group.js.map +1 -1
  53. package/dist/wje-button.js +92 -413
  54. package/dist/wje-button.js.map +1 -1
  55. package/dist/wje-card-content.js +7 -30
  56. package/dist/wje-card-content.js.map +1 -1
  57. package/dist/wje-card-controls.js +7 -30
  58. package/dist/wje-card-controls.js.map +1 -1
  59. package/dist/wje-card-header.js +7 -30
  60. package/dist/wje-card-header.js.map +1 -1
  61. package/dist/wje-card-subtitle.js +7 -34
  62. package/dist/wje-card-subtitle.js.map +1 -1
  63. package/dist/wje-card-title.js +7 -34
  64. package/dist/wje-card-title.js.map +1 -1
  65. package/dist/wje-card.js +15 -71
  66. package/dist/wje-card.js.map +1 -1
  67. package/dist/wje-carousel-item.js +12 -56
  68. package/dist/wje-carousel-item.js.map +1 -1
  69. package/dist/wje-carousel.js +154 -509
  70. package/dist/wje-carousel.js.map +1 -1
  71. package/dist/wje-checkbox.js +50 -227
  72. package/dist/wje-checkbox.js.map +1 -1
  73. package/dist/wje-chip.js +43 -160
  74. package/dist/wje-chip.js.map +1 -1
  75. package/dist/wje-col.js +7 -20
  76. package/dist/wje-col.js.map +1 -1
  77. package/dist/wje-color-picker.js +445 -1464
  78. package/dist/wje-color-picker.js.map +1 -1
  79. package/dist/wje-container.js +9 -35
  80. package/dist/wje-container.js.map +1 -1
  81. package/dist/wje-copy-button.js +64 -204
  82. package/dist/wje-copy-button.js.map +1 -1
  83. package/dist/wje-dialog.js +85 -553
  84. package/dist/wje-dialog.js.map +1 -1
  85. package/dist/wje-divider.js +7 -34
  86. package/dist/wje-divider.js.map +1 -1
  87. package/dist/wje-dropdown.js +78 -305
  88. package/dist/wje-dropdown.js.map +1 -1
  89. package/dist/wje-element.js +191 -700
  90. package/dist/wje-element.js.map +1 -1
  91. package/dist/wje-file-upload-item.js +51 -156
  92. package/dist/wje-file-upload-item.js.map +1 -1
  93. package/dist/wje-file-upload.js +181 -619
  94. package/dist/wje-file-upload.js.map +1 -1
  95. package/dist/wje-footer.js +7 -31
  96. package/dist/wje-footer.js.map +1 -1
  97. package/dist/wje-form.js +7 -32
  98. package/dist/wje-form.js.map +1 -1
  99. package/dist/wje-format-digital.js +26 -118
  100. package/dist/wje-format-digital.js.map +1 -1
  101. package/dist/wje-grid.js +7 -33
  102. package/dist/wje-grid.js.map +1 -1
  103. package/dist/wje-header.js +9 -35
  104. package/dist/wje-header.js.map +1 -1
  105. package/dist/wje-icon-library.js +12 -18
  106. package/dist/wje-icon-library.js.map +1 -1
  107. package/dist/wje-icon-picker.js +65 -320
  108. package/dist/wje-icon-picker.js.map +1 -1
  109. package/dist/wje-icon.js +1 -1
  110. package/dist/wje-img-comparer.js +37 -114
  111. package/dist/wje-img-comparer.js.map +1 -1
  112. package/dist/wje-img.js +50 -197
  113. package/dist/wje-img.js.map +1 -1
  114. package/dist/wje-infinite-scroll.js +94 -346
  115. package/dist/wje-infinite-scroll.js.map +1 -1
  116. package/dist/wje-input-file.js +23 -84
  117. package/dist/wje-input-file.js.map +1 -1
  118. package/dist/wje-input.js +78 -392
  119. package/dist/wje-input.js.map +1 -1
  120. package/dist/wje-item.js +11 -64
  121. package/dist/wje-item.js.map +1 -1
  122. package/dist/wje-kanban.js +124 -401
  123. package/dist/wje-kanban.js.map +1 -1
  124. package/dist/wje-label.js +9 -32
  125. package/dist/wje-label.js.map +1 -1
  126. package/dist/wje-level-indicator.js +38 -157
  127. package/dist/wje-level-indicator.js.map +1 -1
  128. package/dist/wje-list.js +10 -40
  129. package/dist/wje-list.js.map +1 -1
  130. package/dist/wje-main.js +7 -31
  131. package/dist/wje-main.js.map +1 -1
  132. package/dist/wje-masonry.js +66 -211
  133. package/dist/wje-masonry.js.map +1 -1
  134. package/dist/wje-master.js +45 -161
  135. package/dist/wje-master.js.map +1 -1
  136. package/dist/wje-menu-button.js +10 -38
  137. package/dist/wje-menu-button.js.map +1 -1
  138. package/dist/wje-menu-item.js +127 -577
  139. package/dist/wje-menu-item.js.map +1 -1
  140. package/dist/wje-menu-label.js +9 -35
  141. package/dist/wje-menu-label.js.map +1 -1
  142. package/dist/wje-menu.js +14 -49
  143. package/dist/wje-menu.js.map +1 -1
  144. package/dist/wje-option.js +48 -279
  145. package/dist/wje-option.js.map +1 -1
  146. package/dist/wje-options.js +130 -384
  147. package/dist/wje-options.js.map +1 -1
  148. package/dist/wje-orgchart-group.js +16 -52
  149. package/dist/wje-orgchart-group.js.map +1 -1
  150. package/dist/wje-orgchart-item.js +24 -93
  151. package/dist/wje-orgchart-item.js.map +1 -1
  152. package/dist/wje-orgchart.js +18 -68
  153. package/dist/wje-orgchart.js.map +1 -1
  154. package/dist/wje-pagination.js +113 -397
  155. package/dist/wje-pagination.js.map +1 -1
  156. package/dist/wje-popup.js +3 -3
  157. package/dist/wje-popup.js.map +1 -1
  158. package/dist/wje-progress-bar.js +53 -205
  159. package/dist/wje-progress-bar.js.map +1 -1
  160. package/dist/wje-qr-code.js +398 -2980
  161. package/dist/wje-qr-code.js.map +1 -1
  162. package/dist/wje-radio-group.js +52 -190
  163. package/dist/wje-radio-group.js.map +1 -1
  164. package/dist/wje-radio.js +24 -118
  165. package/dist/wje-radio.js.map +1 -1
  166. package/dist/wje-rate.js +62 -266
  167. package/dist/wje-rate.js.map +1 -1
  168. package/dist/wje-relative-time.js +24 -99
  169. package/dist/wje-relative-time.js.map +1 -1
  170. package/dist/wje-reorder-dropzone.js +9 -31
  171. package/dist/wje-reorder-dropzone.js.map +1 -1
  172. package/dist/wje-reorder-handle.js +67 -204
  173. package/dist/wje-reorder-handle.js.map +1 -1
  174. package/dist/wje-reorder-item.js +14 -44
  175. package/dist/wje-reorder-item.js.map +1 -1
  176. package/dist/wje-reorder.js +61 -246
  177. package/dist/wje-reorder.js.map +1 -1
  178. package/dist/wje-route.js +6 -24
  179. package/dist/wje-route.js.map +1 -1
  180. package/dist/wje-router-link.js +11 -39
  181. package/dist/wje-router-link.js.map +1 -1
  182. package/dist/wje-router-outlet.js +76 -172
  183. package/dist/wje-router-outlet.js.map +1 -1
  184. package/dist/wje-routerx.js +537 -1331
  185. package/dist/wje-routerx.js.map +1 -1
  186. package/dist/wje-row.js +9 -31
  187. package/dist/wje-row.js.map +1 -1
  188. package/dist/wje-select.js +326 -1152
  189. package/dist/wje-select.js.map +1 -1
  190. package/dist/wje-slider.js +44 -225
  191. package/dist/wje-slider.js.map +1 -1
  192. package/dist/wje-sliding-container.js +295 -1319
  193. package/dist/wje-sliding-container.js.map +1 -1
  194. package/dist/wje-split-view.js +35 -121
  195. package/dist/wje-split-view.js.map +1 -1
  196. package/dist/wje-status.js +14 -45
  197. package/dist/wje-status.js.map +1 -1
  198. package/dist/wje-step.js +9 -32
  199. package/dist/wje-step.js.map +1 -1
  200. package/dist/wje-stepper.js +109 -357
  201. package/dist/wje-stepper.js.map +1 -1
  202. package/dist/wje-store.js +67 -360
  203. package/dist/wje-store.js.map +1 -1
  204. package/dist/wje-tab-group.js +85 -314
  205. package/dist/wje-tab-group.js.map +1 -1
  206. package/dist/wje-tab-panel.js +7 -28
  207. package/dist/wje-tab-panel.js.map +1 -1
  208. package/dist/wje-tab.js +21 -198
  209. package/dist/wje-tab.js.map +1 -1
  210. package/dist/wje-textarea.js +64 -264
  211. package/dist/wje-textarea.js.map +1 -1
  212. package/dist/wje-thumbnail.js +10 -51
  213. package/dist/wje-thumbnail.js.map +1 -1
  214. package/dist/wje-toast.js +127 -632
  215. package/dist/wje-toast.js.map +1 -1
  216. package/dist/wje-toggle.js +52 -177
  217. package/dist/wje-toggle.js.map +1 -1
  218. package/dist/wje-toolbar-action.js +128 -456
  219. package/dist/wje-toolbar-action.js.map +1 -1
  220. package/dist/wje-toolbar.js +75 -270
  221. package/dist/wje-toolbar.js.map +1 -1
  222. package/dist/wje-tooltip.js +50 -161
  223. package/dist/wje-tooltip.js.map +1 -1
  224. package/dist/wje-tree-item.js +70 -301
  225. package/dist/wje-tree-item.js.map +1 -1
  226. package/dist/wje-tree.js +145 -489
  227. package/dist/wje-tree.js.map +1 -1
  228. package/dist/wje-visually-hidden.js +7 -34
  229. package/dist/wje-visually-hidden.js.map +1 -1
  230. package/package.json +4 -2
  231. package/dist/form-associated-element-DEQ4y-jn.js +0 -245
  232. package/dist/icon-CReYMzAK.js +0 -245
  233. package/dist/popup.element-CwXvVFK7.js +0 -2133
  234. package/dist/router-links-wjqCnncc.js +0 -156
@@ -1,135 +1,58 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import WJElement from "./wje-element.js";
5
- import { I as Icon } from "./icon-CReYMzAK.js";
6
- function drag(container, options) {
7
- function move(pointerEvent) {
8
- const dims = container.getBoundingClientRect();
9
- const defaultView = container.ownerDocument.defaultView;
10
- const offsetX = dims.left + defaultView.pageXOffset;
11
- const offsetY = dims.top + defaultView.pageYOffset;
12
- const x = pointerEvent.pageX - offsetX;
13
- const y = pointerEvent.pageY - offsetY;
14
- if (options == null ? void 0 : options.onMove) {
15
- options.onMove(x, y);
16
- }
17
- }
18
- function stop() {
19
- document.removeEventListener("pointermove", move);
20
- document.removeEventListener("pointerup", stop);
21
- if (options == null ? void 0 : options.onStop) {
22
- options.onStop();
23
- }
24
- }
25
- document.addEventListener("pointermove", move, { passive: true });
26
- document.addEventListener("pointerup", stop);
27
- if ((options == null ? void 0 : options.initialEvent) instanceof PointerEvent) {
28
- move(options.initialEvent);
29
- }
30
- }
31
- const styles = "/*\n[ WJ Image Compare ]\n*/\n\n:host {\n display: inline-block;\n position: relative;\n width: 100%;\n border-color: var(--wje-border-color);\n border-style: solid;\n border-width: 1px;\n}\n\n.wje-before,\n.wje-after {\n display: block;\n}\n\n.wje-after {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n clip-path: var(--wje-img-compare-clip-path);\n}\n\n.native-split-view {\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n}\n\n.wje-divider {\n display: flex;\n position: absolute;\n align-items: center;\n justify-content: center;\n z-index: 1;\n background-color: var(--wje-img-compare-divider-background);\n height: 100%;\n width: var(--wje-img-compare-divider-size);\n cursor: col-resize;\n top: 0;\n left: var(--wje-img-compare-divider-left);\n &:after {\n display: flex;\n content: '';\n position: absolute;\n height: 100%;\n left: calc(var(--wje-img-compare-divider-area) / -2 + var(--wje-img-compare-divider-size) / 2);\n width: var(---wje-img-compare-divider-area);\n }\n wje-icon {\n position: absolute;\n background-color: white;\n padding: 0.5rem;\n color: var(--wje-color-dark);\n border-radius: var(--wje-border-radius-circle);\n box-shadow: rgba(82, 63, 105, 0.2) 0 0 30px 10px;\n background: var(--wje-color-white) !important;\n }\n}\n";
32
- class ImgComparer extends WJElement {
33
- /**
34
- * Creates an instance of ImgComparer.
35
- * @class
36
- */
4
+ import e from "./wje-element.js";
5
+ import { I as t } from "./icon-DmsqtDpL.js";
6
+ class i extends e {
37
7
  constructor() {
38
8
  super();
39
- /**
40
- * Dependencies of the ImgComparer component.
41
- * @property {object} dependencies
42
- */
43
- __publicField(this, "dependencies", {
44
- "wje-icon": Icon
45
- });
9
+ __publicField(this, "dependencies", { "wje-icon": t });
46
10
  __publicField(this, "className", "ImgComparer");
47
- /**
48
- * Handles the drag event.
49
- * @param {Event} e The event.
50
- */
51
- __publicField(this, "handleDrag", (e) => {
52
- const { width } = this.native.getBoundingClientRect();
53
- drag(this, {
54
- onMove: (x) => {
55
- let value = x / width * 100;
56
- this.position = parseFloat(this.clamp(value, 0, 100).toFixed(2));
57
- this.native.style.setProperty("--wje-img-compare-divider-left", this.position + "%");
58
- this.native.style.setProperty("--wje-img-compare-clip-path", `inset(0 ${100 - this.position}% 0 0)`);
59
- },
60
- initialEvent: e
61
- });
11
+ __publicField(this, "handleDrag", (e2) => {
12
+ const { width: t2 } = this.native.getBoundingClientRect();
13
+ !(function(e3, t3) {
14
+ function i2(i3) {
15
+ const o = e3.getBoundingClientRect(), r = e3.ownerDocument.defaultView, a = o.left + r.pageXOffset, n = o.top + r.pageYOffset, d = i3.pageX - a, s = i3.pageY - n;
16
+ (t3 == null ? void 0 : t3.onMove) && t3.onMove(d, s);
17
+ }
18
+ document.addEventListener("pointermove", i2, { passive: true }), document.addEventListener("pointerup", function e4() {
19
+ document.removeEventListener("pointermove", i2), document.removeEventListener("pointerup", e4), (t3 == null ? void 0 : t3.onStop) && t3.onStop();
20
+ }), (t3 == null ? void 0 : t3.initialEvent) instanceof PointerEvent && i2(t3.initialEvent);
21
+ })(this, { onMove: (e3) => {
22
+ let i2 = e3 / t2 * 100;
23
+ this.position = parseFloat(this.clamp(i2, 0, 100).toFixed(2)), this.native.style.setProperty("--wje-img-compare-divider-left", this.position + "%"), this.native.style.setProperty("--wje-img-compare-clip-path", `inset(0 ${100 - this.position}% 0 0)`);
24
+ }, initialEvent: e2 });
62
25
  });
63
- /**
64
- * Clamps a number between a minimum and maximum value.
65
- * @param {number} num The number to clamp.
66
- * @param {number} min The minimum value.
67
- * @param {number} max The maximum value.
68
- * @returns {number} The clamped number.
69
- */
70
- __publicField(this, "clamp", (num, min, max) => Math.min(Math.max(num, min), max));
26
+ __publicField(this, "clamp", (e2, t2, i2) => Math.min(Math.max(e2, t2), i2));
71
27
  }
72
- /**
73
- * Returns the CSS styles for the component.
74
- * @static
75
- * @returns {CSSStyleSheet}
76
- */
77
28
  static get cssStyleSheet() {
78
- return styles;
29
+ return ':host{display:inline-block;position:relative;width:100%;border-color:var(--wje-border-color);border-style:solid;border-width:1px}.wje-before,.wje-after{display:block}.wje-after{position:absolute;top:0;left:0;height:100%;width:100%;clip-path:var(--wje-img-compare-clip-path)}.native-split-view{max-width:100%;max-height:100%;overflow:hidden}.wje-divider{display:flex;position:absolute;align-items:center;justify-content:center;z-index:1;background-color:var(--wje-img-compare-divider-background);height:100%;width:var(--wje-img-compare-divider-size);cursor:col-resize;top:0;left:var(--wje-img-compare-divider-left)}.wje-divider:after{display:flex;content:"";position:absolute;height:100%;left:calc(var(--wje-img-compare-divider-area) / -2 + var(--wje-img-compare-divider-size) / 2);width:var(---wje-img-compare-divider-area)}.wje-divider wje-icon{position:absolute;background-color:#fff;padding:.5rem;color:var(--wje-color-dark);border-radius:var(--wje-border-radius-circle);box-shadow:#523f6933 0 0 30px 10px;background:var(--wje-color-white)!important}';
79
30
  }
80
- /**
81
- * Returns the list of attributes to observe for changes.
82
- * @static
83
- * @returns {Array<string>}
84
- */
85
31
  static get observedAttributes() {
86
32
  return [];
87
33
  }
88
- /**
89
- * Sets up the attributes for the component.
90
- */
91
34
  setupAttributes() {
92
- this.isShadowRoot = "open";
93
- this.setAriaState({ role: "group" });
35
+ this.isShadowRoot = "open", this.setAriaState({ role: "group" });
94
36
  }
95
- /**
96
- * Draws the component.
97
- * @returns {DocumentFragment}
98
- */
99
37
  draw() {
100
- let fragment = document.createDocumentFragment();
101
- let native = document.createElement("div");
102
- native.classList.add("native-split-view");
103
- let beforeElement = document.createElement("div");
104
- beforeElement.classList.add("wje-before");
105
- let before = document.createElement("slot");
106
- before.setAttribute("name", "before");
107
- let afterElement = document.createElement("div");
108
- afterElement.classList.add("wje-after");
109
- let after = document.createElement("slot");
110
- after.setAttribute("name", "after");
111
- let icon = document.createElement("wje-icon");
112
- icon.setAttribute("name", "arrow-bar-both");
113
- let dividerElement = document.createElement("div");
114
- dividerElement.classList.add("wje-divider");
115
- dividerElement.setAttribute("part", "divider");
116
- dividerElement.setAttribute("role", "separator");
117
- dividerElement.setAttribute("tabindex", "0");
118
- dividerElement.setAttribute("aria-orientation", "horizontal");
119
- dividerElement.addEventListener("mousedown", this.handleDrag, false);
120
- beforeElement.appendChild(before);
121
- afterElement.appendChild(after);
122
- dividerElement.appendChild(icon);
123
- native.appendChild(beforeElement);
124
- native.appendChild(afterElement);
125
- native.appendChild(dividerElement);
126
- fragment.appendChild(native);
127
- this.native = native;
128
- return fragment;
38
+ let e2 = document.createDocumentFragment(), t2 = document.createElement("div");
39
+ t2.classList.add("native-split-view");
40
+ let i2 = document.createElement("div");
41
+ i2.classList.add("wje-before");
42
+ let o = document.createElement("slot");
43
+ o.setAttribute("name", "before");
44
+ let r = document.createElement("div");
45
+ r.classList.add("wje-after");
46
+ let a = document.createElement("slot");
47
+ a.setAttribute("name", "after");
48
+ let n = document.createElement("wje-icon");
49
+ n.setAttribute("name", "arrow-bar-both");
50
+ let d = document.createElement("div");
51
+ return d.classList.add("wje-divider"), d.setAttribute("part", "divider"), d.setAttribute("role", "separator"), d.setAttribute("tabindex", "0"), d.setAttribute("aria-orientation", "horizontal"), d.addEventListener("mousedown", this.handleDrag, false), i2.appendChild(o), r.appendChild(a), d.appendChild(n), t2.appendChild(i2), t2.appendChild(r), t2.appendChild(d), e2.appendChild(t2), this.native = t2, e2;
129
52
  }
130
53
  }
131
- ImgComparer.define("wje-img-comparer", ImgComparer);
54
+ i.define("wje-img-comparer", i);
132
55
  export {
133
- ImgComparer as default
56
+ i as default
134
57
  };
135
58
  //# sourceMappingURL=wje-img-comparer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wje-img-comparer.js","sources":["../packages/wje-img-comparer/service/service.js","../packages/wje-img-comparer/img-comparer.element.js","../packages/wje-img-comparer/img-comparer.js"],"sourcesContent":["export function drag(container, options) {\n function move(pointerEvent) {\n const dims = container.getBoundingClientRect();\n const defaultView = container.ownerDocument.defaultView;\n const offsetX = dims.left + defaultView.pageXOffset;\n const offsetY = dims.top + defaultView.pageYOffset;\n const x = pointerEvent.pageX - offsetX;\n const y = pointerEvent.pageY - offsetY;\n\n if (options?.onMove) {\n options.onMove(x, y);\n }\n }\n\n function stop() {\n document.removeEventListener('pointermove', move);\n document.removeEventListener('pointerup', stop);\n\n if (options?.onStop) {\n options.onStop();\n }\n }\n\n document.addEventListener('pointermove', move, { passive: true });\n document.addEventListener('pointerup', stop);\n\n if (options?.initialEvent instanceof PointerEvent) {\n move(options.initialEvent);\n }\n}\n","import { default as WJElement } from '../wje-element/element.js';\nimport Icon from '../wje-icon/icon.js';\nimport { drag } from './service/service.js';\nimport styles from './styles/styles.css?inline';\n\n/**\n * @summary This element allows users to compare two images. `ImgComparer` is a custom web component that represents an image comparer.\n * It extends from `WJElement` and uses the `Icon` component.\n * @documentation https://elements.webjet.sk/components/img-comparer\n * @status stable\n * @augments {WJElement}\n * @slot before - The before image slot.\n * @slot after - The after image slot.\n * @csspart divider - The divider part.\n * @cssproperty [--wje-img-compare-divider-area=12px] - The area of the divider. This is the size of the divider. Accepts any valid CSS size.\n * @cssproperty [--wje-img-compare-divider-background=white] - Sets the background color of the divider in the image comparison component. Accepts any valid CSS color value (e.g., `red`, `#ff0000`, `rgba(255, 255, 255, 0.5)`). The default value is `white`, which ensures high contrast in most designs.\n * @cssproperty [--wje-img-compare-divider-size=2px] - The size of the divider. This is the thickness of the divider. Accepts any valid CSS size.\n * @cssproperty [--wje-img-compare-divider-left=50%] - The left position of the divider. This is the initial position of the divider.\n * @cssproperty [--wje-img-compare-position=50%] - The position of the divider. This is the position of the divider.\n * @cssproperty [--wje-img-compare-clip-path=inset(0 calc(100% - var(--wje-img-compare-position)) 0 0)] - The clip path of the divider. This is the clip path of the divider.\n * @tag wje-img-comparer\n */\nexport default class ImgComparer extends WJElement {\n /**\n * Creates an instance of ImgComparer.\n * @class\n */\n constructor() {\n super();\n }\n\n /**\n * Dependencies of the ImgComparer component.\n * @property {object} dependencies\n */\n dependencies = {\n 'wje-icon': Icon,\n };\n\n className = 'ImgComparer';\n\n /**\n * Returns the CSS styles for the component.\n * @static\n * @returns {CSSStyleSheet}\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Returns the list of attributes to observe for changes.\n * @static\n * @returns {Array<string>}\n */\n static get observedAttributes() {\n return [];\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n this.setAriaState({ role: 'group' });\n }\n\n /**\n * Draws the component.\n * @returns {DocumentFragment}\n */\n draw() {\n let fragment = document.createDocumentFragment();\n\n let native = document.createElement('div');\n native.classList.add('native-split-view');\n\n let beforeElement = document.createElement('div');\n beforeElement.classList.add('wje-before');\n\n let before = document.createElement('slot');\n before.setAttribute('name', 'before');\n\n let afterElement = document.createElement('div');\n afterElement.classList.add('wje-after');\n\n let after = document.createElement('slot');\n after.setAttribute('name', 'after');\n\n let icon = document.createElement('wje-icon');\n icon.setAttribute('name', 'arrow-bar-both');\n\n let dividerElement = document.createElement('div');\n dividerElement.classList.add('wje-divider');\n dividerElement.setAttribute('part', 'divider');\n dividerElement.setAttribute('role', 'separator');\n dividerElement.setAttribute('tabindex', '0');\n dividerElement.setAttribute('aria-orientation', 'horizontal');\n dividerElement.addEventListener('mousedown', this.handleDrag, false);\n\n beforeElement.appendChild(before);\n afterElement.appendChild(after);\n dividerElement.appendChild(icon);\n\n native.appendChild(beforeElement);\n native.appendChild(afterElement);\n native.appendChild(dividerElement);\n\n fragment.appendChild(native);\n\n this.native = native;\n\n return fragment;\n }\n\n /**\n * Handles the drag event.\n * @param {Event} e The event.\n */\n handleDrag = (e) => {\n const { width } = this.native.getBoundingClientRect();\n\n drag(this, {\n onMove: (x) => {\n let value = (x / width) * 100;\n this.position = parseFloat(this.clamp(value, 0, 100).toFixed(2));\n this.native.style.setProperty('--wje-img-compare-divider-left', this.position + '%');\n this.native.style.setProperty('--wje-img-compare-clip-path', `inset(0 ${100 - this.position}% 0 0)`);\n },\n initialEvent: e,\n });\n };\n\n /**\n * Clamps a number between a minimum and maximum value.\n * @param {number} num The number to clamp.\n * @param {number} min The minimum value.\n * @param {number} max The maximum value.\n * @returns {number} The clamped number.\n */\n clamp = (num, min, max) => Math.min(Math.max(num, min), max);\n}\n","import ImgComparer from './img-comparer.element.js';\n\nexport default ImgComparer;\n\nImgComparer.define('wje-img-comparer', ImgComparer);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wje-img-comparer.js","sources":["../packages/wje-img-comparer/img-comparer.element.js","../packages/wje-img-comparer/service/service.js","../packages/wje-img-comparer/img-comparer.js"],"sourcesContent":["import { default as WJElement } from '../wje-element/element.js';\nimport Icon from '../wje-icon/icon.js';\nimport { drag } from './service/service.js';\nimport styles from './styles/styles.css?inline';\n\n/**\n * @summary This element allows users to compare two images. `ImgComparer` is a custom web component that represents an image comparer.\n * It extends from `WJElement` and uses the `Icon` component.\n * @documentation https://elements.webjet.sk/components/img-comparer\n * @status stable\n * @augments {WJElement}\n * @slot before - The before image slot.\n * @slot after - The after image slot.\n * @csspart divider - The divider part.\n * @cssproperty [--wje-img-compare-divider-area=12px] - The area of the divider. This is the size of the divider. Accepts any valid CSS size.\n * @cssproperty [--wje-img-compare-divider-background=white] - Sets the background color of the divider in the image comparison component. Accepts any valid CSS color value (e.g., `red`, `#ff0000`, `rgba(255, 255, 255, 0.5)`). The default value is `white`, which ensures high contrast in most designs.\n * @cssproperty [--wje-img-compare-divider-size=2px] - The size of the divider. This is the thickness of the divider. Accepts any valid CSS size.\n * @cssproperty [--wje-img-compare-divider-left=50%] - The left position of the divider. This is the initial position of the divider.\n * @cssproperty [--wje-img-compare-position=50%] - The position of the divider. This is the position of the divider.\n * @cssproperty [--wje-img-compare-clip-path=inset(0 calc(100% - var(--wje-img-compare-position)) 0 0)] - The clip path of the divider. This is the clip path of the divider.\n * @tag wje-img-comparer\n */\nexport default class ImgComparer extends WJElement {\n /**\n * Creates an instance of ImgComparer.\n * @class\n */\n constructor() {\n super();\n }\n\n /**\n * Dependencies of the ImgComparer component.\n * @property {object} dependencies\n */\n dependencies = {\n 'wje-icon': Icon,\n };\n\n className = 'ImgComparer';\n\n /**\n * Returns the CSS styles for the component.\n * @static\n * @returns {CSSStyleSheet}\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Returns the list of attributes to observe for changes.\n * @static\n * @returns {Array<string>}\n */\n static get observedAttributes() {\n return [];\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n this.setAriaState({ role: 'group' });\n }\n\n /**\n * Draws the component.\n * @returns {DocumentFragment}\n */\n draw() {\n let fragment = document.createDocumentFragment();\n\n let native = document.createElement('div');\n native.classList.add('native-split-view');\n\n let beforeElement = document.createElement('div');\n beforeElement.classList.add('wje-before');\n\n let before = document.createElement('slot');\n before.setAttribute('name', 'before');\n\n let afterElement = document.createElement('div');\n afterElement.classList.add('wje-after');\n\n let after = document.createElement('slot');\n after.setAttribute('name', 'after');\n\n let icon = document.createElement('wje-icon');\n icon.setAttribute('name', 'arrow-bar-both');\n\n let dividerElement = document.createElement('div');\n dividerElement.classList.add('wje-divider');\n dividerElement.setAttribute('part', 'divider');\n dividerElement.setAttribute('role', 'separator');\n dividerElement.setAttribute('tabindex', '0');\n dividerElement.setAttribute('aria-orientation', 'horizontal');\n dividerElement.addEventListener('mousedown', this.handleDrag, false);\n\n beforeElement.appendChild(before);\n afterElement.appendChild(after);\n dividerElement.appendChild(icon);\n\n native.appendChild(beforeElement);\n native.appendChild(afterElement);\n native.appendChild(dividerElement);\n\n fragment.appendChild(native);\n\n this.native = native;\n\n return fragment;\n }\n\n /**\n * Handles the drag event.\n * @param {Event} e The event.\n */\n handleDrag = (e) => {\n const { width } = this.native.getBoundingClientRect();\n\n drag(this, {\n onMove: (x) => {\n let value = (x / width) * 100;\n this.position = parseFloat(this.clamp(value, 0, 100).toFixed(2));\n this.native.style.setProperty('--wje-img-compare-divider-left', this.position + '%');\n this.native.style.setProperty('--wje-img-compare-clip-path', `inset(0 ${100 - this.position}% 0 0)`);\n },\n initialEvent: e,\n });\n };\n\n /**\n * Clamps a number between a minimum and maximum value.\n * @param {number} num The number to clamp.\n * @param {number} min The minimum value.\n * @param {number} max The maximum value.\n * @returns {number} The clamped number.\n */\n clamp = (num, min, max) => Math.min(Math.max(num, min), max);\n}\n","export function drag(container, options) {\n function move(pointerEvent) {\n const dims = container.getBoundingClientRect();\n const defaultView = container.ownerDocument.defaultView;\n const offsetX = dims.left + defaultView.pageXOffset;\n const offsetY = dims.top + defaultView.pageYOffset;\n const x = pointerEvent.pageX - offsetX;\n const y = pointerEvent.pageY - offsetY;\n\n if (options?.onMove) {\n options.onMove(x, y);\n }\n }\n\n function stop() {\n document.removeEventListener('pointermove', move);\n document.removeEventListener('pointerup', stop);\n\n if (options?.onStop) {\n options.onStop();\n }\n }\n\n document.addEventListener('pointermove', move, { passive: true });\n document.addEventListener('pointerup', stop);\n\n if (options?.initialEvent instanceof PointerEvent) {\n move(options.initialEvent);\n }\n}\n","import ImgComparer from './img-comparer.element.js';\n\nexport default ImgComparer;\n\nImgComparer.define('wje-img-comparer', ImgComparer);\n"],"names":["ImgComparer","WJElement","constructor","super","dependencies","Icon","className","handleDrag","e","width","this","native","getBoundingClientRect","container","options","move","pointerEvent","dims","defaultView","ownerDocument","offsetX","left","pageXOffset","offsetY","top","pageYOffset","x","pageX","y","pageY","onMove","document","addEventListener","passive","stop","removeEventListener","onStop","initialEvent","PointerEvent","value","position","parseFloat","clamp","toFixed","style","setProperty","num","min","max","Math","cssStyleSheet","setupAttributes","isShadowRoot","setAriaState","role","draw","fragment","createDocumentFragment","createElement","classList","add","beforeElement","before","setAttribute","afterElement","after","icon","dividerElement","appendChild","define"],"mappings":"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"}
package/dist/wje-img.js CHANGED
@@ -1,245 +1,98 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import WJElement from "./wje-element.js";
5
- const styles = "/*\n[ WJ Img ]\n*/\n\nimg {\n display: block;\n width: var(--wje-img-width, 100%);\n height: var(--wje-img-height, auto);\n max-width: 100%;\n object-fit: inherit;\n border-radius: var(--wje-img-border-radius, 0);\n}\n";
6
- class Img extends WJElement {
7
- /**
8
- * Creates an instance of Img.
9
- * @class
10
- */
4
+ import { getBasePath as t } from "./base-path.js";
5
+ import e from "./wje-element.js";
6
+ class i extends e {
11
7
  constructor() {
12
8
  super();
13
- /**
14
- * The class name for the component.
15
- * @type {string}
16
- */
17
9
  __publicField(this, "className", "Img");
18
- __publicField(this, "setAvatarInitials", (value = false) => {
19
- let parent = this.parentElement;
20
- if ((parent == null ? void 0 : parent.tagName) === "WJE-AVATAR") parent.initials = value;
10
+ __publicField(this, "setAvatarInitials", (t2 = false) => {
11
+ let e2 = this.parentElement;
12
+ "WJE-AVATAR" === (e2 == null ? void 0 : e2.tagName) && (e2.initials = t2);
21
13
  });
22
- /**
23
- * Deletes the current image by calling the remove method.
24
- * This function is typically used to trigger the removal of an image element
25
- * or perform cleanup operations related to the image.
26
- */
27
14
  __publicField(this, "deleteImage", () => {
28
15
  this.remove();
29
16
  });
30
- /**
31
- * Handles error scenarios by checking the `fallout` property and performing
32
- * corresponding actions. If `fallout` is not defined, the function terminates
33
- * early. Logs the active actions and attempts to assign an error handler
34
- * based on the `fallout` value. If the `fallout` value does not correspond to
35
- * a recognized action, it logs an error message.
36
- * @function onerrorFunc
37
- * @memberof Img
38
- */
39
- __publicField(this, "onerrorFunc", (img) => {
40
- if (!this.fallout) return;
41
- if (this.actions[this.fallout]) {
42
- img.onerror = this.actions[this.fallout];
43
- } else {
44
- console.error("Unsupported value:", this.fallout);
45
- }
17
+ __publicField(this, "onerrorFunc", (t2) => {
18
+ this.fallout && (this.actions[this.fallout] ? t2.onerror = this.actions[this.fallout] : console.error("Unsupported value:", this.fallout));
46
19
  });
47
- this._fallout = false;
48
- this.actions = {
49
- delete: () => this.deleteImage(),
50
- log: () => console.error("Error log pre obrázok:", this.src)
51
- };
52
- }
53
- /**
54
- * Sets the value of the `src` attribute for the element.
55
- * @param {string} value The value to set for the `src` attribute.
56
- */
57
- set src(value) {
58
- this.setAttribute("src", value);
59
- }
60
- /**
61
- * Retrieves the value of the 'src' attribute from the element.
62
- * @returns {string} The value of the 'src' attribute.
63
- */
20
+ this._fallout = false, this.actions = { delete: () => this.deleteImage(), log: () => console.error("Error log pre obrázok:", this.src) };
21
+ }
22
+ set src(t2) {
23
+ this.setAttribute("src", t2);
24
+ }
64
25
  get src() {
65
26
  return this.getAttribute("src");
66
27
  }
67
- /**
68
- * Sets the value of the 'alt' attribute for the element.
69
- * @param {string} value The new value to set for the 'alt' attribute.
70
- */
71
- set alt(value) {
72
- this.setAttribute("alt", value);
73
- }
74
- /**
75
- * Retrieves the value of the 'alt' attribute for the current element.
76
- * @returns {string|null} The value of the 'alt' attribute, or null if the attribute is not set.
77
- */
28
+ set alt(t2) {
29
+ this.setAttribute("alt", t2);
30
+ }
78
31
  get alt() {
79
32
  return this.getAttribute("alt");
80
33
  }
81
- /**
82
- * Sets the fallout property. Updates the `fallout` attribute if the value is a string;
83
- * otherwise, assigns the value to the `_fallout` property.
84
- * @param {string|*} value The value to set for the fallout property. If a string, it will update the `fallout` attribute; for other types, it will assign it to the `_fallout` property.
85
- */
86
- set fallout(value) {
87
- if (typeof value === "string") {
88
- this.setAttribute("fallout", value);
89
- } else {
90
- this._fallout = value;
91
- }
34
+ set fallout(t2) {
35
+ "string" == typeof t2 ? this.setAttribute("fallout", t2) : this._fallout = t2;
92
36
  }
93
- /**
94
- * Retrieves the value of the 'fallout' attribute if it exists, otherwise returns the internal `_fallout` property.
95
- * @returns {string|null} The value of the 'fallout' attribute or the `_fallout` property if the attribute is not present. Returns null if no value is found.
96
- */
97
37
  get fallout() {
98
38
  return this.hasAttribute("fallout") ? this.getAttribute("fallout") : this._fallout;
99
39
  }
100
- /**
101
- * Sets the value of the loader attribute.
102
- * @param {string} value The value to set for the loader attribute.
103
- */
104
- set loader(value) {
105
- if (value) {
106
- this.setAttribute("loader", value);
107
- }
40
+ set loader(t2) {
41
+ t2 && this.setAttribute("loader", t2);
108
42
  }
109
- /**
110
- * Retrieves the value of the 'loader' attribute from the element.
111
- * @returns {string|null} The value of the 'loader' attribute if set, otherwise null.
112
- */
113
43
  get loader() {
114
- return this.getAttribute("loader") || "./assets/img/image-loader.gif";
115
- }
116
- /**
117
- * Enables or disables lazy loading for the image.
118
- * @param {boolean} value True to disable lazy loading, false to restore the default lazy behavior.
119
- */
120
- set noLazy(value) {
121
- if (value) {
122
- this.setAttribute("no-lazy", "");
123
- } else {
124
- this.removeAttribute("no-lazy");
125
- }
44
+ return this.getAttribute("loader") || t("assets/img/image-loader.gif");
45
+ }
46
+ set noLazy(t2) {
47
+ t2 ? this.setAttribute("no-lazy", "") : this.removeAttribute("no-lazy");
126
48
  }
127
- /**
128
- * Checks whether lazy loading is disabled.
129
- * @returns {boolean} True when the `no-lazy` attribute is present.
130
- */
131
49
  get noLazy() {
132
50
  return this.hasAttribute("no-lazy");
133
51
  }
134
- /**
135
- * Returns the CSS styles for the component.
136
- * @static
137
- * @returns {CSSStyleSheet}
138
- */
139
52
  static get cssStyleSheet() {
140
- return styles;
53
+ return "img{display:block;width:var(--wje-img-width, 100%);height:var(--wje-img-height, auto);max-width:100%;object-fit:inherit;border-radius:var(--wje-img-border-radius, 0)}";
141
54
  }
142
- /**
143
- * Returns the list of attributes to observe for changes.
144
- * @static
145
- * @returns {Array<string>}
146
- */
147
55
  static get observedAttributes() {
148
56
  return ["src", "alt", "no-lazy"];
149
57
  }
150
- attributeChangedCallback(name, oldValue, newValue) {
58
+ attributeChangedCallback(t2, e2, i2) {
151
59
  var _a, _b;
152
- (_a = super.attributeChangedCallback) == null ? void 0 : _a.call(this, name, oldValue, newValue);
153
- if (oldValue === newValue) return;
154
- if (name === "alt") {
155
- if (this.native) this.native.setAttribute("alt", this.alt || "");
156
- const label = (_b = this.alt) == null ? void 0 : _b.trim();
157
- if (label) this.setAriaState({ label });
60
+ if ((_a = super.attributeChangedCallback) == null ? void 0 : _a.call(this, t2, e2, i2), e2 !== i2 && "alt" === t2) {
61
+ this.native && this.native.setAttribute("alt", this.alt || "");
62
+ const t3 = (_b = this.alt) == null ? void 0 : _b.trim();
63
+ t3 && this.setAriaState({ label: t3 });
158
64
  }
159
65
  }
160
- /**
161
- * Sets up the attributes for the component.
162
- */
163
66
  setupAttributes() {
164
67
  var _a;
165
- this.isShadowRoot = "open";
166
- this.setAriaState({ role: "img" });
167
- if ((_a = this.alt) == null ? void 0 : _a.trim()) this.setAriaState({ label: this.alt.trim() });
168
- }
169
- /**
170
- * Creates and assembles a lazy-loaded image element within a document fragment.
171
- * @returns {DocumentFragment} A document fragment containing the image element.
172
- */
68
+ this.isShadowRoot = "open", this.setAriaState({ role: "img" }), ((_a = this.alt) == null ? void 0 : _a.trim()) && this.setAriaState({ label: this.alt.trim() });
69
+ }
173
70
  draw() {
174
71
  var _a;
175
- let fragment = document.createDocumentFragment();
176
- let native = document.createElement("img");
177
- native.setAttribute("part", "native");
178
- native.setAttribute("src", this.noLazy ? this.src : this.loader);
179
- native.setAttribute("alt", this.alt || "");
180
- native.classList.add("lazy-loaded-image", "lazy");
181
- native.addEventListener("error", (e) => {
182
- const absoluteLoaderUrl = new URL(this.loader, window.location.origin).href;
183
- if (e.target.src === absoluteLoaderUrl) return;
184
- this.setAvatarInitials(true);
185
- });
186
- this.onerrorFunc(native);
187
- fragment.appendChild(native);
188
- this.native = native;
189
- if ((_a = this.alt) == null ? void 0 : _a.trim()) this.setAriaState({ label: this.alt.trim() });
190
- return fragment;
191
- }
192
- /**
193
- * Handles post-draw operations, such as setting up a lazy image loader using an IntersectionObserver.
194
- * Observes when the target element becomes visible in the viewport and updates its source with the provided image source.
195
- * Removes the `lazy` class once the image source is updated and unobserves the element.
196
- * It also invokes the `onerrorFunc` method at the beginning to handle potential error scenarios.
197
- * @returns {void} Does not return a value.
198
- */
72
+ let t2 = document.createDocumentFragment(), e2 = document.createElement("img");
73
+ return e2.setAttribute("part", "native"), e2.setAttribute("src", this.noLazy ? this.src : this.loader), e2.setAttribute("alt", this.alt || ""), e2.classList.add("lazy-loaded-image", "lazy"), e2.addEventListener("error", (t3) => {
74
+ const e3 = new URL(this.loader, window.location.origin).href;
75
+ t3.target.src !== e3 && this.setAvatarInitials(true);
76
+ }), this.onerrorFunc(e2), t2.appendChild(e2), this.native = e2, ((_a = this.alt) == null ? void 0 : _a.trim()) && this.setAriaState({ label: this.alt.trim() }), t2;
77
+ }
199
78
  afterDraw() {
200
- if (this.noLazy) {
201
- this.native.classList.remove("lazy");
202
- return;
203
- }
204
- let lazyImageObserver = new IntersectionObserver((entries, observer) => {
205
- entries.forEach((entry) => {
206
- if (entry.isIntersecting) {
207
- entry.target.src = this.src;
208
- this.classList.remove("lazy");
209
- lazyImageObserver.unobserve(entry.target);
210
- }
79
+ if (this.noLazy) return void this.native.classList.remove("lazy");
80
+ let t2 = new IntersectionObserver((e2, i2) => {
81
+ e2.forEach((e3) => {
82
+ e3.isIntersecting && (e3.target.src = this.src, this.classList.remove("lazy"), t2.unobserve(e3.target));
211
83
  });
212
84
  });
213
- lazyImageObserver.observe(this.native);
214
- }
215
- /**
216
- * Adds a new action to the internal actions object.
217
- * @param {string} name The name of the action to be added.
218
- * @param {Function} func The function representing the action logic.
219
- * @returns {void} This method does not return a value.
220
- */
221
- addAction(name, func) {
222
- if (typeof func === "function") {
223
- this.actions[name] = func;
224
- } else {
225
- console.error("The action must be a function.");
226
- }
85
+ t2.observe(this.native);
227
86
  }
228
- /**
229
- * Removes an action from the actions list if it exists.
230
- * @param {string} name The name of the action to remove.
231
- * @returns {void} Does not return a value.
232
- */
233
- removeAction(name) {
234
- if (this.actions[name]) {
235
- delete this.actions[name];
236
- } else {
237
- console.error(`Action "${name}" does not exist.`);
238
- }
87
+ addAction(t2, e2) {
88
+ "function" == typeof e2 ? this.actions[t2] = e2 : console.error("The action must be a function.");
89
+ }
90
+ removeAction(t2) {
91
+ this.actions[t2] ? delete this.actions[t2] : console.error(`Action "${t2}" does not exist.`);
239
92
  }
240
93
  }
241
- Img.define("wje-img", Img);
94
+ i.define("wje-img", i);
242
95
  export {
243
- Img as default
96
+ i as default
244
97
  };
245
98
  //# sourceMappingURL=wje-img.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wje-img.js","sources":["../packages/wje-img/img.element.js","../packages/wje-img/img.js"],"sourcesContent":["import { default as WJElement } from '../wje-element/element.js';\nimport styles from './styles/styles.css?inline';\n\n/**\n * @summary This element represents an image. `Img` is a custom web component that represents an image. It extends from `WJElement`.\n * @documentation https://elements.webjet.sk/components/img\n * @status stable\n * @augments {WJElement}\n * @cssproperty --img-width - The width of the image\n * @cssproperty --img-height - The height of the image\n * @property {string} src - The source URL of the image.\n * @property {string} alt - The alternative text for the image.\n * @property {string} fallout - The action to perform when an error occurs while loading the image. The value can be a function or a predefined action like 'delete'.\n * @property {string} loader - The URL of the image loader to display while the image is loading.\n * @property {boolean} noLazy - Disables lazy loading and renders the image source immediately.\n * @tag wje-img\n */\nexport default class Img extends WJElement {\n /**\n * Creates an instance of Img.\n * @class\n */\n constructor() {\n super();\n\n this._fallout = false;\n\n this.actions = {\n delete: () => this.deleteImage(),\n log: () => console.error('Error log pre obrázok:', this.src),\n };\n }\n\n /**\n * Sets the value of the `src` attribute for the element.\n * @param {string} value The value to set for the `src` attribute.\n */\n set src(value) {\n this.setAttribute('src', value);\n }\n\n /**\n * Retrieves the value of the 'src' attribute from the element.\n * @returns {string} The value of the 'src' attribute.\n */\n get src() {\n return this.getAttribute('src');\n }\n\n /**\n * Sets the value of the 'alt' attribute for the element.\n * @param {string} value The new value to set for the 'alt' attribute.\n */\n set alt(value) {\n this.setAttribute('alt', value);\n }\n\n /**\n * Retrieves the value of the 'alt' attribute for the current element.\n * @returns {string|null} The value of the 'alt' attribute, or null if the attribute is not set.\n */\n get alt() {\n return this.getAttribute('alt');\n }\n\n /**\n * Sets the fallout property. Updates the `fallout` attribute if the value is a string;\n * otherwise, assigns the value to the `_fallout` property.\n * @param {string|*} value The value to set for the fallout property. If a string, it will update the `fallout` attribute; for other types, it will assign it to the `_fallout` property.\n */\n set fallout(value) {\n if (typeof value === 'string') {\n this.setAttribute('fallout', value);\n } else {\n this._fallout = value;\n }\n }\n\n /**\n * Retrieves the value of the 'fallout' attribute if it exists, otherwise returns the internal `_fallout` property.\n * @returns {string|null} The value of the 'fallout' attribute or the `_fallout` property if the attribute is not present. Returns null if no value is found.\n */\n get fallout() {\n return this.hasAttribute('fallout') ? this.getAttribute('fallout') : this._fallout;\n }\n\n /**\n * Sets the value of the loader attribute.\n * @param {string} value The value to set for the loader attribute.\n */\n set loader(value) {\n if (value) {\n this.setAttribute('loader', value);\n }\n }\n\n /**\n * Retrieves the value of the 'loader' attribute from the element.\n * @returns {string|null} The value of the 'loader' attribute if set, otherwise null.\n */\n get loader() {\n return this.getAttribute('loader') || './assets/img/image-loader.gif';\n }\n\n /**\n * Enables or disables lazy loading for the image.\n * @param {boolean} value True to disable lazy loading, false to restore the default lazy behavior.\n */\n set noLazy(value) {\n if (value) {\n this.setAttribute('no-lazy', '');\n } else {\n this.removeAttribute('no-lazy');\n }\n }\n\n /**\n * Checks whether lazy loading is disabled.\n * @returns {boolean} True when the `no-lazy` attribute is present.\n */\n get noLazy() {\n return this.hasAttribute('no-lazy');\n }\n\n /**\n * The class name for the component.\n * @type {string}\n */\n className = 'Img';\n\n /**\n * Returns the CSS styles for the component.\n * @static\n * @returns {CSSStyleSheet}\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Returns the list of attributes to observe for changes.\n * @static\n * @returns {Array<string>}\n */\n static get observedAttributes() {\n return ['src', 'alt', 'no-lazy'];\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n super.attributeChangedCallback?.(name, oldValue, newValue);\n if (oldValue === newValue) return;\n if (name === 'alt') {\n if (this.native) this.native.setAttribute('alt', this.alt || '');\n const label = this.alt?.trim();\n if (label) this.setAriaState({ label });\n }\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n this.setAriaState({ role: 'img' });\n if (this.alt?.trim()) this.setAriaState({ label: this.alt.trim() });\n }\n\n /**\n * Creates and assembles a lazy-loaded image element within a document fragment.\n * @returns {DocumentFragment} A document fragment containing the image element.\n */\n draw() {\n let fragment = document.createDocumentFragment();\n\n let native = document.createElement('img');\n native.setAttribute('part', 'native');\n native.setAttribute('src', this.noLazy ? this.src : this.loader);\n native.setAttribute('alt', this.alt || '');\n native.classList.add('lazy-loaded-image', 'lazy');\n native.addEventListener('error', (e) => {\n const absoluteLoaderUrl = new URL(this.loader, window.location.origin).href;\n if (e.target.src === absoluteLoaderUrl) return;\n\n this.setAvatarInitials(true);\n });\n\n this.onerrorFunc(native);\n\n fragment.appendChild(native);\n\n this.native = native;\n\n if (this.alt?.trim()) this.setAriaState({ label: this.alt.trim() });\n\n return fragment;\n }\n\n /**\n * Handles post-draw operations, such as setting up a lazy image loader using an IntersectionObserver.\n * Observes when the target element becomes visible in the viewport and updates its source with the provided image source.\n * Removes the `lazy` class once the image source is updated and unobserves the element.\n * It also invokes the `onerrorFunc` method at the beginning to handle potential error scenarios.\n * @returns {void} Does not return a value.\n */\n afterDraw() {\n if (this.noLazy) {\n this.native.classList.remove('lazy');\n return;\n }\n\n let lazyImageObserver = new IntersectionObserver((entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n entry.target.src = this.src;\n this.classList.remove('lazy');\n\n lazyImageObserver.unobserve(entry.target);\n }\n });\n });\n\n lazyImageObserver.observe(this.native);\n }\n\n setAvatarInitials = (value = false) => {\n let parent = this.parentElement;\n if (parent?.tagName === 'WJE-AVATAR') parent.initials = value;\n };\n /**\n * Deletes the current image by calling the remove method.\n * This function is typically used to trigger the removal of an image element\n * or perform cleanup operations related to the image.\n */\n deleteImage = () => {\n this.remove();\n };\n\n /**\n * Adds a new action to the internal actions object.\n * @param {string} name The name of the action to be added.\n * @param {Function} func The function representing the action logic.\n * @returns {void} This method does not return a value.\n */\n addAction(name, func) {\n if (typeof func === 'function') {\n this.actions[name] = func;\n } else {\n console.error('The action must be a function.');\n }\n }\n\n /**\n * Removes an action from the actions list if it exists.\n * @param {string} name The name of the action to remove.\n * @returns {void} Does not return a value.\n */\n removeAction(name) {\n if (this.actions[name]) {\n delete this.actions[name];\n } else {\n console.error(`Action \"${name}\" does not exist.`);\n }\n }\n\n /**\n * Handles error scenarios by checking the `fallout` property and performing\n * corresponding actions. If `fallout` is not defined, the function terminates\n * early. Logs the active actions and attempts to assign an error handler\n * based on the `fallout` value. If the `fallout` value does not correspond to\n * a recognized action, it logs an error message.\n * @function onerrorFunc\n * @memberof Img\n */\n onerrorFunc = (img) => {\n if (!this.fallout) return;\n if (this.actions[this.fallout]) {\n img.onerror = this.actions[this.fallout];\n } else {\n console.error('Unsupported value:', this.fallout);\n }\n };\n}\n","import Img from './img.element.js';\n\nexport default Img;\n\nImg.define('wje-img', Img);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wje-img.js","sources":["../packages/wje-img/img.element.js","../packages/wje-img/img.js"],"sourcesContent":["import { getBasePath } from '../utils/base-path.js';\nimport { default as WJElement } from '../wje-element/element.js';\nimport styles from './styles/styles.css?inline';\n\n/**\n * @summary This element represents an image. `Img` is a custom web component that represents an image. It extends from `WJElement`.\n * @documentation https://elements.webjet.sk/components/img\n * @status stable\n * @augments {WJElement}\n * @cssproperty --img-width - The width of the image\n * @cssproperty --img-height - The height of the image\n * @property {string} src - The source URL of the image.\n * @property {string} alt - The alternative text for the image.\n * @property {string} fallout - The action to perform when an error occurs while loading the image. The value can be a function or a predefined action like 'delete'.\n * @property {string} loader - The URL of the image loader to display while the image is loading. Defaults to the loader asset resolved from the configured base path.\n * @property {boolean} noLazy - Disables lazy loading and renders the image source immediately.\n * @tag wje-img\n */\nexport default class Img extends WJElement {\n /**\n * Creates an instance of Img.\n * @class\n */\n constructor() {\n super();\n\n this._fallout = false;\n\n this.actions = {\n delete: () => this.deleteImage(),\n log: () => console.error('Error log pre obrázok:', this.src),\n };\n }\n\n /**\n * Sets the value of the `src` attribute for the element.\n * @param {string} value The value to set for the `src` attribute.\n */\n set src(value) {\n this.setAttribute('src', value);\n }\n\n /**\n * Retrieves the value of the 'src' attribute from the element.\n * @returns {string} The value of the 'src' attribute.\n */\n get src() {\n return this.getAttribute('src');\n }\n\n /**\n * Sets the value of the 'alt' attribute for the element.\n * @param {string} value The new value to set for the 'alt' attribute.\n */\n set alt(value) {\n this.setAttribute('alt', value);\n }\n\n /**\n * Retrieves the value of the 'alt' attribute for the current element.\n * @returns {string|null} The value of the 'alt' attribute, or null if the attribute is not set.\n */\n get alt() {\n return this.getAttribute('alt');\n }\n\n /**\n * Sets the fallout property. Updates the `fallout` attribute if the value is a string;\n * otherwise, assigns the value to the `_fallout` property.\n * @param {string|*} value The value to set for the fallout property. If a string, it will update the `fallout` attribute; for other types, it will assign it to the `_fallout` property.\n */\n set fallout(value) {\n if (typeof value === 'string') {\n this.setAttribute('fallout', value);\n } else {\n this._fallout = value;\n }\n }\n\n /**\n * Retrieves the value of the 'fallout' attribute if it exists, otherwise returns the internal `_fallout` property.\n * @returns {string|null} The value of the 'fallout' attribute or the `_fallout` property if the attribute is not present. Returns null if no value is found.\n */\n get fallout() {\n return this.hasAttribute('fallout') ? this.getAttribute('fallout') : this._fallout;\n }\n\n /**\n * Sets the value of the loader attribute.\n * @param {string} value The value to set for the loader attribute.\n */\n set loader(value) {\n if (value) {\n this.setAttribute('loader', value);\n }\n }\n\n /**\n * Retrieves the configured loader URL or resolves the default loader from the base path.\n * @returns {string} The loader URL.\n */\n get loader() {\n return this.getAttribute('loader') || getBasePath('assets/img/image-loader.gif');\n }\n\n /**\n * Enables or disables lazy loading for the image.\n * @param {boolean} value True to disable lazy loading, false to restore the default lazy behavior.\n */\n set noLazy(value) {\n if (value) {\n this.setAttribute('no-lazy', '');\n } else {\n this.removeAttribute('no-lazy');\n }\n }\n\n /**\n * Checks whether lazy loading is disabled.\n * @returns {boolean} True when the `no-lazy` attribute is present.\n */\n get noLazy() {\n return this.hasAttribute('no-lazy');\n }\n\n /**\n * The class name for the component.\n * @type {string}\n */\n className = 'Img';\n\n /**\n * Returns the CSS styles for the component.\n * @static\n * @returns {CSSStyleSheet}\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Returns the list of attributes to observe for changes.\n * @static\n * @returns {Array<string>}\n */\n static get observedAttributes() {\n return ['src', 'alt', 'no-lazy'];\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n super.attributeChangedCallback?.(name, oldValue, newValue);\n if (oldValue === newValue) return;\n if (name === 'alt') {\n if (this.native) this.native.setAttribute('alt', this.alt || '');\n const label = this.alt?.trim();\n if (label) this.setAriaState({ label });\n }\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n this.setAriaState({ role: 'img' });\n if (this.alt?.trim()) this.setAriaState({ label: this.alt.trim() });\n }\n\n /**\n * Creates and assembles a lazy-loaded image element within a document fragment.\n * @returns {DocumentFragment} A document fragment containing the image element.\n */\n draw() {\n let fragment = document.createDocumentFragment();\n\n let native = document.createElement('img');\n native.setAttribute('part', 'native');\n native.setAttribute('src', this.noLazy ? this.src : this.loader);\n native.setAttribute('alt', this.alt || '');\n native.classList.add('lazy-loaded-image', 'lazy');\n native.addEventListener('error', (e) => {\n const absoluteLoaderUrl = new URL(this.loader, window.location.origin).href;\n if (e.target.src === absoluteLoaderUrl) return;\n\n this.setAvatarInitials(true);\n });\n\n this.onerrorFunc(native);\n\n fragment.appendChild(native);\n\n this.native = native;\n\n if (this.alt?.trim()) this.setAriaState({ label: this.alt.trim() });\n\n return fragment;\n }\n\n /**\n * Handles post-draw operations, such as setting up a lazy image loader using an IntersectionObserver.\n * Observes when the target element becomes visible in the viewport and updates its source with the provided image source.\n * Removes the `lazy` class once the image source is updated and unobserves the element.\n * It also invokes the `onerrorFunc` method at the beginning to handle potential error scenarios.\n * @returns {void} Does not return a value.\n */\n afterDraw() {\n if (this.noLazy) {\n this.native.classList.remove('lazy');\n return;\n }\n\n let lazyImageObserver = new IntersectionObserver((entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n entry.target.src = this.src;\n this.classList.remove('lazy');\n\n lazyImageObserver.unobserve(entry.target);\n }\n });\n });\n\n lazyImageObserver.observe(this.native);\n }\n\n setAvatarInitials = (value = false) => {\n let parent = this.parentElement;\n if (parent?.tagName === 'WJE-AVATAR') parent.initials = value;\n };\n /**\n * Deletes the current image by calling the remove method.\n * This function is typically used to trigger the removal of an image element\n * or perform cleanup operations related to the image.\n */\n deleteImage = () => {\n this.remove();\n };\n\n /**\n * Adds a new action to the internal actions object.\n * @param {string} name The name of the action to be added.\n * @param {Function} func The function representing the action logic.\n * @returns {void} This method does not return a value.\n */\n addAction(name, func) {\n if (typeof func === 'function') {\n this.actions[name] = func;\n } else {\n console.error('The action must be a function.');\n }\n }\n\n /**\n * Removes an action from the actions list if it exists.\n * @param {string} name The name of the action to remove.\n * @returns {void} Does not return a value.\n */\n removeAction(name) {\n if (this.actions[name]) {\n delete this.actions[name];\n } else {\n console.error(`Action \"${name}\" does not exist.`);\n }\n }\n\n /**\n * Handles error scenarios by checking the `fallout` property and performing\n * corresponding actions. If `fallout` is not defined, the function terminates\n * early. Logs the active actions and attempts to assign an error handler\n * based on the `fallout` value. If the `fallout` value does not correspond to\n * a recognized action, it logs an error message.\n * @function onerrorFunc\n * @memberof Img\n */\n onerrorFunc = (img) => {\n if (!this.fallout) return;\n if (this.actions[this.fallout]) {\n img.onerror = this.actions[this.fallout];\n } else {\n console.error('Unsupported value:', this.fallout);\n }\n };\n}\n","import Img from './img.element.js';\n\nexport default Img;\n\nImg.define('wje-img', Img);\n"],"names":["Img","WJElement","constructor","super","className","setAvatarInitials","value","parent","this","parentElement","tagName","initials","deleteImage","remove","onerrorFunc","img","fallout","actions","onerror","console","error","_fallout","delete","log","src","setAttribute","getAttribute","hasAttribute","loader","getBasePath","removeAttribute","noLazy","cssStyleSheet","observedAttributes","name","oldValue","newValue","attributeChangedCallback","native","alt","label","trim","setAriaState","setupAttributes","isShadowRoot","role","draw","fragment","document","createDocumentFragment","createElement","classList","add","addEventListener","e","absoluteLoaderUrl","URL","window","location","origin","href","target","appendChild","afterDraw","lazyImageObserver","IntersectionObserver","entries","observer","forEach","entry","isIntersecting","unobserve","observe","func","define"],"mappings":"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"}