@green-code-studio/objects-list 1.3.0 → 1.4.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.
package/demo/demo.js CHANGED
@@ -21,6 +21,7 @@ objectList.columns=[
21
21
  {dataName:'id', title:'ID'},
22
22
  {dataName:'name', title:'Name'},
23
23
  ]
24
+ objectList.generateActions=()=>[{title:'zz', href:'https://google.com'}]
24
25
  objectList.style.height='500px';
25
26
  document.body.appendChild(objectList);
26
27
  objectList.readUrl()
package/demoDist/demo.js CHANGED
@@ -56,7 +56,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
56
56
  \**********************/
57
57
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58
58
 
59
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ node: () => (/* binding */ node),\n/* harmony export */ t: () => (/* binding */ t),\n/* harmony export */ translator: () => (/* binding */ translator)\n/* harmony export */ });\n/* harmony import */ var _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @green-code-studio/internationalization/i18nNode.js */ \"./node_modules/@green-code-studio/internationalization/i18nNode.js\");\n/* harmony import */ var _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @green-code-studio/internationalization/i18nTextValue.js */ \"./node_modules/@green-code-studio/internationalization/i18nTextValue.js\");\n/* harmony import */ var _green_code_studio_internationalization_translator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @green-code-studio/internationalization/translator.js */ \"./node_modules/@green-code-studio/internationalization/translator.js\");\n/* harmony import */ var _green_code_studio_internationalization_languagesHierarchy_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @green-code-studio/internationalization/languagesHierarchy.js */ \"./node_modules/@green-code-studio/internationalization/languagesHierarchy.js\");\n\n\n\n\n\nconsole.log(_green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode);\nconst node = {name:\"\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([],[{name:\"objectList\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([],[{name:\"search\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Szukaj\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Search\")}],[])},{name:\"paginationMode\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Tryb paginacji\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Pagination mode\")}],[])},{name:\"scrollMode\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Tryb scrollowania\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Scroll mode\")}],[])},{name:\"tableView\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok tabeli\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Table view\")}],[])},{name:\"listView\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok listy\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"List view\")}],[])},{name:\"startMultiEdit\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Rozpocznij edycję wielu\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Start multi-edit\")}],[])},{name:\"saveRow\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Zapisz wiersz\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Save a row\")}],[])},{name:\"mode\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Tryb\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Mode\")}],[])},{name:\"view\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"View\")}],[])},{name:\"columnEnabled\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Kolumna widoczna\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Column enabled\")}],[])},{name:\"columnName\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Nazwa kolumny\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Column name\")}],[])},{name:\"columnFilter\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Filtr\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Filter\")}],[])},{name:\"filtersCount\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Liczba filtrów\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Filters count\")}],[])},{name:\"clearFilters\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Wyczyść filtry\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Clear filters\")}],[])},{name:\"search\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Szukaj\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Search\")}],[])}])},{name:\"filter\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([],[{name:\"none\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Brak\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"None\")}],[])},{name:\"equals\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Równa się\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Equals\")}],[])},{name:\"lessThan\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Mniejsze niż\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Less than\")}],[])},{name:\"greaterThan\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Większe niż\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Greater than\")}],[])},{name:\"contains\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Zawiera\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Contains\")}],[])},{name:\"oneOf\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Jedno z\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"One of\")}],[])},{name:\"empty\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Puste\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Empty\")}],[])}])}])};\nconst translator=new _green_code_studio_internationalization_translator_js__WEBPACK_IMPORTED_MODULE_2__.Translator(_green_code_studio_internationalization_languagesHierarchy_js__WEBPACK_IMPORTED_MODULE_3__.LanguagesHierarchy.default, node.node);\nfunction t(q){var x=translator.translate(q);return x?x.toString():'';}\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/i18n.xml?");
59
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ node: () => (/* binding */ node),\n/* harmony export */ t: () => (/* binding */ t),\n/* harmony export */ translator: () => (/* binding */ translator)\n/* harmony export */ });\n/* harmony import */ var _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @green-code-studio/internationalization/i18nNode.js */ \"./node_modules/@green-code-studio/internationalization/i18nNode.js\");\n/* harmony import */ var _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @green-code-studio/internationalization/i18nTextValue.js */ \"./node_modules/@green-code-studio/internationalization/i18nTextValue.js\");\n/* harmony import */ var _green_code_studio_internationalization_translator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @green-code-studio/internationalization/translator.js */ \"./node_modules/@green-code-studio/internationalization/translator.js\");\n/* harmony import */ var _green_code_studio_internationalization_languagesHierarchy_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @green-code-studio/internationalization/languagesHierarchy.js */ \"./node_modules/@green-code-studio/internationalization/languagesHierarchy.js\");\n\n\n\n\n\nconsole.log(_green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode);\nconst node = {name:\"\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([],[{name:\"objectList\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([],[{name:\"search\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Szukaj\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Search\")}],[])},{name:\"paginationMode\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Tryb paginacji\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Pagination mode\")}],[])},{name:\"scrollMode\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Tryb scrollowania\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Scroll mode\")}],[])},{name:\"tableView\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok tabeli\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Table view\")}],[])},{name:\"tableWideView\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok tabeli (szeroka)\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Table view (wide)\")}],[])},{name:\"listView\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok listy\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"List view\")}],[])},{name:\"startMultiEdit\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Rozpocznij edycję wielu\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Start multi-edit\")}],[])},{name:\"saveRow\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Zapisz wiersz\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Save a row\")}],[])},{name:\"mode\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Tryb\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Mode\")}],[])},{name:\"view\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"View\")}],[])},{name:\"columnEnabled\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Kolumna widoczna\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Column enabled\")}],[])},{name:\"columnName\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Nazwa kolumny\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Column name\")}],[])},{name:\"columnFilter\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Filtr\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Filter\")}],[])},{name:\"filtersCount\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Liczba filtrów\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Filters count\")}],[])},{name:\"clearFilters\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Wyczyść filtry\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Clear filters\")}],[])},{name:\"search\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Szukaj\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Search\")}],[])},{name:\"inNewTab\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"W nowej karcie\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"In new tab\")}],[])}])},{name:\"filter\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([],[{name:\"none\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Brak\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"None\")}],[])},{name:\"equals\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Równa się\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Equals\")}],[])},{name:\"lessThan\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Mniejsze niż\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Less than\")}],[])},{name:\"greaterThan\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Większe niż\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Greater than\")}],[])},{name:\"contains\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Zawiera\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Contains\")}],[])},{name:\"oneOf\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Jedno z\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"One of\")}],[])},{name:\"empty\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Puste\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Empty\")}],[])}])}])};\nconst translator=new _green_code_studio_internationalization_translator_js__WEBPACK_IMPORTED_MODULE_2__.Translator(_green_code_studio_internationalization_languagesHierarchy_js__WEBPACK_IMPORTED_MODULE_3__.LanguagesHierarchy.default, node.node);\nfunction t(q){var x=translator.translate(q);return x?x.toString():'';}\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/i18n.xml?");
60
60
 
61
61
  /***/ }),
62
62
 
