@genexus/genexus-ide-ui 0.0.71 → 0.0.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/cjs/ch-checkbox_4.cjs.entry.js +75 -51
  2. package/dist/cjs/ch-shortcuts.cjs.entry.js +187 -0
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +101 -0
  5. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +1 -1
  6. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +1 -1
  7. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +1 -1
  8. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
  9. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
  10. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
  11. package/dist/cjs/gx-ide-new-object.cjs.entry.js +1 -1
  12. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
  13. package/dist/cjs/gx-ide-references.cjs.entry.js +1 -1
  14. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
  15. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +1 -1
  16. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +1 -1
  17. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +1 -1
  18. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +1 -1
  19. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -1
  20. package/dist/cjs/gx-ide-template.cjs.entry.js +1 -1
  21. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
  22. package/dist/cjs/gxg-form-textarea.cjs.entry.js +28 -9
  23. package/dist/cjs/gxg-text.cjs.entry.js +1 -1
  24. package/dist/cjs/loader.cjs.js +1 -1
  25. package/dist/collection/collection-manifest.json +2 -0
  26. package/dist/collection/components/_starting-template/template.css +1 -0
  27. package/dist/collection/components/ai-assistant/ai-assistant.css +389 -0
  28. package/dist/collection/components/ai-assistant/ai-assistant.js +269 -0
  29. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +6 -0
  30. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.ja.json +3 -0
  31. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.zh.json +3 -0
  32. package/dist/collection/components/bpm-application-declaration/bpm-app-declaration.css +1 -0
  33. package/dist/collection/components/create-kb-from-server/create-kb-from-server.css +1 -0
  34. package/dist/collection/components/kb-manager-export/kb-manager-export.css +1 -0
  35. package/dist/collection/components/kb-manager-import/kb-manager-import.css +1 -0
  36. package/dist/collection/components/new-environment/new-environment.css +1 -0
  37. package/dist/collection/components/new-kb/new-kb.css +1 -0
  38. package/dist/collection/components/new-object/new-object.css +1 -0
  39. package/dist/collection/components/object-selector/object-selector.css +1 -0
  40. package/dist/collection/components/references/references.css +1 -0
  41. package/dist/collection/components/share-kb/share-kb.css +1 -0
  42. package/dist/collection/components/team-dev/commit/commit.css +1 -0
  43. package/dist/collection/components/team-dev/select-recent-comment/select-recent-comment.css +1 -0
  44. package/dist/collection/components/team-dev/update/update.css +1 -0
  45. package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.css +1 -0
  46. package/dist/collection/components/team-dev/update-to-revision/update-to-revision.css +1 -0
  47. package/dist/collection/components/ww-images/ww-images.css +1 -0
  48. package/dist/components/ch-shortcuts.js +217 -0
  49. package/dist/components/form-textarea.js +30 -9
  50. package/dist/components/gx-ide-ai-assistant.d.ts +11 -0
  51. package/dist/components/gx-ide-ai-assistant.js +151 -0
  52. package/dist/components/gx-ide-bpm-app-declaration.js +1 -1
  53. package/dist/components/gx-ide-create-kb-from-server.js +1 -1
  54. package/dist/components/gx-ide-kb-manager-export.js +1 -1
  55. package/dist/components/gx-ide-kb-manager-import.js +1 -1
  56. package/dist/components/gx-ide-new-environment.js +1 -1
  57. package/dist/components/gx-ide-new-kb.js +1 -1
  58. package/dist/components/gx-ide-new-object.js +1 -1
  59. package/dist/components/gx-ide-object-selector.js +1 -1
  60. package/dist/components/gx-ide-references.js +1 -1
  61. package/dist/components/gx-ide-share-kb.js +1 -1
  62. package/dist/components/gx-ide-team-dev-commit.js +1 -1
  63. package/dist/components/gx-ide-team-dev-select-recent-comment.js +1 -1
  64. package/dist/components/gx-ide-team-dev-update-partial-selection.js +1 -1
  65. package/dist/components/gx-ide-team-dev-update-to-revision.js +1 -1
  66. package/dist/components/gx-ide-team-dev-update.js +1 -1
  67. package/dist/components/gx-ide-template.js +1 -1
  68. package/dist/components/gx-ide-ww-images.js +1 -1
  69. package/dist/components/index.d.ts +1 -0
  70. package/dist/components/index.js +2 -0
  71. package/dist/components/text.js +1 -1
  72. package/dist/components/tree-view-item.js +1 -1
  73. package/dist/components/tree-view-render.js +73 -48
  74. package/dist/components/tree-view.js +2 -2
  75. package/dist/esm/ch-checkbox_4.entry.js +75 -51
  76. package/dist/esm/ch-shortcuts.entry.js +183 -0
  77. package/dist/esm/genexus-ide-ui.js +1 -1
  78. package/dist/esm/gx-ide-ai-assistant.entry.js +97 -0
  79. package/dist/esm/gx-ide-bpm-app-declaration.entry.js +1 -1
  80. package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
  81. package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
  82. package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
  83. package/dist/esm/gx-ide-new-environment.entry.js +1 -1
  84. package/dist/esm/gx-ide-new-kb.entry.js +1 -1
  85. package/dist/esm/gx-ide-new-object.entry.js +1 -1
  86. package/dist/esm/gx-ide-object-selector.entry.js +1 -1
  87. package/dist/esm/gx-ide-references.entry.js +1 -1
  88. package/dist/esm/gx-ide-share-kb.entry.js +1 -1
  89. package/dist/esm/gx-ide-team-dev-commit.entry.js +1 -1
  90. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +1 -1
  91. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +1 -1
  92. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +1 -1
  93. package/dist/esm/gx-ide-team-dev-update.entry.js +1 -1
  94. package/dist/esm/gx-ide-template.entry.js +1 -1
  95. package/dist/esm/gx-ide-ww-images.entry.js +1 -1
  96. package/dist/esm/gxg-form-textarea.entry.js +28 -9
  97. package/dist/esm/gxg-text.entry.js +1 -1
  98. package/dist/esm/loader.js +1 -1
  99. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  100. package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +6 -0
  101. package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.ja.json +3 -0
  102. package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.zh.json +3 -0
  103. package/dist/genexus-ide-ui/{p-aacd75fc.entry.js → p-11fa1c83.entry.js} +1 -1
  104. package/dist/genexus-ide-ui/{p-8f4d3169.entry.js → p-13085dd7.entry.js} +1 -1
  105. package/dist/genexus-ide-ui/p-3cb1b400.entry.js +1 -0
  106. package/dist/genexus-ide-ui/{p-da1ae937.entry.js → p-3d410e77.entry.js} +1 -1
  107. package/dist/genexus-ide-ui/{p-3f8995ba.entry.js → p-3d4722f2.entry.js} +1 -1
  108. package/dist/genexus-ide-ui/{p-99a0cd49.entry.js → p-440fe7b3.entry.js} +1 -1
  109. package/dist/genexus-ide-ui/{p-4c0ecfe3.entry.js → p-446c0831.entry.js} +1 -1
  110. package/dist/genexus-ide-ui/{p-46c2406e.entry.js → p-7e52f6fb.entry.js} +1 -1
  111. package/dist/genexus-ide-ui/{p-7bcb1954.entry.js → p-8c5919ec.entry.js} +1 -1
  112. package/dist/genexus-ide-ui/{p-4313d9be.entry.js → p-9a15e22e.entry.js} +1 -1
  113. package/dist/genexus-ide-ui/{p-6929875a.entry.js → p-9ad85778.entry.js} +1 -1
  114. package/dist/genexus-ide-ui/{p-2b2acd3d.entry.js → p-abfa88ed.entry.js} +1 -1
  115. package/dist/genexus-ide-ui/{p-e23d6f44.entry.js → p-b34d258d.entry.js} +1 -1
  116. package/dist/genexus-ide-ui/p-b417c899.entry.js +1 -0
  117. package/dist/genexus-ide-ui/{p-c2ffd150.entry.js → p-ba31a49e.entry.js} +1 -1
  118. package/dist/genexus-ide-ui/{p-24b2988b.entry.js → p-baffd9b1.entry.js} +1 -1
  119. package/dist/genexus-ide-ui/{p-083e01a8.entry.js → p-c3895c79.entry.js} +1 -1
  120. package/dist/genexus-ide-ui/{p-8e68f1d3.entry.js → p-cb07fc99.entry.js} +1 -1
  121. package/dist/genexus-ide-ui/{p-46901569.entry.js → p-d2aca59f.entry.js} +1 -1
  122. package/dist/genexus-ide-ui/{p-7af7779b.entry.js → p-d664fa18.entry.js} +1 -1
  123. package/dist/genexus-ide-ui/{p-e090d88c.entry.js → p-e13a299b.entry.js} +1 -1
  124. package/dist/genexus-ide-ui/p-f1922c2f.entry.js +1 -0
  125. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/shortcuts/ch-shortcuts.css +3 -0
  126. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tree-view/tree-view-item/tree-view-item.css +0 -1
  127. package/dist/node_modules/@genexus/gemini/dist/collection/components/form-textarea/form-textarea.css +44 -2
  128. package/dist/node_modules/@genexus/gemini/dist/collection/components/text/text.css +4 -1
  129. package/dist/types/components/ai-assistant/ai-assistant.d.ts +69 -0
  130. package/dist/types/components.d.ts +70 -0
  131. package/package.json +3 -3
  132. 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.pageX}px`);
201
- this.el.style.setProperty(POSITION_Y_DRAG_CUSTOM_VAR, `${this.lastDragEvent.pageY}px`);
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;overflow:hidden}.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}";
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 filterWithCamelCase = (stringToFilter, filter, camelCase) => camelCase
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
- : filterWithCamelCase(stringToFilter, filter, filterOptions.camelCase);
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 = (image, Settings, gxImageConstructor) => {
1240
+ const fromGxImageToURL = (gxImage, Settings, gxImageConstructor) => {
1241
+ if (!gxImage) {
1242
+ return;
1243
+ }
1241
1244
  let url = "";
1242
- if (image.id) {
1243
- url = getImage(image.id, gxImageConstructor).uri;
1245
+ if (gxImage.id) {
1246
+ url = getImage(gxImage.id, gxImageConstructor).uri;
1244
1247
  }
1245
1248
  else {
1246
- url = image.uri;
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
- oldParentItem.items.splice(oldParentItem.items.indexOf(item), 1);
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;