@genexus/genexus-ide-ui 0.0.77 → 0.0.78

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 (38) hide show
  1. package/dist/cjs/ch-shortcuts_2.cjs.entry.js +230 -0
  2. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  3. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +7 -2
  4. package/dist/cjs/gxg-form-text.cjs.entry.js +3 -5
  5. package/dist/cjs/gxg-test.cjs.entry.js +7 -1
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/collection/collection-manifest.json +1 -0
  8. package/dist/collection/components/new-environment/gx-ide-assets/new-environment/shortcuts.json +21 -0
  9. package/dist/collection/components/new-environment/new-environment.js +8 -3
  10. package/dist/components/ch-shortcuts.js +1 -236
  11. package/dist/{esm/ch-shortcuts.entry.js → components/ch-shortcuts2.js} +40 -9
  12. package/dist/components/form-text.js +3 -5
  13. package/dist/components/gx-ide-new-environment.js +58 -29
  14. package/dist/components/gxg-shortcuts.js +6 -0
  15. package/dist/components/gxg-test.js +32 -2
  16. package/dist/components/index.js +1 -0
  17. package/dist/components/shortcuts.js +58 -0
  18. package/dist/esm/ch-shortcuts_2.entry.js +225 -0
  19. package/dist/esm/genexus-ide-ui.js +1 -1
  20. package/dist/esm/gx-ide-new-environment.entry.js +8 -3
  21. package/dist/esm/gxg-form-text.entry.js +3 -5
  22. package/dist/esm/gxg-test.entry.js +7 -1
  23. package/dist/esm/loader.js +1 -1
  24. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  25. package/dist/genexus-ide-ui/gx-ide-assets/new-environment/shortcuts.json +21 -0
  26. package/dist/genexus-ide-ui/p-0967fafc.entry.js +1 -0
  27. package/dist/genexus-ide-ui/p-0b6d53e1.entry.js +1 -0
  28. package/dist/genexus-ide-ui/p-2d77e2a3.entry.js +1 -0
  29. package/dist/genexus-ide-ui/p-4bceda48.entry.js +1 -0
  30. package/dist/node_modules/@genexus/gemini/dist/collection/components/form-text/form-text.css +1 -1
  31. package/dist/node_modules/@genexus/gemini/dist/collection/components/shortcuts/shortcuts.css +366 -0
  32. package/dist/types/components/new-environment/new-environment.d.ts +2 -0
  33. package/package.json +3 -3
  34. package/dist/cjs/ch-shortcuts.cjs.entry.js +0 -211
  35. package/dist/genexus-ide-ui/p-2e7d1eef.entry.js +0 -1
  36. package/dist/genexus-ide-ui/p-72fad9dd.entry.js +0 -1
  37. package/dist/genexus-ide-ui/p-9f4e169e.entry.js +0 -1
  38. package/dist/genexus-ide-ui/p-f13a59cc.entry.js +0 -1