@@ -126,7 +126,7 @@ eval("\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(obje
126
126
  \******************************/
127
127
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
128
128
 
129
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(variables){const _0=document.createDocumentFragment();const _1=document.createElement(\"form\");const _2=document.createTextNode(\"\\r\\n \");_1.append(_2);const _3=document.createElement(\"label\");const _4=document.createTextNode(\"\\r\\n \");_3.append(_4);const _5=document.createElement(\"span\");const _6=document.createTextNode(variables[\"t\"](\"objectList.mode\"));_5.append(_6);_3.append(_5);const _7=document.createTextNode(\"\\r\\n \");_3.append(_7);const _8=document.createElement(\"select\");const _9=\"mode\";if(typeof _9==='function')_8[\"class\"]=_9;else if(_9!== undefined&&_9!== null&&_9!== false) _8.setAttribute(\"class\",_9);const _10=document.createTextNode(\"\\r\\n \");_8.append(_10);const _11=document.createElement(\"option\");const _12=\"paginationMode\";if(typeof _12==='function')_11[\"value\"]=_12;else if(_12!== undefined&&_12!== null&&_12!== false) _11.setAttribute(\"value\",_12);const _13=document.createTextNode(variables[\"t\"](\"objectList.paginationMode\"));_11.append(_13);_8.append(_11);const _14=document.createTextNode(\"\\r\\n \");_8.append(_14);const _15=document.createElement(\"option\");const _16=\"scrollMode\";if(typeof _16==='function')_15[\"value\"]=_16;else if(_16!== undefined&&_16!== null&&_16!== false) _15.setAttribute(\"value\",_16);const _17=document.createTextNode(variables[\"t\"](\"objectList.scrollMode\"));_15.append(_17);_8.append(_15);const _18=document.createTextNode(\"\\r\\n \");_8.append(_18);_3.append(_8);const _19=document.createTextNode(\"\\r\\n \");_3.append(_19);_1.append(_3);const _20=document.createTextNode(\"\\r\\n \");_1.append(_20);const _21=document.createElement(\"label\");const _22=document.createTextNode(\"\\r\\n \");_21.append(_22);const _23=document.createElement(\"span\");const _24=document.createTextNode(variables[\"t\"](\"objectList.view\"));_23.append(_24);_21.append(_23);const _25=document.createTextNode(\"\\r\\n \");_21.append(_25);const _26=document.createElement(\"select\");const _27=\"view\";if(typeof _27==='function')_26[\"class\"]=_27;else if(_27!== undefined&&_27!== null&&_27!== false) _26.setAttribute(\"class\",_27);const _28=document.createTextNode(\"\\r\\n \");_26.append(_28);const _29=document.createElement(\"option\");const _30=\"tableView\";if(typeof _30==='function')_29[\"value\"]=_30;else if(_30!== undefined&&_30!== null&&_30!== false) _29.setAttribute(\"value\",_30);const _31=document.createTextNode(variables[\"t\"](\"objectList.tableView\"));_29.append(_31);_26.append(_29);const _32=document.createTextNode(\"\\r\\n \");_26.append(_32);const _33=document.createElement(\"option\");const _34=\"listView\";if(typeof _34==='function')_33[\"value\"]=_34;else if(_34!== undefined&&_34!== null&&_34!== false) _33.setAttribute(\"value\",_34);const _35=document.createTextNode(variables[\"t\"](\"objectList.listView\"));_33.append(_35);_26.append(_33);const _36=document.createTextNode(\"\\r\\n \");_26.append(_36);_21.append(_26);const _37=document.createTextNode(\"\\r\\n \");_21.append(_37);_1.append(_21);const _38=document.createTextNode(\"\\r\\n \");_1.append(_38);const _39=document.createElement(\"input\");const _40=\"search\";if(typeof _40==='function')_39[\"type\"]=_40;else if(_40!== undefined&&_40!== null&&_40!== false) _39.setAttribute(\"type\",_40);const _41=variables[\"t\"](\"objectList.search\");if(typeof _41==='function')_39[\"placeholder\"]=_41;else if(_41!== undefined&&_41!== null&&_41!== false) _39.setAttribute(\"placeholder\",_41);_1.append(_39);const _42=document.createTextNode(\"\\r\\n \");_1.append(_42);let _43=document.createDocumentFragment();for(let [_foreachKey,_foreachValue] of Object.entries(variables[\"categories\"])){let category = _foreachValue;const _44=document.createTextNode(\"\\r\\n \");_43.append(_44);const _45=document.createElement(\"div\");const _46=\"categoryTableContainer\";if(typeof _46==='function')_45[\"class\"]=_46;else if(_46!== undefined&&_46!== null&&_46!== false) _45.setAttribute(\"class\",_46);const _47=document.createTextNode(\"\\r\\n \");_45.append(_47);const _48=document.createTextNode(category[\"name\"]);_45.append(_48);const _49=document.createTextNode(\"\\r\\n\\r\\n \");_45.append(_49);const _50=document.createElement(\"table\");const _51=document.createTextNode(\"\\r\\n \");_50.append(_51);const _52=document.createElement(\"thead\");const _53=document.createTextNode(\"\\r\\n \");_52.append(_53);const _54=document.createElement(\"tr\");const _55=document.createTextNode(\"\\r\\n \");_54.append(_55);const _56=document.createElement(\"th\");const _57=document.createTextNode(variables[\"t\"](\"objectList.columnEnabled\"));_56.append(_57);_54.append(_56);const _58=document.createTextNode(\"\\r\\n \");_54.append(_58);const _59=document.createElement(\"th\");const _60=document.createTextNode(variables[\"t\"](\"objectList.columnName\"));_59.append(_60);_54.append(_59);const _61=document.createTextNode(\"\\r\\n \");_54.append(_61);const _62=document.createElement(\"th\");const _63=document.createTextNode(variables[\"t\"](\"objectList.columnFilter\"));_62.append(_63);_54.append(_62);const _64=document.createTextNode(\"\\r\\n \");_54.append(_64);_52.append(_54);const _65=document.createTextNode(\"\\r\\n \");_52.append(_65);_50.append(_52);const _66=document.createTextNode(\"\\r\\n \");_50.append(_66);const _67=document.createElement(\"tbody\");const _68=document.createTextNode(\"\\r\\n\\r\\n \");_67.append(_68);let _69=document.createDocumentFragment();for(let [_foreachKey,_foreachValue] of Object.entries(category[\"columns\"])){let column = _foreachValue;const _70=document.createTextNode(\"\\r\\n \");_69.append(_70);const _71=document.createElement(\"tr\");const _72=document.createTextNode(\"\\r\\n \");_71.append(_72);const _73=document.createElement(\"td\");const _74=document.createTextNode(\"\\r\\n \");_73.append(_74);const _75=document.createElement(\"input\");const _76=\"checkbox\";if(typeof _76==='function')_75[\"type\"]=_76;else if(_76!== undefined&&_76!== null&&_76!== false) _75.setAttribute(\"type\",_76);const _77=column[\"dataName\"];if(typeof _77==='function')_75[\"data-name\"]=_77;else if(_77!== undefined&&_77!== null&&_77!== false) _75.setAttribute(\"data-name\",_77);_73.append(_75);const _78=document.createTextNode(\"\\r\\n \");_73.append(_78);_71.append(_73);const _79=document.createTextNode(\"\\r\\n \");_71.append(_79);const _80=document.createElement(\"td\");const _81=document.createTextNode(\"\\r\\n \");_80.append(_81);const _82=document.createTextNode(column[\"name\"]);_80.append(_82);const _83=document.createTextNode(\"\\r\\n \");_80.append(_83);_71.append(_80);const _84=document.createTextNode(\"\\r\\n \");_71.append(_84);const _85=document.createElement(\"td\");const _86=\"filter\";if(typeof _86==='function')_85[\"class\"]=_86;else if(_86!== undefined&&_86!== null&&_86!== false) _85.setAttribute(\"class\",_86);const _87=column[\"dataName\"];if(typeof _87==='function')_85[\"data-name\"]=_87;else if(_87!== undefined&&_87!== null&&_87!== false) _85.setAttribute(\"data-name\",_87);const _88=document.createTextNode(\"\\r\\n\\r\\n \");_85.append(_88);_71.append(_85);const _89=document.createTextNode(\"\\r\\n \");_71.append(_89);_69.append(_71);const _90=document.createTextNode(\"\\r\\n \");_69.append(_90);}_67.append(_69);const _91=document.createTextNode(\"\\r\\n \");_67.append(_91);_50.append(_67);const _92=document.createTextNode(\"\\r\\n \");_50.append(_92);_45.append(_50);const _93=document.createTextNode(\"\\r\\n \");_45.append(_93);_43.append(_45);const _94=document.createTextNode(\"\\r\\n \");_43.append(_94);}_1.append(_43);const _95=document.createTextNode(\"\\r\\n\");_1.append(_95);_0.append(_1);const _96=document.createTextNode(\"\\r\\n\");_0.append(_96);return _0}\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/ConfigPopup.mpts?");
129
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(variables){const _0=document.createDocumentFragment();const _1=document.createElement(\"form\");const _2=document.createTextNode(\"\\r\\n \");_1.append(_2);const _3=document.createElement(\"label\");const _4=document.createTextNode(\"\\r\\n \");_3.append(_4);const _5=document.createElement(\"span\");const _6=document.createTextNode(variables[\"t\"](\"objectList.mode\"));_5.append(_6);_3.append(_5);const _7=document.createTextNode(\"\\r\\n \");_3.append(_7);const _8=document.createElement(\"select\");const _9=\"mode\";if(typeof _9==='function')_8[\"class\"]=_9;else if(_9!== undefined&&_9!== null&&_9!== false) _8.setAttribute(\"class\",_9);const _10=document.createTextNode(\"\\r\\n \");_8.append(_10);const _11=document.createElement(\"option\");const _12=\"paginationMode\";if(typeof _12==='function')_11[\"value\"]=_12;else if(_12!== undefined&&_12!== null&&_12!== false) _11.setAttribute(\"value\",_12);const _13=document.createTextNode(variables[\"t\"](\"objectList.paginationMode\"));_11.append(_13);_8.append(_11);const _14=document.createTextNode(\"\\r\\n \");_8.append(_14);const _15=document.createElement(\"option\");const _16=\"scrollMode\";if(typeof _16==='function')_15[\"value\"]=_16;else if(_16!== undefined&&_16!== null&&_16!== false) _15.setAttribute(\"value\",_16);const _17=document.createTextNode(variables[\"t\"](\"objectList.scrollMode\"));_15.append(_17);_8.append(_15);const _18=document.createTextNode(\"\\r\\n \");_8.append(_18);_3.append(_8);const _19=document.createTextNode(\"\\r\\n \");_3.append(_19);_1.append(_3);const _20=document.createTextNode(\"\\r\\n \");_1.append(_20);const _21=document.createElement(\"label\");const _22=document.createTextNode(\"\\r\\n \");_21.append(_22);const _23=document.createElement(\"span\");const _24=document.createTextNode(variables[\"t\"](\"objectList.view\"));_23.append(_24);_21.append(_23);const _25=document.createTextNode(\"\\r\\n \");_21.append(_25);const _26=document.createElement(\"select\");const _27=\"view\";if(typeof _27==='function')_26[\"class\"]=_27;else if(_27!== undefined&&_27!== null&&_27!== false) _26.setAttribute(\"class\",_27);const _28=document.createTextNode(\"\\r\\n \");_26.append(_28);const _29=document.createElement(\"option\");const _30=\"tableView\";if(typeof _30==='function')_29[\"value\"]=_30;else if(_30!== undefined&&_30!== null&&_30!== false) _29.setAttribute(\"value\",_30);const _31=document.createTextNode(variables[\"t\"](\"objectList.tableView\"));_29.append(_31);_26.append(_29);const _32=document.createTextNode(\"\\r\\n \");_26.append(_32);const _33=document.createElement(\"option\");const _34=\"tableWideView\";if(typeof _34==='function')_33[\"value\"]=_34;else if(_34!== undefined&&_34!== null&&_34!== false) _33.setAttribute(\"value\",_34);const _35=document.createTextNode(variables[\"t\"](\"objectList.tableWideView\"));_33.append(_35);_26.append(_33);const _36=document.createTextNode(\"\\r\\n \");_26.append(_36);const _37=document.createElement(\"option\");const _38=\"listView\";if(typeof _38==='function')_37[\"value\"]=_38;else if(_38!== undefined&&_38!== null&&_38!== false) _37.setAttribute(\"value\",_38);const _39=document.createTextNode(variables[\"t\"](\"objectList.listView\"));_37.append(_39);_26.append(_37);const _40=document.createTextNode(\"\\r\\n \");_26.append(_40);_21.append(_26);const _41=document.createTextNode(\"\\r\\n \");_21.append(_41);_1.append(_21);const _42=document.createTextNode(\"\\r\\n \");_1.append(_42);const _43=document.createElement(\"input\");const _44=\"search\";if(typeof _44==='function')_43[\"type\"]=_44;else if(_44!== undefined&&_44!== null&&_44!== false) _43.setAttribute(\"type\",_44);const _45=variables[\"t\"](\"objectList.search\");if(typeof _45==='function')_43[\"placeholder\"]=_45;else if(_45!== undefined&&_45!== null&&_45!== false) _43.setAttribute(\"placeholder\",_45);_1.append(_43);const _46=document.createTextNode(\"\\r\\n \");_1.append(_46);let _47=document.createDocumentFragment();for(let [_foreachKey,_foreachValue] of Object.entries(variables[\"categories\"])){let category = _foreachValue;const _48=document.createTextNode(\"\\r\\n \");_47.append(_48);const _49=document.createElement(\"div\");const _50=\"categoryTableContainer\";if(typeof _50==='function')_49[\"class\"]=_50;else if(_50!== undefined&&_50!== null&&_50!== false) _49.setAttribute(\"class\",_50);const _51=document.createTextNode(\"\\r\\n \");_49.append(_51);const _52=document.createTextNode(category[\"name\"]);_49.append(_52);const _53=document.createTextNode(\"\\r\\n\\r\\n \");_49.append(_53);const _54=document.createElement(\"table\");const _55=document.createTextNode(\"\\r\\n \");_54.append(_55);const _56=document.createElement(\"thead\");const _57=document.createTextNode(\"\\r\\n \");_56.append(_57);const _58=document.createElement(\"tr\");const _59=document.createTextNode(\"\\r\\n \");_58.append(_59);const _60=document.createElement(\"th\");const _61=document.createTextNode(variables[\"t\"](\"objectList.columnEnabled\"));_60.append(_61);_58.append(_60);const _62=document.createTextNode(\"\\r\\n \");_58.append(_62);const _63=document.createElement(\"th\");const _64=document.createTextNode(variables[\"t\"](\"objectList.columnName\"));_63.append(_64);_58.append(_63);const _65=document.createTextNode(\"\\r\\n \");_58.append(_65);const _66=document.createElement(\"th\");const _67=document.createTextNode(variables[\"t\"](\"objectList.columnFilter\"));_66.append(_67);_58.append(_66);const _68=document.createTextNode(\"\\r\\n \");_58.append(_68);_56.append(_58);const _69=document.createTextNode(\"\\r\\n \");_56.append(_69);_54.append(_56);const _70=document.createTextNode(\"\\r\\n \");_54.append(_70);const _71=document.createElement(\"tbody\");const _72=document.createTextNode(\"\\r\\n\\r\\n \");_71.append(_72);let _73=document.createDocumentFragment();for(let [_foreachKey,_foreachValue] of Object.entries(category[\"columns\"])){let column = _foreachValue;const _74=document.createTextNode(\"\\r\\n \");_73.append(_74);const _75=document.createElement(\"tr\");const _76=document.createTextNode(\"\\r\\n \");_75.append(_76);const _77=document.createElement(\"td\");const _78=document.createTextNode(\"\\r\\n \");_77.append(_78);const _79=document.createElement(\"input\");const _80=\"checkbox\";if(typeof _80==='function')_79[\"type\"]=_80;else if(_80!== undefined&&_80!== null&&_80!== false) _79.setAttribute(\"type\",_80);const _81=column[\"dataName\"];if(typeof _81==='function')_79[\"data-name\"]=_81;else if(_81!== undefined&&_81!== null&&_81!== false) _79.setAttribute(\"data-name\",_81);_77.append(_79);const _82=document.createTextNode(\"\\r\\n \");_77.append(_82);_75.append(_77);const _83=document.createTextNode(\"\\r\\n \");_75.append(_83);const _84=document.createElement(\"td\");const _85=document.createTextNode(\"\\r\\n \");_84.append(_85);const _86=document.createTextNode(column[\"name\"]);_84.append(_86);const _87=document.createTextNode(\"\\r\\n \");_84.append(_87);_75.append(_84);const _88=document.createTextNode(\"\\r\\n \");_75.append(_88);const _89=document.createElement(\"td\");const _90=\"filter\";if(typeof _90==='function')_89[\"class\"]=_90;else if(_90!== undefined&&_90!== null&&_90!== false) _89.setAttribute(\"class\",_90);const _91=column[\"dataName\"];if(typeof _91==='function')_89[\"data-name\"]=_91;else if(_91!== undefined&&_91!== null&&_91!== false) _89.setAttribute(\"data-name\",_91);const _92=document.createTextNode(\"\\r\\n\\r\\n \");_89.append(_92);_75.append(_89);const _93=document.createTextNode(\"\\r\\n \");_75.append(_93);_73.append(_75);const _94=document.createTextNode(\"\\r\\n \");_73.append(_94);}_71.append(_73);const _95=document.createTextNode(\"\\r\\n \");_71.append(_95);_54.append(_71);const _96=document.createTextNode(\"\\r\\n \");_54.append(_96);_49.append(_54);const _97=document.createTextNode(\"\\r\\n \");_49.append(_97);_47.append(_49);const _98=document.createTextNode(\"\\r\\n \");_47.append(_98);}_1.append(_47);const _99=document.createTextNode(\"\\r\\n\");_1.append(_99);_0.append(_1);const _100=document.createTextNode(\"\\r\\n\");_0.append(_100);return _0}\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/ConfigPopup.mpts?");
130
130
 
131
131
  /***/ }),
132
132
 
@@ -216,7 +216,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _src
216
216
  \*********************************************************************/
217
217
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
218
218
 
219
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ContextMenu: () => (/* binding */ __webpack_exports__ContextMenu)\n/* harmony export */ });\n/*\n * ATTENTION: The \"eval\" devtool has been used (maybe by default in mode: \"development\").\n * This devtool is neither made for production nor for readable output files.\n * It uses \"eval()\" calls to create a separate source file in the browser devtools.\n * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)\n * or disable the default devtool with \"devtool: false\".\n * If you are looking for production-ready output files, see mode: \"production\" (https://webpack.js.org/configuration/mode/).\n */\n/******/ var __webpack_modules__ = ({\n\n/***/ \"./node_modules/fast-creator/dist/entry.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/fast-creator/dist/entry.js ***!\n \\*************************************************/\n/***/ ((module) => {\n\neval(\"\\n\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\\n\\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\\n\\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\\n\\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\\n\\nfunction _nonIterableSpread() { throw new TypeError(\\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\\"); }\\n\\nfunction _iterableToArray(iter) { if (typeof Symbol !== \\\"undefined\\\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\\n\\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\\n\\nfunction _typeof(obj) { \\\"@babel/helpers - typeof\\\"; if (typeof Symbol === \\\"function\\\" && typeof Symbol.iterator === \\\"symbol\\\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \\\"function\\\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \\\"symbol\\\" : typeof obj; }; } return _typeof(obj); }\\n\\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \\\"undefined\\\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\\\"Invalid attempt to iterate non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\\\"return\\\"] != null) it[\\\"return\\\"](); } finally { if (didErr) throw err; } } }; }\\n\\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \\\"string\\\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \\\"Object\\\" && o.constructor) n = o.constructor.name; if (n === \\\"Map\\\" || n === \\\"Set\\\") return Array.from(n); if (n === \\\"Arguments\\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\\n\\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\\n\\n/**\\r\\n *\\r\\n * @param attributes\\r\\n * @param documentObject\\r\\n * @returns {HTMLElement}\\r\\n */\\nfunction createFromDefinition() {\\n var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\\n var documentObject = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\\n if (!documentObject) documentObject = document;\\n var element = documentObject.createElement(attributes.tagName || 'div');\\n repairClasses(attributes);\\n\\n for (var attrName in attributes) {\\n if (attrName === 'className') {\\n element.className = attributes[attrName];\\n } else if (attrName === 'classList') {\\n var _iterator = _createForOfIteratorHelper(attributes.classList),\\n _step;\\n\\n try {\\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\\n var x = _step.value;\\n element.classList.add(x);\\n }\\n } catch (err) {\\n _iterator.e(err);\\n } finally {\\n _iterator.f();\\n }\\n } else if (attrName === 'text') {\\n element.textContent = attributes.text;\\n } else if (attrName === 'html') {\\n element.innerHTML = attributes.html;\\n } else if (attrName === 'data') {\\n Object.assign(element.dataset, attributes.data);\\n } else if (attrName === 'children') {\\n attributes.children.forEach(function (x) {\\n return element.appendChild(x instanceof Node ? x : create(x, {}, documentObject));\\n });\\n } else if (attrName.startsWith('on')) {\\n element[attrName] = attributes[attrName];\\n } else if (attrName.startsWith('style')) {\\n if (_typeof(attributes[attrName]) == \\\"object\\\") {\\n for (var styleName in attributes[attrName]) {\\n element.style.setProperty(styleName, attributes[attrName][styleName]);\\n }\\n } else if (attributes[attrName] !== false) {\\n element.setAttribute(attrName, attributes[attrName]);\\n }\\n } else if (attrName === 'tagName') {//nothing\\n } else {\\n if (attributes[attrName] === true) element.setAttribute(attrName, attrName);else if (attributes[attrName] !== false) element.setAttribute(attrName, attributes[attrName]);\\n }\\n }\\n\\n return element;\\n}\\n\\nfunction repairClasses(obj) {\\n if (obj.className) {\\n if (!obj.classList) obj.classList = [];\\n obj.classList = [].concat(_toConsumableArray(obj.classList), _toConsumableArray(obj.className.split(' ')));\\n delete obj.className;\\n }\\n}\\n/**\\r\\n *\\r\\n * @param {string} selector\\r\\n * $returns {object}\\r\\n */\\n\\n\\nfunction parseSelector(selector) {\\n selector = (selector + \\\"\\\").trim();\\n var position = 0;\\n\\n function parseElement() {\\n var ret = {};\\n var canBeTagname = true;\\n\\n while (position < selector.length) {\\n var _char = selector[position];\\n position++;\\n\\n if (_char === '#') {\\n ret.id = parseText();\\n } else if (_char === '.') {\\n if (!ret.classList) ret.classList = [];\\n ret.classList.push(parseText());\\n } else if (_char === '[') {\\n var attrName = parseText(['=', ']']);\\n skipWhitespace();\\n\\n if (selector[position] == '=') {\\n position++;\\n skipWhitespace();\\n if (selector[position] != '\\\"') throw new Error(\\\"Syntax error in position \\\" + position);\\n position++;\\n var value = parseAttributeValue();\\n skipWhitespace();\\n if (selector[position] != '\\\"') throw new Error(\\\"Syntax error in position \\\" + position);\\n position++;\\n skipWhitespace();\\n if (selector[position] != ']') throw new Error(\\\"Syntax error in position \\\" + position);\\n position++;\\n ret[attrName] = value;\\n } else if (selector[position] == ']') {\\n position++;\\n ret[attrName] = true;\\n } else {\\n throw new Error(\\\"Syntax error in position \\\" + position);\\n }\\n } else if (/\\\\s/.test(_char)) {\\n while (position < selector.length && /\\\\s/.test(selector[position])) {\\n position++;\\n skipWhitespace();\\n }\\n\\n ret.children = [parseElement()];\\n } else if (canBeTagname) {\\n ret.tagName = _char + parseText();\\n } else {\\n throw new Error(\\\"Syntax error in position \\\" + position);\\n }\\n\\n canBeTagname = false;\\n }\\n\\n return ret;\\n }\\n\\n function parseText() {\\n var escape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['.', '#', ',', '['];\\n var text = '';\\n\\n while (position < selector.length) {\\n var _char2 = selector[position];\\n\\n if (/\\\\s/.test(_char2) || escape.includes(_char2)) {\\n return text;\\n } else {\\n text += _char2;\\n position++;\\n }\\n }\\n\\n return text;\\n }\\n\\n function parseAttributeValue() {\\n var text = '';\\n\\n while (position < selector.length) {\\n var _char3 = selector[position];\\n\\n if (_char3 == '\\\"') {\\n return text;\\n } else {\\n text += _char3;\\n position++;\\n }\\n }\\n\\n return text;\\n }\\n\\n function skipWhitespace() {\\n while (position < selector.length) {\\n var _char4 = selector[position];\\n\\n if (!/\\\\s/.test(_char4)) {\\n return;\\n } else {\\n position++;\\n }\\n }\\n }\\n\\n if (selector === \\\"\\\") return {};else return parseElement();\\n}\\n/**\\r\\n *\\r\\n * @param {string} selector\\r\\n * @param {object} attributes\\r\\n * @param documentObject\\r\\n * @returns {HTMLElement}\\r\\n */\\n\\n\\nfunction create() {\\n var definition = {};\\n var documentObject = null;\\n\\n for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\\n params[_key] = arguments[_key];\\n }\\n\\n if (typeof params[0] == \\\"string\\\") definition = mergeObjects(definition, parseSelector(params.splice(0, 1)[0]));\\n if (_typeof(params[0]) == \\\"object\\\" && !(params[0] instanceof Node)) definition = mergeObjects(definition, params.splice(0, 1)[0]);\\n\\n for (var _i = 0, _params = params; _i < _params.length; _i++) {\\n var param = _params[_i];\\n\\n if (param instanceof Document) {\\n documentObject = param;\\n } else if (param instanceof Node) {\\n documentObject = param.ownerDocument;\\n if (!definition.children) definition.children = [];\\n definition.children.push(param);\\n }\\n }\\n\\n return createFromDefinition(definition, documentObject);\\n}\\n\\nfunction mergeObjects(a, b) {\\n repairClasses(a);\\n repairClasses(b);\\n\\n var ret = _objectSpread({}, a, {}, b);\\n\\n if (a.data && b.data) {\\n ret.data = _objectSpread({}, a.data, {}, b.data);\\n }\\n\\n if (a.children && b.children) {\\n ret.children = [].concat(_toConsumableArray(a.children), _toConsumableArray(b.children));\\n }\\n\\n if (a.classList && b.classList) {\\n ret.classList = [].concat(_toConsumableArray(a.classList), _toConsumableArray(b.classList));\\n }\\n\\n return ret;\\n}\\n\\nmodule.exports = {\\n createFromDefinition: createFromDefinition,\\n parseSelector: parseSelector,\\n create: create,\\n mergeObjects: mergeObjects,\\n \\\"default\\\": create\\n};\\n\\n//# sourceURL=webpack://@green-code-studio/context-menu/./node_modules/fast-creator/dist/entry.js?\");\n\n/***/ }),\n\n/***/ \"./src/contextMenu.js\":\n/*!****************************!*\\\n !*** ./src/contextMenu.js ***!\n \\****************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ ContextMenu: () => (/* binding */ ContextMenu)\\n/* harmony export */ });\\n/* harmony import */ var fast_creator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-creator */ \\\"./node_modules/fast-creator/dist/entry.js\\\");\\n\\r\\n\\r\\nclass ContextMenu {\\r\\n constructor(elements, parent = null) {\\r\\n this.generateHtml(elements);\\r\\n this.bindGlobalEvents();\\r\\n this.subMenu = null;\\r\\n }\\r\\n\\r\\n generateHtml(elements) {\\r\\n this.html = (0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('ul.contextMenu');\\r\\n for (const element of elements) {\\r\\n this.html.append(this.generateElementHtml(element));\\r\\n }\\r\\n this.html.onmousedown = e => e.stopPropagation();\\r\\n }\\r\\n\\r\\n generateElementHtml(element) {\\r\\n const elementHtml = (0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('li.element', {tabIndex: 0});\\r\\n if (element.submenu) {\\r\\n elementHtml.classList.add('hasSubmenu');\\r\\n }\\r\\n if (element.icon)\\r\\n elementHtml.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('span.icon', {className: element.icon}));\\r\\n else\\r\\n elementHtml.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('span.iconPlaceholder'));\\r\\n\\r\\n elementHtml.addChild('span.content', {text: element.text || ''});\\r\\n if (element.onclick) {\\r\\n elementHtml.onclick = e => {\\r\\n element.onclick.call(elementHtml, e);\\r\\n this.destroy()\\r\\n };\\r\\n elementHtml.onkeydown = e => {\\r\\n if (e.key == 'Enter') {\\r\\n element.onclick.call(elementHtml, e);\\r\\n this.destroy()\\r\\n } else if (e.key == 'ArrowDown') {\\r\\n (elementHtml.nextElementSibling ?? elementHtml.parentNode.firstElementChild).focus();\\r\\n } else if (e.key == 'ArrowUp') {\\r\\n (elementHtml.previousElementSibling ?? elementHtml.parentNode.lastElementChild).focus();\\r\\n }\\r\\n };\\r\\n }\\r\\n elementHtml.onmouseenter = e => {\\r\\n elementHtml.focus();\\r\\n if (this.submenu) {\\r\\n this.submenu.destroy();\\r\\n this.submenu = null;\\r\\n }\\r\\n if (element.submenu) {\\r\\n this.submenu = new ContextMenu(element.submenu);\\r\\n document.body.appendChild(this.submenu.html);\\r\\n this.submenu.setPositionToParent(elementHtml);\\r\\n }\\r\\n };\\r\\n return elementHtml;\\r\\n }\\r\\n\\r\\n bindGlobalEvents() {\\r\\n this.bindedDestroyEvent = this.destroy.bind(this);\\r\\n addEventListener('mousedown', this.bindedDestroyEvent);\\r\\n addEventListener('blur', this.bindedDestroyEvent);\\r\\n }\\r\\n\\r\\n setPositionToPointer(event) {\\r\\n const placeHorizontal = innerWidth - event.clientX;\\r\\n const placeVertical = innerHeight - event.clientY;\\r\\n const isRight = this.html.offsetWidth <= placeHorizontal;\\r\\n const isBottom = this.html.offsetHeight <= placeVertical;\\r\\n\\r\\n this.html.style.left = 'auto';\\r\\n this.html.style.right = 'auto';\\r\\n this.html.style.top = 'auto';\\r\\n this.html.style.bottom = 'auto';\\r\\n\\r\\n if (isRight)\\r\\n this.html.style.left = `${event.clientX}px`;\\r\\n else\\r\\n this.html.style.right = `${Math.min(innerWidth - event.clientX + 1, innerWidth - this.html.offsetWidth)}px`;\\r\\n\\r\\n if (isBottom)\\r\\n this.html.style.top = `${event.clientY}px`;\\r\\n else\\r\\n this.html.style.bottom = `${Math.min(innerHeight - event.clientY + 1, innerHeight - this.html.offsetHeight)}px`;\\r\\n }\\r\\n\\r\\n setPositionToParent(parent) {\\r\\n const parentBoundingBox = parent.getBoundingClientRect();\\r\\n const placeRight = innerWidth - parentBoundingBox.right;\\r\\n const placeLeft = parentBoundingBox.left;\\r\\n const placeBottom = innerHeight - parentBoundingBox.top;\\r\\n const isRight = this.html.offsetWidth <= placeRight;\\r\\n const isBottom = this.html.offsetHeight <= placeBottom;\\r\\n\\r\\n this.html.style.left = 'auto';\\r\\n this.html.style.right = 'auto';\\r\\n this.html.style.top = 'auto';\\r\\n this.html.style.bottom = 'auto';\\r\\n\\r\\n if (isRight)\\r\\n this.html.style.left = `${parentBoundingBox.right}px`;\\r\\n else\\r\\n this.html.style.right = `${Math.min(innerWidth - parentBoundingBox.left, innerWidth - this.html.offsetWidth)}px`;\\r\\n\\r\\n if (isBottom)\\r\\n this.html.style.top = `${parentBoundingBox.top}px`;\\r\\n else\\r\\n this.html.style.bottom = `${Math.min(innerHeight - parentBoundingBox.bottom, innerHeight - this.html.offsetHeight)}px`;\\r\\n }\\r\\n\\r\\n destroy() {\\r\\n this.html.remove();\\r\\n removeEventListener('mousedown', this.bindedDestroyEvent);\\r\\n removeEventListener('blur', this.bindedDestroyEvent);\\r\\n }\\r\\n\\r\\n static openContextMenu(event, elements) {\\r\\n const menu = new ContextMenu(elements);\\r\\n document.body.appendChild(menu.html);\\r\\n menu.setPositionToPointer(event);\\r\\n event.preventDefault();\\r\\n if (menu.html.firstChild)\\r\\n menu.html.firstChild.focus();\\r\\n\\r\\n return menu;\\r\\n }\\r\\n}\\r\\n\\n\\n//# sourceURL=webpack://@green-code-studio/context-menu/./src/contextMenu.js?\");\n\n/***/ }),\n\n/***/ \"./src/index.js\":\n/*!**********************!*\\\n !*** ./src/index.js ***!\n \\**********************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ ContextMenu: () => (/* reexport safe */ _contextMenu_js__WEBPACK_IMPORTED_MODULE_0__.ContextMenu)\\n/* harmony export */ });\\n/* harmony import */ var _contextMenu_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./contextMenu.js */ \\\"./src/contextMenu.js\\\");\\n\\r\\n\\n\\n//# sourceURL=webpack://@green-code-studio/context-menu/./src/index.js?\");\n\n/***/ })\n\n/******/ });\n/************************************************************************/\n/******/ // The module cache\n/******/ var __webpack_module_cache__ = {};\n/******/ \n/******/ // The require function\n/******/ function __nested_webpack_require_18583__(moduleId) {\n/******/ \t// Check if module is in cache\n/******/ \tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \tif (cachedModule !== undefined) {\n/******/ \t\treturn cachedModule.exports;\n/******/ \t}\n/******/ \t// Create a new module (and put it into the cache)\n/******/ \tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t// no module.id needed\n/******/ \t\t// no module.loaded needed\n/******/ \t\texports: {}\n/******/ \t};\n/******/ \n/******/ \t// Execute the module function\n/******/ \t__webpack_modules__[moduleId](module, module.exports, __nested_webpack_require_18583__);\n/******/ \n/******/ \t// Return the exports of the module\n/******/ \treturn module.exports;\n/******/ }\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__nested_webpack_require_18583__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__nested_webpack_require_18583__.o(definition, key) && !__nested_webpack_require_18583__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__nested_webpack_require_18583__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/make namespace object */\n/******/ (() => {\n/******/ \t// define __esModule on exports\n/******/ \t__nested_webpack_require_18583__.r = (exports) => {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/ })();\n/******/ \n/************************************************************************/\n/******/ \n/******/ // startup\n/******/ // Load entry module and return exports\n/******/ // This entry module can't be inlined because the eval devtool is used.\n/******/ var __nested_webpack_exports__ = __nested_webpack_require_18583__(\"./src/index.js\");\n/******/ var __webpack_exports__ContextMenu = __nested_webpack_exports__.ContextMenu;\n/******/ \n/******/ \n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./node_modules/@green-code-studio/context-menu/dist/index.mjs?");
219
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ContextMenu: () => (/* binding */ __webpack_exports__ContextMenu)\n/* harmony export */ });\n/*\n * ATTENTION: The \"eval\" devtool has been used (maybe by default in mode: \"development\").\n * This devtool is neither made for production nor for readable output files.\n * It uses \"eval()\" calls to create a separate source file in the browser devtools.\n * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)\n * or disable the default devtool with \"devtool: false\".\n * If you are looking for production-ready output files, see mode: \"production\" (https://webpack.js.org/configuration/mode/).\n */\n/******/ var __webpack_modules__ = ({\n\n/***/ \"./node_modules/fast-creator/dist/entry.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/fast-creator/dist/entry.js ***!\n \\*************************************************/\n/***/ ((module) => {\n\neval(\"\\n\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\\n\\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\\n\\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\\n\\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\\n\\nfunction _nonIterableSpread() { throw new TypeError(\\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\\"); }\\n\\nfunction _iterableToArray(iter) { if (typeof Symbol !== \\\"undefined\\\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\\n\\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\\n\\nfunction _typeof(obj) { \\\"@babel/helpers - typeof\\\"; if (typeof Symbol === \\\"function\\\" && typeof Symbol.iterator === \\\"symbol\\\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \\\"function\\\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \\\"symbol\\\" : typeof obj; }; } return _typeof(obj); }\\n\\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \\\"undefined\\\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\\\"Invalid attempt to iterate non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\\\"return\\\"] != null) it[\\\"return\\\"](); } finally { if (didErr) throw err; } } }; }\\n\\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \\\"string\\\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \\\"Object\\\" && o.constructor) n = o.constructor.name; if (n === \\\"Map\\\" || n === \\\"Set\\\") return Array.from(n); if (n === \\\"Arguments\\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\\n\\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\\n\\n/**\\r\\n *\\r\\n * @param attributes\\r\\n * @param documentObject\\r\\n * @returns {HTMLElement}\\r\\n */\\nfunction createFromDefinition() {\\n var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\\n var documentObject = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\\n if (!documentObject) documentObject = document;\\n var element = documentObject.createElement(attributes.tagName || 'div');\\n repairClasses(attributes);\\n\\n for (var attrName in attributes) {\\n if (attrName === 'className') {\\n element.className = attributes[attrName];\\n } else if (attrName === 'classList') {\\n var _iterator = _createForOfIteratorHelper(attributes.classList),\\n _step;\\n\\n try {\\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\\n var x = _step.value;\\n element.classList.add(x);\\n }\\n } catch (err) {\\n _iterator.e(err);\\n } finally {\\n _iterator.f();\\n }\\n } else if (attrName === 'text') {\\n element.textContent = attributes.text;\\n } else if (attrName === 'html') {\\n element.innerHTML = attributes.html;\\n } else if (attrName === 'data') {\\n Object.assign(element.dataset, attributes.data);\\n } else if (attrName === 'children') {\\n attributes.children.forEach(function (x) {\\n return element.appendChild(x instanceof Node ? x : create(x, {}, documentObject));\\n });\\n } else if (attrName.startsWith('on')) {\\n element[attrName] = attributes[attrName];\\n } else if (attrName.startsWith('style')) {\\n if (_typeof(attributes[attrName]) == \\\"object\\\") {\\n for (var styleName in attributes[attrName]) {\\n element.style.setProperty(styleName, attributes[attrName][styleName]);\\n }\\n } else if (attributes[attrName] !== false) {\\n element.setAttribute(attrName, attributes[attrName]);\\n }\\n } else if (attrName === 'tagName') {//nothing\\n } else {\\n if (attributes[attrName] === true) element.setAttribute(attrName, attrName);else if (attributes[attrName] !== false) element.setAttribute(attrName, attributes[attrName]);\\n }\\n }\\n\\n return element;\\n}\\n\\nfunction repairClasses(obj) {\\n if (obj.className) {\\n if (!obj.classList) obj.classList = [];\\n obj.classList = [].concat(_toConsumableArray(obj.classList), _toConsumableArray(obj.className.split(' ')));\\n delete obj.className;\\n }\\n}\\n/**\\r\\n *\\r\\n * @param {string} selector\\r\\n * $returns {object}\\r\\n */\\n\\n\\nfunction parseSelector(selector) {\\n selector = (selector + \\\"\\\").trim();\\n var position = 0;\\n\\n function parseElement() {\\n var ret = {};\\n var canBeTagname = true;\\n\\n while (position < selector.length) {\\n var _char = selector[position];\\n position++;\\n\\n if (_char === '#') {\\n ret.id = parseText();\\n } else if (_char === '.') {\\n if (!ret.classList) ret.classList = [];\\n ret.classList.push(parseText());\\n } else if (_char === '[') {\\n var attrName = parseText(['=', ']']);\\n skipWhitespace();\\n\\n if (selector[position] == '=') {\\n position++;\\n skipWhitespace();\\n if (selector[position] != '\\\"') throw new Error(\\\"Syntax error in position \\\" + position);\\n position++;\\n var value = parseAttributeValue();\\n skipWhitespace();\\n if (selector[position] != '\\\"') throw new Error(\\\"Syntax error in position \\\" + position);\\n position++;\\n skipWhitespace();\\n if (selector[position] != ']') throw new Error(\\\"Syntax error in position \\\" + position);\\n position++;\\n ret[attrName] = value;\\n } else if (selector[position] == ']') {\\n position++;\\n ret[attrName] = true;\\n } else {\\n throw new Error(\\\"Syntax error in position \\\" + position);\\n }\\n } else if (/\\\\s/.test(_char)) {\\n while (position < selector.length && /\\\\s/.test(selector[position])) {\\n position++;\\n skipWhitespace();\\n }\\n\\n ret.children = [parseElement()];\\n } else if (canBeTagname) {\\n ret.tagName = _char + parseText();\\n } else {\\n throw new Error(\\\"Syntax error in position \\\" + position);\\n }\\n\\n canBeTagname = false;\\n }\\n\\n return ret;\\n }\\n\\n function parseText() {\\n var escape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['.', '#', ',', '['];\\n var text = '';\\n\\n while (position < selector.length) {\\n var _char2 = selector[position];\\n\\n if (/\\\\s/.test(_char2) || escape.includes(_char2)) {\\n return text;\\n } else {\\n text += _char2;\\n position++;\\n }\\n }\\n\\n return text;\\n }\\n\\n function parseAttributeValue() {\\n var text = '';\\n\\n while (position < selector.length) {\\n var _char3 = selector[position];\\n\\n if (_char3 == '\\\"') {\\n return text;\\n } else {\\n text += _char3;\\n position++;\\n }\\n }\\n\\n return text;\\n }\\n\\n function skipWhitespace() {\\n while (position < selector.length) {\\n var _char4 = selector[position];\\n\\n if (!/\\\\s/.test(_char4)) {\\n return;\\n } else {\\n position++;\\n }\\n }\\n }\\n\\n if (selector === \\\"\\\") return {};else return parseElement();\\n}\\n/**\\r\\n *\\r\\n * @param {string} selector\\r\\n * @param {object} attributes\\r\\n * @param documentObject\\r\\n * @returns {HTMLElement}\\r\\n */\\n\\n\\nfunction create() {\\n var definition = {};\\n var documentObject = null;\\n\\n for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\\n params[_key] = arguments[_key];\\n }\\n\\n if (typeof params[0] == \\\"string\\\") definition = mergeObjects(definition, parseSelector(params.splice(0, 1)[0]));\\n if (_typeof(params[0]) == \\\"object\\\" && !(params[0] instanceof Node)) definition = mergeObjects(definition, params.splice(0, 1)[0]);\\n\\n for (var _i = 0, _params = params; _i < _params.length; _i++) {\\n var param = _params[_i];\\n\\n if (param instanceof Document) {\\n documentObject = param;\\n } else if (param instanceof Node) {\\n documentObject = param.ownerDocument;\\n if (!definition.children) definition.children = [];\\n definition.children.push(param);\\n }\\n }\\n\\n return createFromDefinition(definition, documentObject);\\n}\\n\\nfunction mergeObjects(a, b) {\\n repairClasses(a);\\n repairClasses(b);\\n\\n var ret = _objectSpread({}, a, {}, b);\\n\\n if (a.data && b.data) {\\n ret.data = _objectSpread({}, a.data, {}, b.data);\\n }\\n\\n if (a.children && b.children) {\\n ret.children = [].concat(_toConsumableArray(a.children), _toConsumableArray(b.children));\\n }\\n\\n if (a.classList && b.classList) {\\n ret.classList = [].concat(_toConsumableArray(a.classList), _toConsumableArray(b.classList));\\n }\\n\\n return ret;\\n}\\n\\nmodule.exports = {\\n createFromDefinition: createFromDefinition,\\n parseSelector: parseSelector,\\n create: create,\\n mergeObjects: mergeObjects,\\n \\\"default\\\": create\\n};\\n\\n//# sourceURL=webpack://@green-code-studio/context-menu/./node_modules/fast-creator/dist/entry.js?\");\n\n/***/ }),\n\n/***/ \"./src/contextMenu.js\":\n/*!****************************!*\\\n !*** ./src/contextMenu.js ***!\n \\****************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ ContextMenu: () => (/* binding */ ContextMenu)\\n/* harmony export */ });\\n/* harmony import */ var fast_creator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-creator */ \\\"./node_modules/fast-creator/dist/entry.js\\\");\\n\\r\\n\\r\\nclass ContextMenu {\\r\\n constructor(elements, parent = null) {\\r\\n this.generateHtml(elements);\\r\\n this.bindGlobalEvents();\\r\\n this.subMenu = null;\\r\\n }\\r\\n\\r\\n generateHtml(elements) {\\r\\n this.html = (0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('ul.contextMenu');\\r\\n for (const element of elements) {\\r\\n this.html.append(this.generateElementHtml(element));\\r\\n }\\r\\n this.html.onmousedown = e => e.stopPropagation();\\r\\n }\\r\\n\\r\\n generateElementHtml(element) {\\r\\n const elementHtml = (0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('li.element', {tabIndex: 0});\\r\\n if (element.submenu) {\\r\\n elementHtml.classList.add('hasSubmenu');\\r\\n }\\r\\n if (element.icon)\\r\\n elementHtml.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('span.icon', {className: element.icon}));\\r\\n else\\r\\n elementHtml.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('span.iconPlaceholder'));\\r\\n\\r\\n elementHtml.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('span.content', {text: element.text || ''}));\\r\\n if (element.onclick) {\\r\\n elementHtml.onclick = e => {\\r\\n element.onclick.call(elementHtml, e);\\r\\n this.destroy()\\r\\n };\\r\\n elementHtml.onkeydown = e => {\\r\\n if (e.key == 'Enter') {\\r\\n element.onclick.call(elementHtml, e);\\r\\n this.destroy()\\r\\n } else if (e.key == 'ArrowDown') {\\r\\n (elementHtml.nextElementSibling ?? elementHtml.parentNode.firstElementChild).focus();\\r\\n } else if (e.key == 'ArrowUp') {\\r\\n (elementHtml.previousElementSibling ?? elementHtml.parentNode.lastElementChild).focus();\\r\\n }\\r\\n };\\r\\n }\\r\\n elementHtml.onmouseenter = e => {\\r\\n elementHtml.focus();\\r\\n if (this.submenu) {\\r\\n this.submenu.destroy();\\r\\n this.submenu = null;\\r\\n }\\r\\n if (element.submenu) {\\r\\n this.submenu = new ContextMenu(element.submenu);\\r\\n document.body.appendChild(this.submenu.html);\\r\\n this.submenu.setPositionToParent(elementHtml);\\r\\n }\\r\\n };\\r\\n return elementHtml;\\r\\n }\\r\\n\\r\\n bindGlobalEvents() {\\r\\n this.bindedDestroyEvent = this.destroy.bind(this);\\r\\n addEventListener('mousedown', this.bindedDestroyEvent);\\r\\n addEventListener('blur', this.bindedDestroyEvent);\\r\\n }\\r\\n\\r\\n setPositionToPointer(event) {\\r\\n const placeHorizontal = innerWidth - event.clientX;\\r\\n const placeVertical = innerHeight - event.clientY;\\r\\n const isRight = this.html.offsetWidth <= placeHorizontal;\\r\\n const isBottom = this.html.offsetHeight <= placeVertical;\\r\\n\\r\\n this.html.style.left = 'auto';\\r\\n this.html.style.right = 'auto';\\r\\n this.html.style.top = 'auto';\\r\\n this.html.style.bottom = 'auto';\\r\\n\\r\\n if (isRight)\\r\\n this.html.style.left = `${event.clientX}px`;\\r\\n else\\r\\n this.html.style.right = `${Math.min(innerWidth - event.clientX + 1, innerWidth - this.html.offsetWidth)}px`;\\r\\n\\r\\n if (isBottom)\\r\\n this.html.style.top = `${event.clientY}px`;\\r\\n else\\r\\n this.html.style.bottom = `${Math.min(innerHeight - event.clientY + 1, innerHeight - this.html.offsetHeight)}px`;\\r\\n }\\r\\n\\r\\n setPositionToParent(parent) {\\r\\n const parentBoundingBox = parent.getBoundingClientRect();\\r\\n const placeRight = innerWidth - parentBoundingBox.right;\\r\\n const placeLeft = parentBoundingBox.left;\\r\\n const placeBottom = innerHeight - parentBoundingBox.top;\\r\\n const isRight = this.html.offsetWidth <= placeRight;\\r\\n const isBottom = this.html.offsetHeight <= placeBottom;\\r\\n\\r\\n this.html.style.left = 'auto';\\r\\n this.html.style.right = 'auto';\\r\\n this.html.style.top = 'auto';\\r\\n this.html.style.bottom = 'auto';\\r\\n\\r\\n if (isRight)\\r\\n this.html.style.left = `${parentBoundingBox.right}px`;\\r\\n else\\r\\n this.html.style.right = `${Math.min(innerWidth - parentBoundingBox.left, innerWidth - this.html.offsetWidth)}px`;\\r\\n\\r\\n if (isBottom)\\r\\n this.html.style.top = `${parentBoundingBox.top}px`;\\r\\n else\\r\\n this.html.style.bottom = `${Math.min(innerHeight - parentBoundingBox.bottom, innerHeight - this.html.offsetHeight)}px`;\\r\\n }\\r\\n\\r\\n destroy() {\\r\\n this.html.remove();\\r\\n removeEventListener('mousedown', this.bindedDestroyEvent);\\r\\n removeEventListener('blur', this.bindedDestroyEvent);\\r\\n }\\r\\n\\r\\n static openContextMenu(event, elements) {\\r\\n const menu = new ContextMenu(elements);\\r\\n document.body.appendChild(menu.html);\\r\\n menu.setPositionToPointer(event);\\r\\n event.preventDefault();\\r\\n if (menu.html.firstChild)\\r\\n menu.html.firstChild.focus();\\r\\n\\r\\n return menu;\\r\\n }\\r\\n}\\r\\n\\n\\n//# sourceURL=webpack://@green-code-studio/context-menu/./src/contextMenu.js?\");\n\n/***/ }),\n\n/***/ \"./src/index.js\":\n/*!**********************!*\\\n !*** ./src/index.js ***!\n \\**********************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ ContextMenu: () => (/* reexport safe */ _contextMenu_js__WEBPACK_IMPORTED_MODULE_0__.ContextMenu)\\n/* harmony export */ });\\n/* harmony import */ var _contextMenu_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./contextMenu.js */ \\\"./src/contextMenu.js\\\");\\n\\r\\n\\n\\n//# sourceURL=webpack://@green-code-studio/context-menu/./src/index.js?\");\n\n/***/ })\n\n/******/ });\n/************************************************************************/\n/******/ // The module cache\n/******/ var __webpack_module_cache__ = {};\n/******/ \n/******/ // The require function\n/******/ function __nested_webpack_require_18635__(moduleId) {\n/******/ \t// Check if module is in cache\n/******/ \tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \tif (cachedModule !== undefined) {\n/******/ \t\treturn cachedModule.exports;\n/******/ \t}\n/******/ \t// Create a new module (and put it into the cache)\n/******/ \tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t// no module.id needed\n/******/ \t\t// no module.loaded needed\n/******/ \t\texports: {}\n/******/ \t};\n/******/ \n/******/ \t// Execute the module function\n/******/ \t__webpack_modules__[moduleId](module, module.exports, __nested_webpack_require_18635__);\n/******/ \n/******/ \t// Return the exports of the module\n/******/ \treturn module.exports;\n/******/ }\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__nested_webpack_require_18635__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__nested_webpack_require_18635__.o(definition, key) && !__nested_webpack_require_18635__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__nested_webpack_require_18635__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/make namespace object */\n/******/ (() => {\n/******/ \t// define __esModule on exports\n/******/ \t__nested_webpack_require_18635__.r = (exports) => {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/ })();\n/******/ \n/************************************************************************/\n/******/ \n/******/ // startup\n/******/ // Load entry module and return exports\n/******/ // This entry module can't be inlined because the eval devtool is used.\n/******/ var __nested_webpack_exports__ = __nested_webpack_require_18635__(\"./src/index.js\");\n/******/ var __webpack_exports__ContextMenu = __nested_webpack_exports__.ContextMenu;\n/******/ \n/******/ \n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./node_modules/@green-code-studio/context-menu/dist/index.mjs?");
220
220
 
221
221
  /***/ }),
