wj-elements 0.1.174 → 0.1.176

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.
@@ -5,9 +5,11 @@ var __typeError = (msg) => {
5
5
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
6
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
7
7
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
8
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
8
9
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
10
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
9
11
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
10
- var _Event_instances, dispatch_fn;
12
+ var _Event_instances, dispatch_fn, _drawingStatus, _isAttached, _isRendering, _originalVisibility, _pristine, _WJElement_instances, enqueueUpdate_fn, refresh_fn, resolveRender_fn;
11
13
  import { store, defaultStoreActions } from "./wje-store.js";
12
14
  class UniversalService {
13
15
  constructor(props = {}) {
@@ -445,6 +447,12 @@ const _WJElement = class _WJElement extends HTMLElement {
445
447
  */
446
448
  constructor() {
447
449
  super();
450
+ __privateAdd(this, _WJElement_instances);
451
+ __privateAdd(this, _drawingStatus);
452
+ __privateAdd(this, _isAttached);
453
+ __privateAdd(this, _isRendering);
454
+ __privateAdd(this, _originalVisibility);
455
+ __privateAdd(this, _pristine);
448
456
  /**
449
457
  * Initializes the component, setting up attributes and rendering.
450
458
  * @param [force] Whether to force initialization.
@@ -453,13 +461,13 @@ const _WJElement = class _WJElement extends HTMLElement {
453
461
  __publicField(this, "initWjElement", (force = false) => {
454
462
  return new Promise(async (resolve, reject) => {
455
463
  var _a;
456
- this.drawingStatus = this.drawingStatuses.BEGINING;
464
+ __privateSet(this, _drawingStatus, this.drawingStatuses.BEGINING);
457
465
  (_a = this.setupAttributes) == null ? void 0 : _a.call(this);
458
466
  if (this.hasShadowRoot) {
459
467
  if (!this.shadowRoot) this.attachShadow({ mode: this.shadowType || "open" });
460
468
  }
461
469
  this.setUpAccessors();
462
- this.drawingStatus = this.drawingStatuses.START;
470
+ __privateSet(this, _drawingStatus, this.drawingStatuses.START);
463
471
  await this.display(force);
464
472
  const sheet = new CSSStyleSheet();
465
473
  sheet.replaceSync(this.constructor.cssStyleSheet);
@@ -467,12 +475,12 @@ const _WJElement = class _WJElement extends HTMLElement {
467
475
  resolve();
468
476
  });
469
477
  });
470
- this.isAttached = false;
478
+ __privateSet(this, _isAttached, false);
471
479
  this.service = new UniversalService({
472
480
  store
473
481
  });
474
482
  this.defineDependencies();
475
- this.rendering = false;
483
+ __privateSet(this, _isRendering, false);
476
484
  this._dependencies = {};
477
485
  this.drawingStatuses = {
478
486
  CREATED: 0,
@@ -483,18 +491,20 @@ const _WJElement = class _WJElement extends HTMLElement {
483
491
  DONE: 5,
484
492
  DISCONNECTED: 6
485
493
  };
486
- this.drawingStatus = this.drawingStatuses.CREATED;
487
- this._pristine = true;
488
- this._pristineCauseWeakMap = /* @__PURE__ */ new WeakMap();
489
- this.isRendering = false;
494
+ __privateSet(this, _drawingStatus, this.drawingStatuses.CREATED);
495
+ __privateSet(this, _pristine, true);
496
+ __privateSet(this, _isRendering, false);
490
497
  this.rafId = null;
491
- this.originalVisibility = null;
498
+ __privateSet(this, _originalVisibility, null);
492
499
  this.params = {};
493
500
  this.updateComplete = new Promise((resolve, reject) => {
494
501
  this.finisPromise = resolve;
495
502
  this.rejectPromise = reject;
496
503
  });
497
504
  }
505
+ get drawingStatus() {
506
+ return __privateGet(this, _drawingStatus);
507
+ }
498
508
  /**
499
509
  * Sets the value of the 'permission' attribute.
500
510
  * @param {string[]} value The value to set for the 'permission' attribute.
@@ -682,14 +692,14 @@ const _WJElement = class _WJElement extends HTMLElement {
682
692
  */
683
693
  connectedCallback() {
684
694
  var _a;
685
- if (!this.isRendering) {
686
- this.originalVisibility = this.originalVisibility ?? this.style.visibility;
695
+ if (!__privateGet(this, _isRendering)) {
696
+ __privateSet(this, _originalVisibility, __privateGet(this, _originalVisibility) ?? this.style.visibility);
687
697
  this.style.visibility = "hidden";
688
698
  (_a = this.setupAttributes) == null ? void 0 : _a.call(this);
689
699
  this.setUpAccessors();
690
- this.drawingStatus = this.drawingStatuses.ATTACHED;
691
- this._pristine = false;
692
- this.enqueueUpdate();
700
+ __privateSet(this, _drawingStatus, this.drawingStatuses.ATTACHED);
701
+ __privateSet(this, _pristine, false);
702
+ __privateMethod(this, _WJElement_instances, enqueueUpdate_fn).call(this);
693
703
  }
694
704
  }
695
705
  /**
@@ -732,29 +742,20 @@ const _WJElement = class _WJElement extends HTMLElement {
732
742
  */
733
743
  disconnectedCallback() {
734
744
  var _a, _b;
735
- if (this.isAttached) {
745
+ if (__privateGet(this, _isAttached)) {
736
746
  (_a = this.beforeDisconnect) == null ? void 0 : _a.call(this);
737
747
  this.context.innerHTML = "";
738
748
  (_b = this.afterDisconnect) == null ? void 0 : _b.call(this);
739
- this.isAttached = false;
740
- this.style.visibility = this.originalVisibility;
741
- this.originalVisibility = null;
749
+ __privateSet(this, _isAttached, false);
750
+ this.style.visibility = __privateGet(this, _originalVisibility);
751
+ __privateSet(this, _originalVisibility, null);
742
752
  }
743
- if (this.isRendering) {
753
+ if (__privateGet(this, _isRendering)) {
744
754
  this.stopRenderLoop();
745
755
  }
746
- this.drawingStatus = this.drawingStatuses.DISCONNECTED;
756
+ __privateSet(this, _drawingStatus, this.drawingStatuses.DISCONNECTED);
747
757
  this.componentCleanup();
748
758
  }
749
- /**
750
- * Enqueues an update for the component.
751
- * This method processes the current render promise and then refreshes the component.
752
- */
753
- enqueueUpdate() {
754
- if (!this.isRendering) {
755
- this.rafId = requestAnimationFrame(() => this._refresh());
756
- }
757
- }
758
759
  /**
759
760
  * Lifecycle method invoked when an observed attribute changes.
760
761
  * @param name The name of the attribute that changed.
@@ -763,8 +764,8 @@ const _WJElement = class _WJElement extends HTMLElement {
763
764
  */
764
765
  attributeChangedCallback(name, old, newName) {
765
766
  if (old !== newName) {
766
- this._pristine = false;
767
- this.enqueueUpdate();
767
+ __privateSet(this, _pristine, false);
768
+ __privateMethod(this, _WJElement_instances, enqueueUpdate_fn).call(this);
768
769
  }
769
770
  }
770
771
  refresh() {
@@ -772,51 +773,8 @@ const _WJElement = class _WJElement extends HTMLElement {
772
773
  this.finisPromise = resolve;
773
774
  this.rejectPromise = reject;
774
775
  });
775
- this._pristine = false;
776
- this.enqueueUpdate();
777
- }
778
- /**
779
- * Refreshes the component by reinitializing it if it is in a drawing state.
780
- * This method checks if the component's drawing status is at least in the START state.
781
- * If so, it performs the following steps:
782
- * 1. Calls the `beforeRedraw` hook if defined.
783
- * 2. Calls the `beforeDisconnect` hook if defined.
784
- * 3. Refreshes the update promise to manage the rendering lifecycle.
785
- * 4. Calls the `afterDisconnect` hook if defined.
786
- * 5. Reinitializes the component by calling `initWjElement` with `true` to force initialization.
787
- * If the component is not in a drawing state, it simply returns a resolved promise.
788
- */
789
- async _refresh() {
790
- var _a, _b, _c;
791
- if (this.isRendering) {
792
- this.rafId = requestAnimationFrame(() => this._refresh());
793
- return;
794
- }
795
- if (!this._pristine) {
796
- this._pristine = true;
797
- this.isRendering = true;
798
- if (this.isAttached) {
799
- (_a = this.beforeRedraw) == null ? void 0 : _a.call(this);
800
- (_b = this.beforeDisconnect) == null ? void 0 : _b.call(this);
801
- (_c = this.afterDisconnect) == null ? void 0 : _c.call(this);
802
- } else {
803
- this.stopRenderLoop();
804
- }
805
- try {
806
- await this.initWjElement(true);
807
- } catch (error) {
808
- console.error("Render error:", error);
809
- } finally {
810
- this.isRendering = false;
811
- if (!this._pristine) {
812
- this._pristine = false;
813
- this.enqueueUpdate();
814
- } else {
815
- this.finisPromise();
816
- this.style.visibility = this.originalVisibility;
817
- }
818
- }
819
- }
776
+ __privateSet(this, _pristine, false);
777
+ __privateMethod(this, _WJElement_instances, enqueueUpdate_fn).call(this);
820
778
  }
821
779
  stopRenderLoop() {
822
780
  if (this.rafId) {
@@ -860,13 +818,13 @@ const _WJElement = class _WJElement extends HTMLElement {
860
818
  this.remove();
861
819
  return Promise.resolve();
862
820
  }
863
- return this._resolveRender();
821
+ return __privateMethod(this, _WJElement_instances, resolveRender_fn).call(this);
864
822
  }
865
823
  /**
866
824
  * Renders the component's content.
867
825
  */
868
826
  async render() {
869
- this.drawingStatus = this.drawingStatuses.DRAWING;
827
+ __privateSet(this, _drawingStatus, this.drawingStatuses.DRAWING);
870
828
  let _draw = this.draw(this.context, this.store, WjElementUtils.getAttributes(this));
871
829
  if (_draw instanceof Promise || (_draw == null ? void 0 : _draw.constructor.name) === "Promise") {
872
830
  _draw = await _draw;
@@ -888,10 +846,8 @@ const _WJElement = class _WJElement extends HTMLElement {
888
846
  * @param {string} name The name in kebab-case format (e.g., "example-name").
889
847
  * @returns {string} The sanitized name in camelCase format (e.g., "exampleName").
890
848
  * @example
891
- * // Returns 'exampleName'
892
849
  * sanitizeName('example-name');
893
850
  * @example
894
- * // Returns 'myCustomComponent'
895
851
  * sanitizeName('my-custom-component');
896
852
  */
897
853
  sanitizeName(name) {
@@ -910,11 +866,9 @@ const _WJElement = class _WJElement extends HTMLElement {
910
866
  * get name() { return 'value'; },
911
867
  * set name(val) { console.log(val); }
912
868
  * };
913
- * // Returns { hasGetter: [Function: get name], hasSetter: [Function: set name] }
914
869
  * checkGetterSetter(obj, 'name');
915
870
  * @example
916
871
  * const obj = { prop: 42 };
917
- * // Returns { hasGetter: null, hasSetter: null }
918
872
  * checkGetterSetter(obj, 'prop');
919
873
  */
920
874
  checkGetterSetter(obj, property) {
@@ -945,36 +899,83 @@ const _WJElement = class _WJElement extends HTMLElement {
945
899
  });
946
900
  });
947
901
  }
948
- /**
949
- * Resolves the rendering process of the component.
950
- * @returns A promise that resolves when rendering is complete.
951
- * @private
952
- */
953
- _resolveRender() {
954
- this.params = WjElementUtils.getAttributes(this);
955
- return new Promise(async (resolve, reject) => {
956
- var _a;
957
- const __beforeDraw = this.beforeDraw(this.context, this.store, WjElementUtils.getAttributes(this));
958
- if (__beforeDraw instanceof Promise || (__beforeDraw == null ? void 0 : __beforeDraw.constructor.name) === "Promise") {
959
- await __beforeDraw;
960
- }
961
- await this.render();
962
- const __afterDraw = (_a = this.afterDraw) == null ? void 0 : _a.call(this, this.context, this.store, WjElementUtils.getAttributes(this));
963
- if (__afterDraw instanceof Promise || (__afterDraw == null ? void 0 : __afterDraw.constructor.name) === "Promise") {
964
- await __afterDraw;
965
- }
966
- this.rendering = false;
967
- this.isAttached = true;
968
- if (this.removeClassAfterConnect) {
969
- this.classList.remove(...this.removeClassAfterConnect);
902
+ };
903
+ _drawingStatus = new WeakMap();
904
+ _isAttached = new WeakMap();
905
+ _isRendering = new WeakMap();
906
+ _originalVisibility = new WeakMap();
907
+ _pristine = new WeakMap();
908
+ _WJElement_instances = new WeakSet();
909
+ /**
910
+ * Enqueues an update for the component.
911
+ * This method processes the current render promise and then refreshes the component.
912
+ */
913
+ enqueueUpdate_fn = function() {
914
+ if (!__privateGet(this, _isRendering)) {
915
+ this.rafId = requestAnimationFrame(() => __privateMethod(this, _WJElement_instances, refresh_fn).call(this));
916
+ }
917
+ };
918
+ refresh_fn = async function() {
919
+ var _a, _b, _c;
920
+ if (__privateGet(this, _isRendering)) {
921
+ this.rafId = requestAnimationFrame(() => __privateMethod(this, _WJElement_instances, refresh_fn).call(this));
922
+ return;
923
+ }
924
+ if (!__privateGet(this, _pristine)) {
925
+ __privateSet(this, _pristine, true);
926
+ __privateSet(this, _isRendering, true);
927
+ if (__privateGet(this, _isAttached)) {
928
+ (_a = this.beforeRedraw) == null ? void 0 : _a.call(this);
929
+ (_b = this.beforeDisconnect) == null ? void 0 : _b.call(this);
930
+ (_c = this.afterDisconnect) == null ? void 0 : _c.call(this);
931
+ } else {
932
+ this.stopRenderLoop();
933
+ }
934
+ try {
935
+ await this.initWjElement(true);
936
+ } catch (error) {
937
+ console.error("Render error:", error);
938
+ } finally {
939
+ __privateSet(this, _isRendering, false);
940
+ if (!__privateGet(this, _pristine)) {
941
+ __privateSet(this, _pristine, false);
942
+ __privateMethod(this, _WJElement_instances, enqueueUpdate_fn).call(this);
943
+ } else {
944
+ this.finisPromise();
945
+ this.style.visibility = __privateGet(this, _originalVisibility);
970
946
  }
971
- this.drawingStatus = this.drawingStatuses.DONE;
972
- resolve();
973
- }).catch((e) => {
974
- console.log(e);
975
- });
947
+ }
976
948
  }
977
949
  };
950
+ /**
951
+ * Resolves the rendering process of the component.
952
+ * @returns A promise that resolves when rendering is complete.
953
+ * @private
954
+ */
955
+ resolveRender_fn = function() {
956
+ this.params = WjElementUtils.getAttributes(this);
957
+ return new Promise(async (resolve, reject) => {
958
+ var _a;
959
+ const __beforeDraw = this.beforeDraw(this.context, this.store, WjElementUtils.getAttributes(this));
960
+ if (__beforeDraw instanceof Promise || (__beforeDraw == null ? void 0 : __beforeDraw.constructor.name) === "Promise") {
961
+ await __beforeDraw;
962
+ }
963
+ await this.render();
964
+ const __afterDraw = (_a = this.afterDraw) == null ? void 0 : _a.call(this, this.context, this.store, WjElementUtils.getAttributes(this));
965
+ if (__afterDraw instanceof Promise || (__afterDraw == null ? void 0 : __afterDraw.constructor.name) === "Promise") {
966
+ await __afterDraw;
967
+ }
968
+ __privateSet(this, _isRendering, false);
969
+ __privateSet(this, _isAttached, true);
970
+ if (this.removeClassAfterConnect) {
971
+ this.classList.remove(...this.removeClassAfterConnect);
972
+ }
973
+ __privateSet(this, _drawingStatus, this.drawingStatuses.DONE);
974
+ resolve();
975
+ }).catch((e) => {
976
+ console.log(e);
977
+ });
978
+ };
978
979
  /**
979
980
  * Processes and combines two templates into one.
980
981
  * @param pTemplate The primary template.
@@ -1 +1 @@
1
- {"version":3,"file":"wje-element.js","sources":["../packages/wje-element/service/universal-service.js","../packages/utils/permissions-api.js","../packages/utils/element-utils.js","../packages/utils/event.js","../packages/wje-element/element.js"],"sourcesContent":["export class UniversalService {\n constructor(props = {}) {\n this._store = props.store;\n }\n\n findByKey = (attrName, key, keyValue) => {\n if (this._store.getState()[attrName] instanceof Array) {\n return this._store.getState()[attrName].find((item) => item[key] === keyValue);\n } else {\n console.warn(` Attribute ${attrName} is not array`);\n return null;\n }\n };\n\n findById = (attrName, id) => {\n if (this._store.getState()[attrName] instanceof Array) {\n return this._store.getState()[attrName].find((item) => item.id === id);\n } else {\n console.warn(` Attribute ${attrName} is not array`);\n return null;\n }\n };\n\n findAttributeValue = (attrName) => {\n return this._store.getState()[attrName];\n };\n\n update = (data, action) => {\n this._store.dispatch(action(data));\n };\n\n add = (data, action) => {\n this._store.dispatch(action(data));\n };\n\n _request(url, data, action, dispatchMethod, method, signal) {\n let promise = fetch(url, {\n method: method,\n ...(data ? { body: JSON.stringify(data) } : {}),\n headers: {\n 'Content-Type': 'application/json',\n },\n ...(signal ? { signal } : {}),\n }).then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n return response.json();\n }\n });\n\n return this.dispatch(promise, dispatchMethod, action);\n }\n\n put(url, data, action, dispatchMethod = true, signal = null) {\n return this._request(url, data, action, dispatchMethod, 'PUT', signal);\n }\n\n post(url, data, action, dispatchMethod = true, signal = null) {\n return this._request(url, data, action, dispatchMethod, 'POST', signal);\n }\n\n delete(url, data, action, dispatchMethod = true, signal = null) {\n return this._request(url, data, action, dispatchMethod, 'DELETE', signal);\n }\n\n //url, action, dispatchMethod, signa\n get(url, action, dispatchMethod = true, signal = null) {\n return this._request(url, null, action, dispatchMethod, 'GET', signal);\n }\n\n patch(url, data, action, dispatchMethod = true, signal = null) {\n return this._request(url, data, action, dispatchMethod, 'PATCH', signal);\n }\n\n dispatch(promise, dispatchMethod, action) {\n if (dispatchMethod) {\n return promise\n .then((data) => {\n this._store.dispatch(action(data.data));\n return data;\n })\n .catch((error) => {\n console.error(error);\n });\n }\n return promise;\n }\n\n loadPromise = (\n url,\n action,\n method = 'GET',\n data = '',\n permissionCallBack = () => {\n //\n // No empty function\n }\n ) => {\n return fetch(url, {\n method: method,\n body: data,\n headers: {\n 'Content-Type': 'application/json',\n },\n async: true,\n })\n .then((response, e) => {\n let permissions = response.headers.get('permissions')?.split(',');\n permissionCallBack(permissions);\n\n if (response.ok) {\n return response.json();\n } else {\n throw response.json();\n }\n })\n .then((responseData) => {\n this._store.dispatch(action(responseData));\n return responseData;\n });\n };\n\n loadOnePromise = (url, action) => {\n return fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n },\n }).then((response) => {\n const responseData = response.json();\n if (action) {\n this._store.dispatch(action(responseData));\n }\n return responseData;\n });\n };\n}\n","export class WjePermissionsApi {\n static _permissionKey = 'permissions';\n\n /**\n * Sets the permission key.\n * @param value\n */\n static set permissionKey(value) {\n WjePermissionsApi._permissionKey = value || 'permissions';\n }\n\n /**\n * Returns the permission key.\n * @returns {*|string}\n */\n static get permissionKey() {\n return WjePermissionsApi._permissionKey;\n }\n\n /**\n * Sets the permissions.\n * @param value\n */\n static set permissions(value) {\n window.localStorage.setItem(WjePermissionsApi.permissionKey, JSON.stringify(value));\n }\n\n /**\n * Returns the permissions.\n * @returns {string[]}\n */\n static get permissions() {\n return JSON.parse(window.localStorage.getItem(WjePermissionsApi.permissionKey)) || [];\n }\n\n /**\n * Checks if the permission is included.\n * @param key\n * @returns {boolean}\n */\n static includesKey(key) {\n return WjePermissionsApi.permissions.includes(key);\n }\n\n /**\n * Checks if the permission is fulfilled.\n * @returns {boolean}\n */\n static isPermissionFulfilled(permissions) {\n return permissions.some((perm) => WjePermissionsApi.permissions.includes(perm));\n }\n}\n","export class WjElementUtils {\n /**\n * This function creates an element.\n * @param element : HTMLElement - The element value.\n * @param object : Object - The object value.\n */\n static setAttributesToElement(element, object) {\n Object.entries(object).forEach(([key, value]) => {\n element.setAttribute(key, value);\n });\n }\n\n /**\n * This function gets the attributes from an element.\n * @param {string|HTMLElement} el The element or selector to retrieve attributes from.\n * @returns {object} - An object containing the element's attributes as key-value pairs.\n */\n static getAttributes(el) {\n if (typeof el === 'string') el = document.querySelector(el);\n\n return Array.from(el.attributes)\n .filter((a) => !a.name.startsWith('@'))\n .map((a) => [\n a.name\n .split('-')\n .map((s, i) => {\n if (i !== 0) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n } else {\n return s;\n }\n })\n .join(''),\n a.value,\n ])\n .reduce((acc, attr) => {\n acc[attr[0]] = attr[1];\n return acc;\n }, {});\n }\n\n /**\n * This function gets the events from an element.\n * @param {string|HTMLElement} el The element or selector to retrieve events from.\n * @returns {Map<any, any>} - The map value.\n */\n static getEvents(el) {\n if (typeof el === 'string') el = document.querySelector(el);\n\n return Array.from(el.attributes)\n .filter((a) => a.name.startsWith('@wje'))\n .map((a) => [a.name.substring(3).split('-').join(''), a.value])\n .reduce((acc, attr) => {\n acc.set(attr[0], attr[1]);\n return acc;\n }, new Map());\n }\n\n /**\n * This function converts an object to a string.\n * @param {object} object The object to convert.\n * @returns {string} - The string value.\n */\n static attributesToString(object) {\n return Object.entries(object)\n .map(([key, value]) => {\n return `${key}=\"${value}\"`;\n })\n .join(' ');\n }\n\n /**\n * This function checks if the slot exists.\n * @param {string|HTMLElement} el The element or selector to check for slots.\n * @param slotName The slot name to check for.\n * @returns {boolean} - The boolean value.\n */\n static hasSlot(el, slotName = null) {\n let selector = slotName ? `[slot=\"${slotName}\"]` : '[slot]';\n\n return el.querySelectorAll(selector).length > 0 ? true : false;\n }\n\n /**\n * This function checks if the slot has content.\n * @param {string|HTMLElement} el The element or selector to check for slot content\n * @param slotName The slot name to check for.\n * @returns {boolean} - The boolean value.\n */\n static hasSlotContent(el, slotName = null) {\n let slotElement = el.querySelector(`slot`);\n if (slotName) {\n slotElement = el.querySelector(`slot[name=\"${slotName}\"]`);\n }\n\n if (slotElement) {\n const assignedElements = slotElement.assignedElements();\n return assignedElements.length > 0;\n }\n\n return false;\n }\n\n /**\n * This function converts a string to a boolean.\n * @param {string | object} value The value to convert to a boolean. If the value is a boolean, it will be returned as is.\n * @returns {boolean} - The boolean value.\n */\n static stringToBoolean(value) {\n if (typeof value === 'boolean') return value;\n\n return !['false', '0', 0].includes(value);\n }\n}\n","var self; // eslint-disable-line no-var\n\nclass Event {\n constructor() {\n this.customEventWeakMap = new WeakMap();\n self = this;\n }\n\n /**\n * Dispatch event to the element and trigger the listener.\n * @param e\n */\n #dispatch(e) {\n let element = this;\n // let record = self.findRecordByElement(element);\n let record = self.customEventWeakMap.get(this);\n\n if (!record) return;\n\n let listeners = record[e.type];\n\n listeners.forEach((listener) => {\n self.dispatchCustomEvent(element, listener.event, {\n originalEvent: e?.type || null,\n context: element,\n event: self,\n });\n\n if (listener.options && listener.options.stopPropagation === true) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n });\n }\n\n /**\n * Dispatch custom event to the element with the specified event name and detail.\n * @param element\n * @param event\n * @param detail\n */\n dispatchCustomEvent(element, event, detail) {\n element.dispatchEvent(\n new CustomEvent(event, {\n detail: detail || {\n context: element,\n event: self,\n },\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n }\n\n /**\n * Find record by element in the storage.\n * @param element\n * @returns {*}\n */\n\n findRecordByElement(element) {\n return this.customEventWeakMap.get(element);\n }\n\n /**\n * Add listener to the element. If the element is an array, the listener will be added to all elements in the array.\n * @param element\n * @param originalEvent\n * @param event\n * @param listener\n * @param options\n */\n addListener(element, originalEvent, event, listener, options) {\n if (!element) return;\n\n if (!Array.isArray(element)) element = [element];\n\n element.forEach((el) => {\n this.writeRecord(el, originalEvent, event, listener, options);\n });\n }\n\n /**\n * Write record to the storage.\n * @param element\n * @param originalEvent\n * @param event\n * @param listener\n * @param options\n */\n writeRecord(element, originalEvent, event, listener, options) {\n let recordListeners = this.findRecordByElement(element);\n\n if (!recordListeners) {\n this.customEventWeakMap.set(element, {\n [originalEvent]: [],\n });\n\n recordListeners = this.findRecordByElement(element);\n } else {\n recordListeners[originalEvent] = recordListeners[originalEvent] || [];\n }\n\n listener = listener || this.#dispatch;\n let obj = {\n listener: listener,\n options: options,\n event: event,\n };\n\n // skontrolujeme ci uz tento listener neexistuje\n if (!this.isRecordExists(recordListeners[originalEvent], obj)) {\n if (!this.listenerExists(recordListeners[originalEvent], obj)) {\n element.addEventListener(originalEvent, listener, options);\n obj.unbind = () => {\n element.removeEventListener(originalEvent, listener, options);\n };\n }\n\n recordListeners[originalEvent].push(obj);\n\n } else {\n // in case we want to add the same listener multiple times trigger a warning for a better debugging\n //console.info(\"Listener already exists\", element, originalEvent);\n }\n }\n\n /**\n * Performs a deep equality check between two objects.\n * @param x The first object to compare.\n * @param y The second object to compare.\n * @returns - Returns `true` if the objects are deeply equal, `false` otherwise.\n */\n deepEqual(x, y) {\n return x && y && typeof x === 'object' && typeof x === typeof y\n ? Object.keys(x).length === Object.keys(y).length &&\n Object.keys(x).every((key) => this.deepEqual(x[key], y[key]))\n : x === y;\n }\n\n /**\n * Check if the listener already exists on the element.\n * @param records\n * @param eventObj\n * @returns\n */\n listenerExists(records, eventObj) {\n return records.some((e) => e.listener === eventObj.listener);\n }\n\n isRecordExists(records, eventObj) {\n return records.some((e) => this.deepEqual(e, eventObj))\n }\n\n /**\n * Remove listener from the element and delete the listener from the custom event storage.\n * @param element\n * @param originalEvent\n * @param event\n * @param listener\n * @param options\n */\n removeListener(element, originalEvent, event, listener, options) {\n let records = this.findRecordByElement(element);\n let listeners = records?.[originalEvent];\n listener = listener || this.#dispatch;\n\n if (listeners) {\n let listenerOfWeakMap = listeners.find((e) => e.listener === listener);\n\n if (listenerOfWeakMap) {\n listeners.splice(listeners.indexOf(listenerOfWeakMap), 1);\n }\n\n if (!listeners.length) {\n delete records[originalEvent];\n element?.removeEventListener(originalEvent, listener, options);\n }\n }\n }\n\n /**\n * Remove all event listeners from the specified element and delete the element from the custom event storage.\n * @param {HTMLElement} element The element from which all listeners will be removed.\n */\n removeElement(element) {\n // remove all listeners from the element\n let listeners = this.customEventWeakMap.get(element);\n if (listeners) {\n queueMicrotask(() => {\n for (let event in listeners) {\n listeners[event].forEach((e) => {\n element.removeEventListener(event, e.listener, e.options);\n e.unbind();\n });\n }\n\n this.customEventWeakMap.delete(element);\n });\n }\n }\n\n // TODO\n createPromiseFromEvent(element, event) {\n return new Promise((resolve) => {\n let success = () => {\n element.removeEventListener(event, success);\n resolve();\n };\n\n element.addEventListener(event, success);\n });\n }\n}\n\nlet event = new Event();\nexport { event };\n","import { UniversalService } from './service/universal-service.js';\nimport { defaultStoreActions, store } from '../wje-store/store.js';\nimport { WjePermissionsApi } from '../utils/permissions-api.js';\nimport { WjElementUtils } from '../utils/element-utils.js';\nimport { event } from '../utils/event.js';\n\nconst template = document.createElement('template');\ntemplate.innerHTML = ``;\nexport default class WJElement extends HTMLElement {\n /**\n * Initializes a new instance of the WJElement class.\n */\n\n constructor() {\n super();\n\n this.isAttached = false;\n this.service = new UniversalService({\n store: store,\n });\n\n // definujeme vsetky zavislosti.\n // Do zavislosti patria len komponenty, ktore su zavisle od ktoreho je zavisly tento komponent\n this.defineDependencies();\n\n this.rendering = false;\n this._dependencies = {};\n\n /**\n * @typedef {CREATED | ATTACHED | BEGINING | START | DRAWING | DONE | DISCONNECTED} DrawingStatus\n * @property {number} CREATED - The component has been created.\n * @property {number} ATTACHED - The component has been attached to the DOM.\n * @property {number} BEGINING - The component is beginning to draw.\n * @property {number} START - The component has started drawing.\n * @property {number} DRAWING - The component is drawing.\n * @property {number} DONE - The component has finished drawing.\n * @property {number} DISCONNECTED - The component has been disconnected from the DOM.\n */\n this.drawingStatuses = {\n CREATED: 0,\n ATTACHED: 1,\n BEGINING: 2,\n START: 3,\n DRAWING: 4,\n DONE: 5,\n DISCONNECTED: 6,\n };\n\n this.drawingStatus = this.drawingStatuses.CREATED;\n\n this._pristine = true;\n this._pristineCauseWeakMap = new WeakMap();\n\n this.isRendering = false;\n this.rafId = null;\n this.originalVisibility = null;\n this.params = {};\n\n this.updateComplete = new Promise((resolve, reject) => {\n this.finisPromise = resolve;\n this.rejectPromise = reject;\n });\n }\n\n /**\n * Sets the value of the 'permission' attribute.\n * @param {string[]} value The value to set for the 'permission' attribute.\n */\n set permission(value) {\n this.setAttribute('permission', value.join(','));\n }\n\n /**\n * Gets the value of the 'permission-check' attribute.\n * @returns {string[]} The value of the 'permission' attribute.\n */\n get permission() {\n return this.getAttribute('permission')?.split(',') || [];\n }\n\n /**\n * Sets the 'permission-check' attribute.\n * @param {boolean} value The value to set for the 'permission-check' attribute.\n */\n set isPermissionCheck(value) {\n if (value) this.setAttribute('permission-check', '');\n else this.removeAttribute('permission-check');\n }\n\n /**\n * Checks if the 'permission-check' attribute is present.\n * @returns {boolean} True if the 'permission-check' attribute is present.\n */\n get isPermissionCheck() {\n return this.hasAttribute('permission-check');\n }\n\n set noShow(value) {\n if (value) this.setAttribute('no-show', '');\n else this.removeAttribute('no-show');\n }\n\n /**\n * Checks if the 'show' attribute is present.\n * @returns {boolean} True if the 'show' attribute is present.\n */\n get noShow() {\n return this.hasAttribute('no-show');\n }\n\n /**\n * Sets the 'shadow' attribute.\n * @param {string} value The value to set for the 'shadow' attribute.\n */\n set isShadowRoot(value) {\n return this.setAttribute('shadow', value);\n }\n\n get isShadowRoot() {\n return this.getAttribute('shadow');\n }\n\n /**\n * Checks if the 'shadow' attribute is present.\n * @returns {boolean} True if the 'shadow' attribute is present.\n */\n get hasShadowRoot() {\n return this.hasAttribute('shadow');\n }\n\n /**\n * Gets the value of the 'shadow' attribute or 'open' if not set.\n * @returns {string} The value of the 'shadow' attribute or 'open'.\n */\n get shadowType() {\n return this.getAttribute('shadow') || 'open';\n }\n\n /**\n * Gets the rendering context, either the shadow root or the component itself.\n * @returns The rendering context.\n */\n get context() {\n if (this.hasShadowRoot) {\n return this.shadowRoot;\n } else {\n return this;\n }\n }\n\n /**\n * Gets the store instance.\n * @returns {object} The store instance.\n */\n get store() {\n return store;\n }\n\n /**\n * @typedef {object} ArrayActions\n * @property {Function} addAction - Adds an item to the array.\n * @property {Function} deleteAction - Deletes an item from the array.\n * @property {Function} loadAction - Loads an array.\n * @property {Function} updateAction - Updates an item in the array.\n * @property {Function} addManyAction - Adds many items to the array.\n */\n\n /**\n * @typedef {object} ObjectActions\n * @property {Function} addAction - Replace old object with new object\n * @property {Function} deleteAction - Delete item based on key\n * @property {Function} updateAction - Update item based on key\n */\n\n /**\n * Gets the default store actions.\n * @returns The default store actions for arrays and objects.\n */\n get defaultStoreActions() {\n return defaultStoreActions;\n }\n\n /**\n * Gets the classes to be removed after the component is connected.\n * @returns An array of class names to remove.\n */\n get removeClassAfterConnect() {\n return this.getAttribute('remove-class-after-connect')?.split(' ');\n }\n\n /**\n * Sets the component dependencies.\n * @param value The dependencies to set.\n */\n set dependencies(value) {\n this._dependencies = value;\n }\n\n /**\n * Gets the component dependencies.\n * @returns The component dependencies.\n */\n get dependencies() {\n return this._dependencies;\n }\n\n /**\n * Processes and combines two templates into one.\n * @param pTemplate The primary template.\n * @param inputTemplate The secondary template.\n * @returns The combined template.\n */\n static processTemplates = (pTemplate, inputTemplate) => {\n const newTemplate = document.createElement('template');\n newTemplate.innerHTML = [inputTemplate.innerHTML, pTemplate?.innerHTML || ''].join('');\n return newTemplate;\n };\n\n /**\n * Defines a custom element if not already defined.\n * @param name The name of the custom element.\n * @param [elementConstructor] The constructor for the custom element.\n * @param [options] Additional options for defining the element.\n */\n static define(name, elementConstructor = this, options = {}) {\n const definedElement = customElements.get(name);\n\n if (!definedElement) {\n customElements.define(name, elementConstructor, options);\n }\n }\n\n /**\n * Defines component dependencies by registering custom elements.\n */\n defineDependencies() {\n if (this.dependencies)\n Object.entries(this.dependencies).forEach((name, component) => WJElement.define(name, component));\n }\n\n /**\n * Hook for extending behavior before drawing the component.\n * @param context The rendering context, usually the element's shadow root or main DOM element.\n * @param appStoreObj The global application store for managing state.\n * @param params Additional parameters or attributes for rendering the component.\n */\n beforeDraw(context, appStoreObj, params) {\n // Hook for extending behavior before drawing\n }\n\n /**\n * Renders the component within the provided context.\n * @param context The rendering context, usually the element's shadow root or main DOM element.\n * @param appStoreObj\n * @param params Additional parameters or attributes for rendering the component.\n * @returns This implementation does not render anything and returns `null`.\n * @description\n * The `draw` method is responsible for rendering the component's content.\n * Override this method in subclasses to define custom rendering logic.\n * @example\n * class MyComponent extends WJElement {\n * draw(context, appStoreObj, params) {\n * const div = document.createElement('div');\n * div.textContent = 'Hello, world!';\n * context.appendChild(div);\n * }\n * }\n */\n draw(context, appStoreObj, params) {\n return null;\n }\n\n /**\n * Hook for extending behavior after drawing the component.\n * @param context The rendering context, usually the element's shadow root or main DOM element.\n * @param appStoreObj The global application store for managing state.\n * @param params Additional parameters or attributes for rendering the component.\n */\n afterDraw(context, appStoreObj, params) {\n // Hook for extending behavior after drawing\n }\n\n /**\n * Lifecycle method invoked when the component is connected to the DOM.\n */\n connectedCallback() {\n if (!this.isRendering) {\n this.originalVisibility = this.originalVisibility ?? this.style.visibility;\n this.style.visibility = 'hidden';\n\n this.setupAttributes?.();\n this.setUpAccessors();\n\n this.drawingStatus = this.drawingStatuses.ATTACHED;\n this._pristine = false;\n this.enqueueUpdate();\n }\n }\n\n /**\n * Initializes the component, setting up attributes and rendering.\n * @param [force] Whether to force initialization.\n * @returns A promise that resolves when initialization is complete.\n */\n initWjElement = (force = false) => {\n return new Promise(async (resolve, reject) => {\n this.drawingStatus = this.drawingStatuses.BEGINING;\n\n this.setupAttributes?.();\n if (this.hasShadowRoot) {\n if (!this.shadowRoot) this.attachShadow({ mode: this.shadowType || 'open' });\n }\n this.setUpAccessors();\n\n this.drawingStatus = this.drawingStatuses.START;\n await this.display(force);\n\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(this.constructor.cssStyleSheet);\n\n this.context.adoptedStyleSheets = [sheet];\n\n resolve();\n });\n };\n\n /**\n * Sets up attributes and event listeners for the component.\n * This method retrieves all custom events defined for the component\n * and adds event listeners for each of them. When an event is triggered,\n * it calls the corresponding method on the host element.\n */\n setupAttributes() {\n // Keď neaký element si zadefinuje funkciu \"setupAttributes\" tak sa obsah tejto funkcie nezavolá\n\n let allEvents = WjElementUtils.getEvents(this);\n allEvents.forEach((customEvent, domEvent) => {\n this.addEventListener(domEvent, (e) => {\n this.getRootNode().host[customEvent]?.();\n });\n });\n }\n\n /**\n * Hook for extending behavior before disconnecting the component.\n */\n beforeDisconnect() {\n // Hook for extending behavior before disconnecting\n }\n\n /**\n * Hook for extending behavior after disconnecting the component.\n */\n afterDisconnect() {\n // Hook for extending behavior after disconnecting\n }\n\n /**\n * Hook for extending behavior before redrawing the component.\n */\n beforeRedraw() {\n // Hook for extending behavior before redrawing\n }\n\n /**\n * Cleans up resources and event listeners for the component.\n */\n componentCleanup() {\n // Hook for cleaning up the component\n }\n\n /**\n * Lifecycle method invoked when the component is disconnected from the DOM.\n */\n disconnectedCallback() {\n if (this.isAttached) {\n this.beforeDisconnect?.();\n this.context.innerHTML = '';\n this.afterDisconnect?.();\n this.isAttached = false;\n this.style.visibility = this.originalVisibility;\n this.originalVisibility = null;\n }\n\n if (this.isRendering) {\n this.stopRenderLoop();\n }\n\n this.drawingStatus = this.drawingStatuses.DISCONNECTED;\n\n this.componentCleanup();\n }\n\n /**\n * Enqueues an update for the component.\n * This method processes the current render promise and then refreshes the component.\n */\n enqueueUpdate() {\n if (!this.isRendering) {\n this.rafId = requestAnimationFrame(() => this._refresh());\n }\n }\n\n /**\n * Lifecycle method invoked when an observed attribute changes.\n * @param name The name of the attribute that changed.\n * @param old The old value of the attribute.\n * @param newName The new value of the attribute.\n */\n attributeChangedCallback(name, old, newName) {\n if (old !== newName) {\n this._pristine = false;\n this.enqueueUpdate();\n }\n }\n\n refresh() {\n this.updateComplete = new Promise((resolve, reject) => {\n this.finisPromise = resolve;\n this.rejectPromise = reject;\n });\n\n this._pristine = false;\n this.enqueueUpdate();\n }\n\n /**\n * Refreshes the component by reinitializing it if it is in a drawing state.\n * This method checks if the component's drawing status is at least in the START state.\n * If so, it performs the following steps:\n * 1. Calls the `beforeRedraw` hook if defined.\n * 2. Calls the `beforeDisconnect` hook if defined.\n * 3. Refreshes the update promise to manage the rendering lifecycle.\n * 4. Calls the `afterDisconnect` hook if defined.\n * 5. Reinitializes the component by calling `initWjElement` with `true` to force initialization.\n * If the component is not in a drawing state, it simply returns a resolved promise.\n */\n async _refresh() {\n if (this.isRendering) {\n this.rafId = requestAnimationFrame(() => this._refresh());\n return; // Skip if async render is still processing\n }\n\n if (!this._pristine) {\n this._pristine = true;\n this.isRendering = true;\n\n if (this.isAttached) {\n this.beforeRedraw?.();\n this.beforeDisconnect?.();\n this.afterDisconnect?.();\n } else {\n this.stopRenderLoop();\n }\n\n try {\n await this.initWjElement(true);\n } catch (error) {\n console.error('Render error:', error);\n } finally {\n this.isRendering = false;\n\n if (!this._pristine) {\n this._pristine = false;\n this.enqueueUpdate();\n } else {\n this.finisPromise();\n this.style.visibility = this.originalVisibility;\n }\n }\n }\n }\n\n stopRenderLoop() {\n if (this.rafId) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n }\n\n /**\n * Renders the component within the provided context.\n * @param context The rendering context, usually the element's shadow root or main DOM element.\n * @param appStore The global application store for managing state.\n * @param params Additional parameters or attributes for rendering the component.\n * @returns This implementation does not render anything and returns `null`.\n * @description\n * The `draw` method is responsible for rendering the component's content.\n * Override this method in subclasses to define custom rendering logic.\n * @example\n * class MyComponent extends WJElement {\n * draw(context, appStore, params) {\n * const div = document.createElement('div');\n * div.textContent = 'Hello, world!';\n * context.appendChild(div);\n * }\n * }\n */\n draw(context, appStore, params) {\n return null;\n }\n\n /**\n * Displays the component's content, optionally forcing a re-render.\n * @param [force] Whether to force a re-render.\n * @returns A promise that resolves when the display is complete.\n */\n display(force = false) {\n this.template = this.constructor.customTemplate || document.createElement('template');\n\n if (force) {\n [...this.context.childNodes].forEach(this.context.removeChild.bind(this.context));\n //this.isAttached = false;\n }\n\n this.context.append(this.template.content.cloneNode(true));\n\n if (this.noShow || (this.isPermissionCheck && !WjePermissionsApi.isPermissionFulfilled(this.permission))) {\n this.remove();\n return Promise.resolve();\n }\n\n return this._resolveRender();\n }\n\n /**\n * Renders the component's content.\n */\n async render() {\n this.drawingStatus = this.drawingStatuses.DRAWING;\n\n let _draw = this.draw(this.context, this.store, WjElementUtils.getAttributes(this));\n\n if (_draw instanceof Promise || _draw?.constructor.name === 'Promise') {\n _draw = await _draw;\n }\n\n let rend = _draw;\n let element;\n\n if (rend instanceof HTMLElement || rend instanceof DocumentFragment) {\n element = rend;\n } else {\n let inputTemplate = document.createElement('template');\n inputTemplate.innerHTML = rend;\n element = inputTemplate.content.cloneNode(true);\n }\n\n let rendered = element;\n\n this.context.appendChild(rendered);\n }\n\n /**\n * Sanitizes a given name by converting it from kebab-case to camelCase.\n * @param {string} name The name in kebab-case format (e.g., \"example-name\").\n * @returns {string} The sanitized name in camelCase format (e.g., \"exampleName\").\n * @example\n * // Returns 'exampleName'\n * sanitizeName('example-name');\n * @example\n * // Returns 'myCustomComponent'\n * sanitizeName('my-custom-component');\n */\n sanitizeName(name) {\n let parts = name.split('-');\n return [parts.shift(), ...parts.map((n) => n[0].toUpperCase() + n.slice(1))].join('');\n }\n\n /**\n * Checks if a property on an object has a getter or setter method defined.\n * @param {object} obj The object on which the property is defined.\n * @param {string} property The name of the property to check.\n * @returns {object} An object indicating the presence of getter and setter methods.\n * @property {Function|null} hasGetter The getter function if it exists, otherwise `null`.\n * @property {Function|null} hasSetter The setter function if it exists, otherwise `null`.\n * @example\n * const obj = {\n * get name() { return 'value'; },\n * set name(val) { console.log(val); }\n * };\n * // Returns { hasGetter: [Function: get name], hasSetter: [Function: set name] }\n * checkGetterSetter(obj, 'name');\n * @example\n * const obj = { prop: 42 };\n * // Returns { hasGetter: null, hasSetter: null }\n * checkGetterSetter(obj, 'prop');\n */\n checkGetterSetter(obj, property) {\n let descriptor = Object.getOwnPropertyDescriptor(obj, property);\n\n // Check if the descriptor is found on the object itself\n if (descriptor) {\n return {\n hasGetter: typeof descriptor.get === 'function' ? descriptor.get : null,\n hasSetter: typeof descriptor.set === 'function' ? descriptor.set : null,\n };\n }\n\n // Otherwise, check the prototype chain\n let proto = Object.getPrototypeOf(obj);\n if (proto) {\n return this.checkGetterSetter(proto, property);\n }\n\n // If the property doesn't exist at all\n return { hasGetter: null, hasSetter: null };\n }\n\n /**\n * Sets up property accessors for the component's attributes.\n */\n setUpAccessors() {\n let attrs = this.getAttributeNames();\n attrs.forEach((name) => {\n const sanitizedName = this.sanitizeName(name);\n\n const { hasGetter, hasSetter } = this.checkGetterSetter(this, sanitizedName);\n\n Object.defineProperty(this, sanitizedName, {\n set: hasSetter ?? ((value) => this.setAttribute(name, value)),\n get: hasGetter ?? (() => this.getAttribute(name)),\n });\n });\n }\n\n /**\n * Resolves the rendering process of the component.\n * @returns A promise that resolves when rendering is complete.\n * @private\n */\n _resolveRender() {\n this.params = WjElementUtils.getAttributes(this);\n\n return new Promise(async (resolve, reject) => {\n const __beforeDraw = this.beforeDraw(this.context, this.store, WjElementUtils.getAttributes(this));\n\n if (__beforeDraw instanceof Promise || __beforeDraw?.constructor.name === 'Promise') {\n await __beforeDraw;\n }\n\n await this.render();\n\n const __afterDraw = this.afterDraw?.(this.context, this.store, WjElementUtils.getAttributes(this));\n\n if (__afterDraw instanceof Promise || __afterDraw?.constructor.name === 'Promise') {\n await __afterDraw;\n }\n\n // RHR toto je bicykel pre slickRouter pretože routovanie nieje vykonané pokiaľ sa nezavolá updateComplete promise,\n // toto bude treba rozšíriť aby sme lepšie vedeli kontrolovať vykreslovanie elementov, a flow hookov.\n this.rendering = false;\n this.isAttached = true;\n\n if (this.removeClassAfterConnect) {\n this.classList.remove(...this.removeClassAfterConnect);\n }\n\n this.drawingStatus = this.drawingStatuses.DONE;\n\n resolve();\n }).catch((e) => {\n console.log(e);\n });\n }\n}\n\nlet __esModule = 'true';\nexport { __esModule, WjePermissionsApi, WjElementUtils, event };\n"],"names":["event"],"mappings":"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"}
1
+ {"version":3,"file":"wje-element.js","sources":["../packages/wje-element/service/universal-service.js","../packages/utils/permissions-api.js","../packages/utils/element-utils.js","../packages/utils/event.js","../packages/wje-element/element.js"],"sourcesContent":["export class UniversalService {\n constructor(props = {}) {\n this._store = props.store;\n }\n\n findByKey = (attrName, key, keyValue) => {\n if (this._store.getState()[attrName] instanceof Array) {\n return this._store.getState()[attrName].find((item) => item[key] === keyValue);\n } else {\n console.warn(` Attribute ${attrName} is not array`);\n return null;\n }\n };\n\n findById = (attrName, id) => {\n if (this._store.getState()[attrName] instanceof Array) {\n return this._store.getState()[attrName].find((item) => item.id === id);\n } else {\n console.warn(` Attribute ${attrName} is not array`);\n return null;\n }\n };\n\n findAttributeValue = (attrName) => {\n return this._store.getState()[attrName];\n };\n\n update = (data, action) => {\n this._store.dispatch(action(data));\n };\n\n add = (data, action) => {\n this._store.dispatch(action(data));\n };\n\n _request(url, data, action, dispatchMethod, method, signal) {\n let promise = fetch(url, {\n method: method,\n ...(data ? { body: JSON.stringify(data) } : {}),\n headers: {\n 'Content-Type': 'application/json',\n },\n ...(signal ? { signal } : {}),\n }).then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n return response.json();\n }\n });\n\n return this.dispatch(promise, dispatchMethod, action);\n }\n\n put(url, data, action, dispatchMethod = true, signal = null) {\n return this._request(url, data, action, dispatchMethod, 'PUT', signal);\n }\n\n post(url, data, action, dispatchMethod = true, signal = null) {\n return this._request(url, data, action, dispatchMethod, 'POST', signal);\n }\n\n delete(url, data, action, dispatchMethod = true, signal = null) {\n return this._request(url, data, action, dispatchMethod, 'DELETE', signal);\n }\n\n //url, action, dispatchMethod, signa\n get(url, action, dispatchMethod = true, signal = null) {\n return this._request(url, null, action, dispatchMethod, 'GET', signal);\n }\n\n patch(url, data, action, dispatchMethod = true, signal = null) {\n return this._request(url, data, action, dispatchMethod, 'PATCH', signal);\n }\n\n dispatch(promise, dispatchMethod, action) {\n if (dispatchMethod) {\n return promise\n .then((data) => {\n this._store.dispatch(action(data.data));\n return data;\n })\n .catch((error) => {\n console.error(error);\n });\n }\n return promise;\n }\n\n loadPromise = (\n url,\n action,\n method = 'GET',\n data = '',\n permissionCallBack = () => {\n //\n // No empty function\n }\n ) => {\n return fetch(url, {\n method: method,\n body: data,\n headers: {\n 'Content-Type': 'application/json',\n },\n async: true,\n })\n .then((response, e) => {\n let permissions = response.headers.get('permissions')?.split(',');\n permissionCallBack(permissions);\n\n if (response.ok) {\n return response.json();\n } else {\n throw response.json();\n }\n })\n .then((responseData) => {\n this._store.dispatch(action(responseData));\n return responseData;\n });\n };\n\n loadOnePromise = (url, action) => {\n return fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n },\n }).then((response) => {\n const responseData = response.json();\n if (action) {\n this._store.dispatch(action(responseData));\n }\n return responseData;\n });\n };\n}\n","export class WjePermissionsApi {\n static _permissionKey = 'permissions';\n\n /**\n * Sets the permission key.\n * @param value\n */\n static set permissionKey(value) {\n WjePermissionsApi._permissionKey = value || 'permissions';\n }\n\n /**\n * Returns the permission key.\n * @returns {*|string}\n */\n static get permissionKey() {\n return WjePermissionsApi._permissionKey;\n }\n\n /**\n * Sets the permissions.\n * @param value\n */\n static set permissions(value) {\n window.localStorage.setItem(WjePermissionsApi.permissionKey, JSON.stringify(value));\n }\n\n /**\n * Returns the permissions.\n * @returns {string[]}\n */\n static get permissions() {\n return JSON.parse(window.localStorage.getItem(WjePermissionsApi.permissionKey)) || [];\n }\n\n /**\n * Checks if the permission is included.\n * @param key\n * @returns {boolean}\n */\n static includesKey(key) {\n return WjePermissionsApi.permissions.includes(key);\n }\n\n /**\n * Checks if the permission is fulfilled.\n * @returns {boolean}\n */\n static isPermissionFulfilled(permissions) {\n return permissions.some((perm) => WjePermissionsApi.permissions.includes(perm));\n }\n}\n","export class WjElementUtils {\n /**\n * This function creates an element.\n * @param element : HTMLElement - The element value.\n * @param object : Object - The object value.\n */\n static setAttributesToElement(element, object) {\n Object.entries(object).forEach(([key, value]) => {\n element.setAttribute(key, value);\n });\n }\n\n /**\n * This function gets the attributes from an element.\n * @param {string|HTMLElement} el The element or selector to retrieve attributes from.\n * @returns {object} - An object containing the element's attributes as key-value pairs.\n */\n static getAttributes(el) {\n if (typeof el === 'string') el = document.querySelector(el);\n\n return Array.from(el.attributes)\n .filter((a) => !a.name.startsWith('@'))\n .map((a) => [\n a.name\n .split('-')\n .map((s, i) => {\n if (i !== 0) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n } else {\n return s;\n }\n })\n .join(''),\n a.value,\n ])\n .reduce((acc, attr) => {\n acc[attr[0]] = attr[1];\n return acc;\n }, {});\n }\n\n /**\n * This function gets the events from an element.\n * @param {string|HTMLElement} el The element or selector to retrieve events from.\n * @returns {Map<any, any>} - The map value.\n */\n static getEvents(el) {\n if (typeof el === 'string') el = document.querySelector(el);\n\n return Array.from(el.attributes)\n .filter((a) => a.name.startsWith('@wje'))\n .map((a) => [a.name.substring(3).split('-').join(''), a.value])\n .reduce((acc, attr) => {\n acc.set(attr[0], attr[1]);\n return acc;\n }, new Map());\n }\n\n /**\n * This function converts an object to a string.\n * @param {object} object The object to convert.\n * @returns {string} - The string value.\n */\n static attributesToString(object) {\n return Object.entries(object)\n .map(([key, value]) => {\n return `${key}=\"${value}\"`;\n })\n .join(' ');\n }\n\n /**\n * This function checks if the slot exists.\n * @param {string|HTMLElement} el The element or selector to check for slots.\n * @param slotName The slot name to check for.\n * @returns {boolean} - The boolean value.\n */\n static hasSlot(el, slotName = null) {\n let selector = slotName ? `[slot=\"${slotName}\"]` : '[slot]';\n\n return el.querySelectorAll(selector).length > 0 ? true : false;\n }\n\n /**\n * This function checks if the slot has content.\n * @param {string|HTMLElement} el The element or selector to check for slot content\n * @param slotName The slot name to check for.\n * @returns {boolean} - The boolean value.\n */\n static hasSlotContent(el, slotName = null) {\n let slotElement = el.querySelector(`slot`);\n if (slotName) {\n slotElement = el.querySelector(`slot[name=\"${slotName}\"]`);\n }\n\n if (slotElement) {\n const assignedElements = slotElement.assignedElements();\n return assignedElements.length > 0;\n }\n\n return false;\n }\n\n /**\n * This function converts a string to a boolean.\n * @param {string | object} value The value to convert to a boolean. If the value is a boolean, it will be returned as is.\n * @returns {boolean} - The boolean value.\n */\n static stringToBoolean(value) {\n if (typeof value === 'boolean') return value;\n\n return !['false', '0', 0].includes(value);\n }\n}\n","var self; // eslint-disable-line no-var\n\nclass Event {\n constructor() {\n this.customEventWeakMap = new WeakMap();\n self = this;\n }\n\n /**\n * Dispatch event to the element and trigger the listener.\n * @param e\n */\n #dispatch(e) {\n let element = this;\n // let record = self.findRecordByElement(element);\n let record = self.customEventWeakMap.get(this);\n\n if (!record) return;\n\n let listeners = record[e.type];\n\n listeners.forEach((listener) => {\n self.dispatchCustomEvent(element, listener.event, {\n originalEvent: e?.type || null,\n context: element,\n event: self,\n });\n\n if (listener.options && listener.options.stopPropagation === true) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n });\n }\n\n /**\n * Dispatch custom event to the element with the specified event name and detail.\n * @param element\n * @param event\n * @param detail\n */\n dispatchCustomEvent(element, event, detail) {\n element.dispatchEvent(\n new CustomEvent(event, {\n detail: detail || {\n context: element,\n event: self,\n },\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n }\n\n /**\n * Find record by element in the storage.\n * @param element\n * @returns {*}\n */\n\n findRecordByElement(element) {\n return this.customEventWeakMap.get(element);\n }\n\n /**\n * Add listener to the element. If the element is an array, the listener will be added to all elements in the array.\n * @param element\n * @param originalEvent\n * @param event\n * @param listener\n * @param options\n */\n addListener(element, originalEvent, event, listener, options) {\n if (!element) return;\n\n if (!Array.isArray(element)) element = [element];\n\n element.forEach((el) => {\n this.writeRecord(el, originalEvent, event, listener, options);\n });\n }\n\n /**\n * Write record to the storage.\n * @param element\n * @param originalEvent\n * @param event\n * @param listener\n * @param options\n */\n writeRecord(element, originalEvent, event, listener, options) {\n let recordListeners = this.findRecordByElement(element);\n\n if (!recordListeners) {\n this.customEventWeakMap.set(element, {\n [originalEvent]: [],\n });\n\n recordListeners = this.findRecordByElement(element);\n } else {\n recordListeners[originalEvent] = recordListeners[originalEvent] || [];\n }\n\n listener = listener || this.#dispatch;\n let obj = {\n listener: listener,\n options: options,\n event: event,\n };\n\n // skontrolujeme ci uz tento listener neexistuje\n if (!this.isRecordExists(recordListeners[originalEvent], obj)) {\n if (!this.listenerExists(recordListeners[originalEvent], obj)) {\n element.addEventListener(originalEvent, listener, options);\n obj.unbind = () => {\n element.removeEventListener(originalEvent, listener, options);\n };\n }\n\n recordListeners[originalEvent].push(obj);\n\n } else {\n // in case we want to add the same listener multiple times trigger a warning for a better debugging\n //console.info(\"Listener already exists\", element, originalEvent);\n }\n }\n\n /**\n * Performs a deep equality check between two objects.\n * @param x The first object to compare.\n * @param y The second object to compare.\n * @returns - Returns `true` if the objects are deeply equal, `false` otherwise.\n */\n deepEqual(x, y) {\n return x && y && typeof x === 'object' && typeof x === typeof y\n ? Object.keys(x).length === Object.keys(y).length &&\n Object.keys(x).every((key) => this.deepEqual(x[key], y[key]))\n : x === y;\n }\n\n /**\n * Check if the listener already exists on the element.\n * @param records\n * @param eventObj\n * @returns\n */\n listenerExists(records, eventObj) {\n return records.some((e) => e.listener === eventObj.listener);\n }\n\n isRecordExists(records, eventObj) {\n return records.some((e) => this.deepEqual(e, eventObj))\n }\n\n /**\n * Remove listener from the element and delete the listener from the custom event storage.\n * @param element\n * @param originalEvent\n * @param event\n * @param listener\n * @param options\n */\n removeListener(element, originalEvent, event, listener, options) {\n let records = this.findRecordByElement(element);\n let listeners = records?.[originalEvent];\n listener = listener || this.#dispatch;\n\n if (listeners) {\n let listenerOfWeakMap = listeners.find((e) => e.listener === listener);\n\n if (listenerOfWeakMap) {\n listeners.splice(listeners.indexOf(listenerOfWeakMap), 1);\n }\n\n if (!listeners.length) {\n delete records[originalEvent];\n element?.removeEventListener(originalEvent, listener, options);\n }\n }\n }\n\n /**\n * Remove all event listeners from the specified element and delete the element from the custom event storage.\n * @param {HTMLElement} element The element from which all listeners will be removed.\n */\n removeElement(element) {\n // remove all listeners from the element\n let listeners = this.customEventWeakMap.get(element);\n if (listeners) {\n queueMicrotask(() => {\n for (let event in listeners) {\n listeners[event].forEach((e) => {\n element.removeEventListener(event, e.listener, e.options);\n e.unbind();\n });\n }\n\n this.customEventWeakMap.delete(element);\n });\n }\n }\n\n // TODO\n createPromiseFromEvent(element, event) {\n return new Promise((resolve) => {\n let success = () => {\n element.removeEventListener(event, success);\n resolve();\n };\n\n element.addEventListener(event, success);\n });\n }\n}\n\nlet event = new Event();\nexport { event };\n","import { UniversalService } from './service/universal-service.js';\nimport { defaultStoreActions, store } from '../wje-store/store.js';\nimport { WjePermissionsApi } from '../utils/permissions-api.js';\nimport { WjElementUtils } from '../utils/element-utils.js';\nimport { event } from '../utils/event.js';\n\nconst template = document.createElement('template');\ntemplate.innerHTML = ``;\nexport default class WJElement extends HTMLElement {\n\t#drawingStatus;\n\t#isAttached;\n\t#isRendering;\n\t#originalVisibility;\n\t#pristine;\n\n\t/**\n\t * Initializes a new instance of the WJElement class.\n\t */\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.#isAttached = false;\n\t\tthis.service = new UniversalService({\n\t\t\tstore: store,\n\t\t});\n\n\t\t// definujeme vsetky zavislosti.\n\t\t// Do zavislosti patria len komponenty, ktore su zavisle od ktoreho je zavisly tento komponent\n\t\tthis.defineDependencies();\n\n\t\tthis.#isRendering = false;\n\t\tthis._dependencies = {};\n\n\t\t/**\n\t\t * @typedef {object} DrawingStatuses\n\t\t * @property {number} CREATED - The component has been created.\n\t\t * @property {number} ATTACHED - The component has been attached to the DOM.\n\t\t * @property {number} BEGINING - The component is beginning to draw.\n\t\t * @property {number} START - The component has started drawing.\n\t\t * @property {number} DRAWING - The component is drawing.\n\t\t * @property {number} DONE - The component has finished drawing.\n\t\t * @property {number} DISCONNECTED - The component has been disconnected from the DOM.\n\t\t */\n\n\t\t/**\n\t\t * WJElement is a base class for custom web components with managed lifecycle, attribute/property sync,\n\t\t * permission-based visibility, and extensibility hooks.\n\t\t * @property {boolean} isAttached - True if the component is currently attached to the DOM.\n\t\t * @property {DrawingStatuses} drawingStatuses - Enum of possible drawing states.\n\t\t * @property {number} drawingStatus - Current drawing status (see drawingStatuses).\n\t\t * @property {boolean} _pristine - True if the component has not been updated since last render.\n\t\t * @property {boolean} isRendering - True if a render is currently in progress.\n\t\t * @property {number|null} rafId - ID of the scheduled animation frame for rendering, or null.\n\t\t * @property {string|null} originalVisibility - Stores the original CSS visibility before rendering.\n\t\t * @property {object} params - Stores the current attributes/properties for rendering.\n\t\t * @property {Promise<void>} updateComplete - Promise resolved when the current update/render is complete.\n\t\t * @property {string[]} permission - List of required permissions (from 'permission' attribute).\n\t\t * @property {boolean} isPermissionCheck - Whether permission checking is enabled (from 'permission-check' attribute).\n\t\t * @property {boolean} noShow - Whether the element should be hidden (from 'no-show' attribute).\n\t\t * @property {string|undefined} isShadowRoot - Value of the 'shadow' attribute, if present.\n\t\t * @property {boolean} hasShadowRoot - True if the 'shadow' attribute is present.\n\t\t * @property {string} shadowType - Type of shadow root ('open' by default).\n\t\t * @property {object} store - Reference to the global store instance.\n\t\t * @property {object} defaultStoreActions - Default store actions for arrays and objects.\n\t\t * @property {string[]|undefined} removeClassAfterConnect - Classes to remove after connect (from 'remove-class-after-connect' attribute).\n\t\t * @property {object} dependencies - Registered component dependencies.\n\t\t * @property {HTMLElement|ShadowRoot} context - The rendering context (shadow root or element itself).\n\t\t */\n\t\tthis.drawingStatuses = {\n\t\t\tCREATED: 0,\n\t\t\tATTACHED: 1,\n\t\t\tBEGINING: 2,\n\t\t\tSTART: 3,\n\t\t\tDRAWING: 4,\n\t\t\tDONE: 5,\n\t\t\tDISCONNECTED: 6,\n\t\t};\n\n\t\tthis.#drawingStatus = this.drawingStatuses.CREATED;\n\n\t\tthis.#pristine = true;\n\t\tthis.#isRendering = false;\n\t\tthis.rafId = null;\n\t\tthis.#originalVisibility = null;\n\t\tthis.params = {};\n\n\t\tthis.updateComplete = new Promise((resolve, reject) => {\n\t\t\tthis.finisPromise = resolve;\n\t\t\tthis.rejectPromise = reject;\n\t\t});\n\t}\n\n\tget drawingStatus() {\n\t\treturn this.#drawingStatus;\n\t}\n\n\t/**\n\t * Sets the value of the 'permission' attribute.\n\t * @param {string[]} value The value to set for the 'permission' attribute.\n\t */\n\tset permission(value) {\n\t\tthis.setAttribute('permission', value.join(','));\n\t}\n\n\t/**\n\t * Gets the value of the 'permission-check' attribute.\n\t * @returns {string[]} The value of the 'permission' attribute.\n\t */\n\tget permission() {\n\t\treturn this.getAttribute('permission')?.split(',') || [];\n\t}\n\n\t/**\n\t * Sets the 'permission-check' attribute.\n\t * @param {boolean} value The value to set for the 'permission-check' attribute.\n\t */\n\tset isPermissionCheck(value) {\n\t\tif (value) this.setAttribute('permission-check', '');\n\t\telse this.removeAttribute('permission-check');\n\t}\n\n\t/**\n\t * Checks if the 'permission-check' attribute is present.\n\t * @returns {boolean} True if the 'permission-check' attribute is present.\n\t */\n\tget isPermissionCheck() {\n\t\treturn this.hasAttribute('permission-check');\n\t}\n\n\tset noShow(value) {\n\t\tif (value) this.setAttribute('no-show', '');\n\t\telse this.removeAttribute('no-show');\n\t}\n\n\t/**\n\t * Checks if the 'show' attribute is present.\n\t * @returns {boolean} True if the 'show' attribute is present.\n\t */\n\tget noShow() {\n\t\treturn this.hasAttribute('no-show');\n\t}\n\n\t/**\n\t * Sets the 'shadow' attribute.\n\t * @param {string} value The value to set for the 'shadow' attribute.\n\t */\n\tset isShadowRoot(value) {\n\t\treturn this.setAttribute('shadow', value);\n\t}\n\n\tget isShadowRoot() {\n\t\treturn this.getAttribute('shadow');\n\t}\n\n\t/**\n\t * Checks if the 'shadow' attribute is present.\n\t * @returns {boolean} True if the 'shadow' attribute is present.\n\t */\n\tget hasShadowRoot() {\n\t\treturn this.hasAttribute('shadow');\n\t}\n\n\t/**\n\t * Gets the value of the 'shadow' attribute or 'open' if not set.\n\t * @returns {string} The value of the 'shadow' attribute or 'open'.\n\t */\n\tget shadowType() {\n\t\treturn this.getAttribute('shadow') || 'open';\n\t}\n\n\t/**\n\t * Gets the rendering context, either the shadow root or the component itself.\n\t * @returns The rendering context.\n\t */\n\tget context() {\n\t\tif (this.hasShadowRoot) {\n\t\t\treturn this.shadowRoot;\n\t\t} else {\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t/**\n\t * Gets the store instance.\n\t * @returns {object} The store instance.\n\t */\n\tget store() {\n\t\treturn store;\n\t}\n\n\t/**\n\t * @typedef {object} ArrayActions\n\t * @property {Function} addAction - Adds an item to the array.\n\t * @property {Function} deleteAction - Deletes an item from the array.\n\t * @property {Function} loadAction - Loads an array.\n\t * @property {Function} updateAction - Updates an item in the array.\n\t * @property {Function} addManyAction - Adds many items to the array.\n\t */\n\n\t/**\n\t * @typedef {object} ObjectActions\n\t * @property {Function} addAction - Replace old object with new object\n\t * @property {Function} deleteAction - Delete item based on key\n\t * @property {Function} updateAction - Update item based on key\n\t */\n\n\t/**\n\t * Gets the default store actions.\n\t * @returns The default store actions for arrays and objects.\n\t */\n\tget defaultStoreActions() {\n\t\treturn defaultStoreActions;\n\t}\n\n\t/**\n\t * Gets the classes to be removed after the component is connected.\n\t * @returns An array of class names to remove.\n\t */\n\tget removeClassAfterConnect() {\n\t\treturn this.getAttribute('remove-class-after-connect')?.split(' ');\n\t}\n\n\t/**\n\t * Sets the component dependencies.\n\t * @param value The dependencies to set.\n\t */\n\tset dependencies(value) {\n\t\tthis._dependencies = value;\n\t}\n\n\t/**\n\t * Gets the component dependencies.\n\t * @returns The component dependencies.\n\t */\n\tget dependencies() {\n\t\treturn this._dependencies;\n\t}\n\n\t/**\n\t * Processes and combines two templates into one.\n\t * @param pTemplate The primary template.\n\t * @param inputTemplate The secondary template.\n\t * @returns The combined template.\n\t */\n\tstatic processTemplates = (pTemplate, inputTemplate) => {\n\t\tconst newTemplate = document.createElement('template');\n\t\tnewTemplate.innerHTML = [inputTemplate.innerHTML, pTemplate?.innerHTML || ''].join('');\n\t\treturn newTemplate;\n\t};\n\n\t/**\n\t * Defines a custom element if not already defined.\n\t * @param name The name of the custom element.\n\t * @param [elementConstructor] The constructor for the custom element.\n\t * @param [options] Additional options for defining the element.\n\t */\n\tstatic define(name, elementConstructor = this, options = {}) {\n\t\tconst definedElement = customElements.get(name);\n\n\t\tif (!definedElement) {\n\t\t\tcustomElements.define(name, elementConstructor, options);\n\t\t}\n\t}\n\n\t/**\n\t * Defines component dependencies by registering custom elements.\n\t */\n\tdefineDependencies() {\n\t\tif (this.dependencies)\n\t\t\tObject.entries(this.dependencies).forEach((name, component) => WJElement.define(name, component));\n\t}\n\n\t/**\n\t * Hook for extending behavior before drawing the component.\n\t * @param context The rendering context, usually the element's shadow root or main DOM element.\n\t * @param appStoreObj The global application store for managing state.\n\t * @param params Additional parameters or attributes for rendering the component.\n\t */\n\tbeforeDraw(context, appStoreObj, params) {\n\t\t// Hook for extending behavior before drawing\n\t}\n\n\t/**\n\t * Renders the component within the provided context.\n\t * @param context The rendering context, usually the element's shadow root or main DOM element.\n\t * @param appStoreObj\n\t * @param params Additional parameters or attributes for rendering the component.\n\t * @returns This implementation does not render anything and returns `null`.\n\t * @description\n\t * The `draw` method is responsible for rendering the component's content.\n\t * Override this method in subclasses to define custom rendering logic.\n\t * @example\n\t * class MyComponent extends WJElement {\n\t * draw(context, appStoreObj, params) {\n\t * const div = document.createElement('div');\n\t * div.textContent = 'Hello, world!';\n\t * context.appendChild(div);\n\t * }\n\t * }\n\t */\n\tdraw(context, appStoreObj, params) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Hook for extending behavior after drawing the component.\n\t * @param context The rendering context, usually the element's shadow root or main DOM element.\n\t * @param appStoreObj The global application store for managing state.\n\t * @param params Additional parameters or attributes for rendering the component.\n\t */\n\tafterDraw(context, appStoreObj, params) {\n\t\t// Hook for extending behavior after drawing\n\t}\n\n\t/**\n\t * Lifecycle method invoked when the component is connected to the DOM.\n\t */\n\tconnectedCallback() {\n\t\tif (!this.#isRendering) {\n\t\t\tthis.#originalVisibility = this.#originalVisibility ?? this.style.visibility;\n\t\t\tthis.style.visibility = 'hidden';\n\n\t\t\tthis.setupAttributes?.();\n\t\t\tthis.setUpAccessors();\n\n\t\t\tthis.#drawingStatus = this.drawingStatuses.ATTACHED;\n\t\t\tthis.#pristine = false;\n\t\t\tthis.#enqueueUpdate();\n\t\t}\n\t}\n\n\t/**\n\t * Initializes the component, setting up attributes and rendering.\n\t * @param [force] Whether to force initialization.\n\t * @returns A promise that resolves when initialization is complete.\n\t */\n\tinitWjElement = (force = false) => {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tthis.#drawingStatus = this.drawingStatuses.BEGINING;\n\n\t\t\tthis.setupAttributes?.();\n\t\t\tif (this.hasShadowRoot) {\n\t\t\t\tif (!this.shadowRoot) this.attachShadow({ mode: this.shadowType || 'open' });\n\t\t\t}\n\t\t\tthis.setUpAccessors();\n\n\t\t\tthis.#drawingStatus = this.drawingStatuses.START;\n\t\t\tawait this.display(force);\n\n\t\t\tconst sheet = new CSSStyleSheet();\n\t\t\tsheet.replaceSync(this.constructor.cssStyleSheet);\n\n\t\t\tthis.context.adoptedStyleSheets = [sheet];\n\n\t\t\tresolve();\n\t\t});\n\t};\n\n\t/**\n\t * Sets up attributes and event listeners for the component.\n\t * This method retrieves all custom events defined for the component\n\t * and adds event listeners for each of them. When an event is triggered,\n\t * it calls the corresponding method on the host element.\n\t */\n\tsetupAttributes() {\n\t\t// Keď neaký element si zadefinuje funkciu \"setupAttributes\" tak sa obsah tejto funkcie nezavolá\n\n\t\tlet allEvents = WjElementUtils.getEvents(this);\n\t\tallEvents.forEach((customEvent, domEvent) => {\n\t\t\tthis.addEventListener(domEvent, (e) => {\n\t\t\t\tthis.getRootNode().host[customEvent]?.();\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Hook for extending behavior before disconnecting the component.\n\t */\n\tbeforeDisconnect() {\n\t\t// Hook for extending behavior before disconnecting\n\t}\n\n\t/**\n\t * Hook for extending behavior after disconnecting the component.\n\t */\n\tafterDisconnect() {\n\t\t// Hook for extending behavior after disconnecting\n\t}\n\n\t/**\n\t * Hook for extending behavior before redrawing the component.\n\t */\n\tbeforeRedraw() {\n\t\t// Hook for extending behavior before redrawing\n\t}\n\n\t/**\n\t * Cleans up resources and event listeners for the component.\n\t */\n\tcomponentCleanup() {\n\t\t// Hook for cleaning up the component\n\t}\n\n\t/**\n\t * Lifecycle method invoked when the component is disconnected from the DOM.\n\t */\n\tdisconnectedCallback() {\n\t\tif (this.#isAttached) {\n\t\t\tthis.beforeDisconnect?.();\n\t\t\tthis.context.innerHTML = '';\n\t\t\tthis.afterDisconnect?.();\n\t\t\tthis.#isAttached = false;\n\t\t\tthis.style.visibility = this.#originalVisibility;\n\t\t\tthis.#originalVisibility = null;\n\t\t}\n\n\t\tif (this.#isRendering) {\n\t\t\tthis.stopRenderLoop();\n\t\t}\n\n\t\tthis.#drawingStatus = this.drawingStatuses.DISCONNECTED;\n\n\t\tthis.componentCleanup();\n\t}\n\n\t/**\n\t * Enqueues an update for the component.\n\t * This method processes the current render promise and then refreshes the component.\n\t */\n\t#enqueueUpdate() {\n\t\tif (!this.#isRendering) {\n\t\t\tthis.rafId = requestAnimationFrame(() => this.#refresh());\n\t\t}\n\t}\n\n\t/**\n\t * Lifecycle method invoked when an observed attribute changes.\n\t * @param name The name of the attribute that changed.\n\t * @param old The old value of the attribute.\n\t * @param newName The new value of the attribute.\n\t */\n\tattributeChangedCallback(name, old, newName) {\n\t\tif (old !== newName) {\n\t\t\tthis.#pristine = false;\n\t\t\tthis.#enqueueUpdate();\n\t\t}\n\t}\n\n\trefresh() {\n\t\tthis.updateComplete = new Promise((resolve, reject) => {\n\t\t\tthis.finisPromise = resolve;\n\t\t\tthis.rejectPromise = reject;\n\t\t});\n\n\t\tthis.#pristine = false;\n\t\tthis.#enqueueUpdate();\n\t}\n\n\t/**\n\t * Refreshes the component by reinitializing it if it is in a drawing state.\n\t * This method checks if the component's drawing status is at least in the START state.\n\t * If so, it performs the following steps:\n\t * 1. Calls the `beforeRedraw` hook if defined.\n\t * 2. Calls the `beforeDisconnect` hook if defined.\n\t * 3. Refreshes the update promise to manage the rendering lifecycle.\n\t * 4. Calls the `afterDisconnect` hook if defined.\n\t * 5. Reinitializes the component by calling `initWjElement` with `true` to force initialization.\n\t * If the component is not in a drawing state, it simply returns a resolved promise.\n\t */\n\tasync #refresh() {\n\t\tif (this.#isRendering) {\n\t\t\tthis.rafId = requestAnimationFrame(() => this.#refresh());\n\t\t\treturn; // Skip if async render is still processing\n\t\t}\n\n\t\tif (!this.#pristine) {\n\t\t\tthis.#pristine = true;\n\t\t\tthis.#isRendering = true;\n\n\t\t\tif (this.#isAttached) {\n\t\t\t\tthis.beforeRedraw?.();\n\t\t\t\tthis.beforeDisconnect?.();\n\t\t\t\tthis.afterDisconnect?.();\n\t\t\t} else {\n\t\t\t\tthis.stopRenderLoop();\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait this.initWjElement(true);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Render error:', error);\n\t\t\t} finally {\n\t\t\t\tthis.#isRendering = false;\n\n\t\t\t\tif (!this.#pristine) {\n\t\t\t\t\tthis.#pristine = false;\n\t\t\t\t\tthis.#enqueueUpdate();\n\t\t\t\t} else {\n\t\t\t\t\tthis.finisPromise();\n\t\t\t\t\tthis.style.visibility = this.#originalVisibility;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tstopRenderLoop() {\n\t\tif (this.rafId) {\n\t\t\tcancelAnimationFrame(this.rafId);\n\t\t\tthis.rafId = null;\n\t\t}\n\t}\n\n\t/**\n\t * Renders the component within the provided context.\n\t * @param context The rendering context, usually the element's shadow root or main DOM element.\n\t * @param appStore The global application store for managing state.\n\t * @param params Additional parameters or attributes for rendering the component.\n\t * @returns This implementation does not render anything and returns `null`.\n\t * @description\n\t * The `draw` method is responsible for rendering the component's content.\n\t * Override this method in subclasses to define custom rendering logic.\n\t * @example\n\t * class MyComponent extends WJElement {\n\t * draw(context, appStore, params) {\n\t * const div = document.createElement('div');\n\t * div.textContent = 'Hello, world!';\n\t * context.appendChild(div);\n\t * }\n\t * }\n\t */\n\tdraw(context, appStore, params) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Displays the component's content, optionally forcing a re-render.\n\t * @param [force] Whether to force a re-render.\n\t * @returns A promise that resolves when the display is complete.\n\t */\n\tdisplay(force = false) {\n\t\tthis.template = this.constructor.customTemplate || document.createElement('template');\n\n\t\tif (force) {\n\t\t\t[...this.context.childNodes].forEach(this.context.removeChild.bind(this.context));\n\t\t}\n\n\t\tthis.context.append(this.template.content.cloneNode(true));\n\n\t\tif (this.noShow || (this.isPermissionCheck && !WjePermissionsApi.isPermissionFulfilled(this.permission))) {\n\t\t\tthis.remove();\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\treturn this.#resolveRender();\n\t}\n\n\t/**\n\t * Renders the component's content.\n\t */\n\tasync render() {\n\t\tthis.#drawingStatus = this.drawingStatuses.DRAWING;\n\n\t\tlet _draw = this.draw(this.context, this.store, WjElementUtils.getAttributes(this));\n\n\t\tif (_draw instanceof Promise || _draw?.constructor.name === 'Promise') {\n\t\t\t_draw = await _draw;\n\t\t}\n\n\t\tlet rend = _draw;\n\t\tlet element;\n\n\t\tif (rend instanceof HTMLElement || rend instanceof DocumentFragment) {\n\t\t\telement = rend;\n\t\t} else {\n\t\t\tlet inputTemplate = document.createElement('template');\n\t\t\tinputTemplate.innerHTML = rend;\n\t\t\telement = inputTemplate.content.cloneNode(true);\n\t\t}\n\n\t\tlet rendered = element;\n\n\t\tthis.context.appendChild(rendered);\n\t}\n\n\t/**\n\t * Sanitizes a given name by converting it from kebab-case to camelCase.\n\t * @param {string} name The name in kebab-case format (e.g., \"example-name\").\n\t * @returns {string} The sanitized name in camelCase format (e.g., \"exampleName\").\n\t * @example\n\t * sanitizeName('example-name');\n\t * @example\n\t * sanitizeName('my-custom-component');\n\t */\n\tsanitizeName(name) {\n\t\tlet parts = name.split('-');\n\t\treturn [parts.shift(), ...parts.map((n) => n[0].toUpperCase() + n.slice(1))].join('');\n\t}\n\n\t/**\n\t * Checks if a property on an object has a getter or setter method defined.\n\t * @param {object} obj The object on which the property is defined.\n\t * @param {string} property The name of the property to check.\n\t * @returns {object} An object indicating the presence of getter and setter methods.\n\t * @property {Function|null} hasGetter The getter function if it exists, otherwise `null`.\n\t * @property {Function|null} hasSetter The setter function if it exists, otherwise `null`.\n\t * @example\n\t * const obj = {\n\t * get name() { return 'value'; },\n\t * set name(val) { console.log(val); }\n\t * };\n\t * checkGetterSetter(obj, 'name');\n\t * @example\n\t * const obj = { prop: 42 };\n\t * checkGetterSetter(obj, 'prop');\n\t */\n\tcheckGetterSetter(obj, property) {\n\t\tlet descriptor = Object.getOwnPropertyDescriptor(obj, property);\n\n\t\t// Check if the descriptor is found on the object itself\n\t\tif (descriptor) {\n\t\t\treturn {\n\t\t\t\thasGetter: typeof descriptor.get === 'function' ? descriptor.get : null,\n\t\t\t\thasSetter: typeof descriptor.set === 'function' ? descriptor.set : null,\n\t\t\t};\n\t\t}\n\n\t\t// Otherwise, check the prototype chain\n\t\tlet proto = Object.getPrototypeOf(obj);\n\t\tif (proto) {\n\t\t\treturn this.checkGetterSetter(proto, property);\n\t\t}\n\n\t\t// If the property doesn't exist at all\n\t\treturn { hasGetter: null, hasSetter: null };\n\t}\n\n\t/**\n\t * Sets up property accessors for the component's attributes.\n\t */\n\tsetUpAccessors() {\n\t\tlet attrs = this.getAttributeNames();\n\t\tattrs.forEach((name) => {\n\t\t\tconst sanitizedName = this.sanitizeName(name);\n\n\t\t\tconst { hasGetter, hasSetter } = this.checkGetterSetter(this, sanitizedName);\n\n\t\t\tObject.defineProperty(this, sanitizedName, {\n\t\t\t\tset: hasSetter ?? ((value) => this.setAttribute(name, value)),\n\t\t\t\tget: hasGetter ?? (() => this.getAttribute(name)),\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Resolves the rendering process of the component.\n\t * @returns A promise that resolves when rendering is complete.\n\t * @private\n\t */\n\t#resolveRender() {\n\t\tthis.params = WjElementUtils.getAttributes(this);\n\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tconst __beforeDraw = this.beforeDraw(this.context, this.store, WjElementUtils.getAttributes(this));\n\n\t\t\tif (__beforeDraw instanceof Promise || __beforeDraw?.constructor.name === 'Promise') {\n\t\t\t\tawait __beforeDraw;\n\t\t\t}\n\n\t\t\tawait this.render();\n\n\t\t\tconst __afterDraw = this.afterDraw?.(this.context, this.store, WjElementUtils.getAttributes(this));\n\n\t\t\tif (__afterDraw instanceof Promise || __afterDraw?.constructor.name === 'Promise') {\n\t\t\t\tawait __afterDraw;\n\t\t\t}\n\n\t\t\t// RHR toto je bicykel pre slickRouter pretože routovanie nieje vykonané pokiaľ sa nezavolá updateComplete promise,\n\t\t\t// toto bude treba rozšíriť aby sme lepšie vedeli kontrolovať vykreslovanie elementov, a flow hookov.\n\t\t\tthis.#isRendering = false;\n\t\t\tthis.#isAttached = true;\n\n\t\t\tif (this.removeClassAfterConnect) {\n\t\t\t\tthis.classList.remove(...this.removeClassAfterConnect);\n\t\t\t}\n\n\t\t\tthis.#drawingStatus = this.drawingStatuses.DONE;\n\n\t\t\tresolve();\n\t\t}).catch((e) => {\n\t\t\tconsole.log(e);\n\t\t});\n\t}\n}\n\nlet __esModule = 'true';\nexport { __esModule, WjePermissionsApi, WjElementUtils, event };\n"],"names":["event"],"mappings":"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"}
package/dist/wje-list.js CHANGED
@@ -1,4 +1,4 @@
1
- import { L as List } from "./list.element-Ce1vIm1O.js";
1
+ import { L as List } from "./list.element-D4-wlFN_.js";
2
2
  List.define("wje-list", List);
3
3
  export {
4
4
  List as default