@genexus/genexus-ide-ui 0.0.70 → 0.0.72
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/dist/cjs/ch-checkbox_4.cjs.entry.js +75 -51
- package/dist/cjs/ch-shortcuts.cjs.entry.js +187 -0
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +101 -0
- package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +1 -2
- package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-object.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -2
- package/dist/cjs/gx-ide-references.cjs.entry.js +1 -2
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -2
- package/dist/cjs/gx-ide-template.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ww-images.cjs.entry.js +3 -3
- package/dist/cjs/gxg-form-textarea.cjs.entry.js +28 -9
- package/dist/cjs/gxg-text.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/_starting-template/template.css +1 -0
- package/dist/collection/components/ai-assistant/ai-assistant.css +389 -0
- package/dist/collection/components/ai-assistant/ai-assistant.js +268 -0
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +5 -0
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.ja.json +3 -0
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.zh.json +3 -0
- package/dist/collection/components/bpm-application-declaration/bpm-app-declaration.css +1 -0
- package/dist/collection/components/create-kb-from-server/create-kb-from-server.css +1 -0
- package/dist/collection/components/create-kb-from-server/create-kb-from-server.js +0 -1
- package/dist/collection/components/kb-manager-export/kb-manager-export.css +1 -0
- package/dist/collection/components/kb-manager-import/kb-manager-import.css +1 -0
- package/dist/collection/components/new-environment/new-environment.css +1 -0
- package/dist/collection/components/new-kb/new-kb.css +1 -0
- package/dist/collection/components/new-object/new-object.css +1 -0
- package/dist/collection/components/object-selector/object-selector.css +1 -0
- package/dist/collection/components/object-selector/object-selector.js +0 -1
- package/dist/collection/components/references/references.css +1 -0
- package/dist/collection/components/references/references.js +0 -1
- package/dist/collection/components/share-kb/share-kb.css +1 -0
- package/dist/collection/components/team-dev/commit/commit.css +1 -0
- package/dist/collection/components/team-dev/select-recent-comment/select-recent-comment.css +1 -0
- package/dist/collection/components/team-dev/update/update.css +1 -0
- package/dist/collection/components/team-dev/update/update.js +0 -1
- package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.css +1 -0
- package/dist/collection/components/team-dev/update-to-revision/update-to-revision.css +1 -0
- package/dist/collection/components/ww-images/ww-images.css +13 -13
- package/dist/collection/components/ww-images/ww-images.js +2 -3
- package/dist/components/ch-shortcuts.js +217 -0
- package/dist/components/form-textarea.js +30 -9
- package/dist/components/gx-ide-ai-assistant.d.ts +11 -0
- package/dist/components/gx-ide-ai-assistant.js +150 -0
- package/dist/components/gx-ide-bpm-app-declaration.js +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js +1 -2
- package/dist/components/gx-ide-kb-manager-export.js +1 -1
- package/dist/components/gx-ide-kb-manager-import.js +1 -1
- package/dist/components/gx-ide-new-environment.js +1 -1
- package/dist/components/gx-ide-new-kb.js +1 -1
- package/dist/components/gx-ide-new-object.js +1 -1
- package/dist/components/gx-ide-object-selector.js +1 -2
- package/dist/components/gx-ide-references.js +1 -2
- package/dist/components/gx-ide-share-kb.js +1 -1
- package/dist/components/gx-ide-team-dev-commit.js +1 -1
- package/dist/components/gx-ide-team-dev-select-recent-comment.js +1 -1
- package/dist/components/gx-ide-team-dev-update-partial-selection.js +1 -1
- package/dist/components/gx-ide-team-dev-update-to-revision.js +1 -1
- package/dist/components/gx-ide-team-dev-update.js +1 -2
- package/dist/components/gx-ide-template.js +1 -1
- package/dist/components/gx-ide-ww-images.js +3 -3
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +2 -0
- package/dist/components/text.js +1 -1
- package/dist/components/tree-view-item.js +1 -1
- package/dist/components/tree-view-render.js +73 -48
- package/dist/components/tree-view.js +2 -2
- package/dist/esm/ch-checkbox_4.entry.js +75 -51
- package/dist/esm/ch-shortcuts.entry.js +183 -0
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-ai-assistant.entry.js +97 -0
- package/dist/esm/gx-ide-bpm-app-declaration.entry.js +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -2
- package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
- package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
- package/dist/esm/gx-ide-new-environment.entry.js +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js +1 -1
- package/dist/esm/gx-ide-new-object.entry.js +1 -1
- package/dist/esm/gx-ide-object-selector.entry.js +1 -2
- package/dist/esm/gx-ide-references.entry.js +1 -2
- package/dist/esm/gx-ide-share-kb.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-commit.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +1 -2
- package/dist/esm/gx-ide-template.entry.js +1 -1
- package/dist/esm/gx-ide-ww-images.entry.js +3 -3
- package/dist/esm/gxg-form-textarea.entry.js +28 -9
- package/dist/esm/gxg-text.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +5 -0
- package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.ja.json +3 -0
- package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.zh.json +3 -0
- package/dist/genexus-ide-ui/{p-aacd75fc.entry.js → p-11fa1c83.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-8f4d3169.entry.js → p-13085dd7.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-561cf515.entry.js → p-3d410e77.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-3f8995ba.entry.js → p-3d4722f2.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-99a0cd49.entry.js → p-440fe7b3.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-4c0ecfe3.entry.js → p-446c0831.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-46c2406e.entry.js → p-7e52f6fb.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-2b9edc3b.entry.js → p-8c5919ec.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-99277f8f.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-4313d9be.entry.js → p-9a15e22e.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-6929875a.entry.js → p-9ad85778.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-abfa88ed.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-e23d6f44.entry.js → p-b34d258d.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-b417c899.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-c2ffd150.entry.js → p-ba31a49e.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-baffd9b1.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-083e01a8.entry.js → p-c3895c79.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-cb07fc99.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-46901569.entry.js → p-d2aca59f.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-7af7779b.entry.js → p-d664fa18.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-e090d88c.entry.js → p-e13a299b.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-f1922c2f.entry.js +1 -0
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/shortcuts/ch-shortcuts.css +3 -0
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tree-view/tree-view-item/tree-view-item.css +0 -1
- package/dist/node_modules/@genexus/gemini/dist/collection/components/form-textarea/form-textarea.css +44 -2
- package/dist/node_modules/@genexus/gemini/dist/collection/components/text/text.css +4 -1
- package/dist/types/components/ai-assistant/ai-assistant.d.ts +65 -0
- package/dist/types/components.d.ts +70 -0
- package/package.json +3 -3
- package/dist/genexus-ide-ui/p-537a181a.entry.js +0 -1
- package/dist/genexus-ide-ui/p-abcf0172.entry.js +0 -1
- package/dist/genexus-ide-ui/p-b207b863.entry.js +0 -1
- package/dist/genexus-ide-ui/p-ee85040d.entry.js +0 -1
|
@@ -197,8 +197,8 @@ const ChTreeView = class {
|
|
|
197
197
|
this.needForRAF = false; // No need to call RAF up until next frame
|
|
198
198
|
requestAnimationFrame(() => {
|
|
199
199
|
this.needForRAF = true; // RAF now consumes the movement instruction so a new one can come
|
|
200
|
-
this.el.style.setProperty(POSITION_X_DRAG_CUSTOM_VAR, `${this.lastDragEvent.
|
|
201
|
-
this.el.style.setProperty(POSITION_Y_DRAG_CUSTOM_VAR, `${this.lastDragEvent.
|
|
200
|
+
this.el.style.setProperty(POSITION_X_DRAG_CUSTOM_VAR, `${this.lastDragEvent.clientX}px`);
|
|
201
|
+
this.el.style.setProperty(POSITION_Y_DRAG_CUSTOM_VAR, `${this.lastDragEvent.clientY}px`);
|
|
202
202
|
});
|
|
203
203
|
};
|
|
204
204
|
this.fixScrollPositionOnDrag = () => {
|
|
@@ -567,7 +567,7 @@ const ChTreeView = class {
|
|
|
567
567
|
};
|
|
568
568
|
ChTreeView.style = treeViewCss;
|
|
569
569
|
|
|
570
|
-
const treeViewItemCss = ":where(button){all:unset;display:flex;user-select:none;touch-action:manipulation;-webkit-user-drag:element}*,::before,::after{box-sizing:border-box}:host{--ch-tree-view-view__checkbox-size:1em;--ch-tree-view-view__expandable-button-width:0.75em;--ch-tree-view-item__dashed-line--inset-inline-start:0px;--ch-tree-view-item__dashed-line--inset-inline-end:4px;--ch-tree-view-item-gap:5px;--ch-tree-view-item-custom-padding-inline-start:0px;--ch-tree-tab-width:calc(\n var(--ch-tree-view-view__checkbox-size) +\n var(--ch-tree-view-view__expandable-button-width) +\n (var(--ch-tree-view-item-gap) * 2)\n );display:grid;grid-template-rows:min-content
|
|
570
|
+
const treeViewItemCss = ":where(button){all:unset;display:flex;user-select:none;touch-action:manipulation;-webkit-user-drag:element}*,::before,::after{box-sizing:border-box}:host{--ch-tree-view-view__checkbox-size:1em;--ch-tree-view-view__expandable-button-width:0.75em;--ch-tree-view-item__dashed-line--inset-inline-start:0px;--ch-tree-view-item__dashed-line--inset-inline-end:4px;--ch-tree-view-item-gap:5px;--ch-tree-view-item-custom-padding-inline-start:0px;--ch-tree-tab-width:calc(\n var(--ch-tree-view-view__checkbox-size) +\n var(--ch-tree-view-view__expandable-button-width) +\n (var(--ch-tree-view-item-gap) * 2)\n );display:grid;grid-template-rows:min-content}.header{--own-offset:0px;display:flex;align-items:center;min-height:calc(1em + 6px);padding-inline-start:calc( var(--padding-inline-start) + var(--ch-tree-view-item-custom-padding-inline-start) )}.header--disabled{opacity:0.5;pointer-events:none}.header--even{--padding-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--ch-tree-tab-width)\n )}.header--even+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--ch-tree-tab-width)\n )}.header--even .dashed-line{--inset-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) +\n var(--parent-checkbox-offset) + var(--parent-expandable-offset)\n )}.header--even-expandable{--padding-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )\n )}.header--even-expandable+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )\n )}.header--odd{--padding-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--ch-tree-tab-width)\n )}.header--odd+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--ch-tree-tab-width)\n )}.header--odd .dashed-line{--inset-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) +\n var(--parent-checkbox-offset) + var(--parent-expandable-offset)\n )}.header--odd-expandable{--padding-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )\n )}.header--odd-expandable+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )\n )}.header--level-0{--padding-inline-start:0px}.header--level-0+.expandable{--parent-padding-inline-start--even:0px}.header--expandable-offset{--own-offset:calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )}.header--expandable-offset+.expandable{--parent-expandable-offset:calc(\n var(--ch-tree-view-view__expandable-button-width) / 2\n )}.header--checkbox-offset+.expandable{--parent-checkbox-offset:calc(\n var(--ch-tree-view-view__checkbox-size) / 2\n );--parent-negative-checkbox-offset:calc(\n var(--ch-tree-view-view__checkbox-size) / 2\n )}.dashed-line{position:absolute;inset-inline-start:calc( var(--inset-inline-start) + var(--ch-tree-view-item__dashed-line--inset-inline-start) + var(--ch-tree-view-item-custom-padding-inline-start) );height:1px;width:calc( var(--ch-tree-tab-width) - var(--parent-checkbox-offset) - var(--parent-expandable-offset) - var(--own-offset) - var(--ch-tree-view-item__dashed-line--inset-inline-start) - var(--ch-tree-view-item__dashed-line--inset-inline-end) );border:0 dashed color-mix(in srgb, currentColor 65%, transparent);border-block-end-width:1px;pointer-events:none;content-visibility:hidden;z-index:1}.last-all-line{inset-block-start:0;height:calc(100% - var(--ch-tree-view-item-distance-to-checkbox));border-inline-start-width:1px;border-end-start-radius:2px}.last-line{inset-block-start:0;height:100%;border-inline-start-width:1px;border-style:solid;border-block-end:unset}.expandable-button{display:grid;place-items:center;width:var(--ch-tree-view-view__expandable-button-width);height:var(--ch-tree-view-view__expandable-button-width);margin-inline-end:var(--ch-tree-view-item-gap);z-index:1;cursor:pointer;content-visibility:auto;contain-intrinsic-size:auto var(--ch-tree-view-view__expandable-button-width)}.expandable-button::before{content:\"\";width:calc(100% - 2px);height:calc(100% - 2px);background-color:currentColor;-webkit-mask-size:calc( var(--ch-tree-view-view__expandable-button-width) - 2px )}.expandable-button--collapsed::before{-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.15,8.5H8.54v5.61h-1V8.5H1.93v-1H7.54V1.89h1V7.5h5.61Z\"/></svg>')}.expandable-button--expanded::before{-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.15,8.5H1.93v-1H14.15Z\"/></svg>')}.expandable-button:focus-visible{outline:1px solid #000}.checkbox{width:var(--ch-tree-view-view__checkbox-size);margin-inline-end:var(--ch-tree-view-item-gap)}.checkbox::part(container){width:var(--ch-tree-view-view__checkbox-size);height:var(--ch-tree-view-view__checkbox-size)}.action{display:grid;grid-template:\"left-img text right-img\"/max-content 1fr max-content;align-items:center;height:100%;flex:1;cursor:pointer}.readonly-mode{padding-block:0.75px}.left-img,.right-img{display:block;width:0.875em;height:0.875em;content-visibility:auto;contain-intrinsic-size:auto 0.875em}.left-img{grid-area:left-img;margin-inline-end:var(--ch-tree-view-item-gap)}.right-img{grid-area:right-img;margin-inline-start:var(--ch-tree-view-item-gap)}.edit-name{grid-area:text;width:100%;height:100%;padding:0;margin:0;background-color:unset;color:unset;border:1px solid currentColor;font:unset;outline:unset}.downloading{width:0.75em;height:0.75em;margin-inline-start:8px;border:2px solid currentColor;border-inline-start-color:transparent;border-radius:50%;opacity:0.75;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.expandable{--parent-expandable-offset:0px;--parent-negative-checkbox-offset:0px;--parent-checkbox-offset:0px;display:grid;grid-auto-rows:min-content;position:relative}.expandable--lazy-loaded{content-visibility:auto;contain-intrinsic-size:auto 100px}.expandable--collapsed{display:none;overflow:hidden;content-visibility:hidden}";
|
|
571
571
|
|
|
572
572
|
const resetDragImage = new Image();
|
|
573
573
|
const DISTANCE_TO_CHECKBOX_CUSTOM_VAR = "--ch-tree-view-item-distance-to-checkbox";
|
|
@@ -1166,12 +1166,12 @@ const ChTreeViewItem = class {
|
|
|
1166
1166
|
};
|
|
1167
1167
|
ChTreeViewItem.style = treeViewItemCss;
|
|
1168
1168
|
|
|
1169
|
-
const
|
|
1169
|
+
const filterWithCase = (stringToFilter, filter, matchCase) => matchCase
|
|
1170
1170
|
? stringToFilter.includes(filter)
|
|
1171
1171
|
: stringToFilter.toLowerCase().includes(filter.toLowerCase());
|
|
1172
|
-
const filterWithString = (stringToFilter, filter, filterOptions) => filterOptions.regularExpression
|
|
1172
|
+
const filterWithString = (stringToFilter, filter, filterOptions) => (filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.regularExpression)
|
|
1173
1173
|
? stringToFilter.match(filter) !== null
|
|
1174
|
-
:
|
|
1174
|
+
: filterWithCase(stringToFilter, filter, filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.matchCase);
|
|
1175
1175
|
const filterDictionary = {
|
|
1176
1176
|
caption: (item, filterInfo) => {
|
|
1177
1177
|
var _a;
|
|
@@ -1237,13 +1237,16 @@ function getImage(name, gxImageConstructor) {
|
|
|
1237
1237
|
return gximage;
|
|
1238
1238
|
}
|
|
1239
1239
|
}
|
|
1240
|
-
const fromGxImageToURL = (
|
|
1240
|
+
const fromGxImageToURL = (gxImage, Settings, gxImageConstructor) => {
|
|
1241
|
+
if (!gxImage) {
|
|
1242
|
+
return;
|
|
1243
|
+
}
|
|
1241
1244
|
let url = "";
|
|
1242
|
-
if (
|
|
1243
|
-
url = getImage(
|
|
1245
|
+
if (gxImage.id) {
|
|
1246
|
+
url = getImage(gxImage.id, gxImageConstructor).uri;
|
|
1244
1247
|
}
|
|
1245
1248
|
else {
|
|
1246
|
-
url =
|
|
1249
|
+
url = gxImage.uri;
|
|
1247
1250
|
}
|
|
1248
1251
|
if (!url) {
|
|
1249
1252
|
return "";
|
|
@@ -1308,6 +1311,17 @@ const GXRenderItem = (itemModel, treeState, treeHasFilter, lastItem, level) => {
|
|
|
1308
1311
|
? subModel.id === itemModel.lastItemId
|
|
1309
1312
|
: index === itemModel.items.length - 1), level + 1))));
|
|
1310
1313
|
};
|
|
1314
|
+
const defaultSortItemsCallback = (subModel) => {
|
|
1315
|
+
subModel.sort((a, b) => {
|
|
1316
|
+
if (a.order < b.order) {
|
|
1317
|
+
return -1;
|
|
1318
|
+
}
|
|
1319
|
+
if (a.order > b.order) {
|
|
1320
|
+
return 0;
|
|
1321
|
+
}
|
|
1322
|
+
return a.caption <= b.caption ? -1 : 0;
|
|
1323
|
+
});
|
|
1324
|
+
};
|
|
1311
1325
|
const ChTreeViewRender = class {
|
|
1312
1326
|
constructor(hostRef) {
|
|
1313
1327
|
index.registerInstance(this, hostRef);
|
|
@@ -1401,6 +1415,10 @@ const ChTreeViewRender = class {
|
|
|
1401
1415
|
* lines.
|
|
1402
1416
|
*/
|
|
1403
1417
|
this.showLines = "none";
|
|
1418
|
+
/**
|
|
1419
|
+
* Callback that is executed when the treeModel is changed to order its items.
|
|
1420
|
+
*/
|
|
1421
|
+
this.sortItemsCallback = defaultSortItemsCallback;
|
|
1404
1422
|
/**
|
|
1405
1423
|
* Set this attribute if you want all the children item's checkboxes to be
|
|
1406
1424
|
* checked when the parent item checkbox is checked, or to be unchecked when
|
|
@@ -1466,10 +1484,6 @@ const ChTreeViewRender = class {
|
|
|
1466
1484
|
this.itemContextmenu.emit(event.detail);
|
|
1467
1485
|
};
|
|
1468
1486
|
this.handleItemsDropped = (event) => {
|
|
1469
|
-
if (!this.dropItemsCallback) {
|
|
1470
|
-
return;
|
|
1471
|
-
}
|
|
1472
|
-
event.stopPropagation();
|
|
1473
1487
|
const dataTransferInfo = event.detail;
|
|
1474
1488
|
const newContainer = dataTransferInfo.newContainer;
|
|
1475
1489
|
const newParentId = newContainer.id;
|
|
@@ -1478,55 +1492,24 @@ const ChTreeViewRender = class {
|
|
|
1478
1492
|
return;
|
|
1479
1493
|
}
|
|
1480
1494
|
const draggedItems = dataTransferInfo.draggedItems;
|
|
1481
|
-
if (draggedItems.length === 0) {
|
|
1495
|
+
if (draggedItems.length === 0 || !this.dropItemsCallback) {
|
|
1482
1496
|
return;
|
|
1483
1497
|
}
|
|
1498
|
+
event.stopPropagation();
|
|
1484
1499
|
const promise = this.dropItemsCallback(dataTransferInfo);
|
|
1485
1500
|
this.waitDropProcessing = true;
|
|
1486
1501
|
promise.then(async (response) => {
|
|
1502
|
+
this.dropItems(response.acceptDrop, dataTransferInfo, response.items);
|
|
1487
1503
|
this.waitDropProcessing = false;
|
|
1488
|
-
if (!response.acceptDrop) {
|
|
1489
|
-
return;
|
|
1490
|
-
}
|
|
1491
|
-
const newParentUIModel = this.flattenedTreeModel.get(newParentId).item;
|
|
1492
|
-
// Only move the items to the new parent, keeping the state
|
|
1493
|
-
if (dataTransferInfo.dropInTheSameTree) {
|
|
1494
|
-
// Add the UI models to the new container and remove the UI models from
|
|
1495
|
-
// the old containers
|
|
1496
|
-
draggedItems.forEach(this.moveItemToNewParent(newParentUIModel));
|
|
1497
|
-
// When the selected items are moved, the tree must remove its internal
|
|
1498
|
-
// state to not have undefined references
|
|
1499
|
-
if (dataTransferInfo.draggingSelectedItems) {
|
|
1500
|
-
await this.treeRef.clearSelectedItemsInfo();
|
|
1501
|
-
}
|
|
1502
|
-
}
|
|
1503
|
-
// Add the new items
|
|
1504
|
-
else {
|
|
1505
|
-
if (response.items == null) {
|
|
1506
|
-
return;
|
|
1507
|
-
}
|
|
1508
|
-
// Add new items to the parent
|
|
1509
|
-
newParentUIModel.items.push(...response.items);
|
|
1510
|
-
// Flatten the new UI models
|
|
1511
|
-
response.items.forEach(this.flattenItemUIModel(newParentUIModel));
|
|
1512
|
-
}
|
|
1513
|
-
this.sortItems(newParentUIModel.items);
|
|
1514
|
-
// Open the item to visualize the new subitems
|
|
1515
|
-
newParentUIModel.expanded = true;
|
|
1516
|
-
// Re-sync checked items
|
|
1517
|
-
this.emitCheckedItemsChange();
|
|
1518
|
-
// Update filters
|
|
1519
|
-
this.processFilters();
|
|
1520
|
-
// There is no need to force and update, since the waitDropProcessing
|
|
1521
|
-
// prop was modified
|
|
1522
1504
|
});
|
|
1523
1505
|
};
|
|
1524
1506
|
this.moveItemToNewParent = (newParentUIModel) => (dataTransferInfo) => {
|
|
1525
1507
|
const itemUIModelExtended = this.flattenedTreeModel.get(dataTransferInfo.id);
|
|
1526
1508
|
const item = itemUIModelExtended.item;
|
|
1527
1509
|
const oldParentItem = itemUIModelExtended.parentItem;
|
|
1528
|
-
// Remove the UI model from the previous parent
|
|
1529
|
-
|
|
1510
|
+
// Remove the UI model from the previous parent. The equality function
|
|
1511
|
+
// must be by index, not by object reference
|
|
1512
|
+
oldParentItem.items.splice(oldParentItem.items.findIndex(el => el.id === item.id), 1);
|
|
1530
1513
|
// Add the UI Model to the new parent
|
|
1531
1514
|
newParentUIModel.items.push(item);
|
|
1532
1515
|
// Reference the new parent in the item
|
|
@@ -1585,6 +1568,47 @@ const ChTreeViewRender = class {
|
|
|
1585
1568
|
handleTreeModelChange() {
|
|
1586
1569
|
this.flattenModel();
|
|
1587
1570
|
}
|
|
1571
|
+
/**
|
|
1572
|
+
* Given the drop accepting, the data transfer info and the external items,
|
|
1573
|
+
* it process the drops of the items in the tree.
|
|
1574
|
+
*/
|
|
1575
|
+
async dropItems(acceptDrop, dataTransferInfo, items) {
|
|
1576
|
+
if (!acceptDrop) {
|
|
1577
|
+
return;
|
|
1578
|
+
}
|
|
1579
|
+
const newParentId = dataTransferInfo.newContainer.id;
|
|
1580
|
+
const newParentUIModel = this.flattenedTreeModel.get(newParentId).item;
|
|
1581
|
+
// Only move the items to the new parent, keeping the state
|
|
1582
|
+
if (dataTransferInfo.dropInTheSameTree) {
|
|
1583
|
+
// Add the UI models to the new container and remove the UI models from
|
|
1584
|
+
// the old containers
|
|
1585
|
+
dataTransferInfo.draggedItems.forEach(this.moveItemToNewParent(newParentUIModel));
|
|
1586
|
+
// When the selected items are moved, the tree must remove its internal
|
|
1587
|
+
// state to not have undefined references
|
|
1588
|
+
if (dataTransferInfo.draggingSelectedItems) {
|
|
1589
|
+
await this.treeRef.clearSelectedItemsInfo();
|
|
1590
|
+
}
|
|
1591
|
+
}
|
|
1592
|
+
// Add the new items
|
|
1593
|
+
else {
|
|
1594
|
+
if (items == null) {
|
|
1595
|
+
return;
|
|
1596
|
+
}
|
|
1597
|
+
// Add new items to the parent
|
|
1598
|
+
newParentUIModel.items.push(...items);
|
|
1599
|
+
// Flatten the new UI models
|
|
1600
|
+
items.forEach(this.flattenItemUIModel(newParentUIModel));
|
|
1601
|
+
}
|
|
1602
|
+
this.sortItems(newParentUIModel.items);
|
|
1603
|
+
// Open the item to visualize the new subitems
|
|
1604
|
+
newParentUIModel.expanded = true;
|
|
1605
|
+
// Re-sync checked items
|
|
1606
|
+
this.emitCheckedItemsChange();
|
|
1607
|
+
// Update filters
|
|
1608
|
+
this.processFilters();
|
|
1609
|
+
// Force re-render
|
|
1610
|
+
index.forceUpdate(this);
|
|
1611
|
+
}
|
|
1588
1612
|
/**
|
|
1589
1613
|
* Given an item id, an array of items to add, the download status and the
|
|
1590
1614
|
* lazy state, updates the item's UI Model.
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const index = require('./index-f9bb1815.js');
|
|
6
|
+
const helpers = require('./helpers-291cb1cb.js');
|
|
7
|
+
|
|
8
|
+
const CH_SHORTCUTS = new Map();
|
|
9
|
+
function loadShortcuts(name, root, shortcuts) {
|
|
10
|
+
shortcuts.forEach(shortcut => {
|
|
11
|
+
const keyShortcuts = parseKeyShortcuts(shortcut.keyShortcuts);
|
|
12
|
+
keyShortcuts.forEach(keyShortcut => {
|
|
13
|
+
CH_SHORTCUTS.set(normalize(keyShortcut.ctrl, keyShortcut.alt, keyShortcut.shift, keyShortcut.meta, keyShortcut.key), {
|
|
14
|
+
name,
|
|
15
|
+
root,
|
|
16
|
+
shortcut
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
addListener();
|
|
21
|
+
}
|
|
22
|
+
function unloadShortcuts(name) {
|
|
23
|
+
const removeKeyShortcuts = [];
|
|
24
|
+
CH_SHORTCUTS.forEach((shortcutMap, key) => {
|
|
25
|
+
if (shortcutMap.name === name) {
|
|
26
|
+
removeKeyShortcuts.push(key);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
removeKeyShortcuts.forEach(key => CH_SHORTCUTS.delete(key));
|
|
30
|
+
removeListener();
|
|
31
|
+
}
|
|
32
|
+
function getShortcuts() {
|
|
33
|
+
return Array.from(CH_SHORTCUTS.values())
|
|
34
|
+
.filter(shortcutMap => {
|
|
35
|
+
var _a;
|
|
36
|
+
return !((_a = shortcutMap.shortcut.conditions) === null || _a === void 0 ? void 0 : _a.focusInclude);
|
|
37
|
+
})
|
|
38
|
+
.map(shortcutMap => ({
|
|
39
|
+
element: querySelectorPlus(shortcutMap.shortcut.selector, shortcutMap.root),
|
|
40
|
+
keyShortcuts: shortcutMap.shortcut.keyShortcuts,
|
|
41
|
+
legendPosition: shortcutMap.shortcut.legendPosition
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
function addListener() {
|
|
45
|
+
if (CH_SHORTCUTS.size > 0) {
|
|
46
|
+
window.addEventListener("keydown", keydownHandler, { capture: true });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function removeListener() {
|
|
50
|
+
if (CH_SHORTCUTS.size === 0) {
|
|
51
|
+
window.removeEventListener("keydown", keydownHandler, { capture: true });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function keydownHandler(eventInfo) {
|
|
55
|
+
const shortcutMap = CH_SHORTCUTS.get(normalize(eventInfo.ctrlKey, eventInfo.altKey, eventInfo.shiftKey, eventInfo.metaKey, eventInfo.key));
|
|
56
|
+
if (shortcutMap && conditions(shortcutMap)) {
|
|
57
|
+
const element = querySelectorPlus(shortcutMap.shortcut.selector, shortcutMap.root);
|
|
58
|
+
if (element) {
|
|
59
|
+
switch (shortcutMap.shortcut.action) {
|
|
60
|
+
case "click":
|
|
61
|
+
element.dispatchEvent(new Event("click"));
|
|
62
|
+
break;
|
|
63
|
+
default:
|
|
64
|
+
element.focus();
|
|
65
|
+
}
|
|
66
|
+
if (shortcutMap.shortcut.preventDefault !== false) {
|
|
67
|
+
eventInfo.preventDefault();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function parseKeyShortcuts(value = "") {
|
|
73
|
+
return value.split(" ").map(item => {
|
|
74
|
+
const match = item.match(/(?:(?<ctrl>Ctrl)?(?<alt>Alt)?(?<shift>Shift)?(?<meta>Meta)?\+?)*(?<key>.*)?/i);
|
|
75
|
+
if (match.groups.key !== "") {
|
|
76
|
+
return {
|
|
77
|
+
ctrl: match.groups.ctrl !== undefined,
|
|
78
|
+
alt: match.groups.alt !== undefined,
|
|
79
|
+
shift: match.groups.shift !== undefined,
|
|
80
|
+
meta: match.groups.meta !== undefined,
|
|
81
|
+
key: match.groups.key
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function normalize(ctrl, alt, shift, meta, key) {
|
|
87
|
+
return [
|
|
88
|
+
ctrl ? "Ctrl" : null,
|
|
89
|
+
alt ? "Alt" : null,
|
|
90
|
+
shift ? "Shift" : null,
|
|
91
|
+
meta ? "Meta" : null,
|
|
92
|
+
key ? key.charAt(0).toUpperCase() + key.slice(1) : null
|
|
93
|
+
]
|
|
94
|
+
.filter(element => {
|
|
95
|
+
return element !== null;
|
|
96
|
+
})
|
|
97
|
+
.join("+");
|
|
98
|
+
}
|
|
99
|
+
function conditions(shortcutMap) {
|
|
100
|
+
var _a, _b, _c, _d;
|
|
101
|
+
const focus = helpers.focusComposedPath();
|
|
102
|
+
if ((_a = shortcutMap.shortcut.conditions) === null || _a === void 0 ? void 0 : _a.focusInclude) {
|
|
103
|
+
return Array.from(shortcutMap.root.querySelectorAll((_b = shortcutMap.shortcut.conditions) === null || _b === void 0 ? void 0 : _b.focusInclude)).some((el) => focus.includes(el));
|
|
104
|
+
}
|
|
105
|
+
if ((_c = shortcutMap.shortcut.conditions) === null || _c === void 0 ? void 0 : _c.focusExclude) {
|
|
106
|
+
return !Array.from(shortcutMap.root.querySelectorAll((_d = shortcutMap.shortcut.conditions) === null || _d === void 0 ? void 0 : _d.focusExclude)).some((el) => focus.includes(el));
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
function querySelectorPlus(selector, root) {
|
|
111
|
+
const querySelectorDeep = (element, parts) => {
|
|
112
|
+
const shadow = element.shadowRoot;
|
|
113
|
+
const partList = parts.split(" ");
|
|
114
|
+
const partElement = shadow.querySelector(partList.map(partName => `[part~="${partName}"]`).join(""));
|
|
115
|
+
if (partElement) {
|
|
116
|
+
return partElement;
|
|
117
|
+
}
|
|
118
|
+
const exportPartElement = shadow.querySelector(partList.map(partName => `[exportparts*="${partName}"]`).join(""));
|
|
119
|
+
if (exportPartElement) {
|
|
120
|
+
const exportPartList = [];
|
|
121
|
+
const exportparts = exportPartElement.getAttribute("exportparts");
|
|
122
|
+
partList.forEach(partItem => {
|
|
123
|
+
const exportPartName = exportparts.match(`(?:([\\w-]+):)?(${partItem})`)[1];
|
|
124
|
+
if (exportPartName) {
|
|
125
|
+
exportPartList.push(exportPartName);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
if (partList.length === exportPartList.length) {
|
|
129
|
+
return querySelectorDeep(exportPartElement, exportPartList.join(" "));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
};
|
|
134
|
+
if (selector.includes("::part")) {
|
|
135
|
+
const selectorItems = selector.match("(.*)::part\\(([^)]+)\\)");
|
|
136
|
+
const entity = selectorItems[1];
|
|
137
|
+
const partName = selectorItems[2];
|
|
138
|
+
return querySelectorDeep(root.querySelector(entity), partName);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
return root.querySelector(selector);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
const chShortcutsCss = ":host{display:contents}";
|
|
146
|
+
|
|
147
|
+
const ChShortcuts = class {
|
|
148
|
+
constructor(hostRef) {
|
|
149
|
+
index.registerInstance(this, hostRef);
|
|
150
|
+
this.showShortcuts = false;
|
|
151
|
+
this.showKey = "F10";
|
|
152
|
+
this.windowClosedHandler = () => {
|
|
153
|
+
this.showShortcuts = false;
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
componentDidLoad() {
|
|
157
|
+
if (this.src) {
|
|
158
|
+
fetch(this.src).then(response => {
|
|
159
|
+
if (response.ok) {
|
|
160
|
+
response.json().then(json => {
|
|
161
|
+
const root = this.el.getRootNode();
|
|
162
|
+
loadShortcuts(this.src, root, json);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
disconnectedCallback() {
|
|
169
|
+
unloadShortcuts(this.src);
|
|
170
|
+
}
|
|
171
|
+
windowKeyDownHandler(eventInfo) {
|
|
172
|
+
if (eventInfo.key === this.showKey) {
|
|
173
|
+
this.showShortcuts = !this.showShortcuts;
|
|
174
|
+
eventInfo.preventDefault();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
renderShortcuts() {
|
|
178
|
+
return getShortcuts().map(shortcut => (index.h("ch-window", { container: shortcut.element, modal: false, hidden: false, closeOnEscape: true, closeOnOutsideClick: true, xAlign: "outside-end", yAlign: "inside-start", onWindowClosed: this.windowClosedHandler, exportparts: "mask:element" }, index.h("span", { part: "tooltip" }, shortcut.keyShortcuts))));
|
|
179
|
+
}
|
|
180
|
+
render() {
|
|
181
|
+
return index.h(index.Host, null, this.showShortcuts && this.renderShortcuts());
|
|
182
|
+
}
|
|
183
|
+
get el() { return index.getElement(this); }
|
|
184
|
+
};
|
|
185
|
+
ChShortcuts.style = chShortcutsCss;
|
|
186
|
+
|
|
187
|
+
exports.ch_shortcuts = ChShortcuts;
|