222
222
 
@@ -236,7 +236,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
236
236
  \****************************/
237
237
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
238
238
 
239
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ConfigPopup: () => (/* binding */ ConfigPopup)\n/* harmony export */ });\n/* harmony import */ var _ConfigPopup_mpts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ConfigPopup.mpts */ \"./src/ConfigPopup.mpts\");\n/* harmony import */ var _i18n_xml__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./i18n.xml */ \"./src/i18n.xml\");\n/* harmony import */ var _tableView_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tableView.js */ \"./src/tableView.js\");\n/* harmony import */ var _listView_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./listView.js */ \"./src/listView.js\");\n/* harmony import */ var _ColumnFilter_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ColumnFilter.js */ \"./src/ColumnFilter.js\");\n\r\n\r\n\r\n\r\n\r\n\r\nclass ConfigPopup extends HTMLElement {\r\n constructor(objectsList) {\r\n super();\r\n this.append((0,_ConfigPopup_mpts__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\r\n t: _i18n_xml__WEBPACK_IMPORTED_MODULE_1__.t,\r\n categories: Object.entries(objectsList.columns.reduce((o, c) => {\r\n o[c.category] = (o[c.category] ?? [])\r\n o[c.category].push(c);\r\n return o;\r\n }, {}))\r\n .map(([category, columns]) => ({name: category == 'undefined' ? '' : category, columns}))\r\n }))\r\n this.querySelector('.mode').onchange = () => {\r\n objectsList.infiniteScrollEnabled = this.querySelector('.mode').value == 'scrollMode'\r\n objectsList.refresh()\r\n }\r\n this.querySelector('.view').onchange = () => {\r\n if (this.querySelector('.view').value == 'tableView')\r\n objectsList.insideViewClass = _tableView_js__WEBPACK_IMPORTED_MODULE_2__.TableView\r\n else\r\n objectsList.insideViewClass = _listView_js__WEBPACK_IMPORTED_MODULE_3__.ListView\r\n objectsList.refresh()\r\n }\r\n // this.addEventListener('blur', () => {\r\n // console.log('blur')\r\n // if (!this.matches(':focus-within, :focus'))\r\n // this.remove();\r\n // })\r\n this.querySelector('select').focus()\r\n console.log('ssss')\r\n for (const checkbox of this.querySelectorAll('table input[type=\"checkbox\"]')) {\r\n checkbox.checked = !objectsList.hiddenColumns.has(checkbox.dataset.name)\r\n checkbox.onchange = () => {\r\n if (checkbox.checked)\r\n objectsList.hiddenColumns.delete(checkbox.dataset.name)\r\n else\r\n objectsList.hiddenColumns.add(checkbox.dataset.name)\r\n\r\n objectsList.refresh()\r\n }\r\n }\r\n\r\n for (const filterContainer of this.querySelectorAll('table .filter')) {\r\n const filter = new _ColumnFilter_js__WEBPACK_IMPORTED_MODULE_4__.ColumnFilter();\r\n filterContainer.append(filter)\r\n filter.addEventListener('x-filter', (e) => {\r\n console.log('dddd', e)\r\n objectsList.columnFilters.set(filterContainer.dataset.name, e.detail)\r\n objectsList.refresh()\r\n });\r\n const current = objectsList.columnFilters.get(filterContainer.dataset.name)\r\n if (current) {\r\n console.log('ffff')\r\n filter.set(current)\r\n }\r\n }\r\n\r\n this.querySelector('[type=\"search\"]').oninput = (event) => {\r\n objectsList.configPopupSearch = event.target.value\r\n this.refreshSearch(event.target.value)\r\n }\r\n if (objectsList.configPopupSearch) {\r\n this.querySelector('[type=\"search\"]').value = objectsList.configPopupSearch\r\n this.refreshSearch(objectsList.configPopupSearch)\r\n }\r\n this.tabIndex = 0\r\n setTimeout(() => this.focus(), 1)\r\n setTimeout(() => this.checkFocus(), 100)\r\n }\r\n\r\n refreshSearch(value) {\r\n for (const table of this.querySelectorAll('.categoryTableContainer')) {\r\n let anyVisible = false;\r\n for (const row of table.querySelectorAll('tbody tr')) {\r\n const visible = row.children[1].textContent.toLowerCase().includes(value.toLowerCase())\r\n row.style.display = visible ? '' : 'none'\r\n if (visible)\r\n anyVisible = true;\r\n }\r\n table.style.display = anyVisible ? '' : 'none'\r\n }\r\n }\r\n\r\n checkFocus() {\r\n console.log('checkFocus')\r\n if (!this.matches(':focus-within, :focus'))\r\n this.remove();\r\n\r\n if (this.parentNode)\r\n setTimeout(() => this.checkFocus(), 100)\r\n }\r\n}\r\n\r\ncustomElements.define('config-popup', ConfigPopup);\r\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/ConfigPopup.js?");
239
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ConfigPopup: () => (/* binding */ ConfigPopup)\n/* harmony export */ });\n/* harmony import */ var _ConfigPopup_mpts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ConfigPopup.mpts */ \"./src/ConfigPopup.mpts\");\n/* harmony import */ var _i18n_xml__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./i18n.xml */ \"./src/i18n.xml\");\n/* harmony import */ var _tableView_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tableView.js */ \"./src/tableView.js\");\n/* harmony import */ var _listView_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./listView.js */ \"./src/listView.js\");\n/* harmony import */ var _ColumnFilter_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ColumnFilter.js */ \"./src/ColumnFilter.js\");\n\r\n\r\n\r\n\r\n\r\n\r\nclass ConfigPopup extends HTMLElement {\r\n constructor(objectsList) {\r\n super();\r\n this.append((0,_ConfigPopup_mpts__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\r\n t: _i18n_xml__WEBPACK_IMPORTED_MODULE_1__.t,\r\n categories: Object.entries(objectsList.columns.reduce((o, c) => {\r\n o[c.category] = (o[c.category] ?? [])\r\n o[c.category].push(c);\r\n return o;\r\n }, {}))\r\n .map(([category, columns]) => ({name: category == 'undefined' ? '' : category, columns}))\r\n }))\r\n this.querySelector('.mode').onchange = () => {\r\n objectsList.infiniteScrollEnabled = this.querySelector('.mode').value == 'scrollMode'\r\n objectsList.refresh()\r\n }\r\n if(objectsList.infiniteScrollEnabled){\r\n this.querySelector('.mode').value = 'scrollMode'\r\n }\r\n if (objectsList.insideViewClass == _tableView_js__WEBPACK_IMPORTED_MODULE_2__.TableView) {\r\n if (objectsList.insideViewParams?.wide)\r\n this.querySelector('.view').value = 'tableWideView'\r\n else\r\n this.querySelector('.view').value = 'tableView'\r\n } else if (objectsList.insideViewClass == _listView_js__WEBPACK_IMPORTED_MODULE_3__.ListView) {\r\n this.querySelector('.view').value = 'listView'\r\n }\r\n\r\n this.querySelector('.view').onchange = () => {\r\n if (this.querySelector('.view').value == 'tableView') {\r\n objectsList.insideViewClass = _tableView_js__WEBPACK_IMPORTED_MODULE_2__.TableView\r\n objectsList.insideViewParams = {wide: false}\r\n } else if (this.querySelector('.view').value == 'tableWideView') {\r\n objectsList.insideViewClass = _tableView_js__WEBPACK_IMPORTED_MODULE_2__.TableView\r\n objectsList.insideViewParams = {wide: true}\r\n } else {\r\n objectsList.insideViewClass = _listView_js__WEBPACK_IMPORTED_MODULE_3__.ListView\r\n objectsList.insideViewParams = {}\r\n }\r\n objectsList.refresh()\r\n }\r\n // this.addEventListener('blur', () => {\r\n // console.log('blur')\r\n // if (!this.matches(':focus-within, :focus'))\r\n // this.remove();\r\n // })\r\n this.querySelector('select').focus()\r\n console.log('ssss')\r\n for (const checkbox of this.querySelectorAll('table input[type=\"checkbox\"]')) {\r\n checkbox.checked = !objectsList.hiddenColumns.has(checkbox.dataset.name)\r\n checkbox.onchange = () => {\r\n if (checkbox.checked)\r\n objectsList.hiddenColumns.delete(checkbox.dataset.name)\r\n else\r\n objectsList.hiddenColumns.add(checkbox.dataset.name)\r\n\r\n objectsList.refresh()\r\n }\r\n }\r\n\r\n for (const filterContainer of this.querySelectorAll('table .filter')) {\r\n const filter = new _ColumnFilter_js__WEBPACK_IMPORTED_MODULE_4__.ColumnFilter();\r\n filterContainer.append(filter)\r\n filter.addEventListener('x-filter', (e) => {\r\n console.log('dddd', e)\r\n objectsList.columnFilters.set(filterContainer.dataset.name, e.detail)\r\n objectsList.refresh()\r\n });\r\n const current = objectsList.columnFilters.get(filterContainer.dataset.name)\r\n if (current) {\r\n console.log('ffff')\r\n filter.set(current)\r\n }\r\n }\r\n\r\n this.querySelector('[type=\"search\"]').oninput = (event) => {\r\n objectsList.configPopupSearch = event.target.value\r\n this.refreshSearch(event.target.value)\r\n }\r\n if (objectsList.configPopupSearch) {\r\n this.querySelector('[type=\"search\"]').value = objectsList.configPopupSearch\r\n this.refreshSearch(objectsList.configPopupSearch)\r\n }\r\n this.tabIndex = 0\r\n setTimeout(() => this.focus(), 1)\r\n setTimeout(() => this.checkFocus(), 100)\r\n }\r\n\r\n refreshSearch(value) {\r\n for (const table of this.querySelectorAll('.categoryTableContainer')) {\r\n let anyVisible = false;\r\n for (const row of table.querySelectorAll('tbody tr')) {\r\n const visible = row.children[1].textContent.toLowerCase().includes(value.toLowerCase())\r\n row.style.display = visible ? '' : 'none'\r\n if (visible)\r\n anyVisible = true;\r\n }\r\n table.style.display = anyVisible ? '' : 'none'\r\n }\r\n }\r\n\r\n checkFocus() {\r\n console.log('checkFocus')\r\n if (!this.matches(':focus-within, :focus'))\r\n this.remove();\r\n\r\n if (this.parentNode)\r\n setTimeout(() => this.checkFocus(), 100)\r\n }\r\n}\r\n\r\ncustomElements.define('config-popup', ConfigPopup);\r\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/ConfigPopup.js?");
240
240
 
241
241
  /***/ }),
242
242
 
@@ -286,7 +286,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
286
286
  \****************************/
287
287
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
288
288
 
