@itwin/ecschema-rpcinterface-tests 5.9.0-dev.10 → 5.9.0-dev.12

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.
@@ -183701,12 +183701,26 @@ class ToolAdmin {
183701
183701
  if (!ev.repeat) // we don't want repeated keyboard events. If we keep them they interfere with replacing mouse motion events, since they come as a stream.
183702
183702
  ToolAdmin.addEvent(ev);
183703
183703
  };
183704
+ /** Handler for modifier key transitions captured before focused UI elements can stop propagation. */
183705
+ static _keyEventCaptureHandler = async (event) => {
183706
+ const ev = event;
183707
+ if (!ev.repeat) {
183708
+ try {
183709
+ await _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.toolAdmin.onKeyTransitionCaptured(ev);
183710
+ }
183711
+ catch (err) {
183712
+ await ToolAdmin.exceptionHandler(err);
183713
+ }
183714
+ }
183715
+ };
183704
183716
  /** @internal */
183705
183717
  onInitialized() {
183706
183718
  if (typeof document === "undefined")
183707
183719
  return; // if document isn't defined, we're probably running in a test environment. At any rate, we can't have interactive tools.
183708
183720
  this._idleTool = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.tools.create("Idle");
183709
183721
  ["keydown", "keyup"].forEach((type) => {
183722
+ document.addEventListener(type, ToolAdmin._keyEventCaptureHandler, true);
183723
+ ToolAdmin._removals.push(() => document.removeEventListener(type, ToolAdmin._keyEventCaptureHandler, true));
183710
183724
  document.addEventListener(type, ToolAdmin._keyEventHandler, false);
183711
183725
  ToolAdmin._removals.push(() => document.removeEventListener(type, ToolAdmin._keyEventHandler, false));
183712
183726
  });
@@ -184470,6 +184484,15 @@ class ToolAdmin {
184470
184484
  this.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...
184471
184485
  }
184472
184486
  }