@@ -0,0 +1,230 @@
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 SHORTCUTS = new Map();
9
+ let LATEST_SHORTCUT;
10
+ function loadShortcuts(name, root, shortcuts) {
11
+ shortcuts.forEach(shortcut => {
12
+ const keyShortcuts = parseKeyShortcuts(shortcut.keyShortcuts);
13
+ keyShortcuts.forEach(keyShortcut => {
14
+ SHORTCUTS.set(normalize(keyShortcut.ctrl, keyShortcut.alt, keyShortcut.shift, keyShortcut.meta, keyShortcut.key), {
15
+ name,
16
+ root,
17
+ shortcut
18
+ });
19
+ });
20
+ });
21
+ addListener();
22
+ }
23
+ function unloadShortcuts(name) {
24
+ const removeKeyShortcuts = [];
25
+ SHORTCUTS.forEach((shortcutMap, key) => {
26
+ if (shortcutMap.name === name) {
27
+ removeKeyShortcuts.push(key);
28
+ }
29
+ });
30
+ removeKeyShortcuts.forEach(key => SHORTCUTS.delete(key));
31
+ removeListener();
32
+ }
33
+ function getShortcuts() {
34
+ return Array.from(SHORTCUTS.values())
35
+ .filter(shortcutMap => {
36
+ var _a;
37
+ return !((_a = shortcutMap.shortcut.conditions) === null || _a === void 0 ? void 0 : _a.focusInclude);
38
+ })
39
+ .map(shortcutMap => ({
40
+ element: querySelectorPlus(shortcutMap.shortcut.selector, shortcutMap.root),
41
+ keyShortcuts: shortcutMap.shortcut.keyShortcuts,
42
+ legendPosition: shortcutMap.shortcut.legendPosition
43
+ }));
44
+ }
45
+ function addListener() {
46
+ if (SHORTCUTS.size > 0) {
47
+ window.addEventListener("keydown", keydownHandler, { capture: true });
48
+ }
49
+ }
50
+ function removeListener() {
51
+ if (SHORTCUTS.size === 0) {
52
+ window.removeEventListener("keydown", keydownHandler, { capture: true });
53
+ }
54
+ }
55
+ function keydownHandler(eventInfo) {
56
+ var _a;
57
+ if (!eventInfo.repeat ||
58
+ (eventInfo.repeat && ((_a = LATEST_SHORTCUT === null || LATEST_SHORTCUT === void 0 ? void 0 : LATEST_SHORTCUT.shortcut.conditions) === null || _a === void 0 ? void 0 : _a.allowRepeat))) {
59
+ LATEST_SHORTCUT = triggerShortcut(eventInfo);
60
+ }
61
+ }
62
+ function triggerShortcut(eventInfo) {
63
+ const shortcutMap = SHORTCUTS.get(normalize(eventInfo.ctrlKey, eventInfo.altKey, eventInfo.shiftKey, eventInfo.metaKey, eventInfo.key));
64
+ if (shortcutMap && conditions(shortcutMap)) {
65
+ const element = querySelectorPlus(shortcutMap.shortcut.selector, shortcutMap.root);
66
+ if (element) {
67
+ switch (shortcutMap.shortcut.action) {
68
+ case "click":
69
+ element.dispatchEvent(new Event("click"));
70
+ break;
71
+ default:
72
+ element.focus();
73
+ }
74
+ if (shortcutMap.shortcut.preventDefault !== false) {
75
+ eventInfo.preventDefault();
76
+ }
77
+ }
78
+ }
79
+ return shortcutMap;
80
+ }
81
+ function parseKeyShortcuts(value = "") {
82
+ return value.split(" ").map(item => {
83
+ return item.split("+").reduce((keyShortcut, key) => {
84
+ switch (key.toLowerCase()) {
85
+ case "ctrl":
86
+ keyShortcut.ctrl = true;
87
+ break;
88
+ case "alt":
89
+ keyShortcut.alt = true;
90
+ break;
91
+ case "shift":
92
+ keyShortcut.shift = true;
93
+ break;
94
+ case "meta":
95
+ keyShortcut.meta = true;
96
+ break;
97
+ default:
98
+ keyShortcut.key = key;
99
+ }
100
+ return keyShortcut;
101
+ }, {
102
+ ctrl: false,
103
+ alt: false,
104
+ shift: false,
105
+ meta: false,
106
+ key: ""
107
+ });
108
+ });
109
+ }
110
+ function normalize(ctrl, alt, shift, meta, key) {
111
+ return [
112
+ ctrl ? "Ctrl" : null,
113
+ alt ? "Alt" : null,
114
+ shift ? "Shift" : null,
115
+ meta ? "Meta" : null,
116
+ key ? key.charAt(0).toUpperCase() + key.slice(1) : null
117
+ ]
118
+ .filter(element => {
119
+ return element !== null;
120
+ })
121
+ .join("+");
122
+ }
123
+ function conditions(shortcutMap) {
124
+ var _a, _b, _c, _d;
125
+ const focus = helpers.focusComposedPath();
126
+ if ((_a = shortcutMap.shortcut.conditions) === null || _a === void 0 ? void 0 : _a.focusInclude) {
127
+ return Array.from(shortcutMap.root.querySelectorAll((_b = shortcutMap.shortcut.conditions) === null || _b === void 0 ? void 0 : _b.focusInclude)).some((el) => focus.includes(el));
128
+ }
129
+ if ((_c = shortcutMap.shortcut.conditions) === null || _c === void 0 ? void 0 : _c.focusExclude) {
130
+ return !Array.from(shortcutMap.root.querySelectorAll((_d = shortcutMap.shortcut.conditions) === null || _d === void 0 ? void 0 : _d.focusExclude)).some((el) => focus.includes(el));
131
+ }
132
+ return true;
133
+ }
134
+ function querySelectorPlus(selector, root) {
135
+ const querySelectorDeep = (element, parts) => {
136
+ const shadow = element.shadowRoot;
137
+ const partList = parts.split(" ");
138
+ const partElement = shadow.querySelector(partList.map(partName => `[part~="${partName}"]`).join(""));
139
+ if (partElement) {
140
+ return partElement;
141
+ }
142
+ const exportPartElement = shadow.querySelector(partList.map(partName => `[exportparts*="${partName}"]`).join(""));
143
+ if (exportPartElement) {
144
+ const exportPartList = [];
145
+ const exportparts = exportPartElement.getAttribute("exportparts");
146
+ partList.forEach(partItem => {
147
+ const exportPartName = exportparts.match(`(?:([\\w-]+):)?(${partItem})`)[1];
148
+ if (exportPartName) {
149
+ exportPartList.push(exportPartName);
150
+ }
151
+ });
152
+ if (partList.length === exportPartList.length) {
153
+ return querySelectorDeep(exportPartElement, exportPartList.join(" "));
154
+ }
155
+ }
156
+ return null;
157
+ };
158
+ if (selector.includes("::part")) {
159
+ const selectorItems = selector.match("(.*)::part\\(([^)]+)\\)");
160
+ const entity = selectorItems[1];
161
+ const partName = selectorItems[2];
162
+ return querySelectorDeep(root.querySelector(entity), partName);
163
+ }
164
+ else {
165
+ return root.querySelector(selector);
166
+ }
167
+ }
168
+
169
+ const chShortcutsCss = ":host{display:contents}";
170
+
171
+ const ChShortcuts = class {
172
+ constructor(hostRef) {
173
+ index.registerInstance(this, hostRef);
174
+ this.showShortcuts = false;
175
+ this.showKey = "F10";
176
+ this.windowClosedHandler = () => {
177
+ this.showShortcuts = false;
178
+ };
179
+ }
180
+ componentDidLoad() {
181
+ if (this.src) {
182
+ fetch(this.src).then(response => {
183
+ if (response.ok) {
184
+ response.json().then(json => {
185
+ const root = this.el.getRootNode();
186
+ loadShortcuts(this.src, root, json);
187
+ });
188
+ }
189
+ });
190
+ }
191
+ }
192
+ disconnectedCallback() {
193
+ unloadShortcuts(this.src);
194
+ }
195
+ windowKeyDownHandler(eventInfo) {
196
+ if (eventInfo.key === this.showKey) {
197
+ this.showShortcuts = !this.showShortcuts;
198
+ eventInfo.preventDefault();
199
+ }
200
+ }
201
+ renderShortcuts() {
202
+ 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))));
203
+ }
204
+ render() {
205
+ return index.h(index.Host, null, this.showShortcuts && this.renderShortcuts());
206
+ }
207
+ get el() { return index.getElement(this); }
208
+ };
209
+ ChShortcuts.style = chShortcutsCss;
210
+
211
+ const shortcutsCss = ":root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-title-01--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-title-02{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em}.gxg-title-02--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em;color:var(--color-on-primary)}.gxg-title-03{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-xs);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em}.gxg-title-03--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-xs);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em;color:var(--color-on-primary)}.gxg-title-04{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-title-04--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-title-05{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;line-height:1.556em}.gxg-title-05--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;line-height:1.556em;color:var(--color-on-primary)}.gxg-text{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-text--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-text--gray{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--gray-05)}.gxg-quote{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;font-style:italic}.gxg-quote--negative{color:var(--color-on-primary)}.gxg-link{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--color-primary-hover)}.gxg-link:active{color:var(--color-primary-active)}.gxg-link-gray{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--gray-04)}.gxg-link-gray:hover{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--gray-04);color:var(--gray-06)}.gxg-alert-error{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-error-dark);display:inline-block}.gxg-alert-warning{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-warning-dark);display:inline-block}.gxg-alert-success{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-success-dark);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--font-family-primary) !important;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm) !important;letter-spacing:var(--letter-spacing-xs);color:var(--color-primary-enabled);text-align:center;line-height:1.455em}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-button-styles{font-family:var(--font-family-primary) !important;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm) !important;letter-spacing:var(--letter-spacing-xs);color:var(--color-primary-enabled);text-align:center;line-height:1.455em}.gxg-scrollbar{cursor:initial}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width, 6px);height:var(--gxg-scrollbar-width, 6px)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background, --gray-02);border-radius:var(--gxg-scrollbar-track-border-radius, 10px)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background, --gray-05);border-radius:var(--gxg-scrollbar-track-thumb-radius, 10px);border:var(--gxg-scrollbar-track-thumb-border);background-clip:padding-box}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background, --gray-04)}:host{display:block}ch-shortcuts::part(tooltip){font-family:monospace;background-color:var(--gray-06);color:var(--gray-01);padding:var(--spacing-comp-00) var(--spacing-comp-01);font-size:var(--font-size-sm);border-radius:var(--border-radius-sm);position:relative;top:-2.5px;right:-2px}ch-shortcuts::part(element){outline:var(--border-width-md) solid var(--gxg-border-color--focused);outline-offset:-2px;outline-color:var(--gray-06)}:host([show-tooltip]) ch-shortcuts::part(tooltip){opacity:1}";
212
+
213
+ const GxgShortcuts = class {
214
+ constructor(hostRef) {
215
+ index.registerInstance(this, hostRef);
216
+ this.showKey = "F10";
217
+ this.showTooltip = false;
218
+ this.show = false;
219
+ }
220
+ componentDidLoad() {
221
+ this.showTooltip = true;
222
+ }
223
+ render() {
224
+ return (index.h(index.Host, null, index.h("ch-shortcuts", { src: this.src, showKey: this.showKey })));
225
+ }
226
+ };
227
+ GxgShortcuts.style = shortcutsCss;
228
+
229
+ exports.ch_shortcuts = ChShortcuts;
230
+ exports.gxg_shortcuts = GxgShortcuts;