289
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ObjectsList: () => (/* binding */ ObjectsList)\n/* harmony export */ });\n/* harmony import */ var _tableView_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tableView.js */ \"./src/tableView.js\");\n/* harmony import */ var _listView_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./listView.js */ \"./src/listView.js\");\n/* harmony import */ var _i18n_xml__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./i18n.xml */ \"./src/i18n.xml\");\n/* harmony import */ var _paginationButtons_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./paginationButtons.js */ \"./src/paginationButtons.js\");\n/* harmony import */ var _green_code_studio_context_menu_dist_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @green-code-studio/context-menu/dist/index.mjs */ \"./node_modules/@green-code-studio/context-menu/dist/index.mjs\");\n/* harmony import */ var _utils_concurencyLimiter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/concurencyLimiter.js */ \"./src/utils/concurencyLimiter.js\");\n/* harmony import */ var _idsSet_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./idsSet.js */ \"./src/idsSet.js\");\n/* harmony import */ var _ConfigPopup_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ConfigPopup.js */ \"./src/ConfigPopup.js\");\n/* harmony import */ var fast_creator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! fast-creator */ \"./node_modules/fast-creator/dist/entry.js\");\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nclass ObjectsList extends HTMLElement {\r\n constructor(datasource) {\r\n super();\r\n this.columns = [];\r\n this.hiddenColumns = new Set()\r\n this.columnFilters = new Map();\r\n this.generateActions = () => [];\r\n this.insideViewClass = _tableView_js__WEBPACK_IMPORTED_MODULE_0__.TableView;\r\n this.icon = 'icon-document';\r\n this.loadConcurencyLimiter = new _utils_concurencyLimiter_js__WEBPACK_IMPORTED_MODULE_5__.ConcurencyLimiter();\r\n this.datasource = datasource;\r\n this.datasource.onchange = () => this.refresh();\r\n this.start = 0;\r\n this.limit = 10\r\n this.total = 0;\r\n this.selected = new _idsSet_js__WEBPACK_IMPORTED_MODULE_6__.IdsSet();\r\n this.selectedMain = null;\r\n this.dataById = new Map();\r\n this.initFoot();\r\n this.addEventListener('contextmenu', e => this.showGlobalContextMenu(e));\r\n addEventListener('resize', e => this.resize());\r\n this.addEventListener('keydown', e => this.onkeydown(e));\r\n this.infiniteScrollEnabled = false;\r\n }\r\n\r\n get visibleColumns() {\r\n return this.columns.filter(x => !this.hiddenColumns.has(x.dataName))\r\n }\r\n\r\n refreshLimit() {\r\n this.limit = this.insideView.calcMaxVisibleItems(this.clientHeight - this.foot.clientHeight - 2);\r\n if (this.limit < 1) this.limit = 1;\r\n if (this.infiniteScrollEnabled) {\r\n this.limit = Math.ceil(this.limit / 20) * 20 + 40;\r\n } else {\r\n this.start = Math.floor(Math.min(this.total, this.start) / this.limit) * this.limit;\r\n }\r\n }\r\n\r\n async refresh() {\r\n this.classList.toggle('infiniteScrollEnabled', this.infiniteScrollEnabled);\r\n\r\n if (!this.insideView || !(this.insideView instanceof this.insideViewClass))\r\n this.initInsideView();\r\n else if (this.insideView.refreshHeader)\r\n this.insideView.refreshHeader()\r\n\r\n this.refreshLimit();\r\n const refreshSymbol = Symbol();\r\n this.lastRefreshSymbol = refreshSymbol;\r\n await this.loadConcurencyLimiter.run(async () => {\r\n if (this.lastRefreshSymbol != refreshSymbol) return;\r\n\r\n let data = await this.datasource.get(this);\r\n if (this.lastRefreshSymbol != refreshSymbol) return;\r\n\r\n this.currentRows = data.rows;\r\n this.fillDataById(data.rows);\r\n this.total = data.total;\r\n this.insideView.loadData(data, this.start, this.limit, this.infiniteScrollEnabled);\r\n this.pagination.currentPage = Math.floor(this.start / this.limit);\r\n this.pagination.totalPages = Math.ceil(this.total / this.limit);\r\n this.pagination.render();\r\n });\r\n while (this.filterShortContainer.firstChild) {\r\n this.filterShortContainer.firstChild.remove()\r\n }\r\n if (this.columnFilters.size) {\r\n this.filterShortContainer.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)('span', {text: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.filtersCount') + ': ' + this.columnFilters.size}));\r\n const clearButton = (0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)('button', {text: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.clearFilters')});\r\n clearButton.onclick = () => {\r\n this.columnFilters.clear();\r\n this.refresh();\r\n }\r\n this.filterShortContainer.append(clearButton);\r\n }\r\n if (this.paramsInUrl) {\r\n this.setUrl();\r\n }\r\n }\r\n\r\n setUrl() {\r\n const query = new URLSearchParams(document.location.search)\r\n console.log('dddddcccc')\r\n console.log(query)\r\n let changed = false;\r\n var visibleColumns = this.visibleColumns.map(x => x.dataName).join();\r\n if (query.get('visibleColumns') || this.hiddenColumns.size) {\r\n if (query.get('visibleColumns') != visibleColumns) {\r\n query.set('visibleColumns', visibleColumns);\r\n changed = true;\r\n }\r\n }\r\n if (query.get('sort') || this.sort?.col) {\r\n if (query.get('sort') != this.sort?.col) {\r\n query.set('sort', this.sort?.col);\r\n changed = true;\r\n }\r\n }\r\n if (query.get('sortDesc') == 'true' || this.sort?.desc) {\r\n if ((query.get('sortDesc') == 'true') != this.sort?.desc) {\r\n query.set('sortDesc', this.sort?.desc ? 'true' : 'false');\r\n changed = true;\r\n }\r\n }\r\n if (query.get('columnFilters') || this.columnFilters) {\r\n if (query.get('columnFilters') != JSON.stringify(Array.from(this.columnFilters.entries()))) {\r\n query.set('columnFilters', JSON.stringify(Array.from(this.columnFilters.entries())));\r\n changed = true;\r\n }\r\n }\r\n if (changed) {\r\n const url = new URL(document.location);\r\n url.search = new URLSearchParams(query).toString();\r\n history.pushState(null, '', url.toString());\r\n }\r\n }\r\n\r\n readUrl() {\r\n\r\n const query = new URLSearchParams(document.location.search)\r\n if (query.get('visibleColumns')) {\r\n this.hiddenColumns = new Set(this.columns.map(x => x.dataName));\r\n for (const name of query.get('visibleColumns').split(',')) {\r\n this.hiddenColumns.delete(name);\r\n }\r\n }\r\n if (query.get('sort')) {\r\n this.sort = query.get('sort');\r\n }\r\n if (query.get('columnFilters')) {\r\n this.columnFilters = new Map(JSON.parse(query.get('columnFilters')));\r\n }\r\n }\r\n\r\n initInsideView() {\r\n if (this.insideView) {\r\n this.insideView.remove();\r\n }\r\n this.insideView = new this.insideViewClass(this);\r\n this.insertBefore(this.insideView, this.foot);\r\n this.insideView.refresh = () => this.refresh();\r\n this.insideView.onPaginationChanged = (start, limit) => {\r\n if (this.start != start) {\r\n this.start = start;\r\n //this.limit=limit;\r\n this.refresh();\r\n }\r\n }\r\n }\r\n\r\n fillDataById(rows) {\r\n for (let row of rows) {\r\n this.dataById.set(parseInt(row.id), row);\r\n }\r\n }\r\n\r\n getSelectedData() {\r\n let data = Array.from(this.dataById).filter(([id, row]) => this.selected.has(id)).map(([id, row]) => row);\r\n if (data.length > 0) return data;\r\n else if (this.dataById[this.selectedMain])\r\n return [this.dataById[this.selectedMain]]\r\n else return [];\r\n }\r\n\r\n initFoot() {\r\n this.foot = (0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)('.foot');\r\n this.append(this.foot);\r\n let menuButton = (0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)('button.menuButton span.icon-settings');\r\n this.foot.append(menuButton)\r\n menuButton.onclick = e => this.showConfigPopup();\r\n this.pagination = new _paginationButtons_js__WEBPACK_IMPORTED_MODULE_3__.PaginationButtons();\r\n this.pagination.onpageclick = (page) => {\r\n this.start = page * this.limit;\r\n this.refresh();\r\n }\r\n this.foot.append(this.pagination);\r\n this.filterShortContainer = (0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)('.filterShortContainer');\r\n this.foot.append(this.filterShortContainer);\r\n this.searchForm = (0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)('form', {className: 'search'});\r\n this.foot.append(this.searchForm);\r\n this.searchForm.onsubmit = e => e.preventDefault();\r\n const searchInput = (0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)('input', {\r\n name: 'search',\r\n type: 'search',\r\n placeholder: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.search')\r\n });\r\n this.searchForm.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)(searchInput));\r\n searchInput.oninput = e => {\r\n this.start = 0;\r\n this.refresh();\r\n }\r\n\r\n }\r\n\r\n get search() {\r\n if (!this.foot) return '';\r\n const searchForm = this.foot.querySelector('.search');\r\n if (!searchForm) return '';\r\n return searchForm.search.value;\r\n }\r\n\r\n showGlobalContextMenu(e) {\r\n let elements = [{\r\n text: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.paginationMode'),\r\n icon: 'icon-pagination',\r\n onclick: () => {\r\n this.infiniteScrollEnabled = false;\r\n this.refresh();\r\n }\r\n }, {\r\n text: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.scrollMode'),\r\n icon: 'icon-scroll',\r\n onclick: () => {\r\n this.infiniteScrollEnabled = true;\r\n this.refresh();\r\n }\r\n }, {\r\n text: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.tableView'),\r\n icon: 'icon-table',\r\n onclick: () => {\r\n this.insideViewClass = _tableView_js__WEBPACK_IMPORTED_MODULE_0__.TableView;\r\n this.refresh();\r\n }\r\n }, {\r\n text: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.listView'),\r\n icon: 'icon-table',\r\n onclick: () => {\r\n this.insideViewClass = _listView_js__WEBPACK_IMPORTED_MODULE_1__.ListView;\r\n this.refresh();\r\n }\r\n }];\r\n if (this.allowTableEdit) {\r\n elements.push({\r\n text: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.startMultiEdit'),\r\n icon: 'icon-edit',\r\n onclick: () => {\r\n this.insideViewClass = _tableView_js__WEBPACK_IMPORTED_MODULE_0__.TableView;\r\n this.refresh();\r\n this.insideView.startMultiEdit();\r\n }\r\n });\r\n }\r\n _green_code_studio_context_menu_dist_index_mjs__WEBPACK_IMPORTED_MODULE_4__.ContextMenu.openContextMenu(e, elements);\r\n }\r\n\r\n resize() {\r\n let limit = this.limit;\r\n this.refreshLimit();\r\n if (limit != this.limit) {\r\n this.refresh();\r\n }\r\n }\r\n\r\n multiEditChanged(id, data, save = false) {\r\n this.datasource.multiEditChanged(id, data, save);\r\n }\r\n\r\n showConfigPopup() {\r\n if (this.querySelector('config-popup')) {\r\n this.querySelector('config-popup').remove()\r\n } else {\r\n const popup = new _ConfigPopup_js__WEBPACK_IMPORTED_MODULE_7__.ConfigPopup(this)\r\n this.append(popup)\r\n }\r\n }\r\n\r\n gotoUrl(url) {\r\n window.location.href = url;\r\n }\r\n\r\n onkeydown(e) {\r\n if (e.ctrlKey) {\r\n if (e.key == 'ArrowLeft' || e.key == 'ArrowRight') {\r\n let page = Math.floor(this.start / this.limit);\r\n page += (e.key == 'ArrowLeft' ? -1 : 1);\r\n if (page < 0) page = 0;\r\n else if (page>0 && page > Math.ceil(this.total / this.limit)-1) page = Math.ceil(this.total / this.limit)-1;\r\n this.start = page * this.limit;\r\n this.refresh();\r\n }\r\n }\r\n }\r\n}\r\n\r\ncustomElements.define('data-view', ObjectsList);\r\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/objectsList.js?");
289
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ObjectsList: () => (/* binding */ ObjectsList)\n/* harmony export */ });\n/* harmony import */ var _tableView_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tableView.js */ \"./src/tableView.js\");\n/* harmony import */ var _listView_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./listView.js */ \"./src/listView.js\");\n/* harmony import */ var _i18n_xml__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./i18n.xml */ \"./src/i18n.xml\");\n/* harmony import */ var _paginationButtons_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./paginationButtons.js */ \"./src/paginationButtons.js\");\n/* harmony import */ var _green_code_studio_context_menu_dist_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @green-code-studio/context-menu/dist/index.mjs */ \"./node_modules/@green-code-studio/context-menu/dist/index.mjs\");\n/* harmony import */ var _utils_concurencyLimiter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/concurencyLimiter.js */ \"./src/utils/concurencyLimiter.js\");\n/* harmony import */ var _idsSet_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./idsSet.js */ \"./src/idsSet.js\");\n/* harmony import */ var _ConfigPopup_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ConfigPopup.js */ \"./src/ConfigPopup.js\");\n/* harmony import */ var fast_creator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! fast-creator */ \"./node_modules/fast-creator/dist/entry.js\");\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nclass ObjectsList extends HTMLElement {\r\n constructor(datasource) {\r\n super();\r\n this.columns = [];\r\n this.hiddenColumns = new Set()\r\n this.columnFilters = new Map();\r\n this.generateActions = () => [];\r\n this.insideViewClass = _tableView_js__WEBPACK_IMPORTED_MODULE_0__.TableView;\r\n this.icon = 'icon-document';\r\n this.loadConcurencyLimiter = new _utils_concurencyLimiter_js__WEBPACK_IMPORTED_MODULE_5__.ConcurencyLimiter();\r\n this.datasource = datasource;\r\n this.datasource.onchange = () => this.refresh();\r\n this.start = 0;\r\n this.limit = 10\r\n this.total = 0;\r\n this.selected = new _idsSet_js__WEBPACK_IMPORTED_MODULE_6__.IdsSet();\r\n this.selectedMain = null;\r\n this.dataById = new Map();\r\n this.initFoot();\r\n this.addEventListener('contextmenu', e => this.showGlobalContextMenu(e));\r\n addEventListener('resize', e => this.resize());\r\n this.addEventListener('keydown', e => this.onkeydown(e));\r\n this.infiniteScrollEnabled = false;\r\n }\r\n\r\n get visibleColumns() {\r\n return this.columns.filter(x => !this.hiddenColumns.has(x.dataName))\r\n }\r\n\r\n refreshLimit() {\r\n this.limit = this.insideView.calcMaxVisibleItems(this.clientHeight - this.foot.clientHeight - 2);\r\n if (this.limit < 1) this.limit = 1;\r\n if (this.infiniteScrollEnabled) {\r\n this.limit = Math.ceil(this.limit / 20) * 20 + 40;\r\n } else {\r\n this.start = Math.floor(Math.min(this.total, this.start) / this.limit) * this.limit;\r\n }\r\n }\r\n\r\n async refresh() {\r\n this.classList.toggle('infiniteScrollEnabled', this.infiniteScrollEnabled);\r\n\r\n if (!this.insideView || !(this.insideView instanceof this.insideViewClass))\r\n this.initInsideView();\r\n else if (this.insideView.refreshHeader) {\r\n this.insideView.params=this.insideViewParams\r\n this.insideView.refreshHeader()\r\n }\r\n\r\n this.refreshLimit();\r\n const refreshSymbol = Symbol();\r\n this.lastRefreshSymbol = refreshSymbol;\r\n await this.loadConcurencyLimiter.run(async () => {\r\n if (this.lastRefreshSymbol != refreshSymbol) return;\r\n\r\n let data = await this.datasource.get(this);\r\n if (this.lastRefreshSymbol != refreshSymbol) return;\r\n\r\n this.currentRows = data.rows;\r\n this.fillDataById(data.rows);\r\n this.total = data.total;\r\n this.insideView.loadData(data, this.start, this.limit, this.infiniteScrollEnabled);\r\n this.pagination.currentPage = Math.floor(this.start / this.limit);\r\n this.pagination.totalPages = Math.ceil(this.total / this.limit);\r\n this.pagination.render();\r\n });\r\n while (this.filterShortContainer.firstChild) {\r\n this.filterShortContainer.firstChild.remove()\r\n }\r\n if (this.columnFilters.size) {\r\n this.filterShortContainer.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)('span', {text: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.filtersCount') + ': ' + this.columnFilters.size}));\r\n const clearButton = (0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)('button', {text: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.clearFilters')});\r\n clearButton.onclick = () => {\r\n this.columnFilters.clear();\r\n this.refresh();\r\n }\r\n this.filterShortContainer.append(clearButton);\r\n }\r\n if (this.paramsInUrl) {\r\n this.setUrl();\r\n }\r\n }\r\n\r\n setUrl() {\r\n const query = new URLSearchParams(document.location.search)\r\n console.log('dddddcccc')\r\n console.log(query)\r\n let changed = false;\r\n var visibleColumns = this.visibleColumns.map(x => x.dataName).join();\r\n if (query.get('visibleColumns') || this.hiddenColumns.size) {\r\n if (query.get('visibleColumns') != visibleColumns) {\r\n query.set('visibleColumns', visibleColumns);\r\n changed = true;\r\n }\r\n }\r\n if (query.get('sort') || this.sort?.col) {\r\n if (query.get('sort') != this.sort?.col) {\r\n query.set('sort', this.sort?.col);\r\n changed = true;\r\n }\r\n }\r\n if (query.get('sortDesc') == 'true' || this.sort?.desc) {\r\n if ((query.get('sortDesc') == 'true') != this.sort?.desc) {\r\n query.set('sortDesc', this.sort?.desc ? 'true' : 'false');\r\n changed = true;\r\n }\r\n }\r\n if (query.get('columnFilters') || this.columnFilters) {\r\n if (query.get('columnFilters') != JSON.stringify(Array.from(this.columnFilters.entries()))) {\r\n query.set('columnFilters', JSON.stringify(Array.from(this.columnFilters.entries())));\r\n changed = true;\r\n }\r\n }\r\n if (changed) {\r\n const url = new URL(document.location);\r\n url.search = new URLSearchParams(query).toString();\r\n history.pushState(null, '', url.toString());\r\n }\r\n }\r\n\r\n readUrl() {\r\n\r\n const query = new URLSearchParams(document.location.search)\r\n if (query.get('visibleColumns')) {\r\n this.hiddenColumns = new Set(this.columns.map(x => x.dataName));\r\n for (const name of query.get('visibleColumns').split(',')) {\r\n this.hiddenColumns.delete(name);\r\n }\r\n }\r\n if (query.get('sort')) {\r\n this.sort = query.get('sort');\r\n }\r\n if (query.get('columnFilters')) {\r\n this.columnFilters = new Map(JSON.parse(query.get('columnFilters')));\r\n }\r\n }\r\n\r\n initInsideView() {\r\n if (this.insideView) {\r\n this.insideView.remove();\r\n }\r\n this.insideView = new this.insideViewClass(this, this.insideViewParams);\r\n this.insertBefore(this.insideView, this.foot);\r\n this.insideView.refresh = () => this.refresh();\r\n this.insideView.onPaginationChanged = (start, limit) => {\r\n if (this.start != start) {\r\n this.start = start;\r\n //this.limit=limit;\r\n this.refresh();\r\n }\r\n }\r\n }\r\n\r\n fillDataById(rows) {\r\n for (let row of rows) {\r\n this.dataById.set(parseInt(row.id), row);\r\n }\r\n }\r\n\r\n getSelectedData() {\r\n let data = Array.from(this.dataById).filter(([id, row]) => this.selected.has(id)).map(([id, row]) => row);\r\n if (data.length > 0) return data;\r\n else if (this.dataById[this.selectedMain])\r\n return [this.dataById[this.selectedMain]]\r\n else return [];\r\n }\r\n\r\n initFoot() {\r\n this.foot = (0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)('.foot');\r\n this.append(this.foot);\r\n let menuButton = (0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)('button.menuButton span.icon-settings');\r\n this.foot.append(menuButton)\r\n menuButton.onclick = e => this.showConfigPopup();\r\n this.pagination = new _paginationButtons_js__WEBPACK_IMPORTED_MODULE_3__.PaginationButtons();\r\n this.pagination.onpageclick = (page) => {\r\n this.start = page * this.limit;\r\n this.refresh();\r\n }\r\n this.foot.append(this.pagination);\r\n this.filterShortContainer = (0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)('.filterShortContainer');\r\n this.foot.append(this.filterShortContainer);\r\n this.searchForm = (0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)('form', {className: 'search'});\r\n this.foot.append(this.searchForm);\r\n this.searchForm.onsubmit = e => e.preventDefault();\r\n const searchInput = (0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)('input', {\r\n name: 'search',\r\n type: 'search',\r\n placeholder: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.search')\r\n });\r\n this.searchForm.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_8__.create)(searchInput));\r\n searchInput.oninput = e => {\r\n this.start = 0;\r\n this.refresh();\r\n }\r\n\r\n }\r\n\r\n get search() {\r\n if (!this.foot) return '';\r\n const searchForm = this.foot.querySelector('.search');\r\n if (!searchForm) return '';\r\n return searchForm.search.value;\r\n }\r\n\r\n showGlobalContextMenu(e) {\r\n let elements = [{\r\n text: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.paginationMode'),\r\n icon: 'icon-pagination',\r\n onclick: () => {\r\n this.infiniteScrollEnabled = false;\r\n this.refresh();\r\n }\r\n }, {\r\n text: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.scrollMode'),\r\n icon: 'icon-scroll',\r\n onclick: () => {\r\n this.infiniteScrollEnabled = true;\r\n this.refresh();\r\n }\r\n }, {\r\n text: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.tableView'),\r\n icon: 'icon-table',\r\n onclick: () => {\r\n this.insideViewClass = _tableView_js__WEBPACK_IMPORTED_MODULE_0__.TableView;\r\n this.refresh();\r\n }\r\n }, {\r\n text: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.listView'),\r\n icon: 'icon-table',\r\n onclick: () => {\r\n this.insideViewClass = _listView_js__WEBPACK_IMPORTED_MODULE_1__.ListView;\r\n this.refresh();\r\n }\r\n }];\r\n if (this.allowTableEdit) {\r\n elements.push({\r\n text: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)('objectList.startMultiEdit'),\r\n icon: 'icon-edit',\r\n onclick: () => {\r\n this.insideViewClass = _tableView_js__WEBPACK_IMPORTED_MODULE_0__.TableView;\r\n this.refresh();\r\n this.insideView.startMultiEdit();\r\n }\r\n });\r\n }\r\n _green_code_studio_context_menu_dist_index_mjs__WEBPACK_IMPORTED_MODULE_4__.ContextMenu.openContextMenu(e, elements);\r\n }\r\n\r\n resize() {\r\n let limit = this.limit;\r\n this.refreshLimit();\r\n if (limit != this.limit) {\r\n this.refresh();\r\n }\r\n }\r\n\r\n multiEditChanged(id, data, save = false) {\r\n this.datasource.multiEditChanged(id, data, save);\r\n }\r\n\r\n showConfigPopup() {\r\n if (this.querySelector('config-popup')) {\r\n this.querySelector('config-popup').remove()\r\n } else {\r\n const popup = new _ConfigPopup_js__WEBPACK_IMPORTED_MODULE_7__.ConfigPopup(this)\r\n this.append(popup)\r\n }\r\n }\r\n\r\n gotoUrl(url) {\r\n window.location.href = url;\r\n }\r\n\r\n onkeydown(e) {\r\n if (e.ctrlKey) {\r\n if (e.key == 'ArrowLeft' || e.key == 'ArrowRight') {\r\n let page = Math.floor(this.start / this.limit);\r\n page += (e.key == 'ArrowLeft' ? -1 : 1);\r\n if (page < 0) page = 0;\r\n else if (page>0 && page > Math.ceil(this.total / this.limit)-1) page = Math.ceil(this.total / this.limit)-1;\r\n this.start = page * this.limit;\r\n this.refresh();\r\n }\r\n }\r\n }\r\n}\r\n\r\ncustomElements.define('data-view', ObjectsList);\r\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/objectsList.js?");
290
290
 
291
291
  /***/ }),
292
292
 
@@ -306,7 +306,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
306
306
  \**************************/
307
307
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
308
308
 
