@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.
- package/dist/cjs/ch-shortcuts_2.cjs.entry.js +230 -0
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-new-environment.cjs.entry.js +7 -2
- package/dist/cjs/gxg-form-text.cjs.entry.js +3 -5
- package/dist/cjs/gxg-test.cjs.entry.js +7 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/new-environment/gx-ide-assets/new-environment/shortcuts.json +21 -0
- package/dist/collection/components/new-environment/new-environment.js +8 -3
- package/dist/components/ch-shortcuts.js +1 -236
- package/dist/{esm/ch-shortcuts.entry.js → components/ch-shortcuts2.js} +40 -9
- package/dist/components/form-text.js +3 -5
- package/dist/components/gx-ide-new-environment.js +58 -29
- package/dist/components/gxg-shortcuts.js +6 -0
- package/dist/components/gxg-test.js +32 -2
- package/dist/components/index.js +1 -0
- package/dist/components/shortcuts.js +58 -0
- package/dist/esm/ch-shortcuts_2.entry.js +225 -0
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-new-environment.entry.js +8 -3
- package/dist/esm/gxg-form-text.entry.js +3 -5
- package/dist/esm/gxg-test.entry.js +7 -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/new-environment/shortcuts.json +21 -0
- package/dist/genexus-ide-ui/p-0967fafc.entry.js +1 -0
- package/dist/genexus-ide-ui/p-0b6d53e1.entry.js +1 -0
- package/dist/genexus-ide-ui/p-2d77e2a3.entry.js +1 -0
- package/dist/genexus-ide-ui/p-4bceda48.entry.js +1 -0
- package/dist/node_modules/@genexus/gemini/dist/collection/components/form-text/form-text.css +1 -1
- package/dist/node_modules/@genexus/gemini/dist/collection/components/shortcuts/shortcuts.css +366 -0
- package/dist/types/components/new-environment/new-environment.d.ts +2 -0
- package/package.json +3 -3
- package/dist/cjs/ch-shortcuts.cjs.entry.js +0 -211
- package/dist/genexus-ide-ui/p-2e7d1eef.entry.js +0 -1
- package/dist/genexus-ide-ui/p-72fad9dd.entry.js +0 -1
- package/dist/genexus-ide-ui/p-9f4e169e.entry.js +0 -1
- 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;
|