@ui5/webcomponents-base 2.2.0 → 2.3.0-rc.1

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.
@@ -1,19 +1,19 @@
1
1
  declare class F6Navigation {
2
- static _instance: F6Navigation;
3
2
  keydownHandler: (event: KeyboardEvent) => void;
4
3
  selectedGroup: HTMLElement | null;
5
4
  groups: Array<HTMLElement>;
6
5
  constructor();
7
6
  attachEventListeners(): void;
7
+ removeEventListeners(): void;
8
8
  groupElementToFocus(nextElement: HTMLElement): Promise<HTMLElement | undefined>;
9
9
  findNextFocusableGroupElement(currentIndex: number): Promise<HTMLElement | undefined>;
10
10
  findPreviousFocusableGroupElement(currentIndex: number): Promise<HTMLElement | undefined>;
11
11
  _keydownHandler(event: KeyboardEvent): Promise<void>;
12
- removeEventListeners(): void;
13
12
  updateGroups(): void;
14
13
  setSelectedGroup(root?: DocumentOrShadowRoot): void;
15
14
  deepActive(root: DocumentOrShadowRoot): Element | null;
16
15
  destroy(): void;
17
- static init(): F6Navigation;
16
+ get _ui5RuntimeIndex(): number;
17
+ static init(): void;
18
18
  }
19
19
  export default F6Navigation;
@@ -4,6 +4,15 @@ import { instanceOfUI5Element } from "../UI5Element.js";
4
4
  import { getFirstFocusableElement } from "../util/FocusableElements.js";
5
5
  import getFastNavigationGroups from "../util/getFastNavigationGroups.js";
6
6
  import isElementClickable from "../util/isElementClickable.js";