309
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TableView: () => (/* binding */ TableView)\n/* harmony export */ });\n/* harmony import */ var _green_code_studio_context_menu_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @green-code-studio/context-menu/dist/index.mjs */ \"./node_modules/@green-code-studio/context-menu/dist/index.mjs\");\n/* harmony import */ var fast_creator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fast-creator */ \"./node_modules/fast-creator/dist/entry.js\");\n/* harmony import */ var _abstractView_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstractView.js */ \"./src/abstractView.js\");\n/* harmony import */ var _i18n_xml__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./i18n.xml */ \"./src/i18n.xml\");\n\r\n\r\n\r\n\r\n\r\nclass TableView extends _abstractView_js__WEBPACK_IMPORTED_MODULE_2__.AbstractView {\r\n constructor(objectsList) {\r\n super();\r\n this.objectsList = objectsList;\r\n this.init();\r\n window.dbgTable = this;\r\n }\r\n\r\n init() {\r\n this.head = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.head');\r\n this.append(this.head);\r\n this.refreshHeader();\r\n const bodyContainer = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.bodyContainer')\r\n this.body = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.body')\r\n bodyContainer.append(this.body)\r\n this.append(bodyContainer);\r\n this.setColumnsWidths();\r\n addEventListener('resize', this.setColumnsWidths.bind(this))\r\n addEventListener('copy', this.onCopy.bind(this));\r\n this.addEventListener('scroll', this.onScroll.bind(this));\r\n }\r\n\r\n refreshHeader() {\r\n while (this.head.firstChild) this.head.firstChild.remove();\r\n\r\n this.head.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.column.icon'))\r\n for (let column of this.objectsList.visibleColumns) {\r\n let node = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.column')\r\n this.head.append(node);\r\n node.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('span.name', {text: column.name}));\r\n if (column.sortName) {\r\n node.classList.add('ableToSort');\r\n node.dataset.sortName = column.sortName\r\n node.onclick = () => {\r\n let sortName = column.sortName || x.dataset.value;\r\n if (this.objectsList.sort && this.objectsList.sort.col === column.sortName) {\r\n this.objectsList.sort.desc = !this.objectsList.sort.desc;\r\n } else {\r\n this.objectsList.sort = {col: column.sortName, desc: false};\r\n }\r\n if (!this.objectsList.infiniteScrollEnabled) {\r\n this.objectsList.start = 0;\r\n }\r\n this.objectsList.refresh();\r\n }\r\n }\r\n }\r\n this.head.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.column.actions'))\r\n }\r\n\r\n loadData(data, start, limit, infiniteScrollEnabled) {\r\n this.refreshSortIndicators();\r\n super.loadData(data, start, limit, infiniteScrollEnabled)\r\n this.setColumnsWidths();\r\n }\r\n\r\n get rowHeight() {\r\n return parseFloat(window.getComputedStyle(this).getPropertyValue('--rowHeight') ?? 31);\r\n }\r\n\r\n generateRow(data) {\r\n let tr = this.body.querySelector(`.tr[data-row=\"${data.id}\"]`);\r\n if (!tr) {\r\n tr = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.tr');\r\n tr.draggable = true;\r\n }\r\n tr.classList.toggle('selected', this.objectsList.selected.has(data.id))\r\n this.fillRowContent(tr, data);\r\n return tr;\r\n }\r\n\r\n fillRowContent(tr, data) {\r\n tr.lastData = data;\r\n while(tr.firstChild){\r\n tr.removeChild(tr.firstChild)\r\n }\r\n tr.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.td.icon', {className: this.objectsList.icon}));\r\n for (let column of this.objectsList.visibleColumns) {\r\n let td = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.td');\r\n tr.append(td);\r\n if (this.multiEdit && column.dataName) {\r\n tr.dataset.id = data.id;\r\n td.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('input', {\r\n data: {name: column.dataName},\r\n value: data[column.dataName],\r\n onclick: e => e.stopPropagation(),\r\n onchange: () => this.multiEditChanged(tr)\r\n }));\r\n } else {\r\n td.append(column.content?.call(column, data) || data[column.dataName] || '');\r\n }\r\n }\r\n let actionsTd = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.td.actions');\r\n tr.append(actionsTd);\r\n let actions = this.objectsList.generateActions([data], 'row');\r\n if (this.multiEdit && data.__isMultirowEdited) {\r\n actions = [\r\n {\r\n name: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_3__.t)(\"objectList.saveRow\"),\r\n icon: 'icon-save',\r\n command: () => {\r\n this.multiEditChanged(tr, true)\r\n }\r\n }\r\n ]\r\n }\r\n for (let action of actions) {\r\n let actionButton = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)(action.href ? 'a.button' : 'button', {\r\n title: action.name\r\n });\r\n actionsTd.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)(actionButton));\r\n actionButton.classList.add('action-' + (action.action ?? 'view'));\r\n\r\n if (action.href) {\r\n actionButton.href = action.href;\r\n }\r\n if (action.command) {\r\n actionButton.onclick = action.command;\r\n }\r\n if (action.icon) {\r\n actionButton.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('span', {classList: [action.icon]}));\r\n } else {\r\n actionButton.textContent = action.name;\r\n }\r\n }\r\n\r\n\r\n tr.dataset.row = data.id;\r\n tr.oncontextmenu = this.contextMenu.bind(this, tr);\r\n tr.onclick = this.trOnClick.bind(this, data);\r\n tr.ondblclick = this.trOnDblClick.bind(this, data, tr);\r\n tr.onkeydown = this.trOnKeyDown.bind(this, data, tr);\r\n tr.ondragstart = this.trOnDragStart.bind(this, data, tr);\r\n }\r\n\r\n setColumnsWidths() {\r\n const widths = this.calculateColumnsWidths();\r\n for (let tr of this.body.children) {\r\n for (let i = 0; i < widths.length; i++) {\r\n tr.children[i].style.width = widths[i] + 'px';\r\n }\r\n }\r\n let sum = 0;\r\n for (let i = 0; i < widths.length; i++) {\r\n let node = this.head.children[i];\r\n if (node) {\r\n if (i + 1 < widths.length)\r\n node.style.width = widths[i] + 1 + 'px';\r\n else\r\n node.style.width = widths[i] + 'px';\r\n node.style.left = sum + 'px';\r\n }\r\n sum += widths[i];\r\n }\r\n }\r\n\r\n calculateColumnsWidths() {\r\n let needed = [{base: 30, grow: 0}];\r\n\r\n for (let column of this.objectsList.visibleColumns) {\r\n needed.push({base: column.width || 10, grow: typeof (column.widthGrow) == \"number\" ? column.widthGrow : 1});\r\n }\r\n let actionWidth = Math.ceil(Array.from(this.querySelectorAll('.td.actions')).map(x => {\r\n if (x.lastElementChild)\r\n return x.lastElementChild.getBoundingClientRect().right - x.getBoundingClientRect().left + parseFloat(getComputedStyle(x).paddingRight);\r\n else\r\n return 0;\r\n }).reduce((a, b) => Math.max(a, b), 0));\r\n needed.push({base: actionWidth, grow: 0});\r\n let availableToGrow = this.clientWidth - needed.map(x => x.base).reduce((a, b) => a + b, 0);\r\n let sumGrow = needed.map(x => x.grow).reduce((a, b) => a + b, 0);\r\n if (availableToGrow > 0 && sumGrow > 0) {\r\n return needed.map(x => x.base + x.grow / sumGrow * availableToGrow);\r\n } else {\r\n return needed.map(x => x.base);\r\n }\r\n }\r\n\r\n refreshSortIndicators() {\r\n this.head.querySelectorAll('[data-order]').forEach(x => delete x.dataset.order);\r\n if (this.objectsList.sort)\r\n this.head.querySelectorAll(`[data-sort-name=\"${this.objectsList.sort.col}\"]`).forEach(x => x.dataset.order = this.objectsList.sort.desc ? 'desc' : 'asc');\r\n }\r\n\r\n contextMenu(tr, event) {\r\n event.stopPropagation();\r\n if (!this.objectsList.selected.has(tr.dataset.row)) {\r\n this.objectsList.selected.clear();\r\n this.objectsList.selected.add(tr.dataset.row)\r\n this.objectsList.selectedMain = tr.dataset.row;\r\n this.refreshSelectedClasses();\r\n }\r\n const rows = this.objectsList.getSelectedData();\r\n let actions = this.objectsList.generateActions(rows, 'contextMenu');\r\n let elements = actions.map(action => ({\r\n text: action.name,\r\n icon: action.icon,\r\n class: action.action ? 'action-' + action.action : '',\r\n onclick: action.command || (() => this.objectsList.gotoUrl(action.href))\r\n }));\r\n elements.push({\r\n text: 'copy',\r\n icon: 'icon-copy',\r\n onclick: () => {\r\n this.forceCopy(rows);\r\n }\r\n })\r\n _green_code_studio_context_menu_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.ContextMenu.openContextMenu(event, elements);\r\n }\r\n\r\n refreshSelectedClasses() {\r\n for (const tr of this.body.children) {\r\n tr.classList.toggle('selected', this.objectsList.selected.has(tr.dataset.row));\r\n tr.classList.toggle('selectedMain', this.objectsList.selectedMain == tr.dataset.row);\r\n if (this.objectsList.selectedMain == tr.dataset.row) {\r\n tr.tabIndex = 1;\r\n tr.focus();\r\n getSelection().selectAllChildren(tr)\r\n } else {\r\n tr.tabIndex = -1;\r\n }\r\n }\r\n }\r\n\r\n\r\n trOnClick(row, e) {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n console.log('click')\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.clear();\r\n }\r\n\r\n if (e.shiftKey) {\r\n const mainIndex = rowsIds.indexOf(this.objectsList.selectedMain);\r\n const clickedIndex = rowsIds.indexOf(row.id);\r\n if (clickedIndex >= 0 && mainIndex >= 0)\r\n rowsIds.slice(Math.min(mainIndex, clickedIndex), Math.max(mainIndex, clickedIndex) + 1).forEach(x => this.objectsList.selected.add(x));\r\n } else {\r\n if (this.objectsList.selected.has(row.id))\r\n this.objectsList.selected.delete(row.id);\r\n else\r\n this.objectsList.selected.add(row.id);\r\n\r\n this.objectsList.selectedMain = row.id;\r\n }\r\n\r\n this.refreshSelectedClasses();\r\n }\r\n\r\n trOnDblClick(row, tr, e) {\r\n if (!this.objectsList.selected.has(tr.dataset.row)) {\r\n this.objectsList.selected.clear();\r\n this.objectsList.selected.add(tr.dataset.row)\r\n this.objectsList.selectedMain = tr.dataset.row;\r\n this.refreshSelectedClasses();\r\n }\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'dblClick').find(x => x.main);\r\n if (action) {\r\n if (action.command) {\r\n action.command();\r\n } else if (action.href) {\r\n this.objectsList.gotoUrl(action.href)\r\n }\r\n }\r\n }\r\n\r\n selectRange(start, end) {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n let startIndex = rowsIds.indexOf(start);\r\n let endIndex = rowsIds.indexOf(end);\r\n if (endIndex < startIndex) {\r\n let tmp = startIndex;\r\n startIndex = endIndex;\r\n endIndex = tmp;\r\n }\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n this.objectsList.selected.add(rowsIds[i]);\r\n }\r\n }\r\n\r\n trOnKeyDown(row, tr, e) {\r\n console.log('trOnKeyDown')\r\n if (e.key === 'Enter') {\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'enter').find(x => x.main);\r\n if (action) {\r\n if (action.command) {\r\n action.command();\r\n } else if (action.href) {\r\n this.objectsList.gotoUrl(action.href)\r\n }\r\n }\r\n } else if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n let index = rowsIds.indexOf(this.objectsList.selectedMain);\r\n if (e.key === 'ArrowDown') {\r\n if (index < rowsIds.length) index++;\r\n else index = rowsIds.length - 1;\r\n } else {\r\n if (index > 0) index--;\r\n }\r\n const id = rowsIds[index];\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.clear();\r\n }\r\n if (e.shiftKey) {\r\n if (!this.objectsList.selectedShiftStart) {\r\n this.objectsList.selectedShiftStart = this.objectsList.selectedMain;\r\n }\r\n this.selectRange(this.objectsList.selectedShiftStart, id)\r\n } else {\r\n this.objectsList.selectedShiftStart = null;\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.add(id);\r\n }\r\n }\r\n this.objectsList.selectedMain = id;\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n } else if (e.key === ' ') {\r\n if (this.objectsList.selected.has(this.objectsList.selectedMain))\r\n this.objectsList.selected.delete(this.objectsList.selectedMain);\r\n else\r\n this.objectsList.selected.add(this.objectsList.selectedMain);\r\n\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n } else if (e.key === 'a') {\r\n if (e.ctrlKey)\r\n this.objectsList.selected.selectAll();\r\n\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n onCopy(e) {\r\n if (this.copyForced) {\r\n this.fillDataTransfer(e.clipboardData, this.copyForced);\r\n e.preventDefault();\r\n } else if (document.querySelector(':focus')?.findParent(x => x === this)) {\r\n this.fillDataTransfer(e.clipboardData, this.objectsList.selected);\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n trOnDragStart(row, oryginalTr, e) {\r\n if (!this.objectsList.selected.has(row.id)) {\r\n this.objectsList.selected.clear()\r\n this.objectsList.selected.add(row.id)\r\n this.refreshSelectedClasses();\r\n }\r\n this.fillDataTransfer(e.dataTransfer, this.objectsList.selected);\r\n }\r\n\r\n fillDataTransfer(dataTransfer, ids) {\r\n const trs = Array.from(this.body.children).filter(tr => ids.has(tr.dataset.row));\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'dataTransfer').find(x => x.main);\r\n if (action && action.href) {\r\n dataTransfer.setData('text/uri-list', new URL(action.href, document.baseURI));\r\n }\r\n if (action && action.hrefArray) {\r\n dataTransfer.setData('text/uri-list', action.hrefArray.map(x => new URL(x, document.baseURI)).map(x => x.toString()).join(\"\\r\\n#\\r\\n\"));\r\n }\r\n dataTransfer.setData('text/html', this.generateTableHtml(trs));\r\n dataTransfer.setData('text/plain', this.generateTableTextPlain(trs));\r\n\r\n }\r\n\r\n generateTableHtml(trs) {\r\n const thead = '<thead><tr>' + Array.from(this.head.querySelectorAll('.column')).map(x => '<th>' + x.innerHTML + '</th>').join('') + '</tr></thead>';\r\n const tbody = '<tbody>' + trs.map(tr => {\r\n return '<tr>' + Array.from(tr.children).slice(1, -1).map(td => {\r\n return '<td>' + td.innerHTML + '</td>';\r\n }).join('') + '</tr>';\r\n }).join('') + '</tbody>'\r\n return '<table>' + thead + tbody + '</table>';\r\n }\r\n\r\n generateTableTextPlain(trs) {\r\n const head = Array.from(this.head.querySelectorAll('.column')).map(x => x.textContent.replace(/\\r\\n/gm, ' ')).join(\"\\t\")\r\n const body = trs.map(tr => Array.from(tr.children).slice(1).map(x => x.textContent.replace(/\\r\\n/gm, ' ')).join(\"\\t\")).join(\"\\r\\n\")\r\n return head + \"\\r\\n\" + body;\r\n }\r\n\r\n calcMaxVisibleItems(height) {\r\n return Math.floor((height - this.head.clientHeight) / this.rowHeight);\r\n }\r\n\r\n forceCopy(rows) {\r\n this.copyForced = new Set(rows.map(x => x.id));\r\n document.execCommand(\"copy\");\r\n setTimeout(() => this.copyForced = null, 100);\r\n }\r\n\r\n startMultiEdit() {\r\n this.multiEdit = true;\r\n }\r\n\r\n multiEditChanged(tr, save = false) {\r\n let data = [...tr.querySelectorAll('[data-name]')].map(x => [x.dataset.name, x.value]);\r\n let dataObj = Object.fromEntries(data);\r\n this.objectsList.multiEditChanged(tr.dataset.id, dataObj, save);\r\n this.fillRowContent(tr, {...tr.lastData, ...dataObj, __isMultirowEdited: true});\r\n this.setColumnsWidths();\r\n }\r\n}\r\n\r\ncustomElements.define('table-view', TableView);\r\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/tableView.js?");
309
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TableView: () => (/* binding */ TableView)\n/* harmony export */ });\n/* harmony import */ var _green_code_studio_context_menu_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @green-code-studio/context-menu/dist/index.mjs */ \"./node_modules/@green-code-studio/context-menu/dist/index.mjs\");\n/* harmony import */ var fast_creator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fast-creator */ \"./node_modules/fast-creator/dist/entry.js\");\n/* harmony import */ var _abstractView_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstractView.js */ \"./src/abstractView.js\");\n/* harmony import */ var _i18n_xml__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./i18n.xml */ \"./src/i18n.xml\");\n\r\n\r\n\r\n\r\n\r\nclass TableView extends _abstractView_js__WEBPACK_IMPORTED_MODULE_2__.AbstractView {\r\n constructor(objectsList, params) {\r\n super();\r\n this.objectsList = objectsList;\r\n this.init();\r\n window.dbgTable = this;\r\n this.params=params??{};\r\n }\r\n\r\n init() {\r\n this.head = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.head');\r\n this.append(this.head);\r\n this.refreshHeader();\r\n const bodyContainer = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.bodyContainer')\r\n this.body = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.body')\r\n bodyContainer.append(this.body)\r\n this.append(bodyContainer);\r\n this.setColumnsWidths();\r\n addEventListener('resize', this.setColumnsWidths.bind(this))\r\n addEventListener('copy', this.onCopy.bind(this));\r\n this.addEventListener('scroll', this.onScroll.bind(this));\r\n }\r\n\r\n refreshHeader() {\r\n while (this.head.firstChild) this.head.firstChild.remove();\r\n\r\n this.head.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.column.icon'))\r\n for (let column of this.objectsList.visibleColumns) {\r\n let node = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.column')\r\n this.head.append(node);\r\n node.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('span.name', {text: column.name}));\r\n if (column.sortName) {\r\n node.classList.add('ableToSort');\r\n node.dataset.sortName = column.sortName\r\n node.onclick = () => {\r\n let sortName = column.sortName || x.dataset.value;\r\n if (this.objectsList.sort && this.objectsList.sort.col === column.sortName) {\r\n this.objectsList.sort.desc = !this.objectsList.sort.desc;\r\n } else {\r\n this.objectsList.sort = {col: column.sortName, desc: false};\r\n }\r\n if (!this.objectsList.infiniteScrollEnabled) {\r\n this.objectsList.start = 0;\r\n }\r\n this.objectsList.refresh();\r\n }\r\n }\r\n }\r\n this.head.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.column.actions'))\r\n }\r\n\r\n loadData(data, start, limit, infiniteScrollEnabled) {\r\n this.refreshSortIndicators();\r\n super.loadData(data, start, limit, infiniteScrollEnabled)\r\n this.setColumnsWidths();\r\n }\r\n\r\n get rowHeight() {\r\n return parseFloat(window.getComputedStyle(this).getPropertyValue('--rowHeight') ?? 31);\r\n }\r\n\r\n generateRow(data) {\r\n let tr = this.body.querySelector(`.tr[data-row=\"${data.id}\"]`);\r\n if (!tr) {\r\n tr = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.tr');\r\n tr.draggable = true;\r\n }\r\n tr.classList.toggle('selected', this.objectsList.selected.has(data.id))\r\n this.fillRowContent(tr, data);\r\n return tr;\r\n }\r\n\r\n fillRowContent(tr, data) {\r\n tr.lastData = data;\r\n while (tr.firstChild) {\r\n tr.removeChild(tr.firstChild)\r\n }\r\n tr.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.td.icon', {className: this.objectsList.icon}));\r\n for (let column of this.objectsList.visibleColumns) {\r\n let td = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.td');\r\n tr.append(td);\r\n if (this.multiEdit && column.dataName) {\r\n tr.dataset.id = data.id;\r\n td.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('input', {\r\n data: {name: column.dataName},\r\n value: data[column.dataName],\r\n onclick: e => e.stopPropagation(),\r\n onchange: () => this.multiEditChanged(tr)\r\n }));\r\n } else {\r\n td.append(column.content?.call(column, data) || data[column.dataName] || '');\r\n }\r\n }\r\n let actionsTd = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.td.actions');\r\n tr.append(actionsTd);\r\n let actions = this.objectsList.generateActions([data], 'row');\r\n if (this.multiEdit && data.__isMultirowEdited) {\r\n actions = [\r\n {\r\n name: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_3__.t)(\"objectList.saveRow\"),\r\n icon: 'icon-save',\r\n command: () => {\r\n this.multiEditChanged(tr, true)\r\n }\r\n }\r\n ]\r\n }\r\n for (let action of actions) {\r\n let actionButton = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)(action.href ? 'a.button' : 'button', {\r\n title: action.name\r\n });\r\n actionsTd.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)(actionButton));\r\n actionButton.classList.add('action-' + (action.action ?? 'view'));\r\n\r\n if (action.href) {\r\n actionButton.href = action.href;\r\n }\r\n if (action.command) {\r\n actionButton.onclick = action.command;\r\n }\r\n if (action.icon) {\r\n actionButton.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('span', {classList: [action.icon]}));\r\n } else {\r\n actionButton.textContent = action.name;\r\n }\r\n }\r\n\r\n\r\n tr.dataset.row = data.id;\r\n tr.oncontextmenu = this.contextMenu.bind(this, tr);\r\n tr.onclick = this.trOnClick.bind(this, data);\r\n tr.ondblclick = this.trOnDblClick.bind(this, data, tr);\r\n tr.onkeydown = this.trOnKeyDown.bind(this, data, tr);\r\n tr.ondragstart = this.trOnDragStart.bind(this, data, tr);\r\n }\r\n\r\n setColumnsWidths() {\r\n const widths = this.calculateColumnsWidths();\r\n for (let tr of this.body.children) {\r\n for (let i = 0; i < widths.length; i++) {\r\n tr.children[i].style.width = widths[i] + 'px';\r\n }\r\n }\r\n let sum = 0;\r\n for (let i = 0; i < widths.length; i++) {\r\n let node = this.head.children[i];\r\n if (node) {\r\n if (i + 1 < widths.length)\r\n node.style.width = widths[i] + 1 + 'px';\r\n else\r\n node.style.width = widths[i] + 'px';\r\n node.style.left = sum + 'px';\r\n }\r\n sum += widths[i];\r\n }\r\n }\r\n\r\n calculateColumnsWidths() {\r\n let needed = [{base: 30, grow: 0}];\r\n\r\n for (let column of this.objectsList.visibleColumns) {\r\n needed.push({base: column.width || 10, grow: typeof (column.widthGrow) == \"number\" ? column.widthGrow : 1});\r\n }\r\n let actionWidth = Math.ceil(Array.from(this.querySelectorAll('.td.actions')).map(x => {\r\n if (x.lastElementChild)\r\n return x.lastElementChild.getBoundingClientRect().right - x.getBoundingClientRect().left + parseFloat(getComputedStyle(x).paddingRight);\r\n else\r\n return 0;\r\n }).reduce((a, b) => Math.max(a, b), 0));\r\n needed.push({base: actionWidth, grow: 0});\r\n let availableToGrow = this.clientWidth - needed.map(x => x.base).reduce((a, b) => a + b, 0);\r\n let sumGrow = needed.map(x => x.grow).reduce((a, b) => a + b, 0);\r\n if (this.params?.wide) {\r\n return needed.map(x => x.base + x.grow * Math.max(100, availableToGrow / sumGrow));\r\n } else {\r\n if (availableToGrow > 0 && sumGrow > 0) {\r\n return needed.map(x => x.base + x.grow / sumGrow * availableToGrow);\r\n } else {\r\n return needed.map(x => x.base);\r\n }\r\n }\r\n }\r\n\r\n refreshSortIndicators() {\r\n this.head.querySelectorAll('[data-order]').forEach(x => delete x.dataset.order);\r\n if (this.objectsList.sort)\r\n this.head.querySelectorAll(`[data-sort-name=\"${this.objectsList.sort.col}\"]`).forEach(x => x.dataset.order = this.objectsList.sort.desc ? 'desc' : 'asc');\r\n }\r\n\r\n contextMenu(tr, event) {\r\n event.stopPropagation();\r\n if (!this.objectsList.selected.has(tr.dataset.row)) {\r\n this.objectsList.selected.clear();\r\n this.objectsList.selected.add(tr.dataset.row)\r\n this.objectsList.selectedMain = tr.dataset.row;\r\n this.refreshSelectedClasses();\r\n }\r\n const rows = this.objectsList.getSelectedData();\r\n let actions = this.objectsList.generateActions(rows, 'contextMenu');\r\n let actions2=[];\r\n for (const action of actions) {\r\n actions2.push(action);\r\n if(action.href){\r\n actions2.push({...action, href:null, command:window.open(action.href), name:aciton.name+' ('+(0,_i18n_xml__WEBPACK_IMPORTED_MODULE_3__.t)('objectList.inNewTab')+')'});\r\n }\r\n }\r\n let elements = actions.map(action => ({\r\n text: action.name,\r\n icon: action.icon,\r\n class: action.action ? 'action-' + action.action : '',\r\n onclick: action.command || (() => this.objectsList.gotoUrl(action.href))\r\n }));\r\n elements.push({\r\n text: 'copy',\r\n icon: 'icon-copy',\r\n onclick: () => {\r\n this.forceCopy(rows);\r\n }\r\n })\r\n _green_code_studio_context_menu_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.ContextMenu.openContextMenu(event, elements);\r\n }\r\n\r\n refreshSelectedClasses() {\r\n for (const tr of this.body.children) {\r\n tr.classList.toggle('selected', this.objectsList.selected.has(tr.dataset.row));\r\n tr.classList.toggle('selectedMain', this.objectsList.selectedMain == tr.dataset.row);\r\n if (this.objectsList.selectedMain == tr.dataset.row) {\r\n tr.tabIndex = 1;\r\n tr.focus();\r\n getSelection().selectAllChildren(tr)\r\n } else {\r\n tr.tabIndex = -1;\r\n }\r\n }\r\n }\r\n\r\n\r\n trOnClick(row, e) {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n console.log('click')\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.clear();\r\n }\r\n\r\n if (e.shiftKey) {\r\n const mainIndex = rowsIds.indexOf(this.objectsList.selectedMain);\r\n const clickedIndex = rowsIds.indexOf(row.id);\r\n if (clickedIndex >= 0 && mainIndex >= 0)\r\n rowsIds.slice(Math.min(mainIndex, clickedIndex), Math.max(mainIndex, clickedIndex) + 1).forEach(x => this.objectsList.selected.add(x));\r\n } else {\r\n if (this.objectsList.selected.has(row.id))\r\n this.objectsList.selected.delete(row.id);\r\n else\r\n this.objectsList.selected.add(row.id);\r\n\r\n this.objectsList.selectedMain = row.id;\r\n }\r\n\r\n this.refreshSelectedClasses();\r\n }\r\n\r\n trOnDblClick(row, tr, e) {\r\n if (!this.objectsList.selected.has(tr.dataset.row)) {\r\n this.objectsList.selected.clear();\r\n this.objectsList.selected.add(tr.dataset.row)\r\n this.objectsList.selectedMain = tr.dataset.row;\r\n this.refreshSelectedClasses();\r\n }\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'dblClick').find(x => x.main);\r\n if (action) {\r\n if (action.command) {\r\n action.command();\r\n } else if (action.href) {\r\n this.objectsList.gotoUrl(action.href)\r\n }\r\n }\r\n }\r\n\r\n selectRange(start, end) {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n let startIndex = rowsIds.indexOf(start);\r\n let endIndex = rowsIds.indexOf(end);\r\n if (endIndex < startIndex) {\r\n let tmp = startIndex;\r\n startIndex = endIndex;\r\n endIndex = tmp;\r\n }\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n this.objectsList.selected.add(rowsIds[i]);\r\n }\r\n }\r\n\r\n trOnKeyDown(row, tr, e) {\r\n console.log('trOnKeyDown')\r\n if (e.key === 'Enter') {\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'enter').find(x => x.main);\r\n if (action) {\r\n if (action.command) {\r\n action.command();\r\n } else if (action.href) {\r\n this.objectsList.gotoUrl(action.href)\r\n }\r\n }\r\n } else if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n let index = rowsIds.indexOf(this.objectsList.selectedMain);\r\n if (e.key === 'ArrowDown') {\r\n if (index < rowsIds.length) index++;\r\n else index = rowsIds.length - 1;\r\n } else {\r\n if (index > 0) index--;\r\n }\r\n const id = rowsIds[index];\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.clear();\r\n }\r\n if (e.shiftKey) {\r\n if (!this.objectsList.selectedShiftStart) {\r\n this.objectsList.selectedShiftStart = this.objectsList.selectedMain;\r\n }\r\n this.selectRange(this.objectsList.selectedShiftStart, id)\r\n } else {\r\n this.objectsList.selectedShiftStart = null;\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.add(id);\r\n }\r\n }\r\n this.objectsList.selectedMain = id;\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n } else if (e.key === ' ') {\r\n if (this.objectsList.selected.has(this.objectsList.selectedMain))\r\n this.objectsList.selected.delete(this.objectsList.selectedMain);\r\n else\r\n this.objectsList.selected.add(this.objectsList.selectedMain);\r\n\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n } else if (e.key === 'a') {\r\n if (e.ctrlKey)\r\n this.objectsList.selected.selectAll();\r\n\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n onCopy(e) {\r\n if (this.copyForced) {\r\n this.fillDataTransfer(e.clipboardData, this.copyForced);\r\n e.preventDefault();\r\n } else if (document.querySelector(':focus')?.findParent(x => x === this)) {\r\n this.fillDataTransfer(e.clipboardData, this.objectsList.selected);\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n trOnDragStart(row, oryginalTr, e) {\r\n if (!this.objectsList.selected.has(row.id)) {\r\n this.objectsList.selected.clear()\r\n this.objectsList.selected.add(row.id)\r\n this.refreshSelectedClasses();\r\n }\r\n this.fillDataTransfer(e.dataTransfer, this.objectsList.selected);\r\n }\r\n\r\n fillDataTransfer(dataTransfer, ids) {\r\n const trs = Array.from(this.body.children).filter(tr => ids.has(tr.dataset.row));\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'dataTransfer').find(x => x.main);\r\n if (action && action.href) {\r\n dataTransfer.setData('text/uri-list', new URL(action.href, document.baseURI));\r\n }\r\n if (action && action.hrefArray) {\r\n dataTransfer.setData('text/uri-list', action.hrefArray.map(x => new URL(x, document.baseURI)).map(x => x.toString()).join(\"\\r\\n#\\r\\n\"));\r\n }\r\n dataTransfer.setData('text/html', this.generateTableHtml(trs));\r\n dataTransfer.setData('text/plain', this.generateTableTextPlain(trs));\r\n\r\n }\r\n\r\n generateTableHtml(trs) {\r\n const thead = '<thead><tr>' + Array.from(this.head.querySelectorAll('.column')).map(x => '<th>' + x.innerHTML + '</th>').join('') + '</tr></thead>';\r\n const tbody = '<tbody>' + trs.map(tr => {\r\n return '<tr>' + Array.from(tr.children).slice(1, -1).map(td => {\r\n return '<td>' + td.innerHTML + '</td>';\r\n }).join('') + '</tr>';\r\n }).join('') + '</tbody>'\r\n return '<table>' + thead + tbody + '</table>';\r\n }\r\n\r\n generateTableTextPlain(trs) {\r\n const head = Array.from(this.head.querySelectorAll('.column')).map(x => x.textContent.replace(/\\r\\n/gm, ' ')).join(\"\\t\")\r\n const body = trs.map(tr => Array.from(tr.children).slice(1).map(x => x.textContent.replace(/\\r\\n/gm, ' ')).join(\"\\t\")).join(\"\\r\\n\")\r\n return head + \"\\r\\n\" + body;\r\n }\r\n\r\n calcMaxVisibleItems(height) {\r\n return Math.floor((height - this.head.clientHeight) / this.rowHeight);\r\n }\r\n\r\n forceCopy(rows) {\r\n this.copyForced = new Set(rows.map(x => x.id));\r\n document.execCommand(\"copy\");\r\n setTimeout(() => this.copyForced = null, 100);\r\n }\r\n\r\n startMultiEdit() {\r\n this.multiEdit = true;\r\n }\r\n\r\n multiEditChanged(tr, save = false) {\r\n let data = [...tr.querySelectorAll('[data-name]')].map(x => [x.dataset.name, x.value]);\r\n let dataObj = Object.fromEntries(data);\r\n this.objectsList.multiEditChanged(tr.dataset.id, dataObj, save);\r\n this.fillRowContent(tr, {...tr.lastData, ...dataObj, __isMultirowEdited: true});\r\n this.setColumnsWidths();\r\n }\r\n}\r\n\r\ncustomElements.define('table-view', TableView);\r\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/tableView.js?");
310
310
 
311
311
  /***/ }),
312
312
 
package/dist/index.mjs CHANGED
@@ -54,7 +54,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
54
54
  \**********************/