184487
+ get _isFocusHome() {
184488
+ return (document.body === document.activeElement);
184489
+ }
184490
+ _setFocusHome() {
184491
+ const element = document.activeElement;
184492
+ if (element && element !== document.body)
184493
+ element.blur();
184494
+ document.body.focus();
184495
+ }
184473
184496
  static getModifierKey(event) {
184474
184497
  switch (event.key) {
184475
184498
  case "Alt": return _Tool__WEBPACK_IMPORTED_MODULE_13__.BeModifierKeys.Alt;
@@ -184500,17 +184523,41 @@ class ToolAdmin {
184500
184523
  }
184501
184524
  return { handled, result };
184502
184525
  }
184503
- /** Process shortcut key events */
184526
+ /** Sub-classes should override to process shortcut key events.
184527
+ * @return true if handled and no further processing of event should occur.
184528
+ */
184504
184529
  async processShortcutKey(_keyEvent, _wentDown) {
184505
184530
  return false;
184506
184531
  }
184507
- /** Event for every key down and up transition. */
184508
- async onKeyTransition(event, wentDown) {
184509
- const keyEvent = event.ev;
184532
+ /** Event for every key down and up transition.
184533
+ * @note Called before processShortcutKey.
184534
+ * @return true if handled and no further processing of event should occur.
184535
+ */
184536
+ processKeyboardEvent(keyEvent, _wentDown) {
184537
+ if (this._isFocusHome || undefined !== _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.accuDraw.getFocusItem())
184538
+ return false; // Focus is Home or AccuDraw, allow shortcuts...
184539
+ // NOTE: Provide a convenient way for the user to move focus to Home to use shortcuts.
184540
+ // Escape is the only practical choice with its default behavior that can cancel/close/blur.
184541
+ // Intentionally not checking wentDown as some ui elements stop propagation of down but not up (moving to capture is not a good option).
184542
+ // Apps that want to use Escape to start the default tool still can with Home focus in processShortcutKey.
184543
+ if (keyEvent.key === "Escape" && _ToolSettings__WEBPACK_IMPORTED_MODULE_14__.ToolSettings.escapeMovesFocusToHome && !keyEvent.defaultPrevented && !keyEvent.isComposing)
184544
+ this._setFocusHome();
184545
+ return true;
184546
+ }
184547
+ /** Need to check for modifier changes on capture phase as a ui element that calls stopPropagation
184548
+ * prevents onKeyTransition from being called when bubbling.
184549
+ */
184550
+ async onKeyTransitionCaptured(keyEvent) {
184510
184551
  this.currentInputState.setKeyQualifiers(keyEvent);
184511
184552
  const modifierKey = ToolAdmin.getModifierKey(keyEvent);
184512
184553
  if (_Tool__WEBPACK_IMPORTED_MODULE_13__.BeModifierKeys.None !== modifierKey)
184513
- return this.onModifierKeyTransition(wentDown, modifierKey, keyEvent);
184554
+ return this.onModifierKeyTransition("keydown" === keyEvent.type, modifierKey, keyEvent);
184555
+ }
184556
+ /** Event for every key down and up transition. */
184557
+ async onKeyTransition(event, wentDown) {
184558
+ const keyEvent = event.ev;
184559
+ if (this.processKeyboardEvent(keyEvent, wentDown))
184560
+ return _Tool__WEBPACK_IMPORTED_MODULE_13__.EventHandled.Yes;
184514
184561
  if (wentDown && keyEvent.ctrlKey) {
184515
184562
  const { handled, result } = await this.onCtrlKeyPressed(keyEvent);
184516
184563
  if (handled)
@@ -185405,6 +185452,10 @@ class ToolSettings {
185405
185452
  * @beta
185406
185453
  */
185407
185454
  static enableVolumeSelection = false;
185455
+ /** If true, pressing Escape key sets focus to Home to allow shortcuts to be used.
185456
+ * @beta
185457
+ */
185458
+ static escapeMovesFocusToHome = true;
185408
185459
  }
185409
185460
 
185410
185461
 
@@ -326348,7 +326399,7 @@ var loadLanguages = instance.loadLanguages;
326348
326399
  /***/ ((module) => {
326349
326400
 
326350
326401
  "use strict";
326351
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.9.0-dev.10","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers && npm run -s copy:draco","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","copy:draco":"cpx \\"./node_modules/@loaders.gl/draco/dist/libs/*\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts && npm run -s extract","extract":"betools extract --fileExt=ts --extractFrom=./src/test/example-code --recursive --out=../../generated-docs/extract","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-deprecation":"eslint --fix -f visualstudio --no-inline-config -c ../../common/config/eslint/eslint.config.deprecation-policy.js \\"./src/**/*.ts\\"","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@bentley/aec-units-schema":"^1.0.3","@bentley/formats-schema":"^1.0.0","@bentley/units-schema":"^1.0.9","@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/object-storage-core":"^3.0.4","@itwin/eslint-plugin":"^6.0.0","@types/chai-as-promised":"^7","@types/draco3d":"^1.4.10","@types/sinon":"^17.0.2","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.31.0","glob":"^10.5.0","playwright":"~1.56.1","rimraf":"^6.0.1","sinon":"^17.0.2","source-map-loader":"^5.0.0","typescript":"~5.6.2","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"~4.3.4","@loaders.gl/draco":"~4.3.4","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
326402
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.9.0-dev.12","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers && npm run -s copy:draco","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","copy:draco":"cpx \\"./node_modules/@loaders.gl/draco/dist/libs/*\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts && npm run -s extract","extract":"betools extract --fileExt=ts --extractFrom=./src/test/example-code --recursive --out=../../generated-docs/extract","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-deprecation":"eslint --fix -f visualstudio --no-inline-config -c ../../common/config/eslint/eslint.config.deprecation-policy.js \\"./src/**/*.ts\\"","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@bentley/aec-units-schema":"^1.0.3","@bentley/formats-schema":"^1.0.0","@bentley/units-schema":"^1.0.9","@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/object-storage-core":"^3.0.4","@itwin/eslint-plugin":"^6.0.0","@types/chai-as-promised":"^7","@types/draco3d":"^1.4.10","@types/sinon":"^17.0.2","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.31.0","glob":"^10.5.0","playwright":"~1.56.1","rimraf":"^6.0.1","sinon":"^17.0.2","source-map-loader":"^5.0.0","typescript":"~5.6.2","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"~4.3.4","@loaders.gl/draco":"~4.3.4","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
326352
326403
 
326353
326404
  /***/ })
326354
326405