7
+ import { getCurrentRuntimeIndex, compareRuntimes } from "../Runtimes.js";
8
+ import getSharedResource from "../getSharedResource.js";
9
+ const currentRuntimeINdex = getCurrentRuntimeIndex();
10
+ const shouldUpdate = (runtimeIndex) => {
11
+ if (runtimeIndex === undefined) {
12
+ return true;
13
+ }
14
+ return compareRuntimes(currentRuntimeINdex, runtimeIndex) === 1; // 1 means the current is newer, 0 means the same, -1 means the resource's runtime is newer
15
+ };
7
16
  class F6Navigation {
8
17
  constructor() {
9
18
  this.selectedGroup = null;
@@ -14,6 +23,9 @@ class F6Navigation {
14
23
  attachEventListeners() {
15
24
  document.addEventListener("keydown", this.keydownHandler);
16
25
  }
26
+ removeEventListeners() {
27
+ document.removeEventListener("keydown", this.keydownHandler);
28
+ }
17
29
  async groupElementToFocus(nextElement) {
18
30
  const nextElementDomRef = instanceOfUI5Element(nextElement) ? nextElement.getDomRef() : nextElement;
19
31
  if (nextElementDomRef) {
@@ -115,9 +127,6 @@ class F6Navigation {
115
127
  }
116
128
  elementToFocus?.focus();
117
129
  }
118
- removeEventListeners() {
119
- document.removeEventListener("keydown", this.keydownHandler);
120
- }
121
130
  updateGroups() {
122
131
  this.setSelectedGroup();
123
132
  this.groups = getFastNavigationGroups(document.body);
@@ -139,11 +148,18 @@ class F6Navigation {
139
148
  destroy() {
140
149
  this.removeEventListeners();
141
150
  }
151
+ get _ui5RuntimeIndex() {
152
+ return currentRuntimeINdex;
153
+ }
142
154
  static init() {
143
- if (!this._instance) {
144
- this._instance = new F6Navigation();
155
+ const f6Registry = getSharedResource("F6Registry", {});
156
+ if (!f6Registry.instance) {
157
+ f6Registry.instance = new F6Navigation();
158
+ }
159
+ else if (shouldUpdate(f6Registry.instance?._ui5RuntimeIndex)) {
160
+ f6Registry.instance?.destroy();
161
+ f6Registry.instance = new F6Navigation();
145
162
  }
146
- return this._instance;
147
163
  }
148
164
  }
149
165
  registerFeature("F6Navigation", F6Navigation);
@@ -1 +1 @@
1
- {"version":3,"file":"F6Navigation.js","sourceRoot":"","sources":["../../src/features/F6Navigation.ts"],"names":[],"mappings":"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","sourcesContent":["import { registerFeature } from \"../FeaturesRegistry.js\";\nimport { isF6Next, isF6Previous } from \"../Keys.js\";\nimport { instanceOfUI5Element } from \"../UI5Element.js\";\nimport { getFirstFocusableElement } from \"../util/FocusableElements.js\";\nimport getFastNavigationGroups from \"../util/getFastNavigationGroups.js\";\nimport isElementClickable from \"../util/isElementClickable.js\";\n\nclass F6Navigation {\n\tstatic _instance: F6Navigation;\n\tkeydownHandler: (event: KeyboardEvent) => void;\n\tselectedGroup: HTMLElement | null = null;\n\tgroups: Array<HTMLElement> = [];\n\n\tconstructor() {\n\t\tthis.keydownHandler = this._keydownHandler.bind(this) as (event: KeyboardEvent) => void;\n\t\tthis.attachEventListeners();\n\t}\n\n\tattachEventListeners() {\n\t\tdocument.addEventListener(\"keydown\", this.keydownHandler);\n\t}\n\n\tasync groupElementToFocus(nextElement: HTMLElement) {\n\t\tconst nextElementDomRef = instanceOfUI5Element(nextElement) ? nextElement.getDomRef() : nextElement;\n\n\t\tif (nextElementDomRef) {\n\t\t\tif (isElementClickable(nextElementDomRef)) {\n\t\t\t\treturn nextElementDomRef;\n\t\t\t}\n\n\t\t\tconst elementToFocus = await getFirstFocusableElement(nextElementDomRef);\n\n\t\t\tif (elementToFocus) {\n\t\t\t\treturn elementToFocus;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync findNextFocusableGroupElement(currentIndex: number) {\n\t\tlet elementToFocus;\n\n\t\t/* eslint-disable no-await-in-loop */\n\t\tfor (let index = 0; index < this.groups.length; index++) {\n\t\t\tlet nextElement;\n\n\t\t\tif (currentIndex > -1) {\n\t\t\t\tif (currentIndex + 1 >= this.groups.length) {\n\t\t\t\t\tcurrentIndex = 0;\n\t\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t\t} else {\n\t\t\t\t\tcurrentIndex += 1;\n\t\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcurrentIndex = 0;\n\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t}\n\n\t\t\telementToFocus = await this.groupElementToFocus(nextElement);\n\n\t\t\tif (elementToFocus) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-await-in-loop */\n\n\t\treturn elementToFocus;\n\t}\n\n\tasync findPreviousFocusableGroupElement(currentIndex: number) {\n\t\tlet elementToFocus;\n\n\t\t/* eslint-disable no-await-in-loop */\n\t\tfor (let index = 0; index < this.groups.length; index++) {\n\t\t\tlet nextElement;\n\n\t\t\tif (currentIndex > 0) {\n\t\t\t\t// Handle the situation where the first focusable element of two neighbor groups is the same\n\t\t\t\t// For example:\n\t\t\t\t// <ui5-flexible-column-layout>\n\t\t\t\t// <ui5-list>\n\t\t\t\t// <ui5-li>List Item</ui5-li>\n\t\t\t\t// </ui5-list>\n\t\t\t\t// </ui5-flexible-column-layout>\n\t\t\t\t// Here for both FCL & List the firstFoccusableElement is the same (the ui5-li)\n\t\t\t\tconst firstFocusable = await this.groupElementToFocus(this.groups[currentIndex - 1]);\n\t\t\t\tconst shouldSkipParent = firstFocusable === await this.groupElementToFocus(this.groups[currentIndex]);\n\n\t\t\t\tcurrentIndex = shouldSkipParent ? currentIndex - 2 : currentIndex - 1;\n\n\t\t\t\tif (currentIndex < 0) {\n\t\t\t\t\tcurrentIndex = this.groups.length - 1;\n\t\t\t\t}\n\n\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t} else {\n\t\t\t\tcurrentIndex = this.groups.length - 1;\n\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t}\n\n\t\t\telementToFocus = await this.groupElementToFocus(nextElement);\n\n\t\t\tif (elementToFocus) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-await-in-loop */\n\n\t\treturn elementToFocus;\n\t}\n\n\tasync _keydownHandler(event: KeyboardEvent) {\n\t\tconst forward = isF6Next(event);\n\t\tconst backward = isF6Previous(event);\n\t\tif (!(forward || backward)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateGroups();\n\n\t\tif (this.groups.length < 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tlet elementToFocus;\n\n\t\tif (this.groups.length === 0) {\n\t\t\telementToFocus = await this.groupElementToFocus(this.groups[0]);\n\n\t\t\treturn elementToFocus?.focus();\n\t\t}\n\n\t\tlet currentIndex = -1;\n\n\t\tif (this.selectedGroup) {\n\t\t\tcurrentIndex = this.groups.indexOf(this.selectedGroup);\n\t\t}\n\n\t\tif (forward) {\n\t\t\telementToFocus = await this.findNextFocusableGroupElement(currentIndex);\n\t\t}\n\n\t\tif (backward) {\n\t\t\telementToFocus = await this.findPreviousFocusableGroupElement(currentIndex);\n\t\t}\n\n\t\telementToFocus?.focus();\n\t}\n\n\tremoveEventListeners() {\n\t\tdocument.removeEventListener(\"keydown\", this.keydownHandler);\n\t}\n\n\tupdateGroups() {\n\t\tthis.setSelectedGroup();\n\t\tthis.groups = getFastNavigationGroups(document.body);\n\t}\n\n\tsetSelectedGroup(root: DocumentOrShadowRoot = window.document) {\n\t\tconst htmlElement = window.document.querySelector(\"html\");\n\t\tlet element: Element | null | ParentNode = this.deepActive(root);\n\n\t\twhile (element && (element as Element).getAttribute(\"data-sap-ui-fastnavgroup\") !== \"true\" && element !== htmlElement) {\n\t\t\telement = element.parentElement ? element.parentNode : (element.parentNode as ShadowRoot).host;\n\t\t}\n\n\t\tthis.selectedGroup = element as HTMLElement;\n\t}\n\n\tdeepActive(root: DocumentOrShadowRoot): Element | null {\n\t\tif (root?.activeElement?.shadowRoot?.activeElement) {\n\t\t\treturn this.deepActive(root.activeElement.shadowRoot);\n\t\t}\n\n\t\treturn root.activeElement;\n\t}\n\n\tdestroy() {\n\t\tthis.removeEventListeners();\n\t}\n\n\tstatic init() {\n\t\tif (!this._instance) {\n\t\t\tthis._instance = new F6Navigation();\n\t\t}\n\n\t\treturn this._instance;\n\t}\n}\n\nregisterFeature(\"F6Navigation\", F6Navigation);\n\nexport default F6Navigation;\n"]}
1
+ {"version":3,"file":"F6Navigation.js","sourceRoot":"","sources":["../../src/features/F6Navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,uBAAuB,MAAM,oCAAoC,CAAC;AACzE,OAAO,kBAAkB,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AAMxD,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAC;AAErD,MAAM,YAAY,GAAG,CAAC,YAAgC,EAAE,EAAE;IACzD,IAAI,YAAY,KAAK,SAAS,EAAE;QAC/B,OAAO,IAAI,CAAC;KACZ;IACD,OAAO,eAAe,CAAC,mBAAmB,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,2FAA2F;AAC7J,CAAC,CAAC;AAEF,MAAM,YAAY;IAKjB;QAHA,kBAAa,GAAuB,IAAI,CAAC;QACzC,WAAM,GAAuB,EAAE,CAAC;QAG/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAmC,CAAC;QACxF,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC7B,CAAC;IAED,oBAAoB;QACnB,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3D,CAAC;IAED,oBAAoB;QACnB,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,WAAwB;QACjD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QAEpG,IAAI,iBAAiB,EAAE;YACtB,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,EAAE;gBAC1C,OAAO,iBAAiB,CAAC;aACzB;YAED,MAAM,cAAc,GAAG,MAAM,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;YAEzE,IAAI,cAAc,EAAE;gBACnB,OAAO,cAAc,CAAC;aACtB;SACD;IACF,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,YAAoB;QACvD,IAAI,cAAc,CAAC;QAEnB,qCAAqC;QACrC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACxD,IAAI,WAAW,CAAC;YAEhB,IAAI,YAAY,GAAG,CAAC,CAAC,EAAE;gBACtB,IAAI,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAC3C,YAAY,GAAG,CAAC,CAAC;oBACjB,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;iBACxC;qBAAM;oBACN,YAAY,IAAI,CAAC,CAAC;oBAClB,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;iBACxC;aACD;iBAAM;gBACN,YAAY,GAAG,CAAC,CAAC;gBACjB,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;aACxC;YAED,cAAc,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAE7D,IAAI,cAAc,EAAE;gBACnB,MAAM;aACN;SACD;QACD,oCAAoC;QAEpC,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,iCAAiC,CAAC,YAAoB;QAC3D,IAAI,cAAc,CAAC;QAEnB,qCAAqC;QACrC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACxD,IAAI,WAAW,CAAC;YAEhB,IAAI,YAAY,GAAG,CAAC,EAAE;gBACrB,4FAA4F;gBAC5F,eAAe;gBACf,+BAA+B;gBAC/B,iBAAiB;gBACjB,qCAAqC;gBACrC,kBAAkB;gBAClB,gCAAgC;gBAChC,+EAA+E;gBAC/E,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrF,MAAM,gBAAgB,GAAG,cAAc,KAAK,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAEtG,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;gBAEtE,IAAI,YAAY,GAAG,CAAC,EAAE;oBACrB,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;iBACtC;gBAED,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;aACxC;iBAAM;gBACN,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBACtC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;aACxC;YAED,cAAc,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAE7D,IAAI,cAAc,EAAE;gBACnB,MAAM;aACN;SACD;QACD,oCAAoC;QAEpC,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAoB;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE;YAC3B,OAAO;SACP;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,OAAO;SACP;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,cAAc,CAAC;QAEnB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,cAAc,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAEhE,OAAO,cAAc,EAAE,KAAK,EAAE,CAAC;SAC/B;QAED,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;QAEtB,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACvD;QAED,IAAI,OAAO,EAAE;YACZ,cAAc,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC,CAAC;SACxE;QAED,IAAI,QAAQ,EAAE;YACb,cAAc,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,YAAY,CAAC,CAAC;SAC5E;QAED,cAAc,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,YAAY;QACX,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,gBAAgB,CAAC,OAA6B,MAAM,CAAC,QAAQ;QAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,OAAO,GAAgC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEjE,OAAO,OAAO,IAAK,OAAmB,CAAC,YAAY,CAAC,0BAA0B,CAAC,KAAK,MAAM,IAAI,OAAO,KAAK,WAAW,EAAE;YACtH,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAE,OAAO,CAAC,UAAyB,CAAC,IAAI,CAAC;SAC/F;QAED,IAAI,CAAC,aAAa,GAAG,OAAsB,CAAC;IAC7C,CAAC;IAED,UAAU,CAAC,IAA0B;QACpC,IAAI,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE;YACnD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SACtD;QAED,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED,OAAO;QACN,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,gBAAgB;QACnB,OAAO,mBAAmB,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,IAAI;QACV,MAAM,UAAU,GAAG,iBAAiB,CAAa,YAAY,EAAE,EAAE,CAAC,CAAC;QAEnE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YACzB,UAAU,CAAC,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;SACzC;aAAM,IAAI,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE;YAC/D,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;YAC/B,UAAU,CAAC,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;SACzC;IACF,CAAC;CACD;AAED,eAAe,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAE9C,eAAe,YAAY,CAAC","sourcesContent":["import { registerFeature } from \"../FeaturesRegistry.js\";\nimport { isF6Next, isF6Previous } from \"../Keys.js\";\nimport { instanceOfUI5Element } from \"../UI5Element.js\";\nimport { getFirstFocusableElement } from \"../util/FocusableElements.js\";\nimport getFastNavigationGroups from \"../util/getFastNavigationGroups.js\";\nimport isElementClickable from \"../util/isElementClickable.js\";\nimport { getCurrentRuntimeIndex, compareRuntimes } from \"../Runtimes.js\";\nimport getSharedResource from \"../getSharedResource.js\";\n\ntype F6Registry = {\n\tinstance?: F6Navigation,\n}\n\nconst currentRuntimeINdex = getCurrentRuntimeIndex();\n\nconst shouldUpdate = (runtimeIndex: number | undefined) => {\n\tif (runtimeIndex === undefined) {\n\t\treturn true;\n\t}\n\treturn compareRuntimes(currentRuntimeINdex, runtimeIndex) === 1; // 1 means the current is newer, 0 means the same, -1 means the resource's runtime is newer\n};\n\nclass F6Navigation {\n\tkeydownHandler: (event: KeyboardEvent) => void;\n\tselectedGroup: HTMLElement | null = null;\n\tgroups: Array<HTMLElement> = [];\n\n\tconstructor() {\n\t\tthis.keydownHandler = this._keydownHandler.bind(this) as (event: KeyboardEvent) => void;\n\t\tthis.attachEventListeners();\n\t}\n\n\tattachEventListeners() {\n\t\tdocument.addEventListener(\"keydown\", this.keydownHandler);\n\t}\n\n\tremoveEventListeners() {\n\t\tdocument.removeEventListener(\"keydown\", this.keydownHandler);\n\t}\n\n\tasync groupElementToFocus(nextElement: HTMLElement) {\n\t\tconst nextElementDomRef = instanceOfUI5Element(nextElement) ? nextElement.getDomRef() : nextElement;\n\n\t\tif (nextElementDomRef) {\n\t\t\tif (isElementClickable(nextElementDomRef)) {\n\t\t\t\treturn nextElementDomRef;\n\t\t\t}\n\n\t\t\tconst elementToFocus = await getFirstFocusableElement(nextElementDomRef);\n\n\t\t\tif (elementToFocus) {\n\t\t\t\treturn elementToFocus;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync findNextFocusableGroupElement(currentIndex: number) {\n\t\tlet elementToFocus;\n\n\t\t/* eslint-disable no-await-in-loop */\n\t\tfor (let index = 0; index < this.groups.length; index++) {\n\t\t\tlet nextElement;\n\n\t\t\tif (currentIndex > -1) {\n\t\t\t\tif (currentIndex + 1 >= this.groups.length) {\n\t\t\t\t\tcurrentIndex = 0;\n\t\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t\t} else {\n\t\t\t\t\tcurrentIndex += 1;\n\t\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcurrentIndex = 0;\n\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t}\n\n\t\t\telementToFocus = await this.groupElementToFocus(nextElement);\n\n\t\t\tif (elementToFocus) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-await-in-loop */\n\n\t\treturn elementToFocus;\n\t}\n\n\tasync findPreviousFocusableGroupElement(currentIndex: number) {\n\t\tlet elementToFocus;\n\n\t\t/* eslint-disable no-await-in-loop */\n\t\tfor (let index = 0; index < this.groups.length; index++) {\n\t\t\tlet nextElement;\n\n\t\t\tif (currentIndex > 0) {\n\t\t\t\t// Handle the situation where the first focusable element of two neighbor groups is the same\n\t\t\t\t// For example:\n\t\t\t\t// <ui5-flexible-column-layout>\n\t\t\t\t// <ui5-list>\n\t\t\t\t// <ui5-li>List Item</ui5-li>\n\t\t\t\t// </ui5-list>\n\t\t\t\t// </ui5-flexible-column-layout>\n\t\t\t\t// Here for both FCL & List the firstFoccusableElement is the same (the ui5-li)\n\t\t\t\tconst firstFocusable = await this.groupElementToFocus(this.groups[currentIndex - 1]);\n\t\t\t\tconst shouldSkipParent = firstFocusable === await this.groupElementToFocus(this.groups[currentIndex]);\n\n\t\t\t\tcurrentIndex = shouldSkipParent ? currentIndex - 2 : currentIndex - 1;\n\n\t\t\t\tif (currentIndex < 0) {\n\t\t\t\t\tcurrentIndex = this.groups.length - 1;\n\t\t\t\t}\n\n\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t} else {\n\t\t\t\tcurrentIndex = this.groups.length - 1;\n\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t}\n\n\t\t\telementToFocus = await this.groupElementToFocus(nextElement);\n\n\t\t\tif (elementToFocus) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-await-in-loop */\n\n\t\treturn elementToFocus;\n\t}\n\n\tasync _keydownHandler(event: KeyboardEvent) {\n\t\tconst forward = isF6Next(event);\n\t\tconst backward = isF6Previous(event);\n\t\tif (!(forward || backward)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateGroups();\n\n\t\tif (this.groups.length < 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tlet elementToFocus;\n\n\t\tif (this.groups.length === 0) {\n\t\t\telementToFocus = await this.groupElementToFocus(this.groups[0]);\n\n\t\t\treturn elementToFocus?.focus();\n\t\t}\n\n\t\tlet currentIndex = -1;\n\n\t\tif (this.selectedGroup) {\n\t\t\tcurrentIndex = this.groups.indexOf(this.selectedGroup);\n\t\t}\n\n\t\tif (forward) {\n\t\t\telementToFocus = await this.findNextFocusableGroupElement(currentIndex);\n\t\t}\n\n\t\tif (backward) {\n\t\t\telementToFocus = await this.findPreviousFocusableGroupElement(currentIndex);\n\t\t}\n\n\t\telementToFocus?.focus();\n\t}\n\n\tupdateGroups() {\n\t\tthis.setSelectedGroup();\n\t\tthis.groups = getFastNavigationGroups(document.body);\n\t}\n\n\tsetSelectedGroup(root: DocumentOrShadowRoot = window.document) {\n\t\tconst htmlElement = window.document.querySelector(\"html\");\n\t\tlet element: Element | null | ParentNode = this.deepActive(root);\n\n\t\twhile (element && (element as Element).getAttribute(\"data-sap-ui-fastnavgroup\") !== \"true\" && element !== htmlElement) {\n\t\t\telement = element.parentElement ? element.parentNode : (element.parentNode as ShadowRoot).host;\n\t\t}\n\n\t\tthis.selectedGroup = element as HTMLElement;\n\t}\n\n\tdeepActive(root: DocumentOrShadowRoot): Element | null {\n\t\tif (root?.activeElement?.shadowRoot?.activeElement) {\n\t\t\treturn this.deepActive(root.activeElement.shadowRoot);\n\t\t}\n\n\t\treturn root.activeElement;\n\t}\n\n\tdestroy() {\n\t\tthis.removeEventListeners();\n\t}\n\n\tget _ui5RuntimeIndex() {\n\t\treturn currentRuntimeINdex;\n\t}\n\n\tstatic init() {\n\t\tconst f6Registry = getSharedResource<F6Registry>(\"F6Registry\", {});\n\n\t\tif (!f6Registry.instance) {\n\t\t\tf6Registry.instance = new F6Navigation();\n\t\t} else if (shouldUpdate(f6Registry.instance?._ui5RuntimeIndex)) {\n\t\t\tf6Registry.instance?.destroy();\n\t\t\tf6Registry.instance = new F6Navigation();\n\t\t}\n\t}\n}\n\nregisterFeature(\"F6Navigation\", F6Navigation);\n\nexport default F6Navigation;\n"]}
@@ -1,11 +1,11 @@
1
1
  const VersionInfo = {
2
- version: "2.2.0",
2
+ version: "2.3.0-rc.1",
3
3
  major: 2,
4
- minor: 2,
4
+ minor: 3,
5
5
  patch: 0,
6
- suffix: "",
6
+ suffix: "-rc.1",
7
7
  isNext: false,
8
- buildTime: 1725354126,
8
+ buildTime: 1726128478,
9
9
  };
10
10
  export default VersionInfo;
11
11
  //# sourceMappingURL=VersionInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VersionInfo.js","sourceRoot":"","sources":["../../src/generated/VersionInfo.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IACnB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,UAAU;CACrB,CAAC;AACF,eAAe,WAAW,CAAC","sourcesContent":["const VersionInfo = {\n\tversion: \"2.2.0\",\n\tmajor: 2,\n\tminor: 2,\n\tpatch: 0,\n\tsuffix: \"\",\n\tisNext: false,\n\tbuildTime: 1725354126,\n};\nexport default VersionInfo;"]}
1
+ {"version":3,"file":"VersionInfo.js","sourceRoot":"","sources":["../../src/generated/VersionInfo.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IACnB,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,UAAU;CACrB,CAAC;AACF,eAAe,WAAW,CAAC","sourcesContent":["const VersionInfo = {\n\tversion: \"2.3.0-rc.1\",\n\tmajor: 2,\n\tminor: 3,\n\tpatch: 0,\n\tsuffix: \"-rc.1\",\n\tisNext: false,\n\tbuildTime: 1726128478,\n};\nexport default VersionInfo;"]}
package/dist/prod/Keys.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";const y={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CONTROL:17,ALT:18,BREAK:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,ARROW_LEFT:37,ARROW_UP:38,ARROW_RIGHT:39,ARROW_DOWN:40,PRINT:44,INSERT:45,DELETE:46,DIGIT_0:48,DIGIT_1:49,DIGIT_2:50,DIGIT_3:51,DIGIT_4:52,DIGIT_5:53,DIGIT_6:54,DIGIT_7:55,DIGIT_8:56,DIGIT_9:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,WINDOWS:91,CONTEXT_MENU:93,TURN_OFF:94,SLEEP:95,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_ASTERISK:106,NUMPAD_PLUS:107,NUMPAD_MINUS:109,NUMPAD_COMMA:110,NUMPAD_SLASH:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUM_LOCK:144,SCROLL_LOCK:145,COLON:186,PLUS:187,COMMA:188,SLASH:189,DOT:190,PIPE:191,SEMICOLON:192,MINUS:219,GREAT_ACCENT:220,EQUALS:221,SINGLE_QUOTE:222,BACKSLASH:226},b=o=>(o.key?o.key==="Enter":o.keyCode===y.ENTER)&&!e(o),d=o=>(o.key?o.key==="Enter":o.keyCode===y.ENTER)&&a(o,!1,!1,!0),f=o=>(o.key?o.key==="Spacebar"||o.key===" ":o.keyCode===y.SPACE)&&!e(o),i=o=>(o.key?o.key==="Spacebar"||o.key===" ":o.keyCode===y.SPACE)&&a(o,!1,!1,!0),A=o=>(o.key?o.key==="Spacebar"||o.key===" ":o.keyCode===y.SPACE)&&a(o,!0,!1,!1),C=o=>(o.key?o.key==="ArrowLeft"||o.key==="Left":o.keyCode===y.ARROW_LEFT)&&!e(o),K=o=>(o.key?o.key==="ArrowRight"||o.key==="Right":o.keyCode===y.ARROW_RIGHT)&&!e(o),c=o=>(o.key?o.key==="ArrowUp"||o.key==="Up":o.keyCode===y.ARROW_UP)&&!e(o),D=o=>(o.key?o.key==="ArrowDown"||o.key==="Down":o.keyCode===y.ARROW_DOWN)&&!e(o),P=o=>(o.key?o.key==="ArrowLeft"||o.key==="Left":o.keyCode===y.ARROW_LEFT)&&a(o,!0,!1,!1),R=o=>(o.key?o.key==="ArrowRight"||o.key==="Right":o.keyCode===y.ARROW_RIGHT)&&a(o,!0,!1,!1),_=o=>(o.key?o.key==="ArrowUp"||o.key==="Up":o.keyCode===y.ARROW_UP)&&a(o,!0,!1,!1),U=o=>(o.key?o.key==="ArrowDown"||o.key==="Down":o.keyCode===y.ARROW_DOWN)&&a(o,!0,!1,!1),S=o=>(o.key?o.key==="ArrowUp"||o.key==="Up":o.keyCode===y.ARROW_UP)&&a(o,!1,!1,!0),O=o=>(o.key?o.key==="ArrowDown"||o.key==="Down":o.keyCode===y.ARROW_DOWN)&&a(o,!1,!1,!0),u=o=>(o.key?o.key==="ArrowUp"||o.key==="Up":o.keyCode===y.ARROW_UP)&&a(o,!1,!0,!1),N=o=>(o.key?o.key==="ArrowDown"||o.key==="Down":o.keyCode===y.ARROW_DOWN)&&a(o,!1,!0,!1),w=o=>(o.key?o.key==="ArrowLeft"||o.key==="Left":o.keyCode===y.ARROW_LEFT)&&a(o,!1,!1,!0),t=o=>(o.key?o.key==="ArrowRight"||o.key==="Right":o.keyCode===y.ARROW_RIGHT)&&a(o,!1,!1,!0),T=o=>(o.key?o.key==="ArrowLeft"||o.key==="Left":o.keyCode===y.ARROW_LEFT)&&a(o,!0,!1,!0),h=o=>(o.key?o.key==="ArrowRight"||o.key==="Right":o.keyCode===y.ARROW_RIGHT)&&a(o,!0,!1,!0),I=o=>(o.key?o.key==="ArrowUp"||o.key==="Up":o.keyCode===y.ARROW_UP)&&a(o,!0,!1,!0),L=o=>(o.key?o.key==="ArrowDown"||o.key==="Down":o.keyCode===y.ARROW_DOWN)&&a(o,!0,!1,!0),p=o=>(o.key?o.key==="Home":o.keyCode===y.HOME)&&!e(o),F=o=>(o.key?o.key==="End":o.keyCode===y.END)&&!e(o),W=o=>(o.key?o.key==="Home":o.keyCode===y.HOME)&&a(o,!0,!1,!1),M=o=>(o.key?o.key==="Home":o.keyCode===y.HOME)&&a(o,!1,!1,!0),G=o=>(o.key?o.key==="End":o.keyCode===y.END)&&a(o,!0,!1,!1),g=o=>(o.key?o.key==="End":o.keyCode===y.END)&&a(o,!1,!1,!0),n=o=>(o.key?o.key==="Escape"||o.key==="Esc":o.keyCode===y.ESCAPE)&&!e(o),H=o=>(o.key?o.key==="Tab":o.keyCode===y.TAB)&&!e(o),B=o=>(o.key?o.key==="Tab":o.keyCode===y.TAB)&&a(o,!1,!1,!0),m=o=>(o.key?o.key==="Backspace":o.keyCode===y.BACKSPACE)&&!e(o),x=o=>(o.key?o.key==="Delete":o.keyCode===y.DELETE)&&!e(o),V=o=>(o.key?o.key==="Delete":o.keyCode===y.DELETE)&&a(o,!1,!1,!0),Q=o=>(o.key?o.key==="Insert":o.keyCode===y.DELETE)&&a(o,!1,!1,!0),X=o=>(o.key?o.key==="Insert":o.keyCode===y.DELETE)&&a(o,!0,!1,!1),J=o=>(o.key?o.key==="PageUp":o.keyCode===y.PAGE_UP)&&!e(o),Y=o=>(o.key?o.key==="PageDown":o.keyCode===y.PAGE_DOWN)&&!e(o),Z=o=>(o.key?o.key==="PageUp":o.keyCode===y.PAGE_UP)&&a(o,!1,!1,!0),j=o=>(o.key?o.key==="PageUp":o.keyCode===y.PAGE_UP)&&a(o,!1,!0,!1),q=o=>(o.key?o.key==="PageDown":o.keyCode===y.PAGE_DOWN)&&a(o,!1,!1,!0),z=o=>(o.key?o.key==="PageDown":o.keyCode===y.PAGE_DOWN)&&a(o,!1,!0,!1),$=o=>(o.key?o.key==="PageUp":o.keyCode===y.PAGE_UP)&&a(o,!0,!1,!0),v=o=>(o.key?o.key==="PageDown":o.keyCode===y.PAGE_DOWN)&&a(o,!0,!1,!0),oo=o=>(o.key?o.key==="+":o.keyCode===y.PLUS)||o.keyCode===y.NUMPAD_PLUS&&!e(o),yo=o=>(o.key?o.key==="-":o.keyCode===y.MINUS)||o.keyCode===y.NUMPAD_MINUS&&!e(o),ao=o=>o.key?s(o)||bo(o):o.keyCode===y.F4&&!e(o)||o.keyCode===y.ARROW_DOWN&&a(o,!1,!0,!1),eo=o=>o.key==="F2"&&!e(o),s=o=>o.key==="F4"&&!e(o),so=o=>(o.key?o.key==="F4":o.keyCode===y.F4)&&a(o,!1,!1,!0),ko=o=>(o.key?o.key==="F10":o.keyCode===y.F10)&&a(o,!1,!1,!0),ro=o=>(o.key?o.key==="F6":o.keyCode===y.F6)&&a(o,!1,!1,!1)||(o.key?o.key==="ArrowDown"||o.key==="Down":o.keyCode===y.ARROW_DOWN)&&a(o,!0,!0,!1),lo=o=>(o.key?o.key==="F6":o.keyCode===y.F6)&&a(o,!1,!1,!0)||(o.key?o.key==="ArrowUp"||o.key==="Up":o.keyCode===y.ARROW_UP)&&a(o,!0,!0,!1),Eo=o=>(o.key?o.key==="F7":o.keyCode===y.F7)&&!e(o),bo=o=>(o.key==="ArrowDown"||o.key==="Down"||o.key==="ArrowUp"||o.key==="Up")&&a(o,!1,!0,!1),fo=o=>o.key==="Shift"||o.keyCode===y.SHIFT,io=o=>(o.key==="A"||o.key==="a"||o.which===y.A)&&a(o,!0,!1,!1),Ao=o=>(o.key==="V"||o.key==="v"||o.which===y.V)&&a(o,!0,!1,!1),Co=o=>(o.key==="A"||o.key==="a"||o.which===y.A)&&a(o,!1,!1,!1),Ko=o=>(o.key==="P"||o.key==="p"||o.which===y.P)&&a(o,!1,!1,!1),e=o=>o.shiftKey||o.altKey||k(o),k=o=>!!(o.metaKey||o.ctrlKey),a=(o,r,l,E)=>o.shiftKey===E&&o.altKey===l&&k(o)===r,co=o=>(o.key?"0123456789".indexOf(o.key)!==-1:o.keyCode>=y.DIGIT_0&&o.keyCode<=y.DIGIT_9)&&a(o,!1,!1,!1),Do=o=>(o.key?o.key===":":o.keyCode===y.COLON)&&a(o,!1,!1,!0);export{b as isEnter,d as isEnterShift,f as isSpace,i as isSpaceShift,A as isSpaceCtrl,C as isLeft,K as isRight,c as isUp,D as isDown,P as isLeftCtrl,R as isRightCtrl,_ as isUpCtrl,U as isDownCtrl,S as isUpShift,O as isDownShift,u as isUpAlt,N as isDownAlt,w as isLeftShift,t as isRightShift,T as isLeftShiftCtrl,h as isRightShiftCtrl,I as isUpShiftCtrl,L as isDownShiftCtrl,p as isHome,F as isEnd,oo as isPlus,yo as isMinus,W as isHomeCtrl,G as isEndCtrl,M as isHomeShift,g as isEndShift,n as isEscape,H as isTabNext,B as isTabPrevious,m as isBackSpace,x as isDelete,ao as isShow,eo as isF2,s as isF4,so as isF4Shift,ko as isF10Shift,lo as isF6Previous,ro as isF6Next,Eo as isF7,J as isPageUp,Y as isPageDown,Z as isPageUpShift,j as isPageUpAlt,q as isPageDownShift,z as isPageDownAlt,$ as isPageUpShiftCtrl,v as isPageDownShiftCtrl,fo as isShift,io as isCtrlA,Ao as isCtrlV,Co as isKeyA,Ko as isKeyP,V as isDeleteShift,Q as isInsertShift,X as isInsertCtrl,co as isNumber,Do as isColon};
1
+ "use strict";const y={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CONTROL:17,ALT:18,BREAK:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,ARROW_LEFT:37,ARROW_UP:38,ARROW_RIGHT:39,ARROW_DOWN:40,PRINT:44,INSERT:45,DELETE:46,DIGIT_0:48,DIGIT_1:49,DIGIT_2:50,DIGIT_3:51,DIGIT_4:52,DIGIT_5:53,DIGIT_6:54,DIGIT_7:55,DIGIT_8:56,DIGIT_9:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,WINDOWS:91,CONTEXT_MENU:93,TURN_OFF:94,SLEEP:95,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_ASTERISK:106,NUMPAD_PLUS:107,NUMPAD_MINUS:109,NUMPAD_COMMA:110,NUMPAD_SLASH:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUM_LOCK:144,SCROLL_LOCK:145,COLON:186,PLUS:187,COMMA:188,SLASH:189,DOT:190,PIPE:191,SEMICOLON:192,MINUS:219,GREAT_ACCENT:220,EQUALS:221,SINGLE_QUOTE:222,BACKSLASH:226},b=o=>(o.key?o.key==="Enter":o.keyCode===y.ENTER)&&!a(o),d=o=>(o.key?o.key==="Enter":o.keyCode===y.ENTER)&&e(o,!1,!1,!0),f=o=>e(o,!0,!1,!1),i=o=>(o.key?o.key==="Spacebar"||o.key===" ":o.keyCode===y.SPACE)&&!a(o),A=o=>(o.key?o.key==="Spacebar"||o.key===" ":o.keyCode===y.SPACE)&&e(o,!1,!1,!0),C=o=>(o.key?o.key==="Spacebar"||o.key===" ":o.keyCode===y.SPACE)&&e(o,!0,!1,!1),K=o=>(o.key?o.key==="ArrowLeft"||o.key==="Left":o.keyCode===y.ARROW_LEFT)&&!a(o),c=o=>(o.key?o.key==="ArrowRight"||o.key==="Right":o.keyCode===y.ARROW_RIGHT)&&!a(o),D=o=>(o.key?o.key==="ArrowUp"||o.key==="Up":o.keyCode===y.ARROW_UP)&&!a(o),P=o=>(o.key?o.key==="ArrowDown"||o.key==="Down":o.keyCode===y.ARROW_DOWN)&&!a(o),R=o=>(o.key?o.key==="ArrowLeft"||o.key==="Left":o.keyCode===y.ARROW_LEFT)&&e(o,!0,!1,!1),_=o=>(o.key?o.key==="ArrowRight"||o.key==="Right":o.keyCode===y.ARROW_RIGHT)&&e(o,!0,!1,!1),U=o=>(o.key?o.key==="ArrowUp"||o.key==="Up":o.keyCode===y.ARROW_UP)&&e(o,!0,!1,!1),S=o=>(o.key?o.key==="ArrowDown"||o.key==="Down":o.keyCode===y.ARROW_DOWN)&&e(o,!0,!1,!1),O=o=>(o.key?o.key==="ArrowUp"||o.key==="Up":o.keyCode===y.ARROW_UP)&&e(o,!1,!1,!0),u=o=>(o.key?o.key==="ArrowDown"||o.key==="Down":o.keyCode===y.ARROW_DOWN)&&e(o,!1,!1,!0),N=o=>(o.key?o.key==="ArrowUp"||o.key==="Up":o.keyCode===y.ARROW_UP)&&e(o,!1,!0,!1),t=o=>(o.key?o.key==="ArrowDown"||o.key==="Down":o.keyCode===y.ARROW_DOWN)&&e(o,!1,!0,!1),w=o=>(o.key?o.key==="ArrowLeft"||o.key==="Left":o.keyCode===y.ARROW_LEFT)&&e(o,!1,!1,!0),T=o=>(o.key?o.key==="ArrowRight"||o.key==="Right":o.keyCode===y.ARROW_RIGHT)&&e(o,!1,!1,!0),h=o=>(o.key?o.key==="ArrowLeft"||o.key==="Left":o.keyCode===y.ARROW_LEFT)&&e(o,!0,!1,!0),I=o=>(o.key?o.key==="ArrowRight"||o.key==="Right":o.keyCode===y.ARROW_RIGHT)&&e(o,!0,!1,!0),L=o=>(o.key?o.key==="ArrowUp"||o.key==="Up":o.keyCode===y.ARROW_UP)&&e(o,!0,!1,!0),p=o=>(o.key?o.key==="ArrowDown"||o.key==="Down":o.keyCode===y.ARROW_DOWN)&&e(o,!0,!1,!0),F=o=>(o.key?o.key==="Home":o.keyCode===y.HOME)&&!a(o),W=o=>(o.key?o.key==="End":o.keyCode===y.END)&&!a(o),M=o=>(o.key?o.key==="Home":o.keyCode===y.HOME)&&e(o,!0,!1,!1),G=o=>(o.key?o.key==="Home":o.keyCode===y.HOME)&&e(o,!1,!1,!0),g=o=>(o.key?o.key==="End":o.keyCode===y.END)&&e(o,!0,!1,!1),n=o=>(o.key?o.key==="End":o.keyCode===y.END)&&e(o,!1,!1,!0),H=o=>(o.key?o.key==="Escape"||o.key==="Esc":o.keyCode===y.ESCAPE)&&!a(o),B=o=>(o.key?o.key==="Tab":o.keyCode===y.TAB)&&!a(o),m=o=>(o.key?o.key==="Tab":o.keyCode===y.TAB)&&e(o,!1,!1,!0),x=o=>(o.key?o.key==="Backspace":o.keyCode===y.BACKSPACE)&&!a(o),V=o=>(o.key?o.key==="Delete":o.keyCode===y.DELETE)&&!a(o),Q=o=>(o.key?o.key==="Delete":o.keyCode===y.DELETE)&&e(o,!1,!1,!0),X=o=>(o.key?o.key==="Insert":o.keyCode===y.DELETE)&&e(o,!1,!1,!0),J=o=>(o.key?o.key==="Insert":o.keyCode===y.DELETE)&&e(o,!0,!1,!1),Y=o=>(o.key?o.key==="PageUp":o.keyCode===y.PAGE_UP)&&!a(o),Z=o=>(o.key?o.key==="PageDown":o.keyCode===y.PAGE_DOWN)&&!a(o),j=o=>(o.key?o.key==="PageUp":o.keyCode===y.PAGE_UP)&&e(o,!1,!1,!0),q=o=>(o.key?o.key==="PageUp":o.keyCode===y.PAGE_UP)&&e(o,!1,!0,!1),z=o=>(o.key?o.key==="PageDown":o.keyCode===y.PAGE_DOWN)&&e(o,!1,!1,!0),$=o=>(o.key?o.key==="PageDown":o.keyCode===y.PAGE_DOWN)&&e(o,!1,!0,!1),v=o=>(o.key?o.key==="PageUp":o.keyCode===y.PAGE_UP)&&e(o,!0,!1,!0),oo=o=>(o.key?o.key==="PageDown":o.keyCode===y.PAGE_DOWN)&&e(o,!0,!1,!0),yo=o=>(o.key?o.key==="+":o.keyCode===y.PLUS)||o.keyCode===y.NUMPAD_PLUS&&!a(o),eo=o=>(o.key?o.key==="-":o.keyCode===y.MINUS)||o.keyCode===y.NUMPAD_MINUS&&!a(o),ao=o=>o.key?s(o)||fo(o):o.keyCode===y.F4&&!a(o)||o.keyCode===y.ARROW_DOWN&&e(o,!1,!0,!1),so=o=>o.key==="F2"&&!a(o),s=o=>o.key==="F4"&&!a(o),ko=o=>(o.key?o.key==="F4":o.keyCode===y.F4)&&e(o,!1,!1,!0),ro=o=>(o.key?o.key==="F10":o.keyCode===y.F10)&&e(o,!1,!1,!0),lo=o=>(o.key?o.key==="F6":o.keyCode===y.F6)&&e(o,!1,!1,!1)||(o.key?o.key==="ArrowDown"||o.key==="Down":o.keyCode===y.ARROW_DOWN)&&e(o,!0,!0,!1),Eo=o=>(o.key?o.key==="F6":o.keyCode===y.F6)&&e(o,!1,!1,!0)||(o.key?o.key==="ArrowUp"||o.key==="Up":o.keyCode===y.ARROW_UP)&&e(o,!0,!0,!1),bo=o=>(o.key?o.key==="F7":o.keyCode===y.F7)&&!a(o),fo=o=>(o.key==="ArrowDown"||o.key==="Down"||o.key==="ArrowUp"||o.key==="Up")&&e(o,!1,!0,!1),io=o=>o.key==="Shift"||o.keyCode===y.SHIFT,Ao=o=>(o.key==="A"||o.key==="a"||o.which===y.A)&&e(o,!0,!1,!1),Co=o=>(o.key==="V"||o.key==="v"||o.which===y.V)&&e(o,!0,!1,!1),Ko=o=>(o.key==="A"||o.key==="a"||o.which===y.A)&&e(o,!1,!1,!1),co=o=>(o.key==="P"||o.key==="p"||o.which===y.P)&&e(o,!1,!1,!1),a=o=>o.shiftKey||o.altKey||k(o),k=o=>!!(o.metaKey||o.ctrlKey),e=(o,r,l,E)=>o.shiftKey===E&&o.altKey===l&&k(o)===r,Do=o=>(o.key?"0123456789".indexOf(o.key)!==-1:o.keyCode>=y.DIGIT_0&&o.keyCode<=y.DIGIT_9)&&e(o,!1,!1,!1),Po=o=>(o.key?o.key===":":o.keyCode===y.COLON)&&e(o,!1,!1,!0);export{b as isEnter,d as isEnterShift,f as isCtrl,i as isSpace,A as isSpaceShift,C as isSpaceCtrl,K as isLeft,c as isRight,D as isUp,P as isDown,R as isLeftCtrl,_ as isRightCtrl,U as isUpCtrl,S as isDownCtrl,O as isUpShift,u as isDownShift,N as isUpAlt,t as isDownAlt,w as isLeftShift,T as isRightShift,h as isLeftShiftCtrl,I as isRightShiftCtrl,L as isUpShiftCtrl,p as isDownShiftCtrl,F as isHome,W as isEnd,yo as isPlus,eo as isMinus,M as isHomeCtrl,g as isEndCtrl,G as isHomeShift,n as isEndShift,H as isEscape,B as isTabNext,m as isTabPrevious,x as isBackSpace,V as isDelete,ao as isShow,so as isF2,s as isF4,ko as isF4Shift,ro as isF10Shift,Eo as isF6Previous,lo as isF6Next,bo as isF7,Y as isPageUp,Z as isPageDown,j as isPageUpShift,q as isPageUpAlt,z as isPageDownShift,$ as isPageDownAlt,v as isPageUpShiftCtrl,oo as isPageDownShiftCtrl,io as isShift,Ao as isCtrlA,Co as isCtrlV,Ko as isKeyA,co as isKeyP,Q as isDeleteShift,X as isInsertShift,J as isInsertCtrl,Do as isNumber,Po as isColon};
2
2
  //# sourceMappingURL=Keys.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/Keys.ts"],
4
- "sourcesContent": ["const KeyCodes = {\n\tBACKSPACE: 8,\n\tTAB: 9,\n\tENTER: 13,\n\tSHIFT: 16,\n\tCONTROL: 17,\n\tALT: 18,\n\tBREAK: 19,\n\tCAPS_LOCK: 20,\n\tESCAPE: 27,\n\tSPACE: 32,\n\tPAGE_UP: 33,\n\tPAGE_DOWN: 34,\n\tEND: 35,\n\tHOME: 36,\n\tARROW_LEFT: 37,\n\tARROW_UP: 38,\n\tARROW_RIGHT: 39,\n\tARROW_DOWN: 40,\n\tPRINT: 44,\n\tINSERT: 45,\n\tDELETE: 46,\n\tDIGIT_0: 48,\n\tDIGIT_1: 49,\n\tDIGIT_2: 50,\n\tDIGIT_3: 51,\n\tDIGIT_4: 52,\n\tDIGIT_5: 53,\n\tDIGIT_6: 54,\n\tDIGIT_7: 55,\n\tDIGIT_8: 56,\n\tDIGIT_9: 57,\n\tA: 65,\n\tB: 66,\n\tC: 67,\n\tD: 68,\n\tE: 69,\n\tF: 70,\n\tG: 71,\n\tH: 72,\n\tI: 73,\n\tJ: 74,\n\tK: 75,\n\tL: 76,\n\tM: 77,\n\tN: 78,\n\tO: 79,\n\tP: 80,\n\tQ: 81,\n\tR: 82,\n\tS: 83,\n\tT: 84,\n\tU: 85,\n\tV: 86,\n\tW: 87,\n\tX: 88,\n\tY: 89,\n\tZ: 90,\n\tWINDOWS: 91,\n\tCONTEXT_MENU: 93,\n\tTURN_OFF: 94,\n\tSLEEP: 95,\n\tNUMPAD_0: 96,\n\tNUMPAD_1: 97,\n\tNUMPAD_2: 98,\n\tNUMPAD_3: 99,\n\tNUMPAD_4: 100,\n\tNUMPAD_5: 101,\n\tNUMPAD_6: 102,\n\tNUMPAD_7: 103,\n\tNUMPAD_8: 104,\n\tNUMPAD_9: 105,\n\tNUMPAD_ASTERISK: 106,\n\tNUMPAD_PLUS: 107,\n\tNUMPAD_MINUS: 109,\n\tNUMPAD_COMMA: 110,\n\tNUMPAD_SLASH: 111,\n\tF1: 112,\n\tF2: 113,\n\tF3: 114,\n\tF4: 115,\n\tF5: 116,\n\tF6: 117,\n\tF7: 118,\n\tF8: 119,\n\tF9: 120,\n\tF10: 121,\n\tF11: 122,\n\tF12: 123,\n\tNUM_LOCK: 144,\n\tSCROLL_LOCK: 145,\n\tCOLON: 186,\n\tPLUS: 187,\n\tCOMMA: 188,\n\tSLASH: 189,\n\tDOT: 190,\n\tPIPE: 191,\n\tSEMICOLON: 192,\n\tMINUS: 219,\n\tGREAT_ACCENT: 220,\n\tEQUALS: 221,\n\tSINGLE_QUOTE: 222,\n\tBACKSLASH: 226,\n} as const;\ntype KeyCodes = typeof KeyCodes[keyof typeof KeyCodes];\n\nconst isEnter = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Enter\" : event.keyCode === KeyCodes.ENTER) && !hasModifierKeys(event);\n\nconst isEnterShift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Enter\" : event.keyCode === KeyCodes.ENTER) && checkModifierKeys(event, false, false, true);\n\nconst isSpace = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"Spacebar\" || event.key === \" \") : event.keyCode === KeyCodes.SPACE) && !hasModifierKeys(event);\n\nconst isSpaceShift = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"Spacebar\" || event.key === \" \") : event.keyCode === KeyCodes.SPACE) && checkModifierKeys(event, false, false, true);\n\nconst isSpaceCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"Spacebar\" || event.key === \" \") : event.keyCode === KeyCodes.SPACE) && checkModifierKeys(event, true, false, false);\n\nconst isLeft = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowLeft\" || event.key === \"Left\") : event.keyCode === KeyCodes.ARROW_LEFT) && !hasModifierKeys(event);\n\nconst isRight = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowRight\" || event.key === \"Right\") : event.keyCode === KeyCodes.ARROW_RIGHT) && !hasModifierKeys(event);\n\nconst isUp = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowUp\" || event.key === \"Up\") : event.keyCode === KeyCodes.ARROW_UP) && !hasModifierKeys(event);\n\nconst isDown = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowDown\" || event.key === \"Down\") : event.keyCode === KeyCodes.ARROW_DOWN) && !hasModifierKeys(event);\n\nconst isLeftCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowLeft\" || event.key === \"Left\") : event.keyCode === KeyCodes.ARROW_LEFT) && checkModifierKeys(event, true, false, false);\n\nconst isRightCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowRight\" || event.key === \"Right\") : event.keyCode === KeyCodes.ARROW_RIGHT) && checkModifierKeys(event, true, false, false);\n\nconst isUpCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowUp\" || event.key === \"Up\") : event.keyCode === KeyCodes.ARROW_UP) && checkModifierKeys(event, true, false, false);\n\nconst isDownCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowDown\" || event.key === \"Down\") : event.keyCode === KeyCodes.ARROW_DOWN) && checkModifierKeys(event, true, false, false);\n\nconst isUpShift = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowUp\" || event.key === \"Up\") : event.keyCode === KeyCodes.ARROW_UP) && checkModifierKeys(event, false, false, true);\n\nconst isDownShift = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowDown\" || event.key === \"Down\") : event.keyCode === KeyCodes.ARROW_DOWN) && checkModifierKeys(event, false, false, true);\n\nconst isUpAlt = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowUp\" || event.key === \"Up\") : event.keyCode === KeyCodes.ARROW_UP) && checkModifierKeys(event, false, true, false);\n\nconst isDownAlt = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowDown\" || event.key === \"Down\") : event.keyCode === KeyCodes.ARROW_DOWN) && checkModifierKeys(event, false, true, false);\n\nconst isLeftShift = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowLeft\" || event.key === \"Left\") : event.keyCode === KeyCodes.ARROW_LEFT) && checkModifierKeys(event, false, false, true);\n\nconst isRightShift = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowRight\" || event.key === \"Right\") : event.keyCode === KeyCodes.ARROW_RIGHT) && checkModifierKeys(event, false, false, true);\n\nconst isLeftShiftCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowLeft\" || event.key === \"Left\") : event.keyCode === KeyCodes.ARROW_LEFT) && checkModifierKeys(event, true, false, true);\n\nconst isRightShiftCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowRight\" || event.key === \"Right\") : event.keyCode === KeyCodes.ARROW_RIGHT) && checkModifierKeys(event, true, false, true);\n\nconst isUpShiftCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowUp\" || event.key === \"Up\") : event.keyCode === KeyCodes.ARROW_UP) && checkModifierKeys(event, true, false, true);\n\nconst isDownShiftCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowDown\" || event.key === \"Down\") : event.keyCode === KeyCodes.ARROW_DOWN) && checkModifierKeys(event, true, false, true);\n\nconst isHome = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Home\" : event.keyCode === KeyCodes.HOME) && !hasModifierKeys(event);\n\nconst isEnd = (event: KeyboardEvent): boolean => (event.key ? event.key === \"End\" : event.keyCode === KeyCodes.END) && !hasModifierKeys(event);\n\nconst isHomeCtrl = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Home\" : event.keyCode === KeyCodes.HOME) && checkModifierKeys(event, true, false, false);\n\nconst isHomeShift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Home\" : event.keyCode === KeyCodes.HOME) && checkModifierKeys(event, false, false, true);\n\nconst isEndCtrl = (event: KeyboardEvent): boolean => (event.key ? event.key === \"End\" : event.keyCode === KeyCodes.END) && checkModifierKeys(event, true, false, false);\n\nconst isEndShift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"End\" : event.keyCode === KeyCodes.END) && checkModifierKeys(event, false, false, true);\n\nconst isEscape = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Escape\" || event.key === \"Esc\" : event.keyCode === KeyCodes.ESCAPE) && !hasModifierKeys(event);\n\nconst isTabNext = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Tab\" : event.keyCode === KeyCodes.TAB) && !hasModifierKeys(event);\n\nconst isTabPrevious = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Tab\" : event.keyCode === KeyCodes.TAB) && checkModifierKeys(event, /* Ctrl */ false, /* Alt */ false, /* Shift */ true);\n\nconst isBackSpace = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Backspace\" : event.keyCode === KeyCodes.BACKSPACE) && !hasModifierKeys(event);\n\nconst isDelete = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Delete\" : event.keyCode === KeyCodes.DELETE) && !hasModifierKeys(event);\n\nconst isDeleteShift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Delete\" : event.keyCode === KeyCodes.DELETE) && checkModifierKeys(event, false, false, true);\n\nconst isInsertShift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Insert\" : event.keyCode === KeyCodes.DELETE) && checkModifierKeys(event, false, false, true);\n\nconst isInsertCtrl = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Insert\" : event.keyCode === KeyCodes.DELETE) && checkModifierKeys(event, true, false, false);\n\nconst isPageUp = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageUp\" : event.keyCode === KeyCodes.PAGE_UP) && !hasModifierKeys(event);\n\nconst isPageDown = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageDown\" : event.keyCode === KeyCodes.PAGE_DOWN) && !hasModifierKeys(event);\n\nconst isPageUpShift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageUp\" : event.keyCode === KeyCodes.PAGE_UP) && checkModifierKeys(event, false, false, true);\n\nconst isPageUpAlt = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageUp\" : event.keyCode === KeyCodes.PAGE_UP) && checkModifierKeys(event, false, true, false);\n\nconst isPageDownShift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageDown\" : event.keyCode === KeyCodes.PAGE_DOWN) && checkModifierKeys(event, false, false, true);\n\nconst isPageDownAlt = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageDown\" : event.keyCode === KeyCodes.PAGE_DOWN) && checkModifierKeys(event, false, true, false);\n\nconst isPageUpShiftCtrl = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageUp\" : event.keyCode === KeyCodes.PAGE_UP) && checkModifierKeys(event, true, false, true);\n\nconst isPageDownShiftCtrl = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageDown\" : event.keyCode === KeyCodes.PAGE_DOWN) && checkModifierKeys(event, true, false, true);\n\nconst isPlus = (event: KeyboardEvent): boolean => (event.key ? event.key === \"+\" : event.keyCode === KeyCodes.PLUS) || (event.keyCode === KeyCodes.NUMPAD_PLUS && !hasModifierKeys(event));\n\nconst isMinus = (event: KeyboardEvent): boolean => (event.key ? event.key === \"-\" : event.keyCode === KeyCodes.MINUS) || (event.keyCode === KeyCodes.NUMPAD_MINUS && !hasModifierKeys(event));\n\nconst isShow = (event: KeyboardEvent): boolean => {\n\tif (event.key) {\n\t\treturn isF4(event) || isShowByArrows(event);\n\t}\n\n\treturn (event.keyCode === KeyCodes.F4 && !hasModifierKeys(event)) || (event.keyCode === KeyCodes.ARROW_DOWN && checkModifierKeys(event, /* Ctrl */ false, /* Alt */ true, /* Shift */ false));\n};\n\nconst isF2 = (event: KeyboardEvent): boolean => {\n\treturn event.key === \"F2\" && !hasModifierKeys(event);\n};\n\nconst isF4 = (event: KeyboardEvent): boolean => {\n\treturn event.key === \"F4\" && !hasModifierKeys(event);\n};\n\nconst isF4Shift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"F4\" : event.keyCode === KeyCodes.F4) && checkModifierKeys(event, false, false, true);\n\nconst isF10Shift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"F10\" : event.keyCode === KeyCodes.F10) && checkModifierKeys(event, false, false, true);\n\nconst isF6Next = (event: KeyboardEvent): boolean => ((event.key ? event.key === \"F6\" : event.keyCode === KeyCodes.F6) && checkModifierKeys(event, false, false, false))\n\t|| ((event.key ? (event.key === \"ArrowDown\" || event.key === \"Down\") : event.keyCode === KeyCodes.ARROW_DOWN) && checkModifierKeys(event, true, true, false));\n\nconst isF6Previous = (event: KeyboardEvent): boolean => ((event.key ? event.key === \"F6\" : event.keyCode === KeyCodes.F6) && checkModifierKeys(event, false, false, true))\n\t|| ((event.key ? (event.key === \"ArrowUp\" || event.key === \"Up\") : event.keyCode === KeyCodes.ARROW_UP) && checkModifierKeys(event, true, true, false));\n\nconst isF7 = (event: KeyboardEvent): boolean => (event.key ? event.key === \"F7\" : event.keyCode === KeyCodes.F7) && !hasModifierKeys(event);\n\nconst isShowByArrows = (event: KeyboardEvent): boolean => {\n\treturn ((event.key === \"ArrowDown\" || event.key === \"Down\") || (event.key === \"ArrowUp\" || event.key === \"Up\")) && checkModifierKeys(event, /* Ctrl */ false, /* Alt */ true, /* Shift */ false);\n};\n\nconst isShift = (event: KeyboardEvent): boolean => event.key === \"Shift\" || event.keyCode === KeyCodes.SHIFT;\n\nconst isCtrlA = (event: KeyboardEvent): boolean => ((event.key === \"A\" || event.key === \"a\") || event.which === KeyCodes.A) && checkModifierKeys(event, true, false, false);\n\nconst isCtrlV = (event: KeyboardEvent): boolean => ((event.key === \"V\" || event.key === \"v\") || event.which === KeyCodes.V) && checkModifierKeys(event, true, false, false);\n\nconst isKeyA = (event: KeyboardEvent): boolean => ((event.key === \"A\" || event.key === \"a\") || event.which === KeyCodes.A) && checkModifierKeys(event, false, false, false);\n\nconst isKeyP = (event: KeyboardEvent): boolean => ((event.key === \"P\" || event.key === \"p\") || event.which === KeyCodes.P) && checkModifierKeys(event, false, false, false);\n\nconst hasModifierKeys = (event: KeyboardEvent): boolean => event.shiftKey || event.altKey || getCtrlKey(event);\n\nconst getCtrlKey = (event: KeyboardEvent): boolean => !!(event.metaKey || event.ctrlKey); // double negation doesn't have effect on boolean but ensures null and undefined are equivalent to false.\n\nconst checkModifierKeys = (event: KeyboardEvent, bCtrlKey: boolean, bAltKey: boolean, bShiftKey: boolean):boolean => event.shiftKey === bShiftKey && event.altKey === bAltKey && getCtrlKey(event) === bCtrlKey;\n\nconst isNumber = (event: KeyboardEvent): boolean => ((event.key ? \"0123456789\".indexOf(event.key) !== -1 : event.keyCode >= KeyCodes.DIGIT_0 && event.keyCode <= KeyCodes.DIGIT_9) && checkModifierKeys(event, false, false, false));\n\nconst isColon = (event: KeyboardEvent): boolean => ((event.key ? event.key === \":\" : event.keyCode === KeyCodes.COLON) && checkModifierKeys(event, false, false, true));\n\nexport {\n\tisEnter,\n\tisEnterShift,\n\tisSpace,\n\tisSpaceShift,\n\tisSpaceCtrl,\n\tisLeft,\n\tisRight,\n\tisUp,\n\tisDown,\n\tisLeftCtrl,\n\tisRightCtrl,\n\tisUpCtrl,\n\tisDownCtrl,\n\tisUpShift,\n\tisDownShift,\n\tisUpAlt,\n\tisDownAlt,\n\tisLeftShift,\n\tisRightShift,\n\tisLeftShiftCtrl,\n\tisRightShiftCtrl,\n\tisUpShiftCtrl,\n\tisDownShiftCtrl,\n\tisHome,\n\tisEnd,\n\tisPlus,\n\tisMinus,\n\tisHomeCtrl,\n\tisEndCtrl,\n\tisHomeShift,\n\tisEndShift,\n\tisEscape,\n\tisTabNext,\n\tisTabPrevious,\n\tisBackSpace,\n\tisDelete,\n\tisShow,\n\tisF2,\n\tisF4,\n\tisF4Shift,\n\tisF10Shift,\n\tisF6Previous,\n\tisF6Next,\n\tisF7,\n\tisPageUp,\n\tisPageDown,\n\tisPageUpShift,\n\tisPageUpAlt,\n\tisPageDownShift,\n\tisPageDownAlt,\n\tisPageUpShiftCtrl,\n\tisPageDownShiftCtrl,\n\tisShift,\n\tisCtrlA,\n\tisCtrlV,\n\tisKeyA,\n\tisKeyP,\n\tisDeleteShift,\n\tisInsertShift,\n\tisInsertCtrl,\n\tisNumber,\n\tisColon,\n};\n"],
5
- "mappings": "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",
6
- "names": ["KeyCodes", "isEnter", "event", "hasModifierKeys", "isEnterShift", "checkModifierKeys", "isSpace", "isSpaceShift", "isSpaceCtrl", "isLeft", "isRight", "isUp", "isDown", "isLeftCtrl", "isRightCtrl", "isUpCtrl", "isDownCtrl", "isUpShift", "isDownShift", "isUpAlt", "isDownAlt", "isLeftShift", "isRightShift", "isLeftShiftCtrl", "isRightShiftCtrl", "isUpShiftCtrl", "isDownShiftCtrl", "isHome", "isEnd", "isHomeCtrl", "isHomeShift", "isEndCtrl", "isEndShift", "isEscape", "isTabNext", "isTabPrevious", "isBackSpace", "isDelete", "isDeleteShift", "isInsertShift", "isInsertCtrl", "isPageUp", "isPageDown", "isPageUpShift", "isPageUpAlt", "isPageDownShift", "isPageDownAlt", "isPageUpShiftCtrl", "isPageDownShiftCtrl", "isPlus", "isMinus", "isShow", "isF4", "isShowByArrows", "isF2", "isF4Shift", "isF10Shift", "isF6Next", "isF6Previous", "isF7", "isShift", "isCtrlA", "isCtrlV", "isKeyA", "isKeyP", "getCtrlKey", "bCtrlKey", "bAltKey", "bShiftKey", "isNumber", "isColon"]
4
+ "sourcesContent": ["const KeyCodes = {\n\tBACKSPACE: 8,\n\tTAB: 9,\n\tENTER: 13,\n\tSHIFT: 16,\n\tCONTROL: 17,\n\tALT: 18,\n\tBREAK: 19,\n\tCAPS_LOCK: 20,\n\tESCAPE: 27,\n\tSPACE: 32,\n\tPAGE_UP: 33,\n\tPAGE_DOWN: 34,\n\tEND: 35,\n\tHOME: 36,\n\tARROW_LEFT: 37,\n\tARROW_UP: 38,\n\tARROW_RIGHT: 39,\n\tARROW_DOWN: 40,\n\tPRINT: 44,\n\tINSERT: 45,\n\tDELETE: 46,\n\tDIGIT_0: 48,\n\tDIGIT_1: 49,\n\tDIGIT_2: 50,\n\tDIGIT_3: 51,\n\tDIGIT_4: 52,\n\tDIGIT_5: 53,\n\tDIGIT_6: 54,\n\tDIGIT_7: 55,\n\tDIGIT_8: 56,\n\tDIGIT_9: 57,\n\tA: 65,\n\tB: 66,\n\tC: 67,\n\tD: 68,\n\tE: 69,\n\tF: 70,\n\tG: 71,\n\tH: 72,\n\tI: 73,\n\tJ: 74,\n\tK: 75,\n\tL: 76,\n\tM: 77,\n\tN: 78,\n\tO: 79,\n\tP: 80,\n\tQ: 81,\n\tR: 82,\n\tS: 83,\n\tT: 84,\n\tU: 85,\n\tV: 86,\n\tW: 87,\n\tX: 88,\n\tY: 89,\n\tZ: 90,\n\tWINDOWS: 91,\n\tCONTEXT_MENU: 93,\n\tTURN_OFF: 94,\n\tSLEEP: 95,\n\tNUMPAD_0: 96,\n\tNUMPAD_1: 97,\n\tNUMPAD_2: 98,\n\tNUMPAD_3: 99,\n\tNUMPAD_4: 100,\n\tNUMPAD_5: 101,\n\tNUMPAD_6: 102,\n\tNUMPAD_7: 103,\n\tNUMPAD_8: 104,\n\tNUMPAD_9: 105,\n\tNUMPAD_ASTERISK: 106,\n\tNUMPAD_PLUS: 107,\n\tNUMPAD_MINUS: 109,\n\tNUMPAD_COMMA: 110,\n\tNUMPAD_SLASH: 111,\n\tF1: 112,\n\tF2: 113,\n\tF3: 114,\n\tF4: 115,\n\tF5: 116,\n\tF6: 117,\n\tF7: 118,\n\tF8: 119,\n\tF9: 120,\n\tF10: 121,\n\tF11: 122,\n\tF12: 123,\n\tNUM_LOCK: 144,\n\tSCROLL_LOCK: 145,\n\tCOLON: 186,\n\tPLUS: 187,\n\tCOMMA: 188,\n\tSLASH: 189,\n\tDOT: 190,\n\tPIPE: 191,\n\tSEMICOLON: 192,\n\tMINUS: 219,\n\tGREAT_ACCENT: 220,\n\tEQUALS: 221,\n\tSINGLE_QUOTE: 222,\n\tBACKSLASH: 226,\n} as const;\ntype KeyCodes = typeof KeyCodes[keyof typeof KeyCodes];\n\nconst isEnter = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Enter\" : event.keyCode === KeyCodes.ENTER) && !hasModifierKeys(event);\n\nconst isEnterShift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Enter\" : event.keyCode === KeyCodes.ENTER) && checkModifierKeys(event, false, false, true);\n\nconst isCtrl = (event: KeyboardEvent): boolean => checkModifierKeys(event, true, false, false);\n\nconst isSpace = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"Spacebar\" || event.key === \" \") : event.keyCode === KeyCodes.SPACE) && !hasModifierKeys(event);\n\nconst isSpaceShift = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"Spacebar\" || event.key === \" \") : event.keyCode === KeyCodes.SPACE) && checkModifierKeys(event, false, false, true);\n\nconst isSpaceCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"Spacebar\" || event.key === \" \") : event.keyCode === KeyCodes.SPACE) && checkModifierKeys(event, true, false, false);\n\nconst isLeft = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowLeft\" || event.key === \"Left\") : event.keyCode === KeyCodes.ARROW_LEFT) && !hasModifierKeys(event);\n\nconst isRight = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowRight\" || event.key === \"Right\") : event.keyCode === KeyCodes.ARROW_RIGHT) && !hasModifierKeys(event);\n\nconst isUp = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowUp\" || event.key === \"Up\") : event.keyCode === KeyCodes.ARROW_UP) && !hasModifierKeys(event);\n\nconst isDown = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowDown\" || event.key === \"Down\") : event.keyCode === KeyCodes.ARROW_DOWN) && !hasModifierKeys(event);\n\nconst isLeftCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowLeft\" || event.key === \"Left\") : event.keyCode === KeyCodes.ARROW_LEFT) && checkModifierKeys(event, true, false, false);\n\nconst isRightCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowRight\" || event.key === \"Right\") : event.keyCode === KeyCodes.ARROW_RIGHT) && checkModifierKeys(event, true, false, false);\n\nconst isUpCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowUp\" || event.key === \"Up\") : event.keyCode === KeyCodes.ARROW_UP) && checkModifierKeys(event, true, false, false);\n\nconst isDownCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowDown\" || event.key === \"Down\") : event.keyCode === KeyCodes.ARROW_DOWN) && checkModifierKeys(event, true, false, false);\n\nconst isUpShift = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowUp\" || event.key === \"Up\") : event.keyCode === KeyCodes.ARROW_UP) && checkModifierKeys(event, false, false, true);\n\nconst isDownShift = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowDown\" || event.key === \"Down\") : event.keyCode === KeyCodes.ARROW_DOWN) && checkModifierKeys(event, false, false, true);\n\nconst isUpAlt = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowUp\" || event.key === \"Up\") : event.keyCode === KeyCodes.ARROW_UP) && checkModifierKeys(event, false, true, false);\n\nconst isDownAlt = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowDown\" || event.key === \"Down\") : event.keyCode === KeyCodes.ARROW_DOWN) && checkModifierKeys(event, false, true, false);\n\nconst isLeftShift = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowLeft\" || event.key === \"Left\") : event.keyCode === KeyCodes.ARROW_LEFT) && checkModifierKeys(event, false, false, true);\n\nconst isRightShift = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowRight\" || event.key === \"Right\") : event.keyCode === KeyCodes.ARROW_RIGHT) && checkModifierKeys(event, false, false, true);\n\nconst isLeftShiftCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowLeft\" || event.key === \"Left\") : event.keyCode === KeyCodes.ARROW_LEFT) && checkModifierKeys(event, true, false, true);\n\nconst isRightShiftCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowRight\" || event.key === \"Right\") : event.keyCode === KeyCodes.ARROW_RIGHT) && checkModifierKeys(event, true, false, true);\n\nconst isUpShiftCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowUp\" || event.key === \"Up\") : event.keyCode === KeyCodes.ARROW_UP) && checkModifierKeys(event, true, false, true);\n\nconst isDownShiftCtrl = (event: KeyboardEvent): boolean => (event.key ? (event.key === \"ArrowDown\" || event.key === \"Down\") : event.keyCode === KeyCodes.ARROW_DOWN) && checkModifierKeys(event, true, false, true);\n\nconst isHome = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Home\" : event.keyCode === KeyCodes.HOME) && !hasModifierKeys(event);\n\nconst isEnd = (event: KeyboardEvent): boolean => (event.key ? event.key === \"End\" : event.keyCode === KeyCodes.END) && !hasModifierKeys(event);\n\nconst isHomeCtrl = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Home\" : event.keyCode === KeyCodes.HOME) && checkModifierKeys(event, true, false, false);\n\nconst isHomeShift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Home\" : event.keyCode === KeyCodes.HOME) && checkModifierKeys(event, false, false, true);\n\nconst isEndCtrl = (event: KeyboardEvent): boolean => (event.key ? event.key === \"End\" : event.keyCode === KeyCodes.END) && checkModifierKeys(event, true, false, false);\n\nconst isEndShift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"End\" : event.keyCode === KeyCodes.END) && checkModifierKeys(event, false, false, true);\n\nconst isEscape = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Escape\" || event.key === \"Esc\" : event.keyCode === KeyCodes.ESCAPE) && !hasModifierKeys(event);\n\nconst isTabNext = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Tab\" : event.keyCode === KeyCodes.TAB) && !hasModifierKeys(event);\n\nconst isTabPrevious = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Tab\" : event.keyCode === KeyCodes.TAB) && checkModifierKeys(event, /* Ctrl */ false, /* Alt */ false, /* Shift */ true);\n\nconst isBackSpace = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Backspace\" : event.keyCode === KeyCodes.BACKSPACE) && !hasModifierKeys(event);\n\nconst isDelete = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Delete\" : event.keyCode === KeyCodes.DELETE) && !hasModifierKeys(event);\n\nconst isDeleteShift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Delete\" : event.keyCode === KeyCodes.DELETE) && checkModifierKeys(event, false, false, true);\n\nconst isInsertShift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Insert\" : event.keyCode === KeyCodes.DELETE) && checkModifierKeys(event, false, false, true);\n\nconst isInsertCtrl = (event: KeyboardEvent): boolean => (event.key ? event.key === \"Insert\" : event.keyCode === KeyCodes.DELETE) && checkModifierKeys(event, true, false, false);\n\nconst isPageUp = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageUp\" : event.keyCode === KeyCodes.PAGE_UP) && !hasModifierKeys(event);\n\nconst isPageDown = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageDown\" : event.keyCode === KeyCodes.PAGE_DOWN) && !hasModifierKeys(event);\n\nconst isPageUpShift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageUp\" : event.keyCode === KeyCodes.PAGE_UP) && checkModifierKeys(event, false, false, true);\n\nconst isPageUpAlt = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageUp\" : event.keyCode === KeyCodes.PAGE_UP) && checkModifierKeys(event, false, true, false);\n\nconst isPageDownShift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageDown\" : event.keyCode === KeyCodes.PAGE_DOWN) && checkModifierKeys(event, false, false, true);\n\nconst isPageDownAlt = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageDown\" : event.keyCode === KeyCodes.PAGE_DOWN) && checkModifierKeys(event, false, true, false);\n\nconst isPageUpShiftCtrl = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageUp\" : event.keyCode === KeyCodes.PAGE_UP) && checkModifierKeys(event, true, false, true);\n\nconst isPageDownShiftCtrl = (event: KeyboardEvent): boolean => (event.key ? event.key === \"PageDown\" : event.keyCode === KeyCodes.PAGE_DOWN) && checkModifierKeys(event, true, false, true);\n\nconst isPlus = (event: KeyboardEvent): boolean => (event.key ? event.key === \"+\" : event.keyCode === KeyCodes.PLUS) || (event.keyCode === KeyCodes.NUMPAD_PLUS && !hasModifierKeys(event));\n\nconst isMinus = (event: KeyboardEvent): boolean => (event.key ? event.key === \"-\" : event.keyCode === KeyCodes.MINUS) || (event.keyCode === KeyCodes.NUMPAD_MINUS && !hasModifierKeys(event));\n\nconst isShow = (event: KeyboardEvent): boolean => {\n\tif (event.key) {\n\t\treturn isF4(event) || isShowByArrows(event);\n\t}\n\n\treturn (event.keyCode === KeyCodes.F4 && !hasModifierKeys(event)) || (event.keyCode === KeyCodes.ARROW_DOWN && checkModifierKeys(event, /* Ctrl */ false, /* Alt */ true, /* Shift */ false));\n};\n\nconst isF2 = (event: KeyboardEvent): boolean => {\n\treturn event.key === \"F2\" && !hasModifierKeys(event);\n};\n\nconst isF4 = (event: KeyboardEvent): boolean => {\n\treturn event.key === \"F4\" && !hasModifierKeys(event);\n};\n\nconst isF4Shift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"F4\" : event.keyCode === KeyCodes.F4) && checkModifierKeys(event, false, false, true);\n\nconst isF10Shift = (event: KeyboardEvent): boolean => (event.key ? event.key === \"F10\" : event.keyCode === KeyCodes.F10) && checkModifierKeys(event, false, false, true);\n\nconst isF6Next = (event: KeyboardEvent): boolean => ((event.key ? event.key === \"F6\" : event.keyCode === KeyCodes.F6) && checkModifierKeys(event, false, false, false))\n\t|| ((event.key ? (event.key === \"ArrowDown\" || event.key === \"Down\") : event.keyCode === KeyCodes.ARROW_DOWN) && checkModifierKeys(event, true, true, false));\n\nconst isF6Previous = (event: KeyboardEvent): boolean => ((event.key ? event.key === \"F6\" : event.keyCode === KeyCodes.F6) && checkModifierKeys(event, false, false, true))\n\t|| ((event.key ? (event.key === \"ArrowUp\" || event.key === \"Up\") : event.keyCode === KeyCodes.ARROW_UP) && checkModifierKeys(event, true, true, false));\n\nconst isF7 = (event: KeyboardEvent): boolean => (event.key ? event.key === \"F7\" : event.keyCode === KeyCodes.F7) && !hasModifierKeys(event);\n\nconst isShowByArrows = (event: KeyboardEvent): boolean => {\n\treturn ((event.key === \"ArrowDown\" || event.key === \"Down\") || (event.key === \"ArrowUp\" || event.key === \"Up\")) && checkModifierKeys(event, /* Ctrl */ false, /* Alt */ true, /* Shift */ false);\n};\n\nconst isShift = (event: KeyboardEvent): boolean => event.key === \"Shift\" || event.keyCode === KeyCodes.SHIFT;\n\nconst isCtrlA = (event: KeyboardEvent): boolean => ((event.key === \"A\" || event.key === \"a\") || event.which === KeyCodes.A) && checkModifierKeys(event, true, false, false);\n\nconst isCtrlV = (event: KeyboardEvent): boolean => ((event.key === \"V\" || event.key === \"v\") || event.which === KeyCodes.V) && checkModifierKeys(event, true, false, false);\n\nconst isKeyA = (event: KeyboardEvent): boolean => ((event.key === \"A\" || event.key === \"a\") || event.which === KeyCodes.A) && checkModifierKeys(event, false, false, false);\n\nconst isKeyP = (event: KeyboardEvent): boolean => ((event.key === \"P\" || event.key === \"p\") || event.which === KeyCodes.P) && checkModifierKeys(event, false, false, false);\n\nconst hasModifierKeys = (event: KeyboardEvent): boolean => event.shiftKey || event.altKey || getCtrlKey(event);\n\nconst getCtrlKey = (event: KeyboardEvent): boolean => !!(event.metaKey || event.ctrlKey); // double negation doesn't have effect on boolean but ensures null and undefined are equivalent to false.\n\nconst checkModifierKeys = (event: KeyboardEvent, bCtrlKey: boolean, bAltKey: boolean, bShiftKey: boolean):boolean => event.shiftKey === bShiftKey && event.altKey === bAltKey && getCtrlKey(event) === bCtrlKey;\n\nconst isNumber = (event: KeyboardEvent): boolean => ((event.key ? \"0123456789\".indexOf(event.key) !== -1 : event.keyCode >= KeyCodes.DIGIT_0 && event.keyCode <= KeyCodes.DIGIT_9) && checkModifierKeys(event, false, false, false));\n\nconst isColon = (event: KeyboardEvent): boolean => ((event.key ? event.key === \":\" : event.keyCode === KeyCodes.COLON) && checkModifierKeys(event, false, false, true));\n\nexport {\n\tisEnter,\n\tisEnterShift,\n\tisCtrl,\n\tisSpace,\n\tisSpaceShift,\n\tisSpaceCtrl,\n\tisLeft,\n\tisRight,\n\tisUp,\n\tisDown,\n\tisLeftCtrl,\n\tisRightCtrl,\n\tisUpCtrl,\n\tisDownCtrl,\n\tisUpShift,\n\tisDownShift,\n\tisUpAlt,\n\tisDownAlt,\n\tisLeftShift,\n\tisRightShift,\n\tisLeftShiftCtrl,\n\tisRightShiftCtrl,\n\tisUpShiftCtrl,\n\tisDownShiftCtrl,\n\tisHome,\n\tisEnd,\n\tisPlus,\n\tisMinus,\n\tisHomeCtrl,\n\tisEndCtrl,\n\tisHomeShift,\n\tisEndShift,\n\tisEscape,\n\tisTabNext,\n\tisTabPrevious,\n\tisBackSpace,\n\tisDelete,\n\tisShow,\n\tisF2,\n\tisF4,\n\tisF4Shift,\n\tisF10Shift,\n\tisF6Previous,\n\tisF6Next,\n\tisF7,\n\tisPageUp,\n\tisPageDown,\n\tisPageUpShift,\n\tisPageUpAlt,\n\tisPageDownShift,\n\tisPageDownAlt,\n\tisPageUpShiftCtrl,\n\tisPageDownShiftCtrl,\n\tisShift,\n\tisCtrlA,\n\tisCtrlV,\n\tisKeyA,\n\tisKeyP,\n\tisDeleteShift,\n\tisInsertShift,\n\tisInsertCtrl,\n\tisNumber,\n\tisColon,\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["KeyCodes", "isEnter", "event", "hasModifierKeys", "isEnterShift", "checkModifierKeys", "isCtrl", "isSpace", "isSpaceShift", "isSpaceCtrl", "isLeft", "isRight", "isUp", "isDown", "isLeftCtrl", "isRightCtrl", "isUpCtrl", "isDownCtrl", "isUpShift", "isDownShift", "isUpAlt", "isDownAlt", "isLeftShift", "isRightShift", "isLeftShiftCtrl", "isRightShiftCtrl", "isUpShiftCtrl", "isDownShiftCtrl", "isHome", "isEnd", "isHomeCtrl", "isHomeShift", "isEndCtrl", "isEndShift", "isEscape", "isTabNext", "isTabPrevious", "isBackSpace", "isDelete", "isDeleteShift", "isInsertShift", "isInsertCtrl", "isPageUp", "isPageDown", "isPageUpShift", "isPageUpAlt", "isPageDownShift", "isPageDownAlt", "isPageUpShiftCtrl", "isPageDownShiftCtrl", "isPlus", "isMinus", "isShow", "isF4", "isShowByArrows", "isF2", "isF4Shift", "isF10Shift", "isF6Next", "isF6Previous", "isF7", "isShift", "isCtrlA", "isCtrlV", "isKeyA", "isKeyP", "getCtrlKey", "bCtrlKey", "bAltKey", "bShiftKey", "isNumber", "isColon"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";import{registerFeature as a}from"../FeaturesRegistry.js";import{isF6Next as r,isF6Previous as l}from"../Keys.js";import{instanceOfUI5Element as u}from"../UI5Element.js";import{getFirstFocusableElement as h}from"../util/FocusableElements.js";import m from"../util/getFastNavigationGroups.js";import p from"../util/isElementClickable.js";class n{constructor(){this.selectedGroup=null;this.groups=[];this.keydownHandler=this._keydownHandler.bind(this),this.attachEventListeners()}attachEventListeners(){document.addEventListener("keydown",this.keydownHandler)}async groupElementToFocus(e){const o=u(e)?e.getDomRef():e;if(o){if(p(o))return o;const t=await h(o);if(t)return t}}async findNextFocusableGroupElement(e){let o;for(let t=0;t<this.groups.length;t++){let s;if(e>-1?e+1>=this.groups.length?(e=0,s=this.groups[e]):(e+=1,s=this.groups[e]):(e=0,s=this.groups[e]),o=await this.groupElementToFocus(s),o)break}return o}async findPreviousFocusableGroupElement(e){let o;for(let t=0;t<this.groups.length;t++){let s;if(e>0?(e=await this.groupElementToFocus(this.groups[e-1])===await this.groupElementToFocus(this.groups[e])?e-2:e-1,e<0&&(e=this.groups.length-1),s=this.groups[e]):(e=this.groups.length-1,s=this.groups[e]),o=await this.groupElementToFocus(s),o)break}return o}async _keydownHandler(e){const o=r(e),t=l(e);if(!(o||t)||(this.updateGroups(),this.groups.length<1))return;e.preventDefault();let s;if(this.groups.length===0)return s=await this.groupElementToFocus(this.groups[0]),s?.focus();let i=-1;this.selectedGroup&&(i=this.groups.indexOf(this.selectedGroup)),o&&(s=await this.findNextFocusableGroupElement(i)),t&&(s=await this.findPreviousFocusableGroupElement(i)),s?.focus()}removeEventListeners(){document.removeEventListener("keydown",this.keydownHandler)}updateGroups(){this.setSelectedGroup(),this.groups=m(document.body)}setSelectedGroup(e=window.document){const o=window.document.querySelector("html");let t=this.deepActive(e);for(;t&&t.getAttribute("data-sap-ui-fastnavgroup")!=="true"&&t!==o;)t=t.parentElement?t.parentNode:t.parentNode.host;this.selectedGroup=t}deepActive(e){return e?.activeElement?.shadowRoot?.activeElement?this.deepActive(e.activeElement.shadowRoot):e.activeElement}destroy(){this.removeEventListeners()}static init(){return this._instance||(this._instance=new n),this._instance}}a("F6Navigation",n);export default n;
1
+ "use strict";import{registerFeature as a}from"../FeaturesRegistry.js";import{isF6Next as l,isF6Previous as m}from"../Keys.js";import{instanceOfUI5Element as p}from"../UI5Element.js";import{getFirstFocusableElement as h}from"../util/FocusableElements.js";import d from"../util/getFastNavigationGroups.js";import c from"../util/isElementClickable.js";import{getCurrentRuntimeIndex as f,compareRuntimes as g}from"../Runtimes.js";import E from"../getSharedResource.js";const u=f(),w=r=>r===void 0?!0:g(u,r)===1;class i{constructor(){this.selectedGroup=null;this.groups=[];this.keydownHandler=this._keydownHandler.bind(this),this.attachEventListeners()}attachEventListeners(){document.addEventListener("keydown",this.keydownHandler)}removeEventListeners(){document.removeEventListener("keydown",this.keydownHandler)}async groupElementToFocus(e){const o=p(e)?e.getDomRef():e;if(o){if(c(o))return o;const t=await h(o);if(t)return t}}async findNextFocusableGroupElement(e){let o;for(let t=0;t<this.groups.length;t++){let s;if(e>-1?e+1>=this.groups.length?(e=0,s=this.groups[e]):(e+=1,s=this.groups[e]):(e=0,s=this.groups[e]),o=await this.groupElementToFocus(s),o)break}return o}async findPreviousFocusableGroupElement(e){let o;for(let t=0;t<this.groups.length;t++){let s;if(e>0?(e=await this.groupElementToFocus(this.groups[e-1])===await this.groupElementToFocus(this.groups[e])?e-2:e-1,e<0&&(e=this.groups.length-1),s=this.groups[e]):(e=this.groups.length-1,s=this.groups[e]),o=await this.groupElementToFocus(s),o)break}return o}async _keydownHandler(e){const o=l(e),t=m(e);if(!(o||t)||(this.updateGroups(),this.groups.length<1))return;e.preventDefault();let s;if(this.groups.length===0)return s=await this.groupElementToFocus(this.groups[0]),s?.focus();let n=-1;this.selectedGroup&&(n=this.groups.indexOf(this.selectedGroup)),o&&(s=await this.findNextFocusableGroupElement(n)),t&&(s=await this.findPreviousFocusableGroupElement(n)),s?.focus()}updateGroups(){this.setSelectedGroup(),this.groups=d(document.body)}setSelectedGroup(e=window.document){const o=window.document.querySelector("html");let t=this.deepActive(e);for(;t&&t.getAttribute("data-sap-ui-fastnavgroup")!=="true"&&t!==o;)t=t.parentElement?t.parentNode:t.parentNode.host;this.selectedGroup=t}deepActive(e){return e?.activeElement?.shadowRoot?.activeElement?this.deepActive(e.activeElement.shadowRoot):e.activeElement}destroy(){this.removeEventListeners()}get _ui5RuntimeIndex(){return u}static init(){const e=E("F6Registry",{});e.instance?w(e.instance?._ui5RuntimeIndex)&&(e.instance?.destroy(),e.instance=new i):e.instance=new i}}a("F6Navigation",i);export default i;
2
2
  //# sourceMappingURL=F6Navigation.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/features/F6Navigation.ts"],
4
- "sourcesContent": ["import { registerFeature } from \"../FeaturesRegistry.js\";\nimport { isF6Next, isF6Previous } from \"../Keys.js\";\nimport { instanceOfUI5Element } from \"../UI5Element.js\";\nimport { getFirstFocusableElement } from \"../util/FocusableElements.js\";\nimport getFastNavigationGroups from \"../util/getFastNavigationGroups.js\";\nimport isElementClickable from \"../util/isElementClickable.js\";\n\nclass F6Navigation {\n\tstatic _instance: F6Navigation;\n\tkeydownHandler: (event: KeyboardEvent) => void;\n\tselectedGroup: HTMLElement | null = null;\n\tgroups: Array<HTMLElement> = [];\n\n\tconstructor() {\n\t\tthis.keydownHandler = this._keydownHandler.bind(this) as (event: KeyboardEvent) => void;\n\t\tthis.attachEventListeners();\n\t}\n\n\tattachEventListeners() {\n\t\tdocument.addEventListener(\"keydown\", this.keydownHandler);\n\t}\n\n\tasync groupElementToFocus(nextElement: HTMLElement) {\n\t\tconst nextElementDomRef = instanceOfUI5Element(nextElement) ? nextElement.getDomRef() : nextElement;\n\n\t\tif (nextElementDomRef) {\n\t\t\tif (isElementClickable(nextElementDomRef)) {\n\t\t\t\treturn nextElementDomRef;\n\t\t\t}\n\n\t\t\tconst elementToFocus = await getFirstFocusableElement(nextElementDomRef);\n\n\t\t\tif (elementToFocus) {\n\t\t\t\treturn elementToFocus;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync findNextFocusableGroupElement(currentIndex: number) {\n\t\tlet elementToFocus;\n\n\t\t/* eslint-disable no-await-in-loop */\n\t\tfor (let index = 0; index < this.groups.length; index++) {\n\t\t\tlet nextElement;\n\n\t\t\tif (currentIndex > -1) {\n\t\t\t\tif (currentIndex + 1 >= this.groups.length) {\n\t\t\t\t\tcurrentIndex = 0;\n\t\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t\t} else {\n\t\t\t\t\tcurrentIndex += 1;\n\t\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcurrentIndex = 0;\n\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t}\n\n\t\t\telementToFocus = await this.groupElementToFocus(nextElement);\n\n\t\t\tif (elementToFocus) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-await-in-loop */\n\n\t\treturn elementToFocus;\n\t}\n\n\tasync findPreviousFocusableGroupElement(currentIndex: number) {\n\t\tlet elementToFocus;\n\n\t\t/* eslint-disable no-await-in-loop */\n\t\tfor (let index = 0; index < this.groups.length; index++) {\n\t\t\tlet nextElement;\n\n\t\t\tif (currentIndex > 0) {\n\t\t\t\t// Handle the situation where the first focusable element of two neighbor groups is the same\n\t\t\t\t// For example:\n\t\t\t\t// <ui5-flexible-column-layout>\n\t\t\t\t// <ui5-list>\n\t\t\t\t// <ui5-li>List Item</ui5-li>\n\t\t\t\t// </ui5-list>\n\t\t\t\t// </ui5-flexible-column-layout>\n\t\t\t\t// Here for both FCL & List the firstFoccusableElement is the same (the ui5-li)\n\t\t\t\tconst firstFocusable = await this.groupElementToFocus(this.groups[currentIndex - 1]);\n\t\t\t\tconst shouldSkipParent = firstFocusable === await this.groupElementToFocus(this.groups[currentIndex]);\n\n\t\t\t\tcurrentIndex = shouldSkipParent ? currentIndex - 2 : currentIndex - 1;\n\n\t\t\t\tif (currentIndex < 0) {\n\t\t\t\t\tcurrentIndex = this.groups.length - 1;\n\t\t\t\t}\n\n\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t} else {\n\t\t\t\tcurrentIndex = this.groups.length - 1;\n\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t}\n\n\t\t\telementToFocus = await this.groupElementToFocus(nextElement);\n\n\t\t\tif (elementToFocus) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-await-in-loop */\n\n\t\treturn elementToFocus;\n\t}\n\n\tasync _keydownHandler(event: KeyboardEvent) {\n\t\tconst forward = isF6Next(event);\n\t\tconst backward = isF6Previous(event);\n\t\tif (!(forward || backward)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateGroups();\n\n\t\tif (this.groups.length < 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tlet elementToFocus;\n\n\t\tif (this.groups.length === 0) {\n\t\t\telementToFocus = await this.groupElementToFocus(this.groups[0]);\n\n\t\t\treturn elementToFocus?.focus();\n\t\t}\n\n\t\tlet currentIndex = -1;\n\n\t\tif (this.selectedGroup) {\n\t\t\tcurrentIndex = this.groups.indexOf(this.selectedGroup);\n\t\t}\n\n\t\tif (forward) {\n\t\t\telementToFocus = await this.findNextFocusableGroupElement(currentIndex);\n\t\t}\n\n\t\tif (backward) {\n\t\t\telementToFocus = await this.findPreviousFocusableGroupElement(currentIndex);\n\t\t}\n\n\t\telementToFocus?.focus();\n\t}\n\n\tremoveEventListeners() {\n\t\tdocument.removeEventListener(\"keydown\", this.keydownHandler);\n\t}\n\n\tupdateGroups() {\n\t\tthis.setSelectedGroup();\n\t\tthis.groups = getFastNavigationGroups(document.body);\n\t}\n\n\tsetSelectedGroup(root: DocumentOrShadowRoot = window.document) {\n\t\tconst htmlElement = window.document.querySelector(\"html\");\n\t\tlet element: Element | null | ParentNode = this.deepActive(root);\n\n\t\twhile (element && (element as Element).getAttribute(\"data-sap-ui-fastnavgroup\") !== \"true\" && element !== htmlElement) {\n\t\t\telement = element.parentElement ? element.parentNode : (element.parentNode as ShadowRoot).host;\n\t\t}\n\n\t\tthis.selectedGroup = element as HTMLElement;\n\t}\n\n\tdeepActive(root: DocumentOrShadowRoot): Element | null {\n\t\tif (root?.activeElement?.shadowRoot?.activeElement) {\n\t\t\treturn this.deepActive(root.activeElement.shadowRoot);\n\t\t}\n\n\t\treturn root.activeElement;\n\t}\n\n\tdestroy() {\n\t\tthis.removeEventListeners();\n\t}\n\n\tstatic init() {\n\t\tif (!this._instance) {\n\t\t\tthis._instance = new F6Navigation();\n\t\t}\n\n\t\treturn this._instance;\n\t}\n}\n\nregisterFeature(\"F6Navigation\", F6Navigation);\n\nexport default F6Navigation;\n"],
5
- "mappings": "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",
6
- "names": ["registerFeature", "isF6Next", "isF6Previous", "instanceOfUI5Element", "getFirstFocusableElement", "getFastNavigationGroups", "isElementClickable", "F6Navigation", "nextElement", "nextElementDomRef", "elementToFocus", "currentIndex", "index", "event", "forward", "backward", "root", "htmlElement", "element"]
4
+ "sourcesContent": ["import { registerFeature } from \"../FeaturesRegistry.js\";\nimport { isF6Next, isF6Previous } from \"../Keys.js\";\nimport { instanceOfUI5Element } from \"../UI5Element.js\";\nimport { getFirstFocusableElement } from \"../util/FocusableElements.js\";\nimport getFastNavigationGroups from \"../util/getFastNavigationGroups.js\";\nimport isElementClickable from \"../util/isElementClickable.js\";\nimport { getCurrentRuntimeIndex, compareRuntimes } from \"../Runtimes.js\";\nimport getSharedResource from \"../getSharedResource.js\";\n\ntype F6Registry = {\n\tinstance?: F6Navigation,\n}\n\nconst currentRuntimeINdex = getCurrentRuntimeIndex();\n\nconst shouldUpdate = (runtimeIndex: number | undefined) => {\n\tif (runtimeIndex === undefined) {\n\t\treturn true;\n\t}\n\treturn compareRuntimes(currentRuntimeINdex, runtimeIndex) === 1; // 1 means the current is newer, 0 means the same, -1 means the resource's runtime is newer\n};\n\nclass F6Navigation {\n\tkeydownHandler: (event: KeyboardEvent) => void;\n\tselectedGroup: HTMLElement | null = null;\n\tgroups: Array<HTMLElement> = [];\n\n\tconstructor() {\n\t\tthis.keydownHandler = this._keydownHandler.bind(this) as (event: KeyboardEvent) => void;\n\t\tthis.attachEventListeners();\n\t}\n\n\tattachEventListeners() {\n\t\tdocument.addEventListener(\"keydown\", this.keydownHandler);\n\t}\n\n\tremoveEventListeners() {\n\t\tdocument.removeEventListener(\"keydown\", this.keydownHandler);\n\t}\n\n\tasync groupElementToFocus(nextElement: HTMLElement) {\n\t\tconst nextElementDomRef = instanceOfUI5Element(nextElement) ? nextElement.getDomRef() : nextElement;\n\n\t\tif (nextElementDomRef) {\n\t\t\tif (isElementClickable(nextElementDomRef)) {\n\t\t\t\treturn nextElementDomRef;\n\t\t\t}\n\n\t\t\tconst elementToFocus = await getFirstFocusableElement(nextElementDomRef);\n\n\t\t\tif (elementToFocus) {\n\t\t\t\treturn elementToFocus;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync findNextFocusableGroupElement(currentIndex: number) {\n\t\tlet elementToFocus;\n\n\t\t/* eslint-disable no-await-in-loop */\n\t\tfor (let index = 0; index < this.groups.length; index++) {\n\t\t\tlet nextElement;\n\n\t\t\tif (currentIndex > -1) {\n\t\t\t\tif (currentIndex + 1 >= this.groups.length) {\n\t\t\t\t\tcurrentIndex = 0;\n\t\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t\t} else {\n\t\t\t\t\tcurrentIndex += 1;\n\t\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcurrentIndex = 0;\n\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t}\n\n\t\t\telementToFocus = await this.groupElementToFocus(nextElement);\n\n\t\t\tif (elementToFocus) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-await-in-loop */\n\n\t\treturn elementToFocus;\n\t}\n\n\tasync findPreviousFocusableGroupElement(currentIndex: number) {\n\t\tlet elementToFocus;\n\n\t\t/* eslint-disable no-await-in-loop */\n\t\tfor (let index = 0; index < this.groups.length; index++) {\n\t\t\tlet nextElement;\n\n\t\t\tif (currentIndex > 0) {\n\t\t\t\t// Handle the situation where the first focusable element of two neighbor groups is the same\n\t\t\t\t// For example:\n\t\t\t\t// <ui5-flexible-column-layout>\n\t\t\t\t// <ui5-list>\n\t\t\t\t// <ui5-li>List Item</ui5-li>\n\t\t\t\t// </ui5-list>\n\t\t\t\t// </ui5-flexible-column-layout>\n\t\t\t\t// Here for both FCL & List the firstFoccusableElement is the same (the ui5-li)\n\t\t\t\tconst firstFocusable = await this.groupElementToFocus(this.groups[currentIndex - 1]);\n\t\t\t\tconst shouldSkipParent = firstFocusable === await this.groupElementToFocus(this.groups[currentIndex]);\n\n\t\t\t\tcurrentIndex = shouldSkipParent ? currentIndex - 2 : currentIndex - 1;\n\n\t\t\t\tif (currentIndex < 0) {\n\t\t\t\t\tcurrentIndex = this.groups.length - 1;\n\t\t\t\t}\n\n\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t} else {\n\t\t\t\tcurrentIndex = this.groups.length - 1;\n\t\t\t\tnextElement = this.groups[currentIndex];\n\t\t\t}\n\n\t\t\telementToFocus = await this.groupElementToFocus(nextElement);\n\n\t\t\tif (elementToFocus) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-await-in-loop */\n\n\t\treturn elementToFocus;\n\t}\n\n\tasync _keydownHandler(event: KeyboardEvent) {\n\t\tconst forward = isF6Next(event);\n\t\tconst backward = isF6Previous(event);\n\t\tif (!(forward || backward)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateGroups();\n\n\t\tif (this.groups.length < 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tlet elementToFocus;\n\n\t\tif (this.groups.length === 0) {\n\t\t\telementToFocus = await this.groupElementToFocus(this.groups[0]);\n\n\t\t\treturn elementToFocus?.focus();\n\t\t}\n\n\t\tlet currentIndex = -1;\n\n\t\tif (this.selectedGroup) {\n\t\t\tcurrentIndex = this.groups.indexOf(this.selectedGroup);\n\t\t}\n\n\t\tif (forward) {\n\t\t\telementToFocus = await this.findNextFocusableGroupElement(currentIndex);\n\t\t}\n\n\t\tif (backward) {\n\t\t\telementToFocus = await this.findPreviousFocusableGroupElement(currentIndex);\n\t\t}\n\n\t\telementToFocus?.focus();\n\t}\n\n\tupdateGroups() {\n\t\tthis.setSelectedGroup();\n\t\tthis.groups = getFastNavigationGroups(document.body);\n\t}\n\n\tsetSelectedGroup(root: DocumentOrShadowRoot = window.document) {\n\t\tconst htmlElement = window.document.querySelector(\"html\");\n\t\tlet element: Element | null | ParentNode = this.deepActive(root);\n\n\t\twhile (element && (element as Element).getAttribute(\"data-sap-ui-fastnavgroup\") !== \"true\" && element !== htmlElement) {\n\t\t\telement = element.parentElement ? element.parentNode : (element.parentNode as ShadowRoot).host;\n\t\t}\n\n\t\tthis.selectedGroup = element as HTMLElement;\n\t}\n\n\tdeepActive(root: DocumentOrShadowRoot): Element | null {\n\t\tif (root?.activeElement?.shadowRoot?.activeElement) {\n\t\t\treturn this.deepActive(root.activeElement.shadowRoot);\n\t\t}\n\n\t\treturn root.activeElement;\n\t}\n\n\tdestroy() {\n\t\tthis.removeEventListeners();\n\t}\n\n\tget _ui5RuntimeIndex() {\n\t\treturn currentRuntimeINdex;\n\t}\n\n\tstatic init() {\n\t\tconst f6Registry = getSharedResource<F6Registry>(\"F6Registry\", {});\n\n\t\tif (!f6Registry.instance) {\n\t\t\tf6Registry.instance = new F6Navigation();\n\t\t} else if (shouldUpdate(f6Registry.instance?._ui5RuntimeIndex)) {\n\t\t\tf6Registry.instance?.destroy();\n\t\t\tf6Registry.instance = new F6Navigation();\n\t\t}\n\t}\n}\n\nregisterFeature(\"F6Navigation\", F6Navigation);\n\nexport default F6Navigation;\n"],
5
+ "mappings": "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",
6
+ "names": ["registerFeature", "isF6Next", "isF6Previous", "instanceOfUI5Element", "getFirstFocusableElement", "getFastNavigationGroups", "isElementClickable", "getCurrentRuntimeIndex", "compareRuntimes", "getSharedResource", "currentRuntimeINdex", "shouldUpdate", "runtimeIndex", "F6Navigation", "nextElement", "nextElementDomRef", "elementToFocus", "currentIndex", "index", "event", "forward", "backward", "root", "htmlElement", "element", "f6Registry"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";const e={version:"2.2.0",major:2,minor:2,patch:0,suffix:"",isNext:!1,buildTime:1725354126};export default e;
1
+ "use strict";const e={version:"2.3.0-rc.1",major:2,minor:3,patch:0,suffix:"-rc.1",isNext:!1,buildTime:1726128478};export default e;
2
2
  //# sourceMappingURL=VersionInfo.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/generated/VersionInfo.ts"],
4
- "sourcesContent": ["const VersionInfo = {\n\tversion: \"2.2.0\",\n\tmajor: 2,\n\tminor: 2,\n\tpatch: 0,\n\tsuffix: \"\",\n\tisNext: false,\n\tbuildTime: 1725354126,\n};\nexport default VersionInfo;"],
5
- "mappings": "aAAA,MAAMA,EAAc,CACnB,QAAS,QACT,MAAO,EACP,MAAO,EACP,MAAO,EACP,OAAQ,GACR,OAAQ,GACR,UAAW,UACZ,EACA,eAAeA",
4
+ "sourcesContent": ["const VersionInfo = {\n\tversion: \"2.3.0-rc.1\",\n\tmajor: 2,\n\tminor: 3,\n\tpatch: 0,\n\tsuffix: \"-rc.1\",\n\tisNext: false,\n\tbuildTime: 1726128478,\n};\nexport default VersionInfo;"],
5
+ "mappings": "aAAA,MAAMA,EAAc,CACnB,QAAS,aACT,MAAO,EACP,MAAO,EACP,MAAO,EACP,OAAQ,QACR,OAAQ,GACR,UAAW,UACZ,EACA,eAAeA",
6
6
  "names": ["VersionInfo"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";import s from"../../types/MovePlacement.js";import M from"../../types/Orientation.js";const P=(t,r,l,i)=>{const e=Math.abs(t-r),c=Math.abs(t-l),o=Math.abs(t-i),a=Math.min(e,c,o);let n=[];switch(a){case e:n=[s.Before];break;case c:n=[s.On,e<o?s.Before:s.After];break;case o:n=[s.After];break}return n},I=(t,r,l)=>{let i=Number.POSITIVE_INFINITY,e=null;for(let f=0;f<t.length;f++){const u=t[f],{left:T,width:C,top:A,height:B}=u.getBoundingClientRect();let h;l===M.Vertical?h=A+B/2:h=T+C/2;const d=Math.abs(r-h);d<i&&(i=d,e=u)}if(!e)return null;const{width:c,height:o,left:a,right:n,top:b,bottom:g}=e.getBoundingClientRect();let m;return l===M.Vertical?m=P(r,b,b+o/2,g):m=P(r,a,a+c/2,n),{element:e,placements:m}};export default I;
1
+ "use strict";import n from"../../types/MovePlacement.js";import p from"../../types/Orientation.js";const A=(t,s,a,r)=>{const e=Math.abs(t-s),o=Math.abs(t-a),l=Math.abs(t-r),i=Math.min(e,o,l);let c=[];switch(i){case e:c=[n.Before];break;case o:c=[n.On,e<l?n.Before:n.After];break;case l:c=[n.After];break}return c},w=(t,s,a)=>{let r=Number.POSITIVE_INFINITY,e=null;for(let m=0;m<t.length;m++){const u=t[m],{left:g,width:E,top:P,height:T}=u.getBoundingClientRect();let h;a===p.Vertical?h=P+T/2:h=g+E/2;const d=Math.abs(s-h);d<r&&(r=d,e=u)}if(!e)return null;const{width:o,height:l,left:i,right:c,top:b,bottom:M}=e.getBoundingClientRect();let f;return a===p.Vertical?f=A(s,b,b+l/2,M):f=A(s,i,i+o/2,c),{element:e,placements:f}},k=(t,s,a)=>{let r=t.indexOf(s);const e=[];switch(a.key){case"ArrowLeft":case"ArrowUp":r--,r>=0&&e.push({element:t[r],placement:n.Before});break;case"ArrowRight":case"ArrowDown":r++,r<t.length&&e.push({element:t[r],placement:n.After});break;case"Home":t.forEach(o=>{e.push({element:o,placement:n.Before})});break;case"End":t.reverse().forEach(o=>{e.push({element:o,placement:n.After})});break}return e};export{w as findClosestPosition,k as findClosestPositionsByKey};
2
2
  //# sourceMappingURL=findClosestPosition.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/util/dragAndDrop/findClosestPosition.ts"],
4
- "sourcesContent": ["import MovePlacement from \"../../types/MovePlacement.js\";\nimport Orientation from \"../../types/Orientation.js\";\n\nconst closestPlacement = (point: number, beforePoint: number, centerPoint: number, afterPoint: number) => {\n\tconst distToBeforePoint = Math.abs(point - beforePoint);\n\tconst distToCenterPoint = Math.abs(point - centerPoint);\n\tconst distToAfterPoint = Math.abs(point - afterPoint);\n\tconst closestPoint = Math.min(\n\t\tdistToBeforePoint,\n\t\tdistToCenterPoint,\n\t\tdistToAfterPoint,\n\t);\n\tlet placements: Array<MovePlacement> = [];\n\n\tswitch (closestPoint) {\n\tcase distToBeforePoint:\n\t\tplacements = [MovePlacement.Before];\n\t\tbreak;\n\tcase distToCenterPoint:\n\t\tplacements = [MovePlacement.On, distToBeforePoint < distToAfterPoint ? MovePlacement.Before : MovePlacement.After];\n\t\tbreak;\n\tcase distToAfterPoint:\n\t\tplacements = [MovePlacement.After];\n\t\tbreak;\n\t}\n\n\treturn placements;\n};\n\nconst findClosestPosition = (elements: Array<HTMLElement>, point: number, layoutOrientation: Orientation) => {\n\tlet shortestDist = Number.POSITIVE_INFINITY;\n\tlet closestElement: HTMLElement | null = null;\n\n\t// determine which element is most closest to the point\n\tfor (let i = 0; i < elements.length; i++) {\n\t\tconst el = elements[i];\n\t\tconst {\n\t\t\tleft, width, top, height,\n\t\t} = el.getBoundingClientRect();\n\n\t\tlet elemCenter;\n\t\tif (layoutOrientation === Orientation.Vertical) {\n\t\t\telemCenter = top + height / 2;\n\t\t} else { // Horizontal\n\t\t\telemCenter = left + width / 2;\n\t\t}\n\n\t\tconst distanceToCenter = Math.abs(point - elemCenter);\n\n\t\tif (distanceToCenter < shortestDist) {\n\t\t\tshortestDist = distanceToCenter;\n\t\t\tclosestElement = el;\n\t\t}\n\t}\n\n\tif (!closestElement) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\twidth, height, left, right, top, bottom,\n\t} = closestElement.getBoundingClientRect();\n\tlet placements;\n\n\tif (layoutOrientation === Orientation.Vertical) {\n\t\tplacements = closestPlacement(point, top, top + height / 2, bottom);\n\t} else { // Horizontal\n\t\tplacements = closestPlacement(point, left, left + width / 2, right);\n\t}\n\n\treturn {\n\t\telement: closestElement,\n\t\tplacements,\n\t};\n};\n\nexport default findClosestPosition;\n"],
5
- "mappings": "aAAA,OAAOA,MAAmB,+BAC1B,OAAOC,MAAiB,6BAExB,MAAMC,EAAmB,CAACC,EAAeC,EAAqBC,EAAqBC,IAAuB,CACzG,MAAMC,EAAoB,KAAK,IAAIJ,EAAQC,CAAW,EAChDI,EAAoB,KAAK,IAAIL,EAAQE,CAAW,EAChDI,EAAmB,KAAK,IAAIN,EAAQG,CAAU,EAC9CI,EAAe,KAAK,IACzBH,EACAC,EACAC,CACD,EACA,IAAIE,EAAmC,CAAC,EAExC,OAAQD,EAAc,CACtB,KAAKH,EACJI,EAAa,CAACX,EAAc,MAAM,EAClC,MACD,KAAKQ,EACJG,EAAa,CAACX,EAAc,GAAIO,EAAoBE,EAAmBT,EAAc,OAASA,EAAc,KAAK,EACjH,MACD,KAAKS,EACJE,EAAa,CAACX,EAAc,KAAK,EACjC,KACD,CAEA,OAAOW,CACR,EAEMC,EAAsB,CAACC,EAA8BV,EAAeW,IAAmC,CAC5G,IAAIC,EAAe,OAAO,kBACtBC,EAAqC,KAGzC,QAASC,EAAI,EAAGA,EAAIJ,EAAS,OAAQI,IAAK,CACzC,MAAMC,EAAKL,EAASI,CAAC,EACf,CACL,KAAAE,EAAM,MAAAC,EAAO,IAAAC,EAAK,OAAAC,CACnB,EAAIJ,EAAG,sBAAsB,EAE7B,IAAIK,EACAT,IAAsBb,EAAY,SACrCsB,EAAaF,EAAMC,EAAS,EAE5BC,EAAaJ,EAAOC,EAAQ,EAG7B,MAAMI,EAAmB,KAAK,IAAIrB,EAAQoB,CAAU,EAEhDC,EAAmBT,IACtBA,EAAeS,EACfR,EAAiBE,EAEnB,CAEA,GAAI,CAACF,EACJ,OAAO,KAGR,KAAM,CACL,MAAAI,EAAO,OAAAE,EAAQ,KAAAH,EAAM,MAAAM,EAAO,IAAAJ,EAAK,OAAAK,CAClC,EAAIV,EAAe,sBAAsB,EACzC,IAAIL,EAEJ,OAAIG,IAAsBb,EAAY,SACrCU,EAAaT,EAAiBC,EAAOkB,EAAKA,EAAMC,EAAS,EAAGI,CAAM,EAElEf,EAAaT,EAAiBC,EAAOgB,EAAMA,EAAOC,EAAQ,EAAGK,CAAK,EAG5D,CACN,QAAST,EACT,WAAAL,CACD,CACD,EAEA,eAAeC",
6
- "names": ["MovePlacement", "Orientation", "closestPlacement", "point", "beforePoint", "centerPoint", "afterPoint", "distToBeforePoint", "distToCenterPoint", "distToAfterPoint", "closestPoint", "placements", "findClosestPosition", "elements", "layoutOrientation", "shortestDist", "closestElement", "i", "el", "left", "width", "top", "height", "elemCenter", "distanceToCenter", "right", "bottom"]
4
+ "sourcesContent": ["import MovePlacement from \"../../types/MovePlacement.js\";\nimport Orientation from \"../../types/Orientation.js\";\n\nconst closestPlacement = (point: number, beforePoint: number, centerPoint: number, afterPoint: number) => {\n\tconst distToBeforePoint = Math.abs(point - beforePoint);\n\tconst distToCenterPoint = Math.abs(point - centerPoint);\n\tconst distToAfterPoint = Math.abs(point - afterPoint);\n\tconst closestPoint = Math.min(\n\t\tdistToBeforePoint,\n\t\tdistToCenterPoint,\n\t\tdistToAfterPoint,\n\t);\n\tlet placements: Array<MovePlacement> = [];\n\n\tswitch (closestPoint) {\n\tcase distToBeforePoint:\n\t\tplacements = [MovePlacement.Before];\n\t\tbreak;\n\tcase distToCenterPoint:\n\t\tplacements = [MovePlacement.On, distToBeforePoint < distToAfterPoint ? MovePlacement.Before : MovePlacement.After];\n\t\tbreak;\n\tcase distToAfterPoint:\n\t\tplacements = [MovePlacement.After];\n\t\tbreak;\n\t}\n\n\treturn placements;\n};\n\nconst findClosestPosition = (elements: Array<HTMLElement>, point: number, layoutOrientation: Orientation) => {\n\tlet shortestDist = Number.POSITIVE_INFINITY;\n\tlet closestElement: HTMLElement | null = null;\n\n\t// determine which element is most closest to the point\n\tfor (let i = 0; i < elements.length; i++) {\n\t\tconst el = elements[i];\n\t\tconst {\n\t\t\tleft, width, top, height,\n\t\t} = el.getBoundingClientRect();\n\n\t\tlet elemCenter;\n\t\tif (layoutOrientation === Orientation.Vertical) {\n\t\t\telemCenter = top + height / 2;\n\t\t} else { // Horizontal\n\t\t\telemCenter = left + width / 2;\n\t\t}\n\n\t\tconst distanceToCenter = Math.abs(point - elemCenter);\n\n\t\tif (distanceToCenter < shortestDist) {\n\t\t\tshortestDist = distanceToCenter;\n\t\t\tclosestElement = el;\n\t\t}\n\t}\n\n\tif (!closestElement) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\twidth, height, left, right, top, bottom,\n\t} = closestElement.getBoundingClientRect();\n\tlet placements;\n\n\tif (layoutOrientation === Orientation.Vertical) {\n\t\tplacements = closestPlacement(point, top, top + height / 2, bottom);\n\t} else { // Horizontal\n\t\tplacements = closestPlacement(point, left, left + width / 2, right);\n\t}\n\n\treturn {\n\t\telement: closestElement,\n\t\tplacements,\n\t};\n};\n\nconst findClosestPositionsByKey = (elements: Array<HTMLElement>, element: HTMLElement, e: KeyboardEvent) => {\n\tlet index = elements.indexOf(element);\n\tconst positions = [];\n\n\tswitch (e.key) {\n\tcase \"ArrowLeft\":\n\tcase \"ArrowUp\":\n\t\tindex--;\n\t\tif (index >= 0) {\n\t\t\tpositions.push({\n\t\t\t\telement: elements[index],\n\t\t\t\tplacement: MovePlacement.Before,\n\t\t\t});\n\t\t}\n\t\tbreak;\n\tcase \"ArrowRight\":\n\tcase \"ArrowDown\":\n\t\tindex++;\n\t\tif (index < elements.length) {\n\t\t\tpositions.push({\n\t\t\t\telement: elements[index],\n\t\t\t\tplacement: MovePlacement.After,\n\t\t\t});\n\t\t}\n\t\tbreak;\n\tcase \"Home\":\n\t\telements.forEach(el => {\n\t\t\tpositions.push({\n\t\t\t\telement: el,\n\t\t\t\tplacement: MovePlacement.Before,\n\t\t\t});\n\t\t});\n\t\tbreak;\n\tcase \"End\":\n\t\telements.reverse().forEach(el => {\n\t\t\tpositions.push({\n\t\t\t\telement: el,\n\t\t\t\tplacement: MovePlacement.After,\n\t\t\t});\n\t\t});\n\t\tbreak;\n\t}\n\n\treturn positions;\n};\n\nexport {\n\tfindClosestPosition,\n\tfindClosestPositionsByKey,\n};\n"],
5
+ "mappings": "aAAA,OAAOA,MAAmB,+BAC1B,OAAOC,MAAiB,6BAExB,MAAMC,EAAmB,CAACC,EAAeC,EAAqBC,EAAqBC,IAAuB,CACzG,MAAMC,EAAoB,KAAK,IAAIJ,EAAQC,CAAW,EAChDI,EAAoB,KAAK,IAAIL,EAAQE,CAAW,EAChDI,EAAmB,KAAK,IAAIN,EAAQG,CAAU,EAC9CI,EAAe,KAAK,IACzBH,EACAC,EACAC,CACD,EACA,IAAIE,EAAmC,CAAC,EAExC,OAAQD,EAAc,CACtB,KAAKH,EACJI,EAAa,CAACX,EAAc,MAAM,EAClC,MACD,KAAKQ,EACJG,EAAa,CAACX,EAAc,GAAIO,EAAoBE,EAAmBT,EAAc,OAASA,EAAc,KAAK,EACjH,MACD,KAAKS,EACJE,EAAa,CAACX,EAAc,KAAK,EACjC,KACD,CAEA,OAAOW,CACR,EAEMC,EAAsB,CAACC,EAA8BV,EAAeW,IAAmC,CAC5G,IAAIC,EAAe,OAAO,kBACtBC,EAAqC,KAGzC,QAASC,EAAI,EAAGA,EAAIJ,EAAS,OAAQI,IAAK,CACzC,MAAMC,EAAKL,EAASI,CAAC,EACf,CACL,KAAAE,EAAM,MAAAC,EAAO,IAAAC,EAAK,OAAAC,CACnB,EAAIJ,EAAG,sBAAsB,EAE7B,IAAIK,EACAT,IAAsBb,EAAY,SACrCsB,EAAaF,EAAMC,EAAS,EAE5BC,EAAaJ,EAAOC,EAAQ,EAG7B,MAAMI,EAAmB,KAAK,IAAIrB,EAAQoB,CAAU,EAEhDC,EAAmBT,IACtBA,EAAeS,EACfR,EAAiBE,EAEnB,CAEA,GAAI,CAACF,EACJ,OAAO,KAGR,KAAM,CACL,MAAAI,EAAO,OAAAE,EAAQ,KAAAH,EAAM,MAAAM,EAAO,IAAAJ,EAAK,OAAAK,CAClC,EAAIV,EAAe,sBAAsB,EACzC,IAAIL,EAEJ,OAAIG,IAAsBb,EAAY,SACrCU,EAAaT,EAAiBC,EAAOkB,EAAKA,EAAMC,EAAS,EAAGI,CAAM,EAElEf,EAAaT,EAAiBC,EAAOgB,EAAMA,EAAOC,EAAQ,EAAGK,CAAK,EAG5D,CACN,QAAST,EACT,WAAAL,CACD,CACD,EAEMgB,EAA4B,CAACd,EAA8Be,EAAsBC,IAAqB,CAC3G,IAAIC,EAAQjB,EAAS,QAAQe,CAAO,EACpC,MAAMG,EAAY,CAAC,EAEnB,OAAQF,EAAE,IAAK,CACf,IAAK,YACL,IAAK,UACJC,IACIA,GAAS,GACZC,EAAU,KAAK,CACd,QAASlB,EAASiB,CAAK,EACvB,UAAW9B,EAAc,MAC1B,CAAC,EAEF,MACD,IAAK,aACL,IAAK,YACJ8B,IACIA,EAAQjB,EAAS,QACpBkB,EAAU,KAAK,CACd,QAASlB,EAASiB,CAAK,EACvB,UAAW9B,EAAc,KAC1B,CAAC,EAEF,MACD,IAAK,OACJa,EAAS,QAAQK,GAAM,CACtBa,EAAU,KAAK,CACd,QAASb,EACT,UAAWlB,EAAc,MAC1B,CAAC,CACF,CAAC,EACD,MACD,IAAK,MACJa,EAAS,QAAQ,EAAE,QAAQK,GAAM,CAChCa,EAAU,KAAK,CACd,QAASb,EACT,UAAWlB,EAAc,KAC1B,CAAC,CACF,CAAC,EACD,KACD,CAEA,OAAO+B,CACR,EAEA,OACCnB,KAAA,oBACAe,KAAA",
6
+ "names": ["MovePlacement", "Orientation", "closestPlacement", "point", "beforePoint", "centerPoint", "afterPoint", "distToBeforePoint", "distToCenterPoint", "distToAfterPoint", "closestPoint", "placements", "findClosestPosition", "elements", "layoutOrientation", "shortestDist", "closestElement", "i", "el", "left", "width", "top", "height", "elemCenter", "distanceToCenter", "right", "bottom", "findClosestPositionsByKey", "element", "e", "index", "positions"]
7
7
  }
@@ -4,4 +4,8 @@ declare const findClosestPosition: (elements: Array<HTMLElement>, point: number,
4
4
  element: HTMLElement;
5
5
  placements: MovePlacement[];
6
6
  } | null;
7
- export default findClosestPosition;
7
+ declare const findClosestPositionsByKey: (elements: Array<HTMLElement>, element: HTMLElement, e: KeyboardEvent) => {
8
+ element: HTMLElement;
9
+ placement: MovePlacement;
10
+ }[];
11
+ export { findClosestPosition, findClosestPositionsByKey, };
@@ -55,5 +55,48 @@ const findClosestPosition = (elements, point, layoutOrientation) => {
55
55
  placements,
56
56
  };
57
57
  };
58
- export default findClosestPosition;
58
+ const findClosestPositionsByKey = (elements, element, e) => {
59
+ let index = elements.indexOf(element);
60
+ const positions = [];
61
+ switch (e.key) {
62
+ case "ArrowLeft":
63
+ case "ArrowUp":
64
+ index--;
65
+ if (index >= 0) {
66
+ positions.push({
67
+ element: elements[index],
68
+ placement: MovePlacement.Before,
69
+ });
70
+ }
71
+ break;
72
+ case "ArrowRight":
73
+ case "ArrowDown":
74
+ index++;
75
+ if (index < elements.length) {
76
+ positions.push({
77
+ element: elements[index],
78
+ placement: MovePlacement.After,
79
+ });
80
+ }
81
+ break;
82
+ case "Home":
83
+ elements.forEach(el => {
84
+ positions.push({
85
+ element: el,
86
+ placement: MovePlacement.Before,
87
+ });
88
+ });
89
+ break;
90
+ case "End":
91
+ elements.reverse().forEach(el => {
92
+ positions.push({
93
+ element: el,
94
+ placement: MovePlacement.After,
95
+ });
96
+ });
97
+ break;
98
+ }
99
+ return positions;
100
+ };
101
+ export { findClosestPosition, findClosestPositionsByKey, };
59
102
  //# sourceMappingURL=findClosestPosition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findClosestPosition.js","sourceRoot":"","sources":["../../../src/util/dragAndDrop/findClosestPosition.ts"],"names":[],"mappings":"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","sourcesContent":["import MovePlacement from \"../../types/MovePlacement.js\";\nimport Orientation from \"../../types/Orientation.js\";\n\nconst closestPlacement = (point: number, beforePoint: number, centerPoint: number, afterPoint: number) => {\n\tconst distToBeforePoint = Math.abs(point - beforePoint);\n\tconst distToCenterPoint = Math.abs(point - centerPoint);\n\tconst distToAfterPoint = Math.abs(point - afterPoint);\n\tconst closestPoint = Math.min(\n\t\tdistToBeforePoint,\n\t\tdistToCenterPoint,\n\t\tdistToAfterPoint,\n\t);\n\tlet placements: Array<MovePlacement> = [];\n\n\tswitch (closestPoint) {\n\tcase distToBeforePoint:\n\t\tplacements = [MovePlacement.Before];\n\t\tbreak;\n\tcase distToCenterPoint:\n\t\tplacements = [MovePlacement.On, distToBeforePoint < distToAfterPoint ? MovePlacement.Before : MovePlacement.After];\n\t\tbreak;\n\tcase distToAfterPoint:\n\t\tplacements = [MovePlacement.After];\n\t\tbreak;\n\t}\n\n\treturn placements;\n};\n\nconst findClosestPosition = (elements: Array<HTMLElement>, point: number, layoutOrientation: Orientation) => {\n\tlet shortestDist = Number.POSITIVE_INFINITY;\n\tlet closestElement: HTMLElement | null = null;\n\n\t// determine which element is most closest to the point\n\tfor (let i = 0; i < elements.length; i++) {\n\t\tconst el = elements[i];\n\t\tconst {\n\t\t\tleft, width, top, height,\n\t\t} = el.getBoundingClientRect();\n\n\t\tlet elemCenter;\n\t\tif (layoutOrientation === Orientation.Vertical) {\n\t\t\telemCenter = top + height / 2;\n\t\t} else { // Horizontal\n\t\t\telemCenter = left + width / 2;\n\t\t}\n\n\t\tconst distanceToCenter = Math.abs(point - elemCenter);\n\n\t\tif (distanceToCenter < shortestDist) {\n\t\t\tshortestDist = distanceToCenter;\n\t\t\tclosestElement = el;\n\t\t}\n\t}\n\n\tif (!closestElement) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\twidth, height, left, right, top, bottom,\n\t} = closestElement.getBoundingClientRect();\n\tlet placements;\n\n\tif (layoutOrientation === Orientation.Vertical) {\n\t\tplacements = closestPlacement(point, top, top + height / 2, bottom);\n\t} else { // Horizontal\n\t\tplacements = closestPlacement(point, left, left + width / 2, right);\n\t}\n\n\treturn {\n\t\telement: closestElement,\n\t\tplacements,\n\t};\n};\n\nexport default findClosestPosition;\n"]}
1
+ {"version":3,"file":"findClosestPosition.js","sourceRoot":"","sources":["../../../src/util/dragAndDrop/findClosestPosition.ts"],"names":[],"mappings":"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","sourcesContent":["import MovePlacement from \"../../types/MovePlacement.js\";\nimport Orientation from \"../../types/Orientation.js\";\n\nconst closestPlacement = (point: number, beforePoint: number, centerPoint: number, afterPoint: number) => {\n\tconst distToBeforePoint = Math.abs(point - beforePoint);\n\tconst distToCenterPoint = Math.abs(point - centerPoint);\n\tconst distToAfterPoint = Math.abs(point - afterPoint);\n\tconst closestPoint = Math.min(\n\t\tdistToBeforePoint,\n\t\tdistToCenterPoint,\n\t\tdistToAfterPoint,\n\t);\n\tlet placements: Array<MovePlacement> = [];\n\n\tswitch (closestPoint) {\n\tcase distToBeforePoint:\n\t\tplacements = [MovePlacement.Before];\n\t\tbreak;\n\tcase distToCenterPoint:\n\t\tplacements = [MovePlacement.On, distToBeforePoint < distToAfterPoint ? MovePlacement.Before : MovePlacement.After];\n\t\tbreak;\n\tcase distToAfterPoint:\n\t\tplacements = [MovePlacement.After];\n\t\tbreak;\n\t}\n\n\treturn placements;\n};\n\nconst findClosestPosition = (elements: Array<HTMLElement>, point: number, layoutOrientation: Orientation) => {\n\tlet shortestDist = Number.POSITIVE_INFINITY;\n\tlet closestElement: HTMLElement | null = null;\n\n\t// determine which element is most closest to the point\n\tfor (let i = 0; i < elements.length; i++) {\n\t\tconst el = elements[i];\n\t\tconst {\n\t\t\tleft, width, top, height,\n\t\t} = el.getBoundingClientRect();\n\n\t\tlet elemCenter;\n\t\tif (layoutOrientation === Orientation.Vertical) {\n\t\t\telemCenter = top + height / 2;\n\t\t} else { // Horizontal\n\t\t\telemCenter = left + width / 2;\n\t\t}\n\n\t\tconst distanceToCenter = Math.abs(point - elemCenter);\n\n\t\tif (distanceToCenter < shortestDist) {\n\t\t\tshortestDist = distanceToCenter;\n\t\t\tclosestElement = el;\n\t\t}\n\t}\n\n\tif (!closestElement) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\twidth, height, left, right, top, bottom,\n\t} = closestElement.getBoundingClientRect();\n\tlet placements;\n\n\tif (layoutOrientation === Orientation.Vertical) {\n\t\tplacements = closestPlacement(point, top, top + height / 2, bottom);\n\t} else { // Horizontal\n\t\tplacements = closestPlacement(point, left, left + width / 2, right);\n\t}\n\n\treturn {\n\t\telement: closestElement,\n\t\tplacements,\n\t};\n};\n\nconst findClosestPositionsByKey = (elements: Array<HTMLElement>, element: HTMLElement, e: KeyboardEvent) => {\n\tlet index = elements.indexOf(element);\n\tconst positions = [];\n\n\tswitch (e.key) {\n\tcase \"ArrowLeft\":\n\tcase \"ArrowUp\":\n\t\tindex--;\n\t\tif (index >= 0) {\n\t\t\tpositions.push({\n\t\t\t\telement: elements[index],\n\t\t\t\tplacement: MovePlacement.Before,\n\t\t\t});\n\t\t}\n\t\tbreak;\n\tcase \"ArrowRight\":\n\tcase \"ArrowDown\":\n\t\tindex++;\n\t\tif (index < elements.length) {\n\t\t\tpositions.push({\n\t\t\t\telement: elements[index],\n\t\t\t\tplacement: MovePlacement.After,\n\t\t\t});\n\t\t}\n\t\tbreak;\n\tcase \"Home\":\n\t\telements.forEach(el => {\n\t\t\tpositions.push({\n\t\t\t\telement: el,\n\t\t\t\tplacement: MovePlacement.Before,\n\t\t\t});\n\t\t});\n\t\tbreak;\n\tcase \"End\":\n\t\telements.reverse().forEach(el => {\n\t\t\tpositions.push({\n\t\t\t\telement: el,\n\t\t\t\tplacement: MovePlacement.After,\n\t\t\t});\n\t\t});\n\t\tbreak;\n\t}\n\n\treturn positions;\n};\n\nexport {\n\tfindClosestPosition,\n\tfindClosestPositionsByKey,\n};\n"]}