55
55
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56
56
 
57
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ node: () => (/* binding */ node),\n/* harmony export */ t: () => (/* binding */ t),\n/* harmony export */ translator: () => (/* binding */ translator)\n/* harmony export */ });\n/* harmony import */ var _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @green-code-studio/internationalization/i18nNode.js */ \"./node_modules/@green-code-studio/internationalization/i18nNode.js\");\n/* harmony import */ var _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @green-code-studio/internationalization/i18nTextValue.js */ \"./node_modules/@green-code-studio/internationalization/i18nTextValue.js\");\n/* harmony import */ var _green_code_studio_internationalization_translator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @green-code-studio/internationalization/translator.js */ \"./node_modules/@green-code-studio/internationalization/translator.js\");\n/* harmony import */ var _green_code_studio_internationalization_languagesHierarchy_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @green-code-studio/internationalization/languagesHierarchy.js */ \"./node_modules/@green-code-studio/internationalization/languagesHierarchy.js\");\n\n\n\n\n\nconsole.log(_green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode);\nconst node = {name:\"\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([],[{name:\"objectList\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([],[{name:\"search\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Szukaj\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Search\")}],[])},{name:\"paginationMode\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Tryb paginacji\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Pagination mode\")}],[])},{name:\"scrollMode\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Tryb scrollowania\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Scroll mode\")}],[])},{name:\"tableView\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok tabeli\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Table view\")}],[])},{name:\"tableWideView\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok tabeli (szeroka)\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Table view (wide)\")}],[])},{name:\"listView\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok listy\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"List view\")}],[])},{name:\"startMultiEdit\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Rozpocznij edycję wielu\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Start multi-edit\")}],[])},{name:\"saveRow\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Zapisz wiersz\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Save a row\")}],[])},{name:\"mode\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Tryb\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Mode\")}],[])},{name:\"view\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"View\")}],[])},{name:\"columnEnabled\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Kolumna widoczna\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Column enabled\")}],[])},{name:\"columnName\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Nazwa kolumny\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Column name\")}],[])},{name:\"columnFilter\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Filtr\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Filter\")}],[])},{name:\"filtersCount\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Liczba filtrów\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Filters count\")}],[])},{name:\"clearFilters\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Wyczyść filtry\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Clear filters\")}],[])},{name:\"search\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Szukaj\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Search\")}],[])}])},{name:\"filter\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([],[{name:\"none\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Brak\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"None\")}],[])},{name:\"equals\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Równa się\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Equals\")}],[])},{name:\"lessThan\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Mniejsze niż\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Less than\")}],[])},{name:\"greaterThan\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Większe niż\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Greater than\")}],[])},{name:\"contains\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Zawiera\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Contains\")}],[])},{name:\"oneOf\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Jedno z\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"One of\")}],[])},{name:\"empty\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Puste\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Empty\")}],[])}])}])};\nconst translator=new _green_code_studio_internationalization_translator_js__WEBPACK_IMPORTED_MODULE_2__.Translator(_green_code_studio_internationalization_languagesHierarchy_js__WEBPACK_IMPORTED_MODULE_3__.LanguagesHierarchy.default, node.node);\nfunction t(q){var x=translator.translate(q);return x?x.toString():'';}\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/i18n.xml?");
57
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ node: () => (/* binding */ node),\n/* harmony export */ t: () => (/* binding */ t),\n/* harmony export */ translator: () => (/* binding */ translator)\n/* harmony export */ });\n/* harmony import */ var _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @green-code-studio/internationalization/i18nNode.js */ \"./node_modules/@green-code-studio/internationalization/i18nNode.js\");\n/* harmony import */ var _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @green-code-studio/internationalization/i18nTextValue.js */ \"./node_modules/@green-code-studio/internationalization/i18nTextValue.js\");\n/* harmony import */ var _green_code_studio_internationalization_translator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @green-code-studio/internationalization/translator.js */ \"./node_modules/@green-code-studio/internationalization/translator.js\");\n/* harmony import */ var _green_code_studio_internationalization_languagesHierarchy_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @green-code-studio/internationalization/languagesHierarchy.js */ \"./node_modules/@green-code-studio/internationalization/languagesHierarchy.js\");\n\n\n\n\n\nconsole.log(_green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode);\nconst node = {name:\"\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([],[{name:\"objectList\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([],[{name:\"search\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Szukaj\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Search\")}],[])},{name:\"paginationMode\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Tryb paginacji\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Pagination mode\")}],[])},{name:\"scrollMode\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Tryb scrollowania\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Scroll mode\")}],[])},{name:\"tableView\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok tabeli\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Table view\")}],[])},{name:\"tableWideView\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok tabeli (szeroka)\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Table view (wide)\")}],[])},{name:\"listView\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok listy\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"List view\")}],[])},{name:\"startMultiEdit\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Rozpocznij edycję wielu\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Start multi-edit\")}],[])},{name:\"saveRow\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Zapisz wiersz\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Save a row\")}],[])},{name:\"mode\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Tryb\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Mode\")}],[])},{name:\"view\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Widok\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"View\")}],[])},{name:\"columnEnabled\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Kolumna widoczna\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Column enabled\")}],[])},{name:\"columnName\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Nazwa kolumny\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Column name\")}],[])},{name:\"columnFilter\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Filtr\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Filter\")}],[])},{name:\"filtersCount\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Liczba filtrów\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Filters count\")}],[])},{name:\"clearFilters\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Wyczyść filtry\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Clear filters\")}],[])},{name:\"search\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Szukaj\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Search\")}],[])},{name:\"inNewTab\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"W nowej karcie\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"In new tab\")}],[])}])},{name:\"filter\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([],[{name:\"none\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Brak\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"None\")}],[])},{name:\"equals\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Równa się\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Equals\")}],[])},{name:\"lessThan\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Mniejsze niż\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Less than\")}],[])},{name:\"greaterThan\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Większe niż\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Greater than\")}],[])},{name:\"contains\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Zawiera\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Contains\")}],[])},{name:\"oneOf\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Jedno z\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"One of\")}],[])},{name:\"empty\", node:new _green_code_studio_internationalization_i18nNode_js__WEBPACK_IMPORTED_MODULE_0__.I18nNode([{lang:\"pl\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Puste\")},{lang:\"en\", value: new _green_code_studio_internationalization_i18nTextValue_js__WEBPACK_IMPORTED_MODULE_1__.I18nTextValue(\"Empty\")}],[])}])}])};\nconst translator=new _green_code_studio_internationalization_translator_js__WEBPACK_IMPORTED_MODULE_2__.Translator(_green_code_studio_internationalization_languagesHierarchy_js__WEBPACK_IMPORTED_MODULE_3__.LanguagesHierarchy.default, node.node);\nfunction t(q){var x=translator.translate(q);return x?x.toString():'';}\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/i18n.xml?");
58
58
 
59
59
  /***/ }),
60
60
 
@@ -104,7 +104,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
104
104
  \*********************************************************************/
105
105
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
106
106
 
107
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ContextMenu: () => (/* binding */ __webpack_exports__ContextMenu)\n/* harmony export */ });\n/*\n * ATTENTION: The \"eval\" devtool has been used (maybe by default in mode: \"development\").\n * This devtool is neither made for production nor for readable output files.\n * It uses \"eval()\" calls to create a separate source file in the browser devtools.\n * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)\n * or disable the default devtool with \"devtool: false\".\n * If you are looking for production-ready output files, see mode: \"production\" (https://webpack.js.org/configuration/mode/).\n */\n/******/ var __webpack_modules__ = ({\n\n/***/ \"./node_modules/fast-creator/dist/entry.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/fast-creator/dist/entry.js ***!\n \\*************************************************/\n/***/ ((module) => {\n\neval(\"\\n\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\\n\\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\\n\\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\\n\\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\\n\\nfunction _nonIterableSpread() { throw new TypeError(\\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\\"); }\\n\\nfunction _iterableToArray(iter) { if (typeof Symbol !== \\\"undefined\\\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\\n\\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\\n\\nfunction _typeof(obj) { \\\"@babel/helpers - typeof\\\"; if (typeof Symbol === \\\"function\\\" && typeof Symbol.iterator === \\\"symbol\\\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \\\"function\\\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \\\"symbol\\\" : typeof obj; }; } return _typeof(obj); }\\n\\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \\\"undefined\\\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\\\"Invalid attempt to iterate non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\\\"return\\\"] != null) it[\\\"return\\\"](); } finally { if (didErr) throw err; } } }; }\\n\\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \\\"string\\\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \\\"Object\\\" && o.constructor) n = o.constructor.name; if (n === \\\"Map\\\" || n === \\\"Set\\\") return Array.from(n); if (n === \\\"Arguments\\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\\n\\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\\n\\n/**\\r\\n *\\r\\n * @param attributes\\r\\n * @param documentObject\\r\\n * @returns {HTMLElement}\\r\\n */\\nfunction createFromDefinition() {\\n var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\\n var documentObject = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\\n if (!documentObject) documentObject = document;\\n var element = documentObject.createElement(attributes.tagName || 'div');\\n repairClasses(attributes);\\n\\n for (var attrName in attributes) {\\n if (attrName === 'className') {\\n element.className = attributes[attrName];\\n } else if (attrName === 'classList') {\\n var _iterator = _createForOfIteratorHelper(attributes.classList),\\n _step;\\n\\n try {\\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\\n var x = _step.value;\\n element.classList.add(x);\\n }\\n } catch (err) {\\n _iterator.e(err);\\n } finally {\\n _iterator.f();\\n }\\n } else if (attrName === 'text') {\\n element.textContent = attributes.text;\\n } else if (attrName === 'html') {\\n element.innerHTML = attributes.html;\\n } else if (attrName === 'data') {\\n Object.assign(element.dataset, attributes.data);\\n } else if (attrName === 'children') {\\n attributes.children.forEach(function (x) {\\n return element.appendChild(x instanceof Node ? x : create(x, {}, documentObject));\\n });\\n } else if (attrName.startsWith('on')) {\\n element[attrName] = attributes[attrName];\\n } else if (attrName.startsWith('style')) {\\n if (_typeof(attributes[attrName]) == \\\"object\\\") {\\n for (var styleName in attributes[attrName]) {\\n element.style.setProperty(styleName, attributes[attrName][styleName]);\\n }\\n } else if (attributes[attrName] !== false) {\\n element.setAttribute(attrName, attributes[attrName]);\\n }\\n } else if (attrName === 'tagName') {//nothing\\n } else {\\n if (attributes[attrName] === true) element.setAttribute(attrName, attrName);else if (attributes[attrName] !== false) element.setAttribute(attrName, attributes[attrName]);\\n }\\n }\\n\\n return element;\\n}\\n\\nfunction repairClasses(obj) {\\n if (obj.className) {\\n if (!obj.classList) obj.classList = [];\\n obj.classList = [].concat(_toConsumableArray(obj.classList), _toConsumableArray(obj.className.split(' ')));\\n delete obj.className;\\n }\\n}\\n/**\\r\\n *\\r\\n * @param {string} selector\\r\\n * $returns {object}\\r\\n */\\n\\n\\nfunction parseSelector(selector) {\\n selector = (selector + \\\"\\\").trim();\\n var position = 0;\\n\\n function parseElement() {\\n var ret = {};\\n var canBeTagname = true;\\n\\n while (position < selector.length) {\\n var _char = selector[position];\\n position++;\\n\\n if (_char === '#') {\\n ret.id = parseText();\\n } else if (_char === '.') {\\n if (!ret.classList) ret.classList = [];\\n ret.classList.push(parseText());\\n } else if (_char === '[') {\\n var attrName = parseText(['=', ']']);\\n skipWhitespace();\\n\\n if (selector[position] == '=') {\\n position++;\\n skipWhitespace();\\n if (selector[position] != '\\\"') throw new Error(\\\"Syntax error in position \\\" + position);\\n position++;\\n var value = parseAttributeValue();\\n skipWhitespace();\\n if (selector[position] != '\\\"') throw new Error(\\\"Syntax error in position \\\" + position);\\n position++;\\n skipWhitespace();\\n if (selector[position] != ']') throw new Error(\\\"Syntax error in position \\\" + position);\\n position++;\\n ret[attrName] = value;\\n } else if (selector[position] == ']') {\\n position++;\\n ret[attrName] = true;\\n } else {\\n throw new Error(\\\"Syntax error in position \\\" + position);\\n }\\n } else if (/\\\\s/.test(_char)) {\\n while (position < selector.length && /\\\\s/.test(selector[position])) {\\n position++;\\n skipWhitespace();\\n }\\n\\n ret.children = [parseElement()];\\n } else if (canBeTagname) {\\n ret.tagName = _char + parseText();\\n } else {\\n throw new Error(\\\"Syntax error in position \\\" + position);\\n }\\n\\n canBeTagname = false;\\n }\\n\\n return ret;\\n }\\n\\n function parseText() {\\n var escape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['.', '#', ',', '['];\\n var text = '';\\n\\n while (position < selector.length) {\\n var _char2 = selector[position];\\n\\n if (/\\\\s/.test(_char2) || escape.includes(_char2)) {\\n return text;\\n } else {\\n text += _char2;\\n position++;\\n }\\n }\\n\\n return text;\\n }\\n\\n function parseAttributeValue() {\\n var text = '';\\n\\n while (position < selector.length) {\\n var _char3 = selector[position];\\n\\n if (_char3 == '\\\"') {\\n return text;\\n } else {\\n text += _char3;\\n position++;\\n }\\n }\\n\\n return text;\\n }\\n\\n function skipWhitespace() {\\n while (position < selector.length) {\\n var _char4 = selector[position];\\n\\n if (!/\\\\s/.test(_char4)) {\\n return;\\n } else {\\n position++;\\n }\\n }\\n }\\n\\n if (selector === \\\"\\\") return {};else return parseElement();\\n}\\n/**\\r\\n *\\r\\n * @param {string} selector\\r\\n * @param {object} attributes\\r\\n * @param documentObject\\r\\n * @returns {HTMLElement}\\r\\n */\\n\\n\\nfunction create() {\\n var definition = {};\\n var documentObject = null;\\n\\n for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\\n params[_key] = arguments[_key];\\n }\\n\\n if (typeof params[0] == \\\"string\\\") definition = mergeObjects(definition, parseSelector(params.splice(0, 1)[0]));\\n if (_typeof(params[0]) == \\\"object\\\" && !(params[0] instanceof Node)) definition = mergeObjects(definition, params.splice(0, 1)[0]);\\n\\n for (var _i = 0, _params = params; _i < _params.length; _i++) {\\n var param = _params[_i];\\n\\n if (param instanceof Document) {\\n documentObject = param;\\n } else if (param instanceof Node) {\\n documentObject = param.ownerDocument;\\n if (!definition.children) definition.children = [];\\n definition.children.push(param);\\n }\\n }\\n\\n return createFromDefinition(definition, documentObject);\\n}\\n\\nfunction mergeObjects(a, b) {\\n repairClasses(a);\\n repairClasses(b);\\n\\n var ret = _objectSpread({}, a, {}, b);\\n\\n if (a.data && b.data) {\\n ret.data = _objectSpread({}, a.data, {}, b.data);\\n }\\n\\n if (a.children && b.children) {\\n ret.children = [].concat(_toConsumableArray(a.children), _toConsumableArray(b.children));\\n }\\n\\n if (a.classList && b.classList) {\\n ret.classList = [].concat(_toConsumableArray(a.classList), _toConsumableArray(b.classList));\\n }\\n\\n return ret;\\n}\\n\\nmodule.exports = {\\n createFromDefinition: createFromDefinition,\\n parseSelector: parseSelector,\\n create: create,\\n mergeObjects: mergeObjects,\\n \\\"default\\\": create\\n};\\n\\n//# sourceURL=webpack://@green-code-studio/context-menu/./node_modules/fast-creator/dist/entry.js?\");\n\n/***/ }),\n\n/***/ \"./src/contextMenu.js\":\n/*!****************************!*\\\n !*** ./src/contextMenu.js ***!\n \\****************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ ContextMenu: () => (/* binding */ ContextMenu)\\n/* harmony export */ });\\n/* harmony import */ var fast_creator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-creator */ \\\"./node_modules/fast-creator/dist/entry.js\\\");\\n\\r\\n\\r\\nclass ContextMenu {\\r\\n constructor(elements, parent = null) {\\r\\n this.generateHtml(elements);\\r\\n this.bindGlobalEvents();\\r\\n this.subMenu = null;\\r\\n }\\r\\n\\r\\n generateHtml(elements) {\\r\\n this.html = (0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('ul.contextMenu');\\r\\n for (const element of elements) {\\r\\n this.html.append(this.generateElementHtml(element));\\r\\n }\\r\\n this.html.onmousedown = e => e.stopPropagation();\\r\\n }\\r\\n\\r\\n generateElementHtml(element) {\\r\\n const elementHtml = (0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('li.element', {tabIndex: 0});\\r\\n if (element.submenu) {\\r\\n elementHtml.classList.add('hasSubmenu');\\r\\n }\\r\\n if (element.icon)\\r\\n elementHtml.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('span.icon', {className: element.icon}));\\r\\n else\\r\\n elementHtml.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('span.iconPlaceholder'));\\r\\n\\r\\n elementHtml.addChild('span.content', {text: element.text || ''});\\r\\n if (element.onclick) {\\r\\n elementHtml.onclick = e => {\\r\\n element.onclick.call(elementHtml, e);\\r\\n this.destroy()\\r\\n };\\r\\n elementHtml.onkeydown = e => {\\r\\n if (e.key == 'Enter') {\\r\\n element.onclick.call(elementHtml, e);\\r\\n this.destroy()\\r\\n } else if (e.key == 'ArrowDown') {\\r\\n (elementHtml.nextElementSibling ?? elementHtml.parentNode.firstElementChild).focus();\\r\\n } else if (e.key == 'ArrowUp') {\\r\\n (elementHtml.previousElementSibling ?? elementHtml.parentNode.lastElementChild).focus();\\r\\n }\\r\\n };\\r\\n }\\r\\n elementHtml.onmouseenter = e => {\\r\\n elementHtml.focus();\\r\\n if (this.submenu) {\\r\\n this.submenu.destroy();\\r\\n this.submenu = null;\\r\\n }\\r\\n if (element.submenu) {\\r\\n this.submenu = new ContextMenu(element.submenu);\\r\\n document.body.appendChild(this.submenu.html);\\r\\n this.submenu.setPositionToParent(elementHtml);\\r\\n }\\r\\n };\\r\\n return elementHtml;\\r\\n }\\r\\n\\r\\n bindGlobalEvents() {\\r\\n this.bindedDestroyEvent = this.destroy.bind(this);\\r\\n addEventListener('mousedown', this.bindedDestroyEvent);\\r\\n addEventListener('blur', this.bindedDestroyEvent);\\r\\n }\\r\\n\\r\\n setPositionToPointer(event) {\\r\\n const placeHorizontal = innerWidth - event.clientX;\\r\\n const placeVertical = innerHeight - event.clientY;\\r\\n const isRight = this.html.offsetWidth <= placeHorizontal;\\r\\n const isBottom = this.html.offsetHeight <= placeVertical;\\r\\n\\r\\n this.html.style.left = 'auto';\\r\\n this.html.style.right = 'auto';\\r\\n this.html.style.top = 'auto';\\r\\n this.html.style.bottom = 'auto';\\r\\n\\r\\n if (isRight)\\r\\n this.html.style.left = `${event.clientX}px`;\\r\\n else\\r\\n this.html.style.right = `${Math.min(innerWidth - event.clientX + 1, innerWidth - this.html.offsetWidth)}px`;\\r\\n\\r\\n if (isBottom)\\r\\n this.html.style.top = `${event.clientY}px`;\\r\\n else\\r\\n this.html.style.bottom = `${Math.min(innerHeight - event.clientY + 1, innerHeight - this.html.offsetHeight)}px`;\\r\\n }\\r\\n\\r\\n setPositionToParent(parent) {\\r\\n const parentBoundingBox = parent.getBoundingClientRect();\\r\\n const placeRight = innerWidth - parentBoundingBox.right;\\r\\n const placeLeft = parentBoundingBox.left;\\r\\n const placeBottom = innerHeight - parentBoundingBox.top;\\r\\n const isRight = this.html.offsetWidth <= placeRight;\\r\\n const isBottom = this.html.offsetHeight <= placeBottom;\\r\\n\\r\\n this.html.style.left = 'auto';\\r\\n this.html.style.right = 'auto';\\r\\n this.html.style.top = 'auto';\\r\\n this.html.style.bottom = 'auto';\\r\\n\\r\\n if (isRight)\\r\\n this.html.style.left = `${parentBoundingBox.right}px`;\\r\\n else\\r\\n this.html.style.right = `${Math.min(innerWidth - parentBoundingBox.left, innerWidth - this.html.offsetWidth)}px`;\\r\\n\\r\\n if (isBottom)\\r\\n this.html.style.top = `${parentBoundingBox.top}px`;\\r\\n else\\r\\n this.html.style.bottom = `${Math.min(innerHeight - parentBoundingBox.bottom, innerHeight - this.html.offsetHeight)}px`;\\r\\n }\\r\\n\\r\\n destroy() {\\r\\n this.html.remove();\\r\\n removeEventListener('mousedown', this.bindedDestroyEvent);\\r\\n removeEventListener('blur', this.bindedDestroyEvent);\\r\\n }\\r\\n\\r\\n static openContextMenu(event, elements) {\\r\\n const menu = new ContextMenu(elements);\\r\\n document.body.appendChild(menu.html);\\r\\n menu.setPositionToPointer(event);\\r\\n event.preventDefault();\\r\\n if (menu.html.firstChild)\\r\\n menu.html.firstChild.focus();\\r\\n\\r\\n return menu;\\r\\n }\\r\\n}\\r\\n\\n\\n//# sourceURL=webpack://@green-code-studio/context-menu/./src/contextMenu.js?\");\n\n/***/ }),\n\n/***/ \"./src/index.js\":\n/*!**********************!*\\\n !*** ./src/index.js ***!\n \\**********************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ ContextMenu: () => (/* reexport safe */ _contextMenu_js__WEBPACK_IMPORTED_MODULE_0__.ContextMenu)\\n/* harmony export */ });\\n/* harmony import */ var _contextMenu_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./contextMenu.js */ \\\"./src/contextMenu.js\\\");\\n\\r\\n\\n\\n//# sourceURL=webpack://@green-code-studio/context-menu/./src/index.js?\");\n\n/***/ })\n\n/******/ });\n/************************************************************************/\n/******/ // The module cache\n/******/ var __webpack_module_cache__ = {};\n/******/ \n/******/ // The require function\n/******/ function __nested_webpack_require_18583__(moduleId) {\n/******/ \t// Check if module is in cache\n/******/ \tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \tif (cachedModule !== undefined) {\n/******/ \t\treturn cachedModule.exports;\n/******/ \t}\n/******/ \t// Create a new module (and put it into the cache)\n/******/ \tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t// no module.id needed\n/******/ \t\t// no module.loaded needed\n/******/ \t\texports: {}\n/******/ \t};\n/******/ \n/******/ \t// Execute the module function\n/******/ \t__webpack_modules__[moduleId](module, module.exports, __nested_webpack_require_18583__);\n/******/ \n/******/ \t// Return the exports of the module\n/******/ \treturn module.exports;\n/******/ }\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__nested_webpack_require_18583__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__nested_webpack_require_18583__.o(definition, key) && !__nested_webpack_require_18583__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__nested_webpack_require_18583__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/make namespace object */\n/******/ (() => {\n/******/ \t// define __esModule on exports\n/******/ \t__nested_webpack_require_18583__.r = (exports) => {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/ })();\n/******/ \n/************************************************************************/\n/******/ \n/******/ // startup\n/******/ // Load entry module and return exports\n/******/ // This entry module can't be inlined because the eval devtool is used.\n/******/ var __nested_webpack_exports__ = __nested_webpack_require_18583__(\"./src/index.js\");\n/******/ var __webpack_exports__ContextMenu = __nested_webpack_exports__.ContextMenu;\n/******/ \n/******/ \n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./node_modules/@green-code-studio/context-menu/dist/index.mjs?");
107
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ContextMenu: () => (/* binding */ __webpack_exports__ContextMenu)\n/* harmony export */ });\n/*\n * ATTENTION: The \"eval\" devtool has been used (maybe by default in mode: \"development\").\n * This devtool is neither made for production nor for readable output files.\n * It uses \"eval()\" calls to create a separate source file in the browser devtools.\n * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)\n * or disable the default devtool with \"devtool: false\".\n * If you are looking for production-ready output files, see mode: \"production\" (https://webpack.js.org/configuration/mode/).\n */\n/******/ var __webpack_modules__ = ({\n\n/***/ \"./node_modules/fast-creator/dist/entry.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/fast-creator/dist/entry.js ***!\n \\*************************************************/\n/***/ ((module) => {\n\neval(\"\\n\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\\n\\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\\n\\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\\n\\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\\n\\nfunction _nonIterableSpread() { throw new TypeError(\\\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\\"); }\\n\\nfunction _iterableToArray(iter) { if (typeof Symbol !== \\\"undefined\\\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\\n\\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\\n\\nfunction _typeof(obj) { \\\"@babel/helpers - typeof\\\"; if (typeof Symbol === \\\"function\\\" && typeof Symbol.iterator === \\\"symbol\\\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \\\"function\\\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \\\"symbol\\\" : typeof obj; }; } return _typeof(obj); }\\n\\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \\\"undefined\\\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\\\"Invalid attempt to iterate non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\\\"return\\\"] != null) it[\\\"return\\\"](); } finally { if (didErr) throw err; } } }; }\\n\\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \\\"string\\\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \\\"Object\\\" && o.constructor) n = o.constructor.name; if (n === \\\"Map\\\" || n === \\\"Set\\\") return Array.from(n); if (n === \\\"Arguments\\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\\n\\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\\n\\n/**\\r\\n *\\r\\n * @param attributes\\r\\n * @param documentObject\\r\\n * @returns {HTMLElement}\\r\\n */\\nfunction createFromDefinition() {\\n var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\\n var documentObject = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\\n if (!documentObject) documentObject = document;\\n var element = documentObject.createElement(attributes.tagName || 'div');\\n repairClasses(attributes);\\n\\n for (var attrName in attributes) {\\n if (attrName === 'className') {\\n element.className = attributes[attrName];\\n } else if (attrName === 'classList') {\\n var _iterator = _createForOfIteratorHelper(attributes.classList),\\n _step;\\n\\n try {\\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\\n var x = _step.value;\\n element.classList.add(x);\\n }\\n } catch (err) {\\n _iterator.e(err);\\n } finally {\\n _iterator.f();\\n }\\n } else if (attrName === 'text') {\\n element.textContent = attributes.text;\\n } else if (attrName === 'html') {\\n element.innerHTML = attributes.html;\\n } else if (attrName === 'data') {\\n Object.assign(element.dataset, attributes.data);\\n } else if (attrName === 'children') {\\n attributes.children.forEach(function (x) {\\n return element.appendChild(x instanceof Node ? x : create(x, {}, documentObject));\\n });\\n } else if (attrName.startsWith('on')) {\\n element[attrName] = attributes[attrName];\\n } else if (attrName.startsWith('style')) {\\n if (_typeof(attributes[attrName]) == \\\"object\\\") {\\n for (var styleName in attributes[attrName]) {\\n element.style.setProperty(styleName, attributes[attrName][styleName]);\\n }\\n } else if (attributes[attrName] !== false) {\\n element.setAttribute(attrName, attributes[attrName]);\\n }\\n } else if (attrName === 'tagName') {//nothing\\n } else {\\n if (attributes[attrName] === true) element.setAttribute(attrName, attrName);else if (attributes[attrName] !== false) element.setAttribute(attrName, attributes[attrName]);\\n }\\n }\\n\\n return element;\\n}\\n\\nfunction repairClasses(obj) {\\n if (obj.className) {\\n if (!obj.classList) obj.classList = [];\\n obj.classList = [].concat(_toConsumableArray(obj.classList), _toConsumableArray(obj.className.split(' ')));\\n delete obj.className;\\n }\\n}\\n/**\\r\\n *\\r\\n * @param {string} selector\\r\\n * $returns {object}\\r\\n */\\n\\n\\nfunction parseSelector(selector) {\\n selector = (selector + \\\"\\\").trim();\\n var position = 0;\\n\\n function parseElement() {\\n var ret = {};\\n var canBeTagname = true;\\n\\n while (position < selector.length) {\\n var _char = selector[position];\\n position++;\\n\\n if (_char === '#') {\\n ret.id = parseText();\\n } else if (_char === '.') {\\n if (!ret.classList) ret.classList = [];\\n ret.classList.push(parseText());\\n } else if (_char === '[') {\\n var attrName = parseText(['=', ']']);\\n skipWhitespace();\\n\\n if (selector[position] == '=') {\\n position++;\\n skipWhitespace();\\n if (selector[position] != '\\\"') throw new Error(\\\"Syntax error in position \\\" + position);\\n position++;\\n var value = parseAttributeValue();\\n skipWhitespace();\\n if (selector[position] != '\\\"') throw new Error(\\\"Syntax error in position \\\" + position);\\n position++;\\n skipWhitespace();\\n if (selector[position] != ']') throw new Error(\\\"Syntax error in position \\\" + position);\\n position++;\\n ret[attrName] = value;\\n } else if (selector[position] == ']') {\\n position++;\\n ret[attrName] = true;\\n } else {\\n throw new Error(\\\"Syntax error in position \\\" + position);\\n }\\n } else if (/\\\\s/.test(_char)) {\\n while (position < selector.length && /\\\\s/.test(selector[position])) {\\n position++;\\n skipWhitespace();\\n }\\n\\n ret.children = [parseElement()];\\n } else if (canBeTagname) {\\n ret.tagName = _char + parseText();\\n } else {\\n throw new Error(\\\"Syntax error in position \\\" + position);\\n }\\n\\n canBeTagname = false;\\n }\\n\\n return ret;\\n }\\n\\n function parseText() {\\n var escape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['.', '#', ',', '['];\\n var text = '';\\n\\n while (position < selector.length) {\\n var _char2 = selector[position];\\n\\n if (/\\\\s/.test(_char2) || escape.includes(_char2)) {\\n return text;\\n } else {\\n text += _char2;\\n position++;\\n }\\n }\\n\\n return text;\\n }\\n\\n function parseAttributeValue() {\\n var text = '';\\n\\n while (position < selector.length) {\\n var _char3 = selector[position];\\n\\n if (_char3 == '\\\"') {\\n return text;\\n } else {\\n text += _char3;\\n position++;\\n }\\n }\\n\\n return text;\\n }\\n\\n function skipWhitespace() {\\n while (position < selector.length) {\\n var _char4 = selector[position];\\n\\n if (!/\\\\s/.test(_char4)) {\\n return;\\n } else {\\n position++;\\n }\\n }\\n }\\n\\n if (selector === \\\"\\\") return {};else return parseElement();\\n}\\n/**\\r\\n *\\r\\n * @param {string} selector\\r\\n * @param {object} attributes\\r\\n * @param documentObject\\r\\n * @returns {HTMLElement}\\r\\n */\\n\\n\\nfunction create() {\\n var definition = {};\\n var documentObject = null;\\n\\n for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\\n params[_key] = arguments[_key];\\n }\\n\\n if (typeof params[0] == \\\"string\\\") definition = mergeObjects(definition, parseSelector(params.splice(0, 1)[0]));\\n if (_typeof(params[0]) == \\\"object\\\" && !(params[0] instanceof Node)) definition = mergeObjects(definition, params.splice(0, 1)[0]);\\n\\n for (var _i = 0, _params = params; _i < _params.length; _i++) {\\n var param = _params[_i];\\n\\n if (param instanceof Document) {\\n documentObject = param;\\n } else if (param instanceof Node) {\\n documentObject = param.ownerDocument;\\n if (!definition.children) definition.children = [];\\n definition.children.push(param);\\n }\\n }\\n\\n return createFromDefinition(definition, documentObject);\\n}\\n\\nfunction mergeObjects(a, b) {\\n repairClasses(a);\\n repairClasses(b);\\n\\n var ret = _objectSpread({}, a, {}, b);\\n\\n if (a.data && b.data) {\\n ret.data = _objectSpread({}, a.data, {}, b.data);\\n }\\n\\n if (a.children && b.children) {\\n ret.children = [].concat(_toConsumableArray(a.children), _toConsumableArray(b.children));\\n }\\n\\n if (a.classList && b.classList) {\\n ret.classList = [].concat(_toConsumableArray(a.classList), _toConsumableArray(b.classList));\\n }\\n\\n return ret;\\n}\\n\\nmodule.exports = {\\n createFromDefinition: createFromDefinition,\\n parseSelector: parseSelector,\\n create: create,\\n mergeObjects: mergeObjects,\\n \\\"default\\\": create\\n};\\n\\n//# sourceURL=webpack://@green-code-studio/context-menu/./node_modules/fast-creator/dist/entry.js?\");\n\n/***/ }),\n\n/***/ \"./src/contextMenu.js\":\n/*!****************************!*\\\n !*** ./src/contextMenu.js ***!\n \\****************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ ContextMenu: () => (/* binding */ ContextMenu)\\n/* harmony export */ });\\n/* harmony import */ var fast_creator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-creator */ \\\"./node_modules/fast-creator/dist/entry.js\\\");\\n\\r\\n\\r\\nclass ContextMenu {\\r\\n constructor(elements, parent = null) {\\r\\n this.generateHtml(elements);\\r\\n this.bindGlobalEvents();\\r\\n this.subMenu = null;\\r\\n }\\r\\n\\r\\n generateHtml(elements) {\\r\\n this.html = (0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('ul.contextMenu');\\r\\n for (const element of elements) {\\r\\n this.html.append(this.generateElementHtml(element));\\r\\n }\\r\\n this.html.onmousedown = e => e.stopPropagation();\\r\\n }\\r\\n\\r\\n generateElementHtml(element) {\\r\\n const elementHtml = (0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('li.element', {tabIndex: 0});\\r\\n if (element.submenu) {\\r\\n elementHtml.classList.add('hasSubmenu');\\r\\n }\\r\\n if (element.icon)\\r\\n elementHtml.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('span.icon', {className: element.icon}));\\r\\n else\\r\\n elementHtml.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('span.iconPlaceholder'));\\r\\n\\r\\n elementHtml.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('span.content', {text: element.text || ''}));\\r\\n if (element.onclick) {\\r\\n elementHtml.onclick = e => {\\r\\n element.onclick.call(elementHtml, e);\\r\\n this.destroy()\\r\\n };\\r\\n elementHtml.onkeydown = e => {\\r\\n if (e.key == 'Enter') {\\r\\n element.onclick.call(elementHtml, e);\\r\\n this.destroy()\\r\\n } else if (e.key == 'ArrowDown') {\\r\\n (elementHtml.nextElementSibling ?? elementHtml.parentNode.firstElementChild).focus();\\r\\n } else if (e.key == 'ArrowUp') {\\r\\n (elementHtml.previousElementSibling ?? elementHtml.parentNode.lastElementChild).focus();\\r\\n }\\r\\n };\\r\\n }\\r\\n elementHtml.onmouseenter = e => {\\r\\n elementHtml.focus();\\r\\n if (this.submenu) {\\r\\n this.submenu.destroy();\\r\\n this.submenu = null;\\r\\n }\\r\\n if (element.submenu) {\\r\\n this.submenu = new ContextMenu(element.submenu);\\r\\n document.body.appendChild(this.submenu.html);\\r\\n this.submenu.setPositionToParent(elementHtml);\\r\\n }\\r\\n };\\r\\n return elementHtml;\\r\\n }\\r\\n\\r\\n bindGlobalEvents() {\\r\\n this.bindedDestroyEvent = this.destroy.bind(this);\\r\\n addEventListener('mousedown', this.bindedDestroyEvent);\\r\\n addEventListener('blur', this.bindedDestroyEvent);\\r\\n }\\r\\n\\r\\n setPositionToPointer(event) {\\r\\n const placeHorizontal = innerWidth - event.clientX;\\r\\n const placeVertical = innerHeight - event.clientY;\\r\\n const isRight = this.html.offsetWidth <= placeHorizontal;\\r\\n const isBottom = this.html.offsetHeight <= placeVertical;\\r\\n\\r\\n this.html.style.left = 'auto';\\r\\n this.html.style.right = 'auto';\\r\\n this.html.style.top = 'auto';\\r\\n this.html.style.bottom = 'auto';\\r\\n\\r\\n if (isRight)\\r\\n this.html.style.left = `${event.clientX}px`;\\r\\n else\\r\\n this.html.style.right = `${Math.min(innerWidth - event.clientX + 1, innerWidth - this.html.offsetWidth)}px`;\\r\\n\\r\\n if (isBottom)\\r\\n this.html.style.top = `${event.clientY}px`;\\r\\n else\\r\\n this.html.style.bottom = `${Math.min(innerHeight - event.clientY + 1, innerHeight - this.html.offsetHeight)}px`;\\r\\n }\\r\\n\\r\\n setPositionToParent(parent) {\\r\\n const parentBoundingBox = parent.getBoundingClientRect();\\r\\n const placeRight = innerWidth - parentBoundingBox.right;\\r\\n const placeLeft = parentBoundingBox.left;\\r\\n const placeBottom = innerHeight - parentBoundingBox.top;\\r\\n const isRight = this.html.offsetWidth <= placeRight;\\r\\n const isBottom = this.html.offsetHeight <= placeBottom;\\r\\n\\r\\n this.html.style.left = 'auto';\\r\\n this.html.style.right = 'auto';\\r\\n this.html.style.top = 'auto';\\r\\n this.html.style.bottom = 'auto';\\r\\n\\r\\n if (isRight)\\r\\n this.html.style.left = `${parentBoundingBox.right}px`;\\r\\n else\\r\\n this.html.style.right = `${Math.min(innerWidth - parentBoundingBox.left, innerWidth - this.html.offsetWidth)}px`;\\r\\n\\r\\n if (isBottom)\\r\\n this.html.style.top = `${parentBoundingBox.top}px`;\\r\\n else\\r\\n this.html.style.bottom = `${Math.min(innerHeight - parentBoundingBox.bottom, innerHeight - this.html.offsetHeight)}px`;\\r\\n }\\r\\n\\r\\n destroy() {\\r\\n this.html.remove();\\r\\n removeEventListener('mousedown', this.bindedDestroyEvent);\\r\\n removeEventListener('blur', this.bindedDestroyEvent);\\r\\n }\\r\\n\\r\\n static openContextMenu(event, elements) {\\r\\n const menu = new ContextMenu(elements);\\r\\n document.body.appendChild(menu.html);\\r\\n menu.setPositionToPointer(event);\\r\\n event.preventDefault();\\r\\n if (menu.html.firstChild)\\r\\n menu.html.firstChild.focus();\\r\\n\\r\\n return menu;\\r\\n }\\r\\n}\\r\\n\\n\\n//# sourceURL=webpack://@green-code-studio/context-menu/./src/contextMenu.js?\");\n\n/***/ }),\n\n/***/ \"./src/index.js\":\n/*!**********************!*\\\n !*** ./src/index.js ***!\n \\**********************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ ContextMenu: () => (/* reexport safe */ _contextMenu_js__WEBPACK_IMPORTED_MODULE_0__.ContextMenu)\\n/* harmony export */ });\\n/* harmony import */ var _contextMenu_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./contextMenu.js */ \\\"./src/contextMenu.js\\\");\\n\\r\\n\\n\\n//# sourceURL=webpack://@green-code-studio/context-menu/./src/index.js?\");\n\n/***/ })\n\n/******/ });\n/************************************************************************/\n/******/ // The module cache\n/******/ var __webpack_module_cache__ = {};\n/******/ \n/******/ // The require function\n/******/ function __nested_webpack_require_18635__(moduleId) {\n/******/ \t// Check if module is in cache\n/******/ \tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \tif (cachedModule !== undefined) {\n/******/ \t\treturn cachedModule.exports;\n/******/ \t}\n/******/ \t// Create a new module (and put it into the cache)\n/******/ \tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t// no module.id needed\n/******/ \t\t// no module.loaded needed\n/******/ \t\texports: {}\n/******/ \t};\n/******/ \n/******/ \t// Execute the module function\n/******/ \t__webpack_modules__[moduleId](module, module.exports, __nested_webpack_require_18635__);\n/******/ \n/******/ \t// Return the exports of the module\n/******/ \treturn module.exports;\n/******/ }\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__nested_webpack_require_18635__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__nested_webpack_require_18635__.o(definition, key) && !__nested_webpack_require_18635__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__nested_webpack_require_18635__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/make namespace object */\n/******/ (() => {\n/******/ \t// define __esModule on exports\n/******/ \t__nested_webpack_require_18635__.r = (exports) => {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/ })();\n/******/ \n/************************************************************************/\n/******/ \n/******/ // startup\n/******/ // Load entry module and return exports\n/******/ // This entry module can't be inlined because the eval devtool is used.\n/******/ var __nested_webpack_exports__ = __nested_webpack_require_18635__(\"./src/index.js\");\n/******/ var __webpack_exports__ContextMenu = __nested_webpack_exports__.ContextMenu;\n/******/ \n/******/ \n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./node_modules/@green-code-studio/context-menu/dist/index.mjs?");
108
108
 
109
109
  /***/ }),
110
110
 
@@ -194,7 +194,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
194
194
  \**************************/
195
195
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
196
196
 
197
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TableView: () => (/* binding */ TableView)\n/* harmony export */ });\n/* harmony import */ var _green_code_studio_context_menu_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @green-code-studio/context-menu/dist/index.mjs */ \"./node_modules/@green-code-studio/context-menu/dist/index.mjs\");\n/* harmony import */ var fast_creator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fast-creator */ \"./node_modules/fast-creator/dist/entry.js\");\n/* harmony import */ var _abstractView_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstractView.js */ \"./src/abstractView.js\");\n/* harmony import */ var _i18n_xml__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./i18n.xml */ \"./src/i18n.xml\");\n\r\n\r\n\r\n\r\n\r\nclass TableView extends _abstractView_js__WEBPACK_IMPORTED_MODULE_2__.AbstractView {\r\n constructor(objectsList, params) {\r\n super();\r\n this.objectsList = objectsList;\r\n this.init();\r\n window.dbgTable = this;\r\n this.params=params??{};\r\n }\r\n\r\n init() {\r\n this.head = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.head');\r\n this.append(this.head);\r\n this.refreshHeader();\r\n const bodyContainer = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.bodyContainer')\r\n this.body = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.body')\r\n bodyContainer.append(this.body)\r\n this.append(bodyContainer);\r\n this.setColumnsWidths();\r\n addEventListener('resize', this.setColumnsWidths.bind(this))\r\n addEventListener('copy', this.onCopy.bind(this));\r\n this.addEventListener('scroll', this.onScroll.bind(this));\r\n }\r\n\r\n refreshHeader() {\r\n while (this.head.firstChild) this.head.firstChild.remove();\r\n\r\n this.head.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.column.icon'))\r\n for (let column of this.objectsList.visibleColumns) {\r\n let node = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.column')\r\n this.head.append(node);\r\n node.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('span.name', {text: column.name}));\r\n if (column.sortName) {\r\n node.classList.add('ableToSort');\r\n node.dataset.sortName = column.sortName\r\n node.onclick = () => {\r\n let sortName = column.sortName || x.dataset.value;\r\n if (this.objectsList.sort && this.objectsList.sort.col === column.sortName) {\r\n this.objectsList.sort.desc = !this.objectsList.sort.desc;\r\n } else {\r\n this.objectsList.sort = {col: column.sortName, desc: false};\r\n }\r\n if (!this.objectsList.infiniteScrollEnabled) {\r\n this.objectsList.start = 0;\r\n }\r\n this.objectsList.refresh();\r\n }\r\n }\r\n }\r\n this.head.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.column.actions'))\r\n }\r\n\r\n loadData(data, start, limit, infiniteScrollEnabled) {\r\n this.refreshSortIndicators();\r\n super.loadData(data, start, limit, infiniteScrollEnabled)\r\n this.setColumnsWidths();\r\n }\r\n\r\n get rowHeight() {\r\n return parseFloat(window.getComputedStyle(this).getPropertyValue('--rowHeight') ?? 31);\r\n }\r\n\r\n generateRow(data) {\r\n let tr = this.body.querySelector(`.tr[data-row=\"${data.id}\"]`);\r\n if (!tr) {\r\n tr = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.tr');\r\n tr.draggable = true;\r\n }\r\n tr.classList.toggle('selected', this.objectsList.selected.has(data.id))\r\n this.fillRowContent(tr, data);\r\n return tr;\r\n }\r\n\r\n fillRowContent(tr, data) {\r\n tr.lastData = data;\r\n while (tr.firstChild) {\r\n tr.removeChild(tr.firstChild)\r\n }\r\n tr.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.td.icon', {className: this.objectsList.icon}));\r\n for (let column of this.objectsList.visibleColumns) {\r\n let td = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.td');\r\n tr.append(td);\r\n if (this.multiEdit && column.dataName) {\r\n tr.dataset.id = data.id;\r\n td.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('input', {\r\n data: {name: column.dataName},\r\n value: data[column.dataName],\r\n onclick: e => e.stopPropagation(),\r\n onchange: () => this.multiEditChanged(tr)\r\n }));\r\n } else {\r\n td.append(column.content?.call(column, data) || data[column.dataName] || '');\r\n }\r\n }\r\n let actionsTd = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.td.actions');\r\n tr.append(actionsTd);\r\n let actions = this.objectsList.generateActions([data], 'row');\r\n if (this.multiEdit && data.__isMultirowEdited) {\r\n actions = [\r\n {\r\n name: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_3__.t)(\"objectList.saveRow\"),\r\n icon: 'icon-save',\r\n command: () => {\r\n this.multiEditChanged(tr, true)\r\n }\r\n }\r\n ]\r\n }\r\n for (let action of actions) {\r\n let actionButton = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)(action.href ? 'a.button' : 'button', {\r\n title: action.name\r\n });\r\n actionsTd.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)(actionButton));\r\n actionButton.classList.add('action-' + (action.action ?? 'view'));\r\n\r\n if (action.href) {\r\n actionButton.href = action.href;\r\n }\r\n if (action.command) {\r\n actionButton.onclick = action.command;\r\n }\r\n if (action.icon) {\r\n actionButton.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('span', {classList: [action.icon]}));\r\n } else {\r\n actionButton.textContent = action.name;\r\n }\r\n }\r\n\r\n\r\n tr.dataset.row = data.id;\r\n tr.oncontextmenu = this.contextMenu.bind(this, tr);\r\n tr.onclick = this.trOnClick.bind(this, data);\r\n tr.ondblclick = this.trOnDblClick.bind(this, data, tr);\r\n tr.onkeydown = this.trOnKeyDown.bind(this, data, tr);\r\n tr.ondragstart = this.trOnDragStart.bind(this, data, tr);\r\n }\r\n\r\n setColumnsWidths() {\r\n const widths = this.calculateColumnsWidths();\r\n for (let tr of this.body.children) {\r\n for (let i = 0; i < widths.length; i++) {\r\n tr.children[i].style.width = widths[i] + 'px';\r\n }\r\n }\r\n let sum = 0;\r\n for (let i = 0; i < widths.length; i++) {\r\n let node = this.head.children[i];\r\n if (node) {\r\n if (i + 1 < widths.length)\r\n node.style.width = widths[i] + 1 + 'px';\r\n else\r\n node.style.width = widths[i] + 'px';\r\n node.style.left = sum + 'px';\r\n }\r\n sum += widths[i];\r\n }\r\n }\r\n\r\n calculateColumnsWidths() {\r\n let needed = [{base: 30, grow: 0}];\r\n\r\n for (let column of this.objectsList.visibleColumns) {\r\n needed.push({base: column.width || 10, grow: typeof (column.widthGrow) == \"number\" ? column.widthGrow : 1});\r\n }\r\n let actionWidth = Math.ceil(Array.from(this.querySelectorAll('.td.actions')).map(x => {\r\n if (x.lastElementChild)\r\n return x.lastElementChild.getBoundingClientRect().right - x.getBoundingClientRect().left + parseFloat(getComputedStyle(x).paddingRight);\r\n else\r\n return 0;\r\n }).reduce((a, b) => Math.max(a, b), 0));\r\n needed.push({base: actionWidth, grow: 0});\r\n let availableToGrow = this.clientWidth - needed.map(x => x.base).reduce((a, b) => a + b, 0);\r\n let sumGrow = needed.map(x => x.grow).reduce((a, b) => a + b, 0);\r\n if (this.params?.wide) {\r\n return needed.map(x => x.base + x.grow * Math.max(100, availableToGrow / sumGrow));\r\n } else {\r\n if (availableToGrow > 0 && sumGrow > 0) {\r\n return needed.map(x => x.base + x.grow / sumGrow * availableToGrow);\r\n } else {\r\n return needed.map(x => x.base);\r\n }\r\n }\r\n }\r\n\r\n refreshSortIndicators() {\r\n this.head.querySelectorAll('[data-order]').forEach(x => delete x.dataset.order);\r\n if (this.objectsList.sort)\r\n this.head.querySelectorAll(`[data-sort-name=\"${this.objectsList.sort.col}\"]`).forEach(x => x.dataset.order = this.objectsList.sort.desc ? 'desc' : 'asc');\r\n }\r\n\r\n contextMenu(tr, event) {\r\n event.stopPropagation();\r\n if (!this.objectsList.selected.has(tr.dataset.row)) {\r\n this.objectsList.selected.clear();\r\n this.objectsList.selected.add(tr.dataset.row)\r\n this.objectsList.selectedMain = tr.dataset.row;\r\n this.refreshSelectedClasses();\r\n }\r\n const rows = this.objectsList.getSelectedData();\r\n let actions = this.objectsList.generateActions(rows, 'contextMenu');\r\n let elements = actions.map(action => ({\r\n text: action.name,\r\n icon: action.icon,\r\n class: action.action ? 'action-' + action.action : '',\r\n onclick: action.command || (() => this.objectsList.gotoUrl(action.href))\r\n }));\r\n elements.push({\r\n text: 'copy',\r\n icon: 'icon-copy',\r\n onclick: () => {\r\n this.forceCopy(rows);\r\n }\r\n })\r\n _green_code_studio_context_menu_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.ContextMenu.openContextMenu(event, elements);\r\n }\r\n\r\n refreshSelectedClasses() {\r\n for (const tr of this.body.children) {\r\n tr.classList.toggle('selected', this.objectsList.selected.has(tr.dataset.row));\r\n tr.classList.toggle('selectedMain', this.objectsList.selectedMain == tr.dataset.row);\r\n if (this.objectsList.selectedMain == tr.dataset.row) {\r\n tr.tabIndex = 1;\r\n tr.focus();\r\n getSelection().selectAllChildren(tr)\r\n } else {\r\n tr.tabIndex = -1;\r\n }\r\n }\r\n }\r\n\r\n\r\n trOnClick(row, e) {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n console.log('click')\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.clear();\r\n }\r\n\r\n if (e.shiftKey) {\r\n const mainIndex = rowsIds.indexOf(this.objectsList.selectedMain);\r\n const clickedIndex = rowsIds.indexOf(row.id);\r\n if (clickedIndex >= 0 && mainIndex >= 0)\r\n rowsIds.slice(Math.min(mainIndex, clickedIndex), Math.max(mainIndex, clickedIndex) + 1).forEach(x => this.objectsList.selected.add(x));\r\n } else {\r\n if (this.objectsList.selected.has(row.id))\r\n this.objectsList.selected.delete(row.id);\r\n else\r\n this.objectsList.selected.add(row.id);\r\n\r\n this.objectsList.selectedMain = row.id;\r\n }\r\n\r\n this.refreshSelectedClasses();\r\n }\r\n\r\n trOnDblClick(row, tr, e) {\r\n if (!this.objectsList.selected.has(tr.dataset.row)) {\r\n this.objectsList.selected.clear();\r\n this.objectsList.selected.add(tr.dataset.row)\r\n this.objectsList.selectedMain = tr.dataset.row;\r\n this.refreshSelectedClasses();\r\n }\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'dblClick').find(x => x.main);\r\n if (action) {\r\n if (action.command) {\r\n action.command();\r\n } else if (action.href) {\r\n this.objectsList.gotoUrl(action.href)\r\n }\r\n }\r\n }\r\n\r\n selectRange(start, end) {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n let startIndex = rowsIds.indexOf(start);\r\n let endIndex = rowsIds.indexOf(end);\r\n if (endIndex < startIndex) {\r\n let tmp = startIndex;\r\n startIndex = endIndex;\r\n endIndex = tmp;\r\n }\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n this.objectsList.selected.add(rowsIds[i]);\r\n }\r\n }\r\n\r\n trOnKeyDown(row, tr, e) {\r\n console.log('trOnKeyDown')\r\n if (e.key === 'Enter') {\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'enter').find(x => x.main);\r\n if (action) {\r\n if (action.command) {\r\n action.command();\r\n } else if (action.href) {\r\n this.objectsList.gotoUrl(action.href)\r\n }\r\n }\r\n } else if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n let index = rowsIds.indexOf(this.objectsList.selectedMain);\r\n if (e.key === 'ArrowDown') {\r\n if (index < rowsIds.length) index++;\r\n else index = rowsIds.length - 1;\r\n } else {\r\n if (index > 0) index--;\r\n }\r\n const id = rowsIds[index];\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.clear();\r\n }\r\n if (e.shiftKey) {\r\n if (!this.objectsList.selectedShiftStart) {\r\n this.objectsList.selectedShiftStart = this.objectsList.selectedMain;\r\n }\r\n this.selectRange(this.objectsList.selectedShiftStart, id)\r\n } else {\r\n this.objectsList.selectedShiftStart = null;\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.add(id);\r\n }\r\n }\r\n this.objectsList.selectedMain = id;\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n } else if (e.key === ' ') {\r\n if (this.objectsList.selected.has(this.objectsList.selectedMain))\r\n this.objectsList.selected.delete(this.objectsList.selectedMain);\r\n else\r\n this.objectsList.selected.add(this.objectsList.selectedMain);\r\n\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n } else if (e.key === 'a') {\r\n if (e.ctrlKey)\r\n this.objectsList.selected.selectAll();\r\n\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n onCopy(e) {\r\n if (this.copyForced) {\r\n this.fillDataTransfer(e.clipboardData, this.copyForced);\r\n e.preventDefault();\r\n } else if (document.querySelector(':focus')?.findParent(x => x === this)) {\r\n this.fillDataTransfer(e.clipboardData, this.objectsList.selected);\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n trOnDragStart(row, oryginalTr, e) {\r\n if (!this.objectsList.selected.has(row.id)) {\r\n this.objectsList.selected.clear()\r\n this.objectsList.selected.add(row.id)\r\n this.refreshSelectedClasses();\r\n }\r\n this.fillDataTransfer(e.dataTransfer, this.objectsList.selected);\r\n }\r\n\r\n fillDataTransfer(dataTransfer, ids) {\r\n const trs = Array.from(this.body.children).filter(tr => ids.has(tr.dataset.row));\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'dataTransfer').find(x => x.main);\r\n if (action && action.href) {\r\n dataTransfer.setData('text/uri-list', new URL(action.href, document.baseURI));\r\n }\r\n if (action && action.hrefArray) {\r\n dataTransfer.setData('text/uri-list', action.hrefArray.map(x => new URL(x, document.baseURI)).map(x => x.toString()).join(\"\\r\\n#\\r\\n\"));\r\n }\r\n dataTransfer.setData('text/html', this.generateTableHtml(trs));\r\n dataTransfer.setData('text/plain', this.generateTableTextPlain(trs));\r\n\r\n }\r\n\r\n generateTableHtml(trs) {\r\n const thead = '<thead><tr>' + Array.from(this.head.querySelectorAll('.column')).map(x => '<th>' + x.innerHTML + '</th>').join('') + '</tr></thead>';\r\n const tbody = '<tbody>' + trs.map(tr => {\r\n return '<tr>' + Array.from(tr.children).slice(1, -1).map(td => {\r\n return '<td>' + td.innerHTML + '</td>';\r\n }).join('') + '</tr>';\r\n }).join('') + '</tbody>'\r\n return '<table>' + thead + tbody + '</table>';\r\n }\r\n\r\n generateTableTextPlain(trs) {\r\n const head = Array.from(this.head.querySelectorAll('.column')).map(x => x.textContent.replace(/\\r\\n/gm, ' ')).join(\"\\t\")\r\n const body = trs.map(tr => Array.from(tr.children).slice(1).map(x => x.textContent.replace(/\\r\\n/gm, ' ')).join(\"\\t\")).join(\"\\r\\n\")\r\n return head + \"\\r\\n\" + body;\r\n }\r\n\r\n calcMaxVisibleItems(height) {\r\n return Math.floor((height - this.head.clientHeight) / this.rowHeight);\r\n }\r\n\r\n forceCopy(rows) {\r\n this.copyForced = new Set(rows.map(x => x.id));\r\n document.execCommand(\"copy\");\r\n setTimeout(() => this.copyForced = null, 100);\r\n }\r\n\r\n startMultiEdit() {\r\n this.multiEdit = true;\r\n }\r\n\r\n multiEditChanged(tr, save = false) {\r\n let data = [...tr.querySelectorAll('[data-name]')].map(x => [x.dataset.name, x.value]);\r\n let dataObj = Object.fromEntries(data);\r\n this.objectsList.multiEditChanged(tr.dataset.id, dataObj, save);\r\n this.fillRowContent(tr, {...tr.lastData, ...dataObj, __isMultirowEdited: true});\r\n this.setColumnsWidths();\r\n }\r\n}\r\n\r\ncustomElements.define('table-view', TableView);\r\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/tableView.js?");
197
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TableView: () => (/* binding */ TableView)\n/* harmony export */ });\n/* harmony import */ var _green_code_studio_context_menu_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @green-code-studio/context-menu/dist/index.mjs */ \"./node_modules/@green-code-studio/context-menu/dist/index.mjs\");\n/* harmony import */ var fast_creator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fast-creator */ \"./node_modules/fast-creator/dist/entry.js\");\n/* harmony import */ var _abstractView_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstractView.js */ \"./src/abstractView.js\");\n/* harmony import */ var _i18n_xml__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./i18n.xml */ \"./src/i18n.xml\");\n\r\n\r\n\r\n\r\n\r\nclass TableView extends _abstractView_js__WEBPACK_IMPORTED_MODULE_2__.AbstractView {\r\n constructor(objectsList, params) {\r\n super();\r\n this.objectsList = objectsList;\r\n this.init();\r\n window.dbgTable = this;\r\n this.params=params??{};\r\n }\r\n\r\n init() {\r\n this.head = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.head');\r\n this.append(this.head);\r\n this.refreshHeader();\r\n const bodyContainer = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.bodyContainer')\r\n this.body = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.body')\r\n bodyContainer.append(this.body)\r\n this.append(bodyContainer);\r\n this.setColumnsWidths();\r\n addEventListener('resize', this.setColumnsWidths.bind(this))\r\n addEventListener('copy', this.onCopy.bind(this));\r\n this.addEventListener('scroll', this.onScroll.bind(this));\r\n }\r\n\r\n refreshHeader() {\r\n while (this.head.firstChild) this.head.firstChild.remove();\r\n\r\n this.head.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.column.icon'))\r\n for (let column of this.objectsList.visibleColumns) {\r\n let node = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.column')\r\n this.head.append(node);\r\n node.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('span.name', {text: column.name}));\r\n if (column.sortName) {\r\n node.classList.add('ableToSort');\r\n node.dataset.sortName = column.sortName\r\n node.onclick = () => {\r\n let sortName = column.sortName || x.dataset.value;\r\n if (this.objectsList.sort && this.objectsList.sort.col === column.sortName) {\r\n this.objectsList.sort.desc = !this.objectsList.sort.desc;\r\n } else {\r\n this.objectsList.sort = {col: column.sortName, desc: false};\r\n }\r\n if (!this.objectsList.infiniteScrollEnabled) {\r\n this.objectsList.start = 0;\r\n }\r\n this.objectsList.refresh();\r\n }\r\n }\r\n }\r\n this.head.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.column.actions'))\r\n }\r\n\r\n loadData(data, start, limit, infiniteScrollEnabled) {\r\n this.refreshSortIndicators();\r\n super.loadData(data, start, limit, infiniteScrollEnabled)\r\n this.setColumnsWidths();\r\n }\r\n\r\n get rowHeight() {\r\n return parseFloat(window.getComputedStyle(this).getPropertyValue('--rowHeight') ?? 31);\r\n }\r\n\r\n generateRow(data) {\r\n let tr = this.body.querySelector(`.tr[data-row=\"${data.id}\"]`);\r\n if (!tr) {\r\n tr = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.tr');\r\n tr.draggable = true;\r\n }\r\n tr.classList.toggle('selected', this.objectsList.selected.has(data.id))\r\n this.fillRowContent(tr, data);\r\n return tr;\r\n }\r\n\r\n fillRowContent(tr, data) {\r\n tr.lastData = data;\r\n while (tr.firstChild) {\r\n tr.removeChild(tr.firstChild)\r\n }\r\n tr.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.td.icon', {className: this.objectsList.icon}));\r\n for (let column of this.objectsList.visibleColumns) {\r\n let td = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.td');\r\n tr.append(td);\r\n if (this.multiEdit && column.dataName) {\r\n tr.dataset.id = data.id;\r\n td.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('input', {\r\n data: {name: column.dataName},\r\n value: data[column.dataName],\r\n onclick: e => e.stopPropagation(),\r\n onchange: () => this.multiEditChanged(tr)\r\n }));\r\n } else {\r\n td.append(column.content?.call(column, data) || data[column.dataName] || '');\r\n }\r\n }\r\n let actionsTd = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('.td.actions');\r\n tr.append(actionsTd);\r\n let actions = this.objectsList.generateActions([data], 'row');\r\n if (this.multiEdit && data.__isMultirowEdited) {\r\n actions = [\r\n {\r\n name: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_3__.t)(\"objectList.saveRow\"),\r\n icon: 'icon-save',\r\n command: () => {\r\n this.multiEditChanged(tr, true)\r\n }\r\n }\r\n ]\r\n }\r\n for (let action of actions) {\r\n let actionButton = (0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)(action.href ? 'a.button' : 'button', {\r\n title: action.name\r\n });\r\n actionsTd.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)(actionButton));\r\n actionButton.classList.add('action-' + (action.action ?? 'view'));\r\n\r\n if (action.href) {\r\n actionButton.href = action.href;\r\n }\r\n if (action.command) {\r\n actionButton.onclick = action.command;\r\n }\r\n if (action.icon) {\r\n actionButton.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_1__.create)('span', {classList: [action.icon]}));\r\n } else {\r\n actionButton.textContent = action.name;\r\n }\r\n }\r\n\r\n\r\n tr.dataset.row = data.id;\r\n tr.oncontextmenu = this.contextMenu.bind(this, tr);\r\n tr.onclick = this.trOnClick.bind(this, data);\r\n tr.ondblclick = this.trOnDblClick.bind(this, data, tr);\r\n tr.onkeydown = this.trOnKeyDown.bind(this, data, tr);\r\n tr.ondragstart = this.trOnDragStart.bind(this, data, tr);\r\n }\r\n\r\n setColumnsWidths() {\r\n const widths = this.calculateColumnsWidths();\r\n for (let tr of this.body.children) {\r\n for (let i = 0; i < widths.length; i++) {\r\n tr.children[i].style.width = widths[i] + 'px';\r\n }\r\n }\r\n let sum = 0;\r\n for (let i = 0; i < widths.length; i++) {\r\n let node = this.head.children[i];\r\n if (node) {\r\n if (i + 1 < widths.length)\r\n node.style.width = widths[i] + 1 + 'px';\r\n else\r\n node.style.width = widths[i] + 'px';\r\n node.style.left = sum + 'px';\r\n }\r\n sum += widths[i];\r\n }\r\n }\r\n\r\n calculateColumnsWidths() {\r\n let needed = [{base: 30, grow: 0}];\r\n\r\n for (let column of this.objectsList.visibleColumns) {\r\n needed.push({base: column.width || 10, grow: typeof (column.widthGrow) == \"number\" ? column.widthGrow : 1});\r\n }\r\n let actionWidth = Math.ceil(Array.from(this.querySelectorAll('.td.actions')).map(x => {\r\n if (x.lastElementChild)\r\n return x.lastElementChild.getBoundingClientRect().right - x.getBoundingClientRect().left + parseFloat(getComputedStyle(x).paddingRight);\r\n else\r\n return 0;\r\n }).reduce((a, b) => Math.max(a, b), 0));\r\n needed.push({base: actionWidth, grow: 0});\r\n let availableToGrow = this.clientWidth - needed.map(x => x.base).reduce((a, b) => a + b, 0);\r\n let sumGrow = needed.map(x => x.grow).reduce((a, b) => a + b, 0);\r\n if (this.params?.wide) {\r\n return needed.map(x => x.base + x.grow * Math.max(100, availableToGrow / sumGrow));\r\n } else {\r\n if (availableToGrow > 0 && sumGrow > 0) {\r\n return needed.map(x => x.base + x.grow / sumGrow * availableToGrow);\r\n } else {\r\n return needed.map(x => x.base);\r\n }\r\n }\r\n }\r\n\r\n refreshSortIndicators() {\r\n this.head.querySelectorAll('[data-order]').forEach(x => delete x.dataset.order);\r\n if (this.objectsList.sort)\r\n this.head.querySelectorAll(`[data-sort-name=\"${this.objectsList.sort.col}\"]`).forEach(x => x.dataset.order = this.objectsList.sort.desc ? 'desc' : 'asc');\r\n }\r\n\r\n contextMenu(tr, event) {\r\n event.stopPropagation();\r\n if (!this.objectsList.selected.has(tr.dataset.row)) {\r\n this.objectsList.selected.clear();\r\n this.objectsList.selected.add(tr.dataset.row)\r\n this.objectsList.selectedMain = tr.dataset.row;\r\n this.refreshSelectedClasses();\r\n }\r\n const rows = this.objectsList.getSelectedData();\r\n let actions = this.objectsList.generateActions(rows, 'contextMenu');\r\n let actions2=[];\r\n for (const action of actions) {\r\n actions2.push(action);\r\n if(action.href){\r\n actions2.push({...action, href:null, command:()=>window.open(action.href), name:(action.name??'')+' ('+(0,_i18n_xml__WEBPACK_IMPORTED_MODULE_3__.t)('objectList.inNewTab')+')'});\r\n }\r\n }\r\n let elements = actions2.map(action => ({\r\n text: action.name,\r\n icon: action.icon,\r\n class: action.action ? 'action-' + action.action : '',\r\n onclick: action.command || (() => this.objectsList.gotoUrl(action.href))\r\n }));\r\n elements.push({\r\n text: 'copy',\r\n icon: 'icon-copy',\r\n onclick: () => {\r\n this.forceCopy(rows);\r\n }\r\n })\r\n _green_code_studio_context_menu_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.ContextMenu.openContextMenu(event, elements);\r\n }\r\n\r\n refreshSelectedClasses() {\r\n for (const tr of this.body.children) {\r\n tr.classList.toggle('selected', this.objectsList.selected.has(tr.dataset.row));\r\n tr.classList.toggle('selectedMain', this.objectsList.selectedMain == tr.dataset.row);\r\n if (this.objectsList.selectedMain == tr.dataset.row) {\r\n tr.tabIndex = 1;\r\n tr.focus();\r\n getSelection().selectAllChildren(tr)\r\n } else {\r\n tr.tabIndex = -1;\r\n }\r\n }\r\n }\r\n\r\n\r\n trOnClick(row, e) {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n console.log('click')\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.clear();\r\n }\r\n\r\n if (e.shiftKey) {\r\n const mainIndex = rowsIds.indexOf(this.objectsList.selectedMain);\r\n const clickedIndex = rowsIds.indexOf(row.id);\r\n if (clickedIndex >= 0 && mainIndex >= 0)\r\n rowsIds.slice(Math.min(mainIndex, clickedIndex), Math.max(mainIndex, clickedIndex) + 1).forEach(x => this.objectsList.selected.add(x));\r\n } else {\r\n if (this.objectsList.selected.has(row.id))\r\n this.objectsList.selected.delete(row.id);\r\n else\r\n this.objectsList.selected.add(row.id);\r\n\r\n this.objectsList.selectedMain = row.id;\r\n }\r\n\r\n this.refreshSelectedClasses();\r\n }\r\n\r\n trOnDblClick(row, tr, e) {\r\n if (!this.objectsList.selected.has(tr.dataset.row)) {\r\n this.objectsList.selected.clear();\r\n this.objectsList.selected.add(tr.dataset.row)\r\n this.objectsList.selectedMain = tr.dataset.row;\r\n this.refreshSelectedClasses();\r\n }\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'dblClick').find(x => x.main);\r\n if (action) {\r\n if (action.command) {\r\n action.command();\r\n } else if (action.href) {\r\n this.objectsList.gotoUrl(action.href)\r\n }\r\n }\r\n }\r\n\r\n selectRange(start, end) {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n let startIndex = rowsIds.indexOf(start);\r\n let endIndex = rowsIds.indexOf(end);\r\n if (endIndex < startIndex) {\r\n let tmp = startIndex;\r\n startIndex = endIndex;\r\n endIndex = tmp;\r\n }\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n this.objectsList.selected.add(rowsIds[i]);\r\n }\r\n }\r\n\r\n trOnKeyDown(row, tr, e) {\r\n console.log('trOnKeyDown')\r\n if (e.key === 'Enter') {\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'enter').find(x => x.main);\r\n if (action) {\r\n if (action.command) {\r\n action.command();\r\n } else if (action.href) {\r\n this.objectsList.gotoUrl(action.href)\r\n }\r\n }\r\n } else if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n let index = rowsIds.indexOf(this.objectsList.selectedMain);\r\n if (e.key === 'ArrowDown') {\r\n if (index < rowsIds.length) index++;\r\n else index = rowsIds.length - 1;\r\n } else {\r\n if (index > 0) index--;\r\n }\r\n const id = rowsIds[index];\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.clear();\r\n }\r\n if (e.shiftKey) {\r\n if (!this.objectsList.selectedShiftStart) {\r\n this.objectsList.selectedShiftStart = this.objectsList.selectedMain;\r\n }\r\n this.selectRange(this.objectsList.selectedShiftStart, id)\r\n } else {\r\n this.objectsList.selectedShiftStart = null;\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.add(id);\r\n }\r\n }\r\n this.objectsList.selectedMain = id;\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n } else if (e.key === ' ') {\r\n if (this.objectsList.selected.has(this.objectsList.selectedMain))\r\n this.objectsList.selected.delete(this.objectsList.selectedMain);\r\n else\r\n this.objectsList.selected.add(this.objectsList.selectedMain);\r\n\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n } else if (e.key === 'a') {\r\n if (e.ctrlKey)\r\n this.objectsList.selected.selectAll();\r\n\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n onCopy(e) {\r\n if (this.copyForced) {\r\n this.fillDataTransfer(e.clipboardData, this.copyForced);\r\n e.preventDefault();\r\n } else if (document.querySelector(':focus')?.findParent(x => x === this)) {\r\n this.fillDataTransfer(e.clipboardData, this.objectsList.selected);\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n trOnDragStart(row, oryginalTr, e) {\r\n if (!this.objectsList.selected.has(row.id)) {\r\n this.objectsList.selected.clear()\r\n this.objectsList.selected.add(row.id)\r\n this.refreshSelectedClasses();\r\n }\r\n this.fillDataTransfer(e.dataTransfer, this.objectsList.selected);\r\n }\r\n\r\n fillDataTransfer(dataTransfer, ids) {\r\n const trs = Array.from(this.body.children).filter(tr => ids.has(tr.dataset.row));\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'dataTransfer').find(x => x.main);\r\n if (action && action.href) {\r\n dataTransfer.setData('text/uri-list', new URL(action.href, document.baseURI));\r\n }\r\n if (action && action.hrefArray) {\r\n dataTransfer.setData('text/uri-list', action.hrefArray.map(x => new URL(x, document.baseURI)).map(x => x.toString()).join(\"\\r\\n#\\r\\n\"));\r\n }\r\n dataTransfer.setData('text/html', this.generateTableHtml(trs));\r\n dataTransfer.setData('text/plain', this.generateTableTextPlain(trs));\r\n\r\n }\r\n\r\n generateTableHtml(trs) {\r\n const thead = '<thead><tr>' + Array.from(this.head.querySelectorAll('.column')).map(x => '<th>' + x.innerHTML + '</th>').join('') + '</tr></thead>';\r\n const tbody = '<tbody>' + trs.map(tr => {\r\n return '<tr>' + Array.from(tr.children).slice(1, -1).map(td => {\r\n return '<td>' + td.innerHTML + '</td>';\r\n }).join('') + '</tr>';\r\n }).join('') + '</tbody>'\r\n return '<table>' + thead + tbody + '</table>';\r\n }\r\n\r\n generateTableTextPlain(trs) {\r\n const head = Array.from(this.head.querySelectorAll('.column')).map(x => x.textContent.replace(/\\r\\n/gm, ' ')).join(\"\\t\")\r\n const body = trs.map(tr => Array.from(tr.children).slice(1).map(x => x.textContent.replace(/\\r\\n/gm, ' ')).join(\"\\t\")).join(\"\\r\\n\")\r\n return head + \"\\r\\n\" + body;\r\n }\r\n\r\n calcMaxVisibleItems(height) {\r\n return Math.floor((height - this.head.clientHeight) / this.rowHeight);\r\n }\r\n\r\n forceCopy(rows) {\r\n this.copyForced = new Set(rows.map(x => x.id));\r\n document.execCommand(\"copy\");\r\n setTimeout(() => this.copyForced = null, 100);\r\n }\r\n\r\n startMultiEdit() {\r\n this.multiEdit = true;\r\n }\r\n\r\n multiEditChanged(tr, save = false) {\r\n let data = [...tr.querySelectorAll('[data-name]')].map(x => [x.dataset.name, x.value]);\r\n let dataObj = Object.fromEntries(data);\r\n this.objectsList.multiEditChanged(tr.dataset.id, dataObj, save);\r\n this.fillRowContent(tr, {...tr.lastData, ...dataObj, __isMultirowEdited: true});\r\n this.setColumnsWidths();\r\n }\r\n}\r\n\r\ncustomElements.define('table-view', TableView);\r\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/tableView.js?");
198
198
 
199
199
  /***/ }),
200
200
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@green-code-studio/objects-list",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "main": "src/index.js",
5
5
  "author": "Mateusz Krawczyk",
6
6
  "license": "MIT",
package/src/i18n.xml CHANGED
@@ -65,6 +65,10 @@
65
65
  <value lang="pl">Szukaj</value>
66
66
  <value lang="en">Search</value>
67
67
  </node>
68
+ <node name="inNewTab">
69
+ <value lang="pl">W nowej karcie</value>
70
+ <value lang="en">In new tab</value>
71
+ </node>
68
72
  </node>
69
73
  <node name="filter">
70
74
  <node name="none">
@@ -41,6 +41,7 @@ data-view {
41
41
  &.ableToSort {
42
42
  //@extend .icon;
43
43
  //@extend .icon-down;
44
+ cursor: pointer;
44
45
 
45
46
  &::before {
46
47
  transform: scaleY(0);
@@ -65,7 +66,6 @@ data-view {
65
66
  display: none;
66
67
  }
67
68
 
68
- cursor: pointer;
69
69
  }
70
70
 
71
71
 
package/src/tableView.js CHANGED
@@ -202,7 +202,14 @@ export class TableView extends AbstractView {
202
202
  }
203
203
  const rows = this.objectsList.getSelectedData();
204
204
  let actions = this.objectsList.generateActions(rows, 'contextMenu');
205
- let elements = actions.map(action => ({
205
+ let actions2=[];
206
+ for (const action of actions) {
207
+ actions2.push(action);
208
+ if(action.href){
209
+ actions2.push({...action, href:null, command:()=>window.open(action.href), name:(action.name??'')+' ('+t('objectList.inNewTab')+')'});
210
+ }
211
+ }
212
+ let elements = actions2.map(action => ({
206
213
  text: action.name,
207
214
  icon: action.icon,
208
215
  class: action.action ? 'action-' + action.action : '',