@itwin/components-react 4.6.3 → 4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/lib/cjs/components-react/UiComponents.d.ts.map +1 -1
  3. package/lib/cjs/components-react/UiComponents.js +3 -2
  4. package/lib/cjs/components-react/UiComponents.js.map +1 -1
  5. package/lib/cjs/components-react/common/ImageRenderer.d.ts.map +1 -1
  6. package/lib/cjs/components-react/common/ImageRenderer.js +2 -3
  7. package/lib/cjs/components-react/common/ImageRenderer.js.map +1 -1
  8. package/lib/cjs/components-react/common/UseAsyncValue.d.ts.map +1 -1
  9. package/lib/cjs/components-react/common/UseAsyncValue.js +7 -17
  10. package/lib/cjs/components-react/common/UseAsyncValue.js.map +1 -1
  11. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.d.ts.map +1 -1
  12. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.js +2 -1
  13. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
  14. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.d.ts.map +1 -1
  15. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js +22 -16
  16. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  17. package/lib/cjs/components-react/datepicker/DatePicker.d.ts.map +1 -1
  18. package/lib/cjs/components-react/datepicker/DatePicker.js +6 -6
  19. package/lib/cjs/components-react/datepicker/DatePicker.js.map +1 -1
  20. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.js +1 -1
  21. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
  22. package/lib/cjs/components-react/datepicker/TimeField.d.ts.map +1 -1
  23. package/lib/cjs/components-react/datepicker/TimeField.js +19 -22
  24. package/lib/cjs/components-react/datepicker/TimeField.js.map +1 -1
  25. package/lib/cjs/components-react/editors/CustomNumberEditor.d.ts.map +1 -1
  26. package/lib/cjs/components-react/editors/CustomNumberEditor.js +3 -2
  27. package/lib/cjs/components-react/editors/CustomNumberEditor.js.map +1 -1
  28. package/lib/cjs/components-react/editors/EditorContainer.d.ts.map +1 -1
  29. package/lib/cjs/components-react/editors/EditorContainer.js +4 -3
  30. package/lib/cjs/components-react/editors/EditorContainer.js.map +1 -1
  31. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.d.ts +0 -1
  32. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.d.ts.map +1 -1
  33. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.js +1 -2
  34. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
  35. package/lib/cjs/components-react/editors/PopupButton.d.ts.map +1 -1
  36. package/lib/cjs/components-react/editors/PopupButton.js +4 -3
  37. package/lib/cjs/components-react/editors/PopupButton.js.map +1 -1
  38. package/lib/cjs/components-react/filtering/FilteringInput.d.ts.map +1 -1
  39. package/lib/cjs/components-react/filtering/FilteringInput.js +2 -2
  40. package/lib/cjs/components-react/filtering/FilteringInput.js.map +1 -1
  41. package/lib/cjs/components-react/filtering/ResultSelector.js +2 -2
  42. package/lib/cjs/components-react/filtering/ResultSelector.js.map +1 -1
  43. package/lib/cjs/components-react/inputs/ParsedInput.d.ts.map +1 -1
  44. package/lib/cjs/components-react/inputs/ParsedInput.js +3 -3
  45. package/lib/cjs/components-react/inputs/ParsedInput.js.map +1 -1
  46. package/lib/cjs/components-react/properties/renderers/value/Common.d.ts +4 -0
  47. package/lib/cjs/components-react/properties/renderers/value/Common.d.ts.map +1 -0
  48. package/lib/cjs/components-react/properties/renderers/value/Common.js +12 -0
  49. package/lib/cjs/components-react/properties/renderers/value/Common.js.map +1 -0
  50. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts.map +1 -1
  51. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.js +2 -8
  52. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  53. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.d.ts.map +1 -1
  54. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js +2 -5
  55. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  56. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts.map +1 -1
  57. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js +2 -8
  58. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  59. package/lib/cjs/components-react/tree/controlled/TreeEventDispatcher.d.ts.map +1 -1
  60. package/lib/cjs/components-react/tree/controlled/TreeEventDispatcher.js +10 -2
  61. package/lib/cjs/components-react/tree/controlled/TreeEventDispatcher.js.map +1 -1
  62. package/lib/cjs/components-react/tree/controlled/TreeEventHandler.d.ts +2 -0
  63. package/lib/cjs/components-react/tree/controlled/TreeEventHandler.d.ts.map +1 -1
  64. package/lib/cjs/components-react/tree/controlled/TreeEventHandler.js +2 -0
  65. package/lib/cjs/components-react/tree/controlled/TreeEventHandler.js.map +1 -1
  66. package/lib/cjs/components-react/tree/controlled/TreeEvents.d.ts +2 -0
  67. package/lib/cjs/components-react/tree/controlled/TreeEvents.d.ts.map +1 -1
  68. package/lib/cjs/components-react/tree/controlled/TreeEvents.js.map +1 -1
  69. package/lib/esm/components-react/UiComponents.d.ts.map +1 -1
  70. package/lib/esm/components-react/UiComponents.js +3 -2
  71. package/lib/esm/components-react/UiComponents.js.map +1 -1
  72. package/lib/esm/components-react/common/ImageRenderer.d.ts.map +1 -1
  73. package/lib/esm/components-react/common/ImageRenderer.js +2 -3
  74. package/lib/esm/components-react/common/ImageRenderer.js.map +1 -1
  75. package/lib/esm/components-react/common/UseAsyncValue.d.ts.map +1 -1
  76. package/lib/esm/components-react/common/UseAsyncValue.js +9 -19
  77. package/lib/esm/components-react/common/UseAsyncValue.js.map +1 -1
  78. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.d.ts.map +1 -1
  79. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.js +3 -2
  80. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
  81. package/lib/esm/components-react/common/UseDebouncedAsyncValue.d.ts.map +1 -1
  82. package/lib/esm/components-react/common/UseDebouncedAsyncValue.js +23 -17
  83. package/lib/esm/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  84. package/lib/esm/components-react/datepicker/DatePicker.d.ts.map +1 -1
  85. package/lib/esm/components-react/datepicker/DatePicker.js +6 -6
  86. package/lib/esm/components-react/datepicker/DatePicker.js.map +1 -1
  87. package/lib/esm/components-react/datepicker/DatePickerPopupButton.js +2 -2
  88. package/lib/esm/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
  89. package/lib/esm/components-react/datepicker/TimeField.d.ts.map +1 -1
  90. package/lib/esm/components-react/datepicker/TimeField.js +19 -22
  91. package/lib/esm/components-react/datepicker/TimeField.js.map +1 -1
  92. package/lib/esm/components-react/editors/CustomNumberEditor.d.ts.map +1 -1
  93. package/lib/esm/components-react/editors/CustomNumberEditor.js +4 -3
  94. package/lib/esm/components-react/editors/CustomNumberEditor.js.map +1 -1
  95. package/lib/esm/components-react/editors/EditorContainer.d.ts.map +1 -1
  96. package/lib/esm/components-react/editors/EditorContainer.js +5 -4
  97. package/lib/esm/components-react/editors/EditorContainer.js.map +1 -1
  98. package/lib/esm/components-react/editors/EnumButtonGroupEditor.d.ts +0 -1
  99. package/lib/esm/components-react/editors/EnumButtonGroupEditor.d.ts.map +1 -1
  100. package/lib/esm/components-react/editors/EnumButtonGroupEditor.js +2 -3
  101. package/lib/esm/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
  102. package/lib/esm/components-react/editors/PopupButton.d.ts.map +1 -1
  103. package/lib/esm/components-react/editors/PopupButton.js +5 -4
  104. package/lib/esm/components-react/editors/PopupButton.js.map +1 -1
  105. package/lib/esm/components-react/filtering/FilteringInput.d.ts.map +1 -1
  106. package/lib/esm/components-react/filtering/FilteringInput.js +2 -2
  107. package/lib/esm/components-react/filtering/FilteringInput.js.map +1 -1
  108. package/lib/esm/components-react/filtering/ResultSelector.js +2 -2
  109. package/lib/esm/components-react/filtering/ResultSelector.js.map +1 -1
  110. package/lib/esm/components-react/inputs/ParsedInput.d.ts.map +1 -1
  111. package/lib/esm/components-react/inputs/ParsedInput.js +3 -3
  112. package/lib/esm/components-react/inputs/ParsedInput.js.map +1 -1
  113. package/lib/esm/components-react/properties/renderers/value/Common.d.ts +4 -0
  114. package/lib/esm/components-react/properties/renderers/value/Common.d.ts.map +1 -0
  115. package/lib/esm/components-react/properties/renderers/value/Common.js +8 -0
  116. package/lib/esm/components-react/properties/renderers/value/Common.js.map +1 -0
  117. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts.map +1 -1
  118. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.js +1 -7
  119. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  120. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.d.ts.map +1 -1
  121. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js +2 -5
  122. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  123. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts.map +1 -1
  124. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js +1 -7
  125. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  126. package/lib/esm/components-react/tree/controlled/TreeEventDispatcher.d.ts.map +1 -1
  127. package/lib/esm/components-react/tree/controlled/TreeEventDispatcher.js +10 -2
  128. package/lib/esm/components-react/tree/controlled/TreeEventDispatcher.js.map +1 -1
  129. package/lib/esm/components-react/tree/controlled/TreeEventHandler.d.ts +2 -0
  130. package/lib/esm/components-react/tree/controlled/TreeEventHandler.d.ts.map +1 -1
  131. package/lib/esm/components-react/tree/controlled/TreeEventHandler.js +2 -0
  132. package/lib/esm/components-react/tree/controlled/TreeEventHandler.js.map +1 -1
  133. package/lib/esm/components-react/tree/controlled/TreeEvents.d.ts +2 -0
  134. package/lib/esm/components-react/tree/controlled/TreeEvents.d.ts.map +1 -1
  135. package/lib/esm/components-react/tree/controlled/TreeEvents.js.map +1 -1
  136. package/package.json +7 -6
@@ -33,8 +33,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
33
33
  exports.NavigationPropertyValueRenderer = void 0;
34
34
  const React = __importStar(require("react"));
35
35
  const appui_abstract_1 = require("@itwin/appui-abstract");
36
- const TypeConverterManager_1 = require("../../../converters/TypeConverterManager");
37
36
  const PrimitivePropertyValueRenderer_1 = require("./PrimitivePropertyValueRenderer");
37
+ const Common_1 = require("./Common");
38
38
  /** Default Navigation Property Renderer
39
39
  * @public
40
40
  */
@@ -46,14 +46,8 @@ class NavigationPropertyValueRenderer {
46
46
  }
47
47
  /** Method that returns a JSX representation of PropertyRecord */
48
48
  render(record, context) {
49
- return (React.createElement(PrimitivePropertyValueRenderer_1.PrimitivePropertyValueRendererImpl, { record: record, context: context, stringValueCalculator: convertRecordToString }));
49
+ return (React.createElement(PrimitivePropertyValueRenderer_1.PrimitivePropertyValueRendererImpl, { record: record, context: context, stringValueCalculator: Common_1.convertRecordToString }));
50
50
  }
51
51
  }
52
52
  exports.NavigationPropertyValueRenderer = NavigationPropertyValueRenderer;
53
- function convertRecordToString(record) {
54
- const primitive = record.value;
55
- if (primitive.displayValue)
56
- return primitive.displayValue;
57
- return TypeConverterManager_1.TypeConverterManager.getConverter(record.property.typename, record.property.converter?.name).convertPropertyToString(record.property, primitive.value);
58
- }
59
53
  //# sourceMappingURL=NavigationPropertyValueRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationPropertyValueRenderer.js","sourceRoot":"","sources":["../../../../../../src/components-react/properties/renderers/value/NavigationPropertyValueRenderer.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAE/B,0DAA+E;AAC/E,mFAAgF;AAKhF,qFAAsF;AAEtF;;GAEG;AACH,MAAa,+BAA+B;IAC1C,uDAAuD;IAChD,SAAS,CAAC,MAAsB;QACrC,OAAO,CACL,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,oCAAmB,CAAC,SAAS;YAC1D,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,kCAAiB,CAAC,UAAU,CAC1D,CAAC;IACJ,CAAC;IAED,iEAAiE;IAC1D,MAAM,CACX,MAAsB,EACtB,OAAsC;QAEtC,OAAO,CACL,oBAAC,mEAAkC,IACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,qBAAqB,EAAE,qBAAqB,GAC5C,CACH,CAAC;IACJ,CAAC;CACF;AAtBD,0EAsBC;AAED,SAAS,qBAAqB,CAC5B,MAAsB;IAEtB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAuB,CAAC;IACjD,IAAI,SAAS,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC,YAAY,CAAC;IAC1D,OAAO,2CAAoB,CAAC,YAAY,CACtC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EACxB,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAChC,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Properties\n */\n\nimport * as React from \"react\";\nimport type { PrimitiveValue, PropertyRecord } from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { TypeConverterManager } from \"../../../converters/TypeConverterManager\";\nimport type {\n IPropertyValueRenderer,\n PropertyValueRendererContext,\n} from \"../../ValueRendererManager\";\nimport { PrimitivePropertyValueRendererImpl } from \"./PrimitivePropertyValueRenderer\";\n\n/** Default Navigation Property Renderer\n * @public\n */\nexport class NavigationPropertyValueRenderer implements IPropertyValueRenderer {\n /** Checks if the renderer can handle given property */\n public canRender(record: PropertyRecord) {\n return (\n record.value.valueFormat === PropertyValueFormat.Primitive &&\n record.property.typename === StandardTypeNames.Navigation\n );\n }\n\n /** Method that returns a JSX representation of PropertyRecord */\n public render(\n record: PropertyRecord,\n context?: PropertyValueRendererContext\n ) {\n return (\n <PrimitivePropertyValueRendererImpl\n record={record}\n context={context}\n stringValueCalculator={convertRecordToString}\n />\n );\n }\n}\n\nfunction convertRecordToString(\n record: PropertyRecord\n): string | Promise<string> {\n const primitive = record.value as PrimitiveValue;\n if (primitive.displayValue) return primitive.displayValue;\n return TypeConverterManager.getConverter(\n record.property.typename,\n record.property.converter?.name\n ).convertPropertyToString(record.property, primitive.value);\n}\n"]}
1
+ {"version":3,"file":"NavigationPropertyValueRenderer.js","sourceRoot":"","sources":["../../../../../../src/components-react/properties/renderers/value/NavigationPropertyValueRenderer.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAE/B,0DAA+E;AAK/E,qFAAsF;AACtF,qCAAiD;AAEjD;;GAEG;AACH,MAAa,+BAA+B;IAC1C,uDAAuD;IAChD,SAAS,CAAC,MAAsB;QACrC,OAAO,CACL,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,oCAAmB,CAAC,SAAS;YAC1D,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,kCAAiB,CAAC,UAAU,CAC1D,CAAC;IACJ,CAAC;IAED,iEAAiE;IAC1D,MAAM,CACX,MAAsB,EACtB,OAAsC;QAEtC,OAAO,CACL,oBAAC,mEAAkC,IACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,qBAAqB,EAAE,8BAAqB,GAC5C,CACH,CAAC;IACJ,CAAC;CACF;AAtBD,0EAsBC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Properties\n */\n\nimport * as React from \"react\";\nimport type { PropertyRecord } from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\nimport type {\n IPropertyValueRenderer,\n PropertyValueRendererContext,\n} from \"../../ValueRendererManager\";\nimport { PrimitivePropertyValueRendererImpl } from \"./PrimitivePropertyValueRenderer\";\nimport { convertRecordToString } from \"./Common\";\n\n/** Default Navigation Property Renderer\n * @public\n */\nexport class NavigationPropertyValueRenderer implements IPropertyValueRenderer {\n /** Checks if the renderer can handle given property */\n public canRender(record: PropertyRecord) {\n return (\n record.value.valueFormat === PropertyValueFormat.Primitive &&\n record.property.typename === StandardTypeNames.Navigation\n );\n }\n\n /** Method that returns a JSX representation of PropertyRecord */\n public render(\n record: PropertyRecord,\n context?: PropertyValueRendererContext\n ) {\n return (\n <PrimitivePropertyValueRendererImpl\n record={record}\n context={context}\n stringValueCalculator={convertRecordToString}\n />\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeEventDispatcher.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventDispatcher.ts"],"names":[],"mappings":"AAIA;;GAEG;;AAsBH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAU3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IACrD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,OAAO,CAAC,iBAAiB,CAAuB;IAEhD,OAAO,CAAC,iBAAiB,CAKrB;gBAGF,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,eAAe,EAC3B,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,MAAM,gBAAgB;IAmFlC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa;IAsC7D,cAAc,CAAC,MAAM,EAAE,MAAM;IAM7B,eAAe,CAAC,MAAM,EAAE,MAAM;IAM9B,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC;IAYvC,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,qBAAqB,CAAC,MAAM,EAAE,MAAM;IAapC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI;IAI/C,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI;IAIpD,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,mBAAmB;IA+C3B,OAAO,CAAE,mBAAmB;IA4B5B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,MAAM,CAAC,wBAAwB;CAexC"}
1
+ {"version":3,"file":"TreeEventDispatcher.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventDispatcher.ts"],"names":[],"mappings":"AAIA;;GAEG;;AAsBH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAU3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IACrD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,OAAO,CAAC,iBAAiB,CAAuB;IAEhD,OAAO,CAAC,iBAAiB,CAKrB;gBAGF,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,eAAe,EAC3B,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,MAAM,gBAAgB;IAmFlC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa;IAsC7D,cAAc,CAAC,MAAM,EAAE,MAAM;IAM7B,eAAe,CAAC,MAAM,EAAE,MAAM;IAM9B,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC;IAuBvC,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,qBAAqB,CAAC,MAAM,EAAE,MAAM;IAapC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI;IAI/C,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI;IAIpD,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,mBAAmB;IA+C3B,OAAO,CAAE,mBAAmB;IA4B5B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,MAAM,CAAC,wBAAwB;CAexC"}
@@ -97,8 +97,16 @@ class TreeEventDispatcher {
97
97
  }
98
98
  onNodeClicked(nodeId, event) {
99
99
  const node = this._getVisibleNodes().getModel().getNode(nodeId);
100
- const isNodeSelected = node ? node.isSelected : false;
101
- this._selectionManager.onNodeClicked(nodeId, event);
100
+ const isNodeSelected = node && node.isSelected;
101
+ if (event.detail === 2 &&
102
+ this._treeEvents.onNodeDoubleClick !== undefined) {
103
+ this._treeEvents.onNodeDoubleClick({ nodeId });
104
+ // trigger onNodeClicked as to not lose highlight of the node when double clicking.
105
+ !isNodeSelected && this._selectionManager.onNodeClicked(nodeId, event);
106
+ }
107
+ else {
108
+ this._selectionManager.onNodeClicked(nodeId, event);
109
+ }
102
110
  // if clicked node was already selected fire delayed click event
103
111
  if (isNodeSelected && this._treeEvents.onDelayedNodeClick !== undefined) {
104
112
  this._treeEvents.onDelayedNodeClick({ nodeId });
@@ -1 +1 @@
1
- {"version":3,"file":"TreeEventDispatcher.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventDispatcher.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport type { Observable } from \"rxjs\";\nimport {\n asapScheduler,\n concat,\n concatAll,\n concatMap,\n defer,\n distinctUntilChanged,\n EMPTY,\n filter,\n finalize,\n from,\n map,\n merge,\n mergeAll,\n of,\n shareReplay,\n subscribeOn,\n toArray,\n} from \"rxjs\";\nimport type { CheckBoxState } from \"@itwin/core-react\";\nimport type { SelectionMode } from \"../../common/selection/SelectionModes\";\nimport type { TreeNodeItem } from \"../TreeDataProvider\";\nimport type {\n IndividualSelection,\n RangeSelection,\n} from \"./internal/TreeSelectionManager\";\nimport {\n isRangeSelection,\n TreeSelectionManager,\n} from \"./internal/TreeSelectionManager\";\nimport type { TreeActions } from \"./TreeActions\";\nimport type { TreeEvents } from \"./TreeEvents\";\nimport type {\n TreeModelNode,\n TreeModelNodePlaceholder,\n VisibleTreeNodes,\n} from \"./TreeModel\";\nimport { isTreeModelNode } from \"./TreeModel\";\nimport type { ITreeNodeLoader } from \"./TreeNodeLoader\";\nimport { toRxjsObservable } from \"./Observable\";\n\n/**\n * Default event dispatcher that emits tree events according performed actions.\n * It converts low level tree events into TreeEvents.\n * @internal\n */\nexport class TreeEventDispatcher implements TreeActions {\n private _treeEvents: TreeEvents;\n private _nodeLoader: ITreeNodeLoader;\n private _getVisibleNodes: () => VisibleTreeNodes;\n\n private _selectionManager: TreeSelectionManager;\n\n private _activeSelections = new Set<\n Observable<{\n selectedNodeItems: TreeNodeItem[];\n deselectedNodeItems?: TreeNodeItem[];\n }>\n >();\n\n constructor(\n treeEvents: TreeEvents,\n nodeLoader: ITreeNodeLoader,\n selectionMode: SelectionMode,\n getVisibleNodes: () => VisibleTreeNodes\n ) {\n this._treeEvents = treeEvents;\n this._nodeLoader = nodeLoader;\n this._getVisibleNodes = getVisibleNodes;\n\n this._selectionManager = new TreeSelectionManager(\n selectionMode,\n this._getVisibleNodes\n );\n\n this._selectionManager.onDragSelection.addListener(\n ({ selectionChanges }) => {\n const modifications = selectionChanges.pipe(\n map(({ selectedNodes, deselectedNodes }) =>\n this.collectSelectionChanges(selectedNodes, []).pipe(\n concatMap(({ selectedNodeItems }) => from(selectedNodeItems)),\n toArray(),\n map((collectedIds) => ({\n selectedNodeItems: collectedIds,\n deselectedNodeItems: this.collectNodeItems(deselectedNodes),\n }))\n )\n ),\n concatAll(),\n shareReplay({\n refCount: true,\n })\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onSelectionModified !== undefined)\n this._treeEvents.onSelectionModified({ modifications });\n }\n );\n\n this._selectionManager.onSelectionChanged.addListener(\n ({ selectedNodes, deselectedNodes }) => {\n const modifications = merge(\n defer(() => {\n this._activeSelections.add(modifications);\n return EMPTY;\n }),\n this.collectSelectionChanges(selectedNodes, deselectedNodes)\n ).pipe(\n finalize(() => {\n this._activeSelections.delete(modifications);\n }),\n shareReplay({\n refCount: true,\n })\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onSelectionModified !== undefined)\n this._treeEvents.onSelectionModified({ modifications });\n }\n );\n\n this._selectionManager.onSelectionReplaced.addListener(\n ({ selectedNodeIds }) => {\n const replacements = merge(\n defer(() => {\n this._activeSelections.add(replacements);\n return EMPTY;\n }),\n this.collectSelectionChanges(selectedNodeIds, [])\n ).pipe(\n finalize(() => {\n this._activeSelections.delete(replacements);\n }),\n shareReplay({\n refCount: true,\n })\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onSelectionReplaced !== undefined)\n this._treeEvents.onSelectionReplaced({ replacements });\n }\n );\n }\n\n public onNodeCheckboxClicked(nodeId: string, newState: CheckBoxState) {\n const visibleNodes = this._getVisibleNodes();\n const clickedNode = visibleNodes.getModel().getNode(nodeId);\n if (clickedNode === undefined) return;\n\n const immediateStateChanges = [{ nodeItem: clickedNode.item, newState }];\n if (clickedNode.isSelected) {\n for (const node of visibleNodes) {\n if (\n isTreeModelNode(node) &&\n node.id !== clickedNode.id &&\n node.isSelected &&\n node.checkbox.state !== newState\n ) {\n immediateStateChanges.push({ nodeItem: node.item, newState });\n }\n }\n }\n\n const stateChanges = concat(\n of(immediateStateChanges),\n from(this._activeSelections).pipe(\n mergeAll(),\n map(({ selectedNodeItems }) =>\n selectedNodeItems.map((item) => ({ nodeItem: item, newState }))\n )\n )\n ).pipe(\n shareReplay({\n refCount: true,\n })\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onCheckboxStateChanged !== undefined)\n this._treeEvents.onCheckboxStateChanged({ stateChanges });\n }\n\n public onNodeExpanded(nodeId: string) {\n /* istanbul ignore else */\n if (this._treeEvents.onNodeExpanded !== undefined)\n this._treeEvents.onNodeExpanded({ nodeId });\n }\n\n public onNodeCollapsed(nodeId: string) {\n /* istanbul ignore else */\n if (this._treeEvents.onNodeCollapsed !== undefined)\n this._treeEvents.onNodeCollapsed({ nodeId });\n }\n\n public onNodeClicked(\n nodeId: string,\n event: React.MouseEvent<Element, MouseEvent>\n ) {\n const node = this._getVisibleNodes().getModel().getNode(nodeId);\n const isNodeSelected = node ? node.isSelected : false;\n this._selectionManager.onNodeClicked(nodeId, event);\n\n // if clicked node was already selected fire delayed click event\n if (isNodeSelected && this._treeEvents.onDelayedNodeClick !== undefined) {\n this._treeEvents.onDelayedNodeClick({ nodeId });\n }\n }\n\n public onNodeMouseDown(nodeId: string) {\n this._selectionManager.onNodeMouseDown(nodeId);\n }\n\n public onNodeMouseMove(nodeId: string) {\n this._selectionManager.onNodeMouseMove(nodeId);\n }\n\n public onNodeEditorActivated(nodeId: string) {\n const node = this._getVisibleNodes().getModel().getNode(nodeId);\n const isNodeSelected = node ? node.isSelected : false;\n\n // if node was already selected, fire onNodeEditorActivated event\n if (\n isNodeSelected &&\n this._treeEvents.onNodeEditorActivated !== undefined\n ) {\n this._treeEvents.onNodeEditorActivated({ nodeId });\n }\n }\n\n public onTreeKeyDown(event: React.KeyboardEvent): void {\n this._selectionManager.onTreeKeyDown(event, this);\n }\n\n public onTreeKeyUp(event: React.KeyboardEvent): void {\n this._selectionManager.onTreeKeyUp(event, this);\n }\n\n private collectSelectionChanges(\n selection: IndividualSelection | RangeSelection,\n deselection: IndividualSelection\n ): Observable<{\n selectedNodeItems: TreeNodeItem[];\n deselectedNodeItems: TreeNodeItem[];\n }> {\n const deselectedItems = this.collectNodeItems(deselection);\n if (isRangeSelection(selection)) {\n return this.collectNodesBetween(selection.from, selection.to).pipe(\n map((selectedNodeItems, index) => {\n return {\n selectedNodeItems,\n deselectedNodeItems: index === 0 ? deselectedItems : [],\n };\n })\n );\n }\n\n const selectedItems = this.collectNodeItems(selection);\n return of({\n selectedNodeItems: selectedItems,\n deselectedNodeItems: deselectedItems,\n });\n }\n\n private collectNodesBetween(\n nodeId1: string,\n nodeId2: string\n ): Observable<TreeNodeItem[]> {\n const [readyNodes, nodesToLoad] =\n TreeEventDispatcher.groupNodesByLoadingState(\n this.iterateNodesBetween(nodeId1, nodeId2)\n );\n\n const loadedSelectedNodes = from(\n nodesToLoad.map((node) => {\n const parentNode = node.parentId\n ? this._getVisibleNodes().getModel().getNode(node.parentId)\n : this._getVisibleNodes().getModel().getRootNode();\n return parentNode\n ? toRxjsObservable(\n this._nodeLoader.loadNode(parentNode, node.childIndex)\n )\n : /* istanbul ignore next */ EMPTY;\n })\n ).pipe(\n // We have requested multiple nodes that may belong to the same page.\n // When the page loads we only want to process the loaded nodes once.\n // Making assumption that loaded nodes from the same page will be emitted without interruptions.\n // Maybe we could simplify this to `this._nodeLoader.loadNodes(nodesToLoad)`?\n mergeAll(),\n distinctUntilChanged()\n );\n\n return concat(\n of(\n readyNodes\n .filter((node) => !node.isSelectionDisabled)\n .map((node) => node.item)\n ),\n loadedSelectedNodes.pipe(\n map(({ loadedNodes }) =>\n loadedNodes.filter((item) => !item.isSelectionDisabled)\n )\n )\n ).pipe(\n filter((nodeItems) => nodeItems.length > 0),\n // Give enough time for multiple subscribers to subscribe before any emissions begin\n subscribeOn(asapScheduler)\n );\n }\n\n private *iterateNodesBetween(\n nodeId1: string,\n nodeId2: string\n ): Iterable<TreeModelNode | TreeModelNodePlaceholder> {\n let firstNodeFound = false;\n for (const node of this._getVisibleNodes()) {\n if (firstNodeFound) {\n yield node;\n }\n\n if (isTreeModelNode(node)) {\n if (nodeId1 === nodeId2 && node.id === nodeId1) {\n yield node;\n return;\n }\n\n if (node.id === nodeId1 || node.id === nodeId2) {\n if (firstNodeFound) {\n return;\n }\n\n firstNodeFound = true;\n yield node;\n }\n }\n }\n }\n\n private collectNodeItems(nodeIds: string[]): TreeNodeItem[] {\n const items: TreeNodeItem[] = [];\n for (const nodeId of nodeIds) {\n const node = this._getVisibleNodes().getModel().getNode(nodeId);\n // istanbul ignore else\n if (node !== undefined && !node.isSelectionDisabled) {\n items.push(node.item);\n }\n }\n return items;\n }\n\n private static groupNodesByLoadingState(\n nodes: Iterable<TreeModelNode | TreeModelNodePlaceholder>\n ): [TreeModelNode[], TreeModelNodePlaceholder[]] {\n const loadedNodeItems: TreeModelNode[] = [];\n const nodesToLoad: TreeModelNodePlaceholder[] = [];\n for (const node of nodes) {\n if (isTreeModelNode(node)) {\n loadedNodeItems.push(node);\n } else {\n nodesToLoad.push(node);\n }\n }\n\n return [loadedNodeItems, nodesToLoad];\n }\n}\n"]}
1
+ {"version":3,"file":"TreeEventDispatcher.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventDispatcher.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport type { Observable } from \"rxjs\";\nimport {\n asapScheduler,\n concat,\n concatAll,\n concatMap,\n defer,\n distinctUntilChanged,\n EMPTY,\n filter,\n finalize,\n from,\n map,\n merge,\n mergeAll,\n of,\n shareReplay,\n subscribeOn,\n toArray,\n} from \"rxjs\";\nimport type { CheckBoxState } from \"@itwin/core-react\";\nimport type { SelectionMode } from \"../../common/selection/SelectionModes\";\nimport type { TreeNodeItem } from \"../TreeDataProvider\";\nimport type {\n IndividualSelection,\n RangeSelection,\n} from \"./internal/TreeSelectionManager\";\nimport {\n isRangeSelection,\n TreeSelectionManager,\n} from \"./internal/TreeSelectionManager\";\nimport type { TreeActions } from \"./TreeActions\";\nimport type { TreeEvents } from \"./TreeEvents\";\nimport type {\n TreeModelNode,\n TreeModelNodePlaceholder,\n VisibleTreeNodes,\n} from \"./TreeModel\";\nimport { isTreeModelNode } from \"./TreeModel\";\nimport type { ITreeNodeLoader } from \"./TreeNodeLoader\";\nimport { toRxjsObservable } from \"./Observable\";\n\n/**\n * Default event dispatcher that emits tree events according performed actions.\n * It converts low level tree events into TreeEvents.\n * @internal\n */\nexport class TreeEventDispatcher implements TreeActions {\n private _treeEvents: TreeEvents;\n private _nodeLoader: ITreeNodeLoader;\n private _getVisibleNodes: () => VisibleTreeNodes;\n\n private _selectionManager: TreeSelectionManager;\n\n private _activeSelections = new Set<\n Observable<{\n selectedNodeItems: TreeNodeItem[];\n deselectedNodeItems?: TreeNodeItem[];\n }>\n >();\n\n constructor(\n treeEvents: TreeEvents,\n nodeLoader: ITreeNodeLoader,\n selectionMode: SelectionMode,\n getVisibleNodes: () => VisibleTreeNodes\n ) {\n this._treeEvents = treeEvents;\n this._nodeLoader = nodeLoader;\n this._getVisibleNodes = getVisibleNodes;\n\n this._selectionManager = new TreeSelectionManager(\n selectionMode,\n this._getVisibleNodes\n );\n\n this._selectionManager.onDragSelection.addListener(\n ({ selectionChanges }) => {\n const modifications = selectionChanges.pipe(\n map(({ selectedNodes, deselectedNodes }) =>\n this.collectSelectionChanges(selectedNodes, []).pipe(\n concatMap(({ selectedNodeItems }) => from(selectedNodeItems)),\n toArray(),\n map((collectedIds) => ({\n selectedNodeItems: collectedIds,\n deselectedNodeItems: this.collectNodeItems(deselectedNodes),\n }))\n )\n ),\n concatAll(),\n shareReplay({\n refCount: true,\n })\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onSelectionModified !== undefined)\n this._treeEvents.onSelectionModified({ modifications });\n }\n );\n\n this._selectionManager.onSelectionChanged.addListener(\n ({ selectedNodes, deselectedNodes }) => {\n const modifications = merge(\n defer(() => {\n this._activeSelections.add(modifications);\n return EMPTY;\n }),\n this.collectSelectionChanges(selectedNodes, deselectedNodes)\n ).pipe(\n finalize(() => {\n this._activeSelections.delete(modifications);\n }),\n shareReplay({\n refCount: true,\n })\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onSelectionModified !== undefined)\n this._treeEvents.onSelectionModified({ modifications });\n }\n );\n\n this._selectionManager.onSelectionReplaced.addListener(\n ({ selectedNodeIds }) => {\n const replacements = merge(\n defer(() => {\n this._activeSelections.add(replacements);\n return EMPTY;\n }),\n this.collectSelectionChanges(selectedNodeIds, [])\n ).pipe(\n finalize(() => {\n this._activeSelections.delete(replacements);\n }),\n shareReplay({\n refCount: true,\n })\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onSelectionReplaced !== undefined)\n this._treeEvents.onSelectionReplaced({ replacements });\n }\n );\n }\n\n public onNodeCheckboxClicked(nodeId: string, newState: CheckBoxState) {\n const visibleNodes = this._getVisibleNodes();\n const clickedNode = visibleNodes.getModel().getNode(nodeId);\n if (clickedNode === undefined) return;\n\n const immediateStateChanges = [{ nodeItem: clickedNode.item, newState }];\n if (clickedNode.isSelected) {\n for (const node of visibleNodes) {\n if (\n isTreeModelNode(node) &&\n node.id !== clickedNode.id &&\n node.isSelected &&\n node.checkbox.state !== newState\n ) {\n immediateStateChanges.push({ nodeItem: node.item, newState });\n }\n }\n }\n\n const stateChanges = concat(\n of(immediateStateChanges),\n from(this._activeSelections).pipe(\n mergeAll(),\n map(({ selectedNodeItems }) =>\n selectedNodeItems.map((item) => ({ nodeItem: item, newState }))\n )\n )\n ).pipe(\n shareReplay({\n refCount: true,\n })\n );\n\n /* istanbul ignore else */\n if (this._treeEvents.onCheckboxStateChanged !== undefined)\n this._treeEvents.onCheckboxStateChanged({ stateChanges });\n }\n\n public onNodeExpanded(nodeId: string) {\n /* istanbul ignore else */\n if (this._treeEvents.onNodeExpanded !== undefined)\n this._treeEvents.onNodeExpanded({ nodeId });\n }\n\n public onNodeCollapsed(nodeId: string) {\n /* istanbul ignore else */\n if (this._treeEvents.onNodeCollapsed !== undefined)\n this._treeEvents.onNodeCollapsed({ nodeId });\n }\n\n public onNodeClicked(\n nodeId: string,\n event: React.MouseEvent<Element, MouseEvent>\n ) {\n const node = this._getVisibleNodes().getModel().getNode(nodeId);\n const isNodeSelected = node && node.isSelected;\n\n if (\n event.detail === 2 &&\n this._treeEvents.onNodeDoubleClick !== undefined\n ) {\n this._treeEvents.onNodeDoubleClick({ nodeId });\n\n // trigger onNodeClicked as to not lose highlight of the node when double clicking.\n !isNodeSelected && this._selectionManager.onNodeClicked(nodeId, event);\n } else {\n this._selectionManager.onNodeClicked(nodeId, event);\n }\n\n // if clicked node was already selected fire delayed click event\n if (isNodeSelected && this._treeEvents.onDelayedNodeClick !== undefined) {\n this._treeEvents.onDelayedNodeClick({ nodeId });\n }\n }\n\n public onNodeMouseDown(nodeId: string) {\n this._selectionManager.onNodeMouseDown(nodeId);\n }\n\n public onNodeMouseMove(nodeId: string) {\n this._selectionManager.onNodeMouseMove(nodeId);\n }\n\n public onNodeEditorActivated(nodeId: string) {\n const node = this._getVisibleNodes().getModel().getNode(nodeId);\n const isNodeSelected = node ? node.isSelected : false;\n\n // if node was already selected, fire onNodeEditorActivated event\n if (\n isNodeSelected &&\n this._treeEvents.onNodeEditorActivated !== undefined\n ) {\n this._treeEvents.onNodeEditorActivated({ nodeId });\n }\n }\n\n public onTreeKeyDown(event: React.KeyboardEvent): void {\n this._selectionManager.onTreeKeyDown(event, this);\n }\n\n public onTreeKeyUp(event: React.KeyboardEvent): void {\n this._selectionManager.onTreeKeyUp(event, this);\n }\n\n private collectSelectionChanges(\n selection: IndividualSelection | RangeSelection,\n deselection: IndividualSelection\n ): Observable<{\n selectedNodeItems: TreeNodeItem[];\n deselectedNodeItems: TreeNodeItem[];\n }> {\n const deselectedItems = this.collectNodeItems(deselection);\n if (isRangeSelection(selection)) {\n return this.collectNodesBetween(selection.from, selection.to).pipe(\n map((selectedNodeItems, index) => {\n return {\n selectedNodeItems,\n deselectedNodeItems: index === 0 ? deselectedItems : [],\n };\n })\n );\n }\n\n const selectedItems = this.collectNodeItems(selection);\n return of({\n selectedNodeItems: selectedItems,\n deselectedNodeItems: deselectedItems,\n });\n }\n\n private collectNodesBetween(\n nodeId1: string,\n nodeId2: string\n ): Observable<TreeNodeItem[]> {\n const [readyNodes, nodesToLoad] =\n TreeEventDispatcher.groupNodesByLoadingState(\n this.iterateNodesBetween(nodeId1, nodeId2)\n );\n\n const loadedSelectedNodes = from(\n nodesToLoad.map((node) => {\n const parentNode = node.parentId\n ? this._getVisibleNodes().getModel().getNode(node.parentId)\n : this._getVisibleNodes().getModel().getRootNode();\n return parentNode\n ? toRxjsObservable(\n this._nodeLoader.loadNode(parentNode, node.childIndex)\n )\n : /* istanbul ignore next */ EMPTY;\n })\n ).pipe(\n // We have requested multiple nodes that may belong to the same page.\n // When the page loads we only want to process the loaded nodes once.\n // Making assumption that loaded nodes from the same page will be emitted without interruptions.\n // Maybe we could simplify this to `this._nodeLoader.loadNodes(nodesToLoad)`?\n mergeAll(),\n distinctUntilChanged()\n );\n\n return concat(\n of(\n readyNodes\n .filter((node) => !node.isSelectionDisabled)\n .map((node) => node.item)\n ),\n loadedSelectedNodes.pipe(\n map(({ loadedNodes }) =>\n loadedNodes.filter((item) => !item.isSelectionDisabled)\n )\n )\n ).pipe(\n filter((nodeItems) => nodeItems.length > 0),\n // Give enough time for multiple subscribers to subscribe before any emissions begin\n subscribeOn(asapScheduler)\n );\n }\n\n private *iterateNodesBetween(\n nodeId1: string,\n nodeId2: string\n ): Iterable<TreeModelNode | TreeModelNodePlaceholder> {\n let firstNodeFound = false;\n for (const node of this._getVisibleNodes()) {\n if (firstNodeFound) {\n yield node;\n }\n\n if (isTreeModelNode(node)) {\n if (nodeId1 === nodeId2 && node.id === nodeId1) {\n yield node;\n return;\n }\n\n if (node.id === nodeId1 || node.id === nodeId2) {\n if (firstNodeFound) {\n return;\n }\n\n firstNodeFound = true;\n yield node;\n }\n }\n }\n }\n\n private collectNodeItems(nodeIds: string[]): TreeNodeItem[] {\n const items: TreeNodeItem[] = [];\n for (const nodeId of nodeIds) {\n const node = this._getVisibleNodes().getModel().getNode(nodeId);\n // istanbul ignore else\n if (node !== undefined && !node.isSelectionDisabled) {\n items.push(node.item);\n }\n }\n return items;\n }\n\n private static groupNodesByLoadingState(\n nodes: Iterable<TreeModelNode | TreeModelNodePlaceholder>\n ): [TreeModelNode[], TreeModelNodePlaceholder[]] {\n const loadedNodeItems: TreeModelNode[] = [];\n const nodesToLoad: TreeModelNodePlaceholder[] = [];\n for (const node of nodes) {\n if (isTreeModelNode(node)) {\n loadedNodeItems.push(node);\n } else {\n nodesToLoad.push(node);\n }\n }\n\n return [loadedNodeItems, nodesToLoad];\n }\n}\n"]}
@@ -54,6 +54,8 @@ export declare class TreeEventHandler implements TreeEvents, IDisposable {
54
54
  onCheckboxStateChanged({ stateChanges, }: TreeCheckboxStateChangeEventArgs): Subscription | undefined;
55
55
  /** Activates node editing if editing parameters are supplied and node is editable. */
56
56
  onDelayedNodeClick({ nodeId }: TreeNodeEventArgs): void;
57
+ /** This method is declared here to be overridden by classes that extend TreeEventHandler */
58
+ onNodeDoubleClick(_: TreeNodeEventArgs): void;
57
59
  /** Activates node editing if editing parameters are supplied and node is editable. */
58
60
  onNodeEditorActivated({ nodeId }: TreeNodeEventArgs): void;
59
61
  /** Activates node editing if editing parameters are supplied and node is editable. */
@@ -1 +1 @@
1
- {"version":3,"file":"TreeEventHandler.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EACV,gCAAgC,EAChC,UAAU,EACV,iBAAiB,EACjB,kCAAkC,EAClC,iCAAiC,EAClC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,aAAa,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAChE;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,oEAAoE;IACpE,WAAW,EAAE,eAAe,CAAC;IAC7B,+DAA+D;IAC/D,UAAU,EAAE,eAAe,CAAC;IAC5B,0FAA0F;IAC1F,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,wCAAwC;IACxC,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,UAAU,EAAE,WAAW;IAC9D,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,cAAc,CAAC,CAAoB;IAE3C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,kBAAkB,CAAuB;gBAErC,MAAM,EAAE,sBAAsB;IAS1C,mCAAmC;IAC5B,OAAO;IAId,IAAW,WAAW,oBAErB;IAED,gDAAgD;IACzC,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAMnD,qBAAqB;IACd,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAIpD,kHAAkH;IAC3G,mBAAmB,CAAC,EACzB,aAAa,GACd,EAAE,kCAAkC,GAAG,YAAY,GAAG,SAAS;IAahE,gIAAgI;IACzH,mBAAmB,CAAC,EACzB,YAAY,GACb,EAAE,iCAAiC,GAAG,YAAY,GAAG,SAAS;IAkB/D,qCAAqC;IAC9B,sBAAsB,CAAC,EAC5B,YAAY,GACb,EAAE,gCAAgC,GAAG,YAAY,GAAG,SAAS;IAM9D,sFAAsF;IAC/E,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAIvD,sFAAsF;IAC/E,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAI1D,sFAAsF;IACtF,OAAO,CAAC,cAAc;CAQvB"}
1
+ {"version":3,"file":"TreeEventHandler.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EACV,gCAAgC,EAChC,UAAU,EACV,iBAAiB,EACjB,kCAAkC,EAClC,iCAAiC,EAClC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,aAAa,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAChE;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,oEAAoE;IACpE,WAAW,EAAE,eAAe,CAAC;IAC7B,+DAA+D;IAC/D,UAAU,EAAE,eAAe,CAAC;IAC5B,0FAA0F;IAC1F,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,wCAAwC;IACxC,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,UAAU,EAAE,WAAW;IAC9D,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,cAAc,CAAC,CAAoB;IAE3C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,kBAAkB,CAAuB;gBAErC,MAAM,EAAE,sBAAsB;IAS1C,mCAAmC;IAC5B,OAAO;IAId,IAAW,WAAW,oBAErB;IAED,gDAAgD;IACzC,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAMnD,qBAAqB;IACd,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAIpD,kHAAkH;IAC3G,mBAAmB,CAAC,EACzB,aAAa,GACd,EAAE,kCAAkC,GAAG,YAAY,GAAG,SAAS;IAahE,gIAAgI;IACzH,mBAAmB,CAAC,EACzB,YAAY,GACb,EAAE,iCAAiC,GAAG,YAAY,GAAG,SAAS;IAkB/D,qCAAqC;IAC9B,sBAAsB,CAAC,EAC5B,YAAY,GACb,EAAE,gCAAgC,GAAG,YAAY,GAAG,SAAS;IAM9D,sFAAsF;IAC/E,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAIvD,4FAA4F;IACrF,iBAAiB,CAAC,CAAC,EAAE,iBAAiB;IAE7C,sFAAsF;IAC/E,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB;IAI1D,sFAAsF;IACtF,OAAO,CAAC,cAAc;CAQvB"}
@@ -73,6 +73,8 @@ class TreeEventHandler {
73
73
  onDelayedNodeClick({ nodeId }) {
74
74
  this.activateEditor(nodeId);
75
75
  }
76
+ /** This method is declared here to be overridden by classes that extend TreeEventHandler */
77
+ onNodeDoubleClick(_) { }
76
78
  /** Activates node editing if editing parameters are supplied and node is editable. */
77
79
  onNodeEditorActivated({ nodeId }) {
78
80
  this.activateEditor(nodeId);
@@ -1 +1 @@
1
- {"version":3,"file":"TreeEventHandler.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport { Subject, takeUntil } from \"rxjs\";\nimport type { IDisposable } from \"@itwin/core-bentley\";\nimport { TreeModelMutator } from \"./internal/TreeModelMutator\";\nimport type { Subscription } from \"./Observable\";\nimport { toRxjsObservable } from \"./Observable\";\nimport type {\n TreeCheckboxStateChangeEventArgs,\n TreeEvents,\n TreeNodeEventArgs,\n TreeSelectionModificationEventArgs,\n TreeSelectionReplacementEventArgs,\n} from \"./TreeEvents\";\nimport type { TreeModelNode } from \"./TreeModel\";\nimport type { TreeModelSource } from \"./TreeModelSource\";\nimport type { ITreeNodeLoader } from \"./TreeNodeLoader\";\n\n/**\n * Params used for tree node editing.\n * @public\n */\nexport interface TreeEditingParams {\n /** Callback that is called when node is updated. */\n onNodeUpdated: (node: TreeModelNode, newValue: string) => void;\n}\n\n/**\n * Data structure that describes tree event handler params.\n * @public\n */\nexport interface TreeEventHandlerParams {\n /** Model source used to modify tree model while handling events. */\n modelSource: TreeModelSource;\n /** Node loader used to load children when node is expanded. */\n nodeLoader: ITreeNodeLoader;\n /** Specifies whether children should be disposed when parent node is collapsed or not. */\n collapsedChildrenDisposalEnabled?: boolean;\n /** Parameters used for node editing. */\n editingParams?: TreeEditingParams;\n}\n\n/**\n * Default tree event handler.\n * @public\n */\nexport class TreeEventHandler implements TreeEvents, IDisposable {\n private _modelMutator: TreeModelMutator;\n private _editingParams?: TreeEditingParams;\n\n private _disposed = new Subject<void>();\n private _selectionReplaced = new Subject<void>();\n\n constructor(params: TreeEventHandlerParams) {\n this._modelMutator = new TreeModelMutator(\n params.modelSource,\n params.nodeLoader,\n !!params.collapsedChildrenDisposalEnabled\n );\n this._editingParams = params.editingParams;\n }\n\n /** Disposes tree event handler. */\n public dispose() {\n this._disposed.next();\n }\n\n public get modelSource() {\n return this._modelMutator.modelSource;\n }\n\n /** Expands node and starts loading children. */\n public onNodeExpanded({ nodeId }: TreeNodeEventArgs) {\n toRxjsObservable(this._modelMutator.expandNode(nodeId))\n .pipe(takeUntil(this._disposed))\n .subscribe();\n }\n\n /** Collapses node */\n public onNodeCollapsed({ nodeId }: TreeNodeEventArgs) {\n this._modelMutator.collapseNode(nodeId);\n }\n\n /** Selects and deselects nodes until event is handled, handler is disposed or selection replaced event occurs. */\n public onSelectionModified({\n modifications,\n }: TreeSelectionModificationEventArgs): Subscription | undefined {\n return toRxjsObservable(modifications)\n .pipe(takeUntil(this._disposed), takeUntil(this._selectionReplaced))\n .subscribe({\n next: ({ selectedNodeItems, deselectedNodeItems }) => {\n this._modelMutator.modifySelection(\n selectedNodeItems,\n deselectedNodeItems\n );\n },\n });\n }\n\n /** Replaces currently selected nodes until event is handled, handler is disposed or another selection replaced event occurs. */\n public onSelectionReplaced({\n replacements,\n }: TreeSelectionReplacementEventArgs): Subscription | undefined {\n this._selectionReplaced.next();\n\n let firstEmission = true;\n return toRxjsObservable(replacements)\n .pipe(takeUntil(this._disposed), takeUntil(this._selectionReplaced))\n .subscribe({\n next: ({ selectedNodeItems }) => {\n if (firstEmission) {\n firstEmission = false;\n this._modelMutator.replaceSelection(selectedNodeItems);\n }\n\n this._modelMutator.modifySelection(selectedNodeItems, []);\n },\n });\n }\n\n /** Changes nodes checkbox states. */\n public onCheckboxStateChanged({\n stateChanges,\n }: TreeCheckboxStateChangeEventArgs): Subscription | undefined {\n return stateChanges.subscribe((changes) =>\n this._modelMutator.setCheckboxStates(changes)\n );\n }\n\n /** Activates node editing if editing parameters are supplied and node is editable. */\n public onDelayedNodeClick({ nodeId }: TreeNodeEventArgs) {\n this.activateEditor(nodeId);\n }\n\n /** Activates node editing if editing parameters are supplied and node is editable. */\n public onNodeEditorActivated({ nodeId }: TreeNodeEventArgs) {\n this.activateEditor(nodeId);\n }\n\n /** Activates node editing if editing parameters are supplied and node is editable. */\n private activateEditor(nodeId: string) {\n if (this._editingParams === undefined) return;\n\n this._modelMutator.activateEditing(\n nodeId,\n this._editingParams.onNodeUpdated\n );\n }\n}\n"]}
1
+ {"version":3,"file":"TreeEventHandler.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEventHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport { Subject, takeUntil } from \"rxjs\";\nimport type { IDisposable } from \"@itwin/core-bentley\";\nimport { TreeModelMutator } from \"./internal/TreeModelMutator\";\nimport type { Subscription } from \"./Observable\";\nimport { toRxjsObservable } from \"./Observable\";\nimport type {\n TreeCheckboxStateChangeEventArgs,\n TreeEvents,\n TreeNodeEventArgs,\n TreeSelectionModificationEventArgs,\n TreeSelectionReplacementEventArgs,\n} from \"./TreeEvents\";\nimport type { TreeModelNode } from \"./TreeModel\";\nimport type { TreeModelSource } from \"./TreeModelSource\";\nimport type { ITreeNodeLoader } from \"./TreeNodeLoader\";\n\n/**\n * Params used for tree node editing.\n * @public\n */\nexport interface TreeEditingParams {\n /** Callback that is called when node is updated. */\n onNodeUpdated: (node: TreeModelNode, newValue: string) => void;\n}\n\n/**\n * Data structure that describes tree event handler params.\n * @public\n */\nexport interface TreeEventHandlerParams {\n /** Model source used to modify tree model while handling events. */\n modelSource: TreeModelSource;\n /** Node loader used to load children when node is expanded. */\n nodeLoader: ITreeNodeLoader;\n /** Specifies whether children should be disposed when parent node is collapsed or not. */\n collapsedChildrenDisposalEnabled?: boolean;\n /** Parameters used for node editing. */\n editingParams?: TreeEditingParams;\n}\n\n/**\n * Default tree event handler.\n * @public\n */\nexport class TreeEventHandler implements TreeEvents, IDisposable {\n private _modelMutator: TreeModelMutator;\n private _editingParams?: TreeEditingParams;\n\n private _disposed = new Subject<void>();\n private _selectionReplaced = new Subject<void>();\n\n constructor(params: TreeEventHandlerParams) {\n this._modelMutator = new TreeModelMutator(\n params.modelSource,\n params.nodeLoader,\n !!params.collapsedChildrenDisposalEnabled\n );\n this._editingParams = params.editingParams;\n }\n\n /** Disposes tree event handler. */\n public dispose() {\n this._disposed.next();\n }\n\n public get modelSource() {\n return this._modelMutator.modelSource;\n }\n\n /** Expands node and starts loading children. */\n public onNodeExpanded({ nodeId }: TreeNodeEventArgs) {\n toRxjsObservable(this._modelMutator.expandNode(nodeId))\n .pipe(takeUntil(this._disposed))\n .subscribe();\n }\n\n /** Collapses node */\n public onNodeCollapsed({ nodeId }: TreeNodeEventArgs) {\n this._modelMutator.collapseNode(nodeId);\n }\n\n /** Selects and deselects nodes until event is handled, handler is disposed or selection replaced event occurs. */\n public onSelectionModified({\n modifications,\n }: TreeSelectionModificationEventArgs): Subscription | undefined {\n return toRxjsObservable(modifications)\n .pipe(takeUntil(this._disposed), takeUntil(this._selectionReplaced))\n .subscribe({\n next: ({ selectedNodeItems, deselectedNodeItems }) => {\n this._modelMutator.modifySelection(\n selectedNodeItems,\n deselectedNodeItems\n );\n },\n });\n }\n\n /** Replaces currently selected nodes until event is handled, handler is disposed or another selection replaced event occurs. */\n public onSelectionReplaced({\n replacements,\n }: TreeSelectionReplacementEventArgs): Subscription | undefined {\n this._selectionReplaced.next();\n\n let firstEmission = true;\n return toRxjsObservable(replacements)\n .pipe(takeUntil(this._disposed), takeUntil(this._selectionReplaced))\n .subscribe({\n next: ({ selectedNodeItems }) => {\n if (firstEmission) {\n firstEmission = false;\n this._modelMutator.replaceSelection(selectedNodeItems);\n }\n\n this._modelMutator.modifySelection(selectedNodeItems, []);\n },\n });\n }\n\n /** Changes nodes checkbox states. */\n public onCheckboxStateChanged({\n stateChanges,\n }: TreeCheckboxStateChangeEventArgs): Subscription | undefined {\n return stateChanges.subscribe((changes) =>\n this._modelMutator.setCheckboxStates(changes)\n );\n }\n\n /** Activates node editing if editing parameters are supplied and node is editable. */\n public onDelayedNodeClick({ nodeId }: TreeNodeEventArgs) {\n this.activateEditor(nodeId);\n }\n\n /** This method is declared here to be overridden by classes that extend TreeEventHandler */\n public onNodeDoubleClick(_: TreeNodeEventArgs) {}\n\n /** Activates node editing if editing parameters are supplied and node is editable. */\n public onNodeEditorActivated({ nodeId }: TreeNodeEventArgs) {\n this.activateEditor(nodeId);\n }\n\n /** Activates node editing if editing parameters are supplied and node is editable. */\n private activateEditor(nodeId: string) {\n if (this._editingParams === undefined) return;\n\n this._modelMutator.activateEditing(\n nodeId,\n this._editingParams.onNodeUpdated\n );\n }\n}\n"]}
@@ -25,6 +25,8 @@ export interface TreeEvents {
25
25
  onNodeCollapsed?(event: TreeNodeEventArgs): void;
26
26
  /** Called when selected tree node is clicked. */
27
27
  onDelayedNodeClick?(event: TreeNodeEventArgs): void;
28
+ /** Called when a tree node is double-clicked */
29
+ onNodeDoubleClick?(event: TreeNodeEventArgs): void;
28
30
  /** Called when selected tree node editor is activated. */
29
31
  onNodeEditorActivated?(event: TreeNodeEventArgs): void;
30
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"TreeEvents.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEvents.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE7D;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,cAAc,CAAC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAChD,0CAA0C;IAC1C,eAAe,CAAC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAEjD,iDAAiD;IACjD,kBAAkB,CAAC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpD,0DAA0D;IAC1D,qBAAqB,CAAC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAEvD;;;OAGG;IACH,mBAAmB,CAAC,CAClB,KAAK,EAAE,kCAAkC,GACxC,YAAY,GAAG,SAAS,CAAC;IAC5B;;;OAGG;IACH,mBAAmB,CAAC,CAClB,KAAK,EAAE,iCAAiC,GACvC,YAAY,GAAG,SAAS,CAAC;IAE5B;;;OAGG;IACH,sBAAsB,CAAC,CACrB,KAAK,EAAE,gCAAgC,GACtC,YAAY,GAAG,SAAS,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,kCAAkC;IACjD;;;OAGG;IACH,aAAa,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC;CAChD;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,iBAAiB,EAAE,YAAY,EAAE,CAAC;IAClC,6CAA6C;IAC7C,mBAAmB,EAAE,YAAY,EAAE,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,iCAAiC;IAChD;;;OAGG;IACH,YAAY,EAAE,UAAU,CAAC;QAAE,iBAAiB,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC,CAAC;CACjE;AAED;;;GAGG;AACH,MAAM,WAAW,gCAAgC;IAC/C;;;OAGG;IACH,YAAY,EAAE,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;CACjD;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,iEAAiE;IACjE,QAAQ,EAAE,YAAY,CAAC;IACvB,iCAAiC;IACjC,QAAQ,EAAE,aAAa,CAAC;CACzB"}
1
+ {"version":3,"file":"TreeEvents.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEvents.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE7D;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,cAAc,CAAC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAChD,0CAA0C;IAC1C,eAAe,CAAC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjD,iDAAiD;IACjD,kBAAkB,CAAC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpD,gDAAgD;IAChD,iBAAiB,CAAC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnD,0DAA0D;IAC1D,qBAAqB,CAAC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACvD;;;OAGG;IACH,mBAAmB,CAAC,CAClB,KAAK,EAAE,kCAAkC,GACxC,YAAY,GAAG,SAAS,CAAC;IAC5B;;;OAGG;IACH,mBAAmB,CAAC,CAClB,KAAK,EAAE,iCAAiC,GACvC,YAAY,GAAG,SAAS,CAAC;IAE5B;;;OAGG;IACH,sBAAsB,CAAC,CACrB,KAAK,EAAE,gCAAgC,GACtC,YAAY,GAAG,SAAS,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,kCAAkC;IACjD;;;OAGG;IACH,aAAa,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC;CAChD;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,iBAAiB,EAAE,YAAY,EAAE,CAAC;IAClC,6CAA6C;IAC7C,mBAAmB,EAAE,YAAY,EAAE,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,iCAAiC;IAChD;;;OAGG;IACH,YAAY,EAAE,UAAU,CAAC;QAAE,iBAAiB,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC,CAAC;CACjE;AAED;;;GAGG;AACH,MAAM,WAAW,gCAAgC;IAC/C;;;OAGG;IACH,YAAY,EAAE,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;CACjD;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,iEAAiE;IACjE,QAAQ,EAAE,YAAY,CAAC;IACvB,iCAAiC;IACjC,QAAQ,EAAE,aAAa,CAAC;CACzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeEvents.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEvents.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport type { CheckBoxState } from \"@itwin/core-react\";\nimport type { TreeNodeItem } from \"../TreeDataProvider\";\nimport type { Observable, Subscription } from \"./Observable\";\n\n/**\n * Tree events that can occur while interacting with tree.\n *\n * **Note:** Selection and checkbox state change events payload is an Observable.\n * Observable is a stream of data over time (e.g. in case of selection replaced event\n * it is a stream of selected node items arrays). To access data inside stream `subscribe()` method\n * should be called. This method accepts any subset of 'next', 'error' and 'complete' callbacks.\n * Once subscribe is called observable will start emitting data and calls 'next' callback each time new\n * data is emitted. If some selected nodes are not loaded yet they will be loaded and observable will\n * emit loaded node items. When all selected node items are emitted observable completes and calls\n * 'complete' callback if supplied.\n *\n * @public\n */\nexport interface TreeEvents {\n /** Called when tree node is expanded. */\n onNodeExpanded?(event: TreeNodeEventArgs): void;\n /** Called when tree node is collapsed. */\n onNodeCollapsed?(event: TreeNodeEventArgs): void;\n\n /** Called when selected tree node is clicked. */\n onDelayedNodeClick?(event: TreeNodeEventArgs): void;\n /** Called when selected tree node editor is activated. */\n onNodeEditorActivated?(event: TreeNodeEventArgs): void;\n\n /**\n * Called when tree selection is modified.\n * If Subscription is returned it can be used to stop event handling by calling `unsubscribe()`.\n */\n onSelectionModified?(\n event: TreeSelectionModificationEventArgs\n ): Subscription | undefined;\n /**\n * Called when tree selection is replaced.\n * If Subscription is returned it can be used to stop event handling by calling `unsubscribe()`.\n */\n onSelectionReplaced?(\n event: TreeSelectionReplacementEventArgs\n ): Subscription | undefined;\n\n /**\n * Called when checkbox states for nodes are changed.\n * If Subscription is returned it can be used to stop event handling by calling `unsubscribe()`.\n */\n onCheckboxStateChanged?(\n event: TreeCheckboxStateChangeEventArgs\n ): Subscription | undefined;\n}\n\n/**\n * Data structure that describes tree node event payload.\n * @public\n */\nexport interface TreeNodeEventArgs {\n /** Id of node that is affected by event. */\n nodeId: string;\n}\n\n/**\n * Data structure that describes tree selection modification event payload.\n * @public\n */\nexport interface TreeSelectionModificationEventArgs {\n /**\n * An observable that emits tree selection changes.\n * It starts emitting values when '.subscribe()' is called.\n */\n modifications: Observable<TreeSelectionChange>;\n}\n\n/**\n * Data structure that describes tree selection change.\n * @public\n */\nexport interface TreeSelectionChange {\n /** Tree node items that where selected. */\n selectedNodeItems: TreeNodeItem[];\n /** Tree node items that where deselected. */\n deselectedNodeItems: TreeNodeItem[];\n}\n\n/**\n * Data structure that describes tree selection replacement event payload.\n * @public\n */\nexport interface TreeSelectionReplacementEventArgs {\n /**\n * An observable that emits tree selection replacements containing selected tree node items.\n * It starts emitting values when '.subscribe()' is called.\n */\n replacements: Observable<{ selectedNodeItems: TreeNodeItem[] }>;\n}\n\n/**\n * Data structure that describes tree checkbox state change event payload.\n * @public\n */\nexport interface TreeCheckboxStateChangeEventArgs {\n /**\n * An observable that emits checkbox state changes.\n * It starts emitting values when '.subscribe()' is called.\n */\n stateChanges: Observable<CheckboxStateChange[]>;\n}\n\n/**\n * Data structure that describes checkbox state change.\n * @public\n */\nexport interface CheckboxStateChange {\n /** Tree node item that was affected by checkbox state change. */\n nodeItem: TreeNodeItem;\n /** New state of the checkbox. */\n newState: CheckBoxState;\n}\n"]}
1
+ {"version":3,"file":"TreeEvents.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeEvents.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport type { CheckBoxState } from \"@itwin/core-react\";\nimport type { TreeNodeItem } from \"../TreeDataProvider\";\nimport type { Observable, Subscription } from \"./Observable\";\n\n/**\n * Tree events that can occur while interacting with tree.\n *\n * **Note:** Selection and checkbox state change events payload is an Observable.\n * Observable is a stream of data over time (e.g. in case of selection replaced event\n * it is a stream of selected node items arrays). To access data inside stream `subscribe()` method\n * should be called. This method accepts any subset of 'next', 'error' and 'complete' callbacks.\n * Once subscribe is called observable will start emitting data and calls 'next' callback each time new\n * data is emitted. If some selected nodes are not loaded yet they will be loaded and observable will\n * emit loaded node items. When all selected node items are emitted observable completes and calls\n * 'complete' callback if supplied.\n *\n * @public\n */\nexport interface TreeEvents {\n /** Called when tree node is expanded. */\n onNodeExpanded?(event: TreeNodeEventArgs): void;\n /** Called when tree node is collapsed. */\n onNodeCollapsed?(event: TreeNodeEventArgs): void;\n /** Called when selected tree node is clicked. */\n onDelayedNodeClick?(event: TreeNodeEventArgs): void;\n /** Called when a tree node is double-clicked */\n onNodeDoubleClick?(event: TreeNodeEventArgs): void;\n /** Called when selected tree node editor is activated. */\n onNodeEditorActivated?(event: TreeNodeEventArgs): void;\n /**\n * Called when tree selection is modified.\n * If Subscription is returned it can be used to stop event handling by calling `unsubscribe()`.\n */\n onSelectionModified?(\n event: TreeSelectionModificationEventArgs\n ): Subscription | undefined;\n /**\n * Called when tree selection is replaced.\n * If Subscription is returned it can be used to stop event handling by calling `unsubscribe()`.\n */\n onSelectionReplaced?(\n event: TreeSelectionReplacementEventArgs\n ): Subscription | undefined;\n\n /**\n * Called when checkbox states for nodes are changed.\n * If Subscription is returned it can be used to stop event handling by calling `unsubscribe()`.\n */\n onCheckboxStateChanged?(\n event: TreeCheckboxStateChangeEventArgs\n ): Subscription | undefined;\n}\n\n/**\n * Data structure that describes tree node event payload.\n * @public\n */\nexport interface TreeNodeEventArgs {\n /** Id of node that is affected by event. */\n nodeId: string;\n}\n\n/**\n * Data structure that describes tree selection modification event payload.\n * @public\n */\nexport interface TreeSelectionModificationEventArgs {\n /**\n * An observable that emits tree selection changes.\n * It starts emitting values when '.subscribe()' is called.\n */\n modifications: Observable<TreeSelectionChange>;\n}\n\n/**\n * Data structure that describes tree selection change.\n * @public\n */\nexport interface TreeSelectionChange {\n /** Tree node items that where selected. */\n selectedNodeItems: TreeNodeItem[];\n /** Tree node items that where deselected. */\n deselectedNodeItems: TreeNodeItem[];\n}\n\n/**\n * Data structure that describes tree selection replacement event payload.\n * @public\n */\nexport interface TreeSelectionReplacementEventArgs {\n /**\n * An observable that emits tree selection replacements containing selected tree node items.\n * It starts emitting values when '.subscribe()' is called.\n */\n replacements: Observable<{ selectedNodeItems: TreeNodeItem[] }>;\n}\n\n/**\n * Data structure that describes tree checkbox state change event payload.\n * @public\n */\nexport interface TreeCheckboxStateChangeEventArgs {\n /**\n * An observable that emits checkbox state changes.\n * It starts emitting values when '.subscribe()' is called.\n */\n stateChanges: Observable<CheckboxStateChange[]>;\n}\n\n/**\n * Data structure that describes checkbox state change.\n * @public\n */\nexport interface CheckboxStateChange {\n /** Tree node item that was affected by checkbox state change. */\n nodeItem: TreeNodeItem;\n /** New state of the checkbox. */\n newState: CheckBoxState;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UiComponents.d.ts","sourceRoot":"","sources":["../../../src/components-react/UiComponents.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAS;IACpC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAe;IAE5C;;;OAGG;WACiB,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBzE,0DAA0D;WAC5C,SAAS;IAWvB,sDAAsD;IACtD,WAAkB,WAAW,IAAI,OAAO,CAEvC;IAED;;OAEG;IACH,WAAkB,YAAY,IAAI,YAAY,CAO7C;IAED,kDAAkD;IAClD,WAAkB,qBAAqB,IAAI,MAAM,CAEhD;IAED,gBAAgB;IAChB,WAAkB,WAAW,IAAI,MAAM,CAEtC;IAED;;OAEG;WACW,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM;IAavD,gBAAgB;WACF,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;CAM/C"}
1
+ {"version":3,"file":"UiComponents.d.ts","sourceRoot":"","sources":["../../../src/components-react/UiComponents.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKvD;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAS;IACpC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAe;IAE5C;;;OAGG;WACiB,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBzE,0DAA0D;WAC5C,SAAS;IAWvB,sDAAsD;IACtD,WAAkB,WAAW,IAAI,OAAO,CAEvC;IAED;;OAEG;IACH,WAAkB,YAAY,IAAI,YAAY,CAO7C;IAED,kDAAkD;IAClD,WAAkB,qBAAqB,IAAI,MAAM,CAEhD;IAED,gBAAgB;IAChB,WAAkB,WAAW,IAAI,MAAM,CAEtC;IAED;;OAEG;WACW,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM;IAavD,gBAAgB;WACF,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;CAM/C"}
@@ -7,8 +7,9 @@
7
7
  */
8
8
  import { enablePatches } from "immer";
9
9
  import { Logger } from "@itwin/core-bentley";
10
- import { getClassName, UiError } from "@itwin/appui-abstract";
11
10
  import { UiCore } from "@itwin/core-react";
11
+ import { getObjectClassName } from "@itwin/core-react";
12
+ import { UiError } from "@itwin/appui-abstract";
12
13
  /**
13
14
  * Manages the localization service for the components-react package.
14
15
  * @public
@@ -71,7 +72,7 @@ class UiComponents {
71
72
  }
72
73
  /** @internal */
73
74
  static loggerCategory(obj) {
74
- const className = getClassName(obj);
75
+ const className = getObjectClassName(obj);
75
76
  const category = UiComponents.packageName + (className ? `.${className}` : "");
76
77
  return category;
77
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UiComponents.js","sourceRoot":"","sources":["../../../src/components-react/UiComponents.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C;;;GAGG;AACH,MAAa,YAAY;IAIvB;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAA0B;QACvD,IAAI,YAAY,CAAC,YAAY,EAAE;YAC7B,MAAM,CAAC,OAAO,CACZ,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC,EACzC,wCAAwC,CACzC,CAAC;YACF,OAAO;SACR;QAED,aAAa,EAAE,CAAC;QAChB,YAAY,CAAC,aAAa,GAAG,YAAY,CAAC;QAC1C,MAAM,YAAY,CAAC,aAAa,CAAC,iBAAiB,CAChD,YAAY,CAAC,qBAAqB,CACnC,CAAC;QAEF,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACpD,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,0DAA0D;IACnD,MAAM,CAAC,SAAS;QACrB,IAAI,YAAY,CAAC,aAAa;YAC5B,YAAY,CAAC,aAAa,CAAC,mBAAmB,CAC5C,YAAY,CAAC,qBAAqB,CACnC,CAAC;QACJ,YAAY,CAAC,aAAa,GAAG,SAAS,CAAC;QAEvC,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC;IACpC,CAAC;IAED,sDAAsD;IAC/C,MAAM,KAAK,WAAW;QAC3B,OAAO,YAAY,CAAC,YAAY,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,MAAM,KAAK,YAAY;QAC5B,IAAI,CAAC,YAAY,CAAC,aAAa;YAC7B,MAAM,IAAI,OAAO,CACf,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,EACjC,mGAAmG,CACpG,CAAC;QACJ,OAAO,YAAY,CAAC,aAAa,CAAC;IACpC,CAAC;IAED,kDAAkD;IAC3C,MAAM,KAAK,qBAAqB;QACrC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,gBAAgB;IACT,MAAM,KAAK,WAAW;QAC3B,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,SAAS,CAAC,GAAsB;QAC5C,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YAC7B,MAAM,CAAC,QAAQ,CACb,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,EACjC,iFAAiF,CAClF,CAAC;YACF,OAAO,EAAE,CAAC;SACX;QACD,OAAO,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,EAAE;YACvD,EAAE,EAAE,YAAY,CAAC,qBAAqB;SACvC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,cAAc,CAAC,GAAQ;QACnC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,QAAQ,GACZ,YAAY,CAAC,WAAW,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,QAAQ,CAAC;IAClB,CAAC;;AAvFc,yBAAY,GAAG,KAAK,CAAC;SADzB,YAAY","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\nimport { enablePatches } from \"immer\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { Localization } from \"@itwin/core-common\";\nimport { getClassName, UiError } from \"@itwin/appui-abstract\";\nimport { UiCore } from \"@itwin/core-react\";\n\n/**\n * Manages the localization service for the components-react package.\n * @public\n */\nexport class UiComponents {\n private static _initialized = false;\n private static _localization?: Localization;\n\n /**\n * Registers the localization service namespace for UiComponents. Also initializes UiCore.\n * @param localization The internationalization service created by the host application.\n */\n public static async initialize(localization: Localization): Promise<void> {\n if (UiComponents._initialized) {\n Logger.logInfo(\n UiComponents.loggerCategory(UiComponents),\n `UiComponents.initialize already called`\n );\n return;\n }\n\n enablePatches();\n UiComponents._localization = localization;\n await UiComponents._localization.registerNamespace(\n UiComponents.localizationNamespace\n );\n\n await UiCore.initialize(UiComponents._localization);\n UiComponents._initialized = true;\n }\n\n /** Unregisters the UiComponents localization namespace */\n public static terminate() {\n if (UiComponents._localization)\n UiComponents._localization.unregisterNamespace(\n UiComponents.localizationNamespace\n );\n UiComponents._localization = undefined;\n\n UiCore.terminate();\n UiComponents._initialized = false;\n }\n\n /** Determines if UiComponents has been initialized */\n public static get initialized(): boolean {\n return UiComponents._initialized;\n }\n\n /** The internationalization service created by the host application.\n * @internal\n */\n public static get localization(): Localization {\n if (!UiComponents._localization)\n throw new UiError(\n UiComponents.loggerCategory(this),\n \"_localization: UiComponents.initialize has not been called. Unable to return Localization object.\"\n );\n return UiComponents._localization;\n }\n\n /** The internationalization service namespace. */\n public static get localizationNamespace(): string {\n return \"UiComponents\";\n }\n\n /** @internal */\n public static get packageName(): string {\n return \"components-react\";\n }\n\n /** Calls localization.getLocalizedStringWithNamespace with the \"UiComponents\" namespace. Do NOT include the namespace in the key.\n * @internal\n */\n public static translate(key: string | string[]): string {\n if (!UiComponents.initialized) {\n Logger.logError(\n UiComponents.loggerCategory(this),\n `translate: UiComponents.initialize has not been called. Returning blank string.`\n );\n return \"\";\n }\n return UiComponents.localization.getLocalizedString(key, {\n ns: UiComponents.localizationNamespace,\n });\n }\n\n /** @internal */\n public static loggerCategory(obj: any): string {\n const className = getClassName(obj);\n const category =\n UiComponents.packageName + (className ? `.${className}` : \"\");\n return category;\n }\n}\n"]}
1
+ {"version":3,"file":"UiComponents.js","sourceRoot":"","sources":["../../../src/components-react/UiComponents.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD;;;GAGG;AACH,MAAa,YAAY;IAIvB;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAA0B;QACvD,IAAI,YAAY,CAAC,YAAY,EAAE;YAC7B,MAAM,CAAC,OAAO,CACZ,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC,EACzC,wCAAwC,CACzC,CAAC;YACF,OAAO;SACR;QAED,aAAa,EAAE,CAAC;QAChB,YAAY,CAAC,aAAa,GAAG,YAAY,CAAC;QAC1C,MAAM,YAAY,CAAC,aAAa,CAAC,iBAAiB,CAChD,YAAY,CAAC,qBAAqB,CACnC,CAAC;QAEF,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACpD,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,0DAA0D;IACnD,MAAM,CAAC,SAAS;QACrB,IAAI,YAAY,CAAC,aAAa;YAC5B,YAAY,CAAC,aAAa,CAAC,mBAAmB,CAC5C,YAAY,CAAC,qBAAqB,CACnC,CAAC;QACJ,YAAY,CAAC,aAAa,GAAG,SAAS,CAAC;QAEvC,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC;IACpC,CAAC;IAED,sDAAsD;IAC/C,MAAM,KAAK,WAAW;QAC3B,OAAO,YAAY,CAAC,YAAY,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,MAAM,KAAK,YAAY;QAC5B,IAAI,CAAC,YAAY,CAAC,aAAa;YAC7B,MAAM,IAAI,OAAO,CACf,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,EACjC,mGAAmG,CACpG,CAAC;QACJ,OAAO,YAAY,CAAC,aAAa,CAAC;IACpC,CAAC;IAED,kDAAkD;IAC3C,MAAM,KAAK,qBAAqB;QACrC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,gBAAgB;IACT,MAAM,KAAK,WAAW;QAC3B,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,SAAS,CAAC,GAAsB;QAC5C,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YAC7B,MAAM,CAAC,QAAQ,CACb,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,EACjC,iFAAiF,CAClF,CAAC;YACF,OAAO,EAAE,CAAC;SACX;QACD,OAAO,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,EAAE;YACvD,EAAE,EAAE,YAAY,CAAC,qBAAqB;SACvC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,cAAc,CAAC,GAAQ;QACnC,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,QAAQ,GACZ,YAAY,CAAC,WAAW,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,QAAQ,CAAC;IAClB,CAAC;;AAvFc,yBAAY,GAAG,KAAK,CAAC;SADzB,YAAY","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\nimport { enablePatches } from \"immer\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { Localization } from \"@itwin/core-common\";\nimport { UiCore } from \"@itwin/core-react\";\nimport { getObjectClassName } from \"@itwin/core-react\";\nimport { UiError } from \"@itwin/appui-abstract\";\n\n/**\n * Manages the localization service for the components-react package.\n * @public\n */\nexport class UiComponents {\n private static _initialized = false;\n private static _localization?: Localization;\n\n /**\n * Registers the localization service namespace for UiComponents. Also initializes UiCore.\n * @param localization The internationalization service created by the host application.\n */\n public static async initialize(localization: Localization): Promise<void> {\n if (UiComponents._initialized) {\n Logger.logInfo(\n UiComponents.loggerCategory(UiComponents),\n `UiComponents.initialize already called`\n );\n return;\n }\n\n enablePatches();\n UiComponents._localization = localization;\n await UiComponents._localization.registerNamespace(\n UiComponents.localizationNamespace\n );\n\n await UiCore.initialize(UiComponents._localization);\n UiComponents._initialized = true;\n }\n\n /** Unregisters the UiComponents localization namespace */\n public static terminate() {\n if (UiComponents._localization)\n UiComponents._localization.unregisterNamespace(\n UiComponents.localizationNamespace\n );\n UiComponents._localization = undefined;\n\n UiCore.terminate();\n UiComponents._initialized = false;\n }\n\n /** Determines if UiComponents has been initialized */\n public static get initialized(): boolean {\n return UiComponents._initialized;\n }\n\n /** The internationalization service created by the host application.\n * @internal\n */\n public static get localization(): Localization {\n if (!UiComponents._localization)\n throw new UiError(\n UiComponents.loggerCategory(this),\n \"_localization: UiComponents.initialize has not been called. Unable to return Localization object.\"\n );\n return UiComponents._localization;\n }\n\n /** The internationalization service namespace. */\n public static get localizationNamespace(): string {\n return \"UiComponents\";\n }\n\n /** @internal */\n public static get packageName(): string {\n return \"components-react\";\n }\n\n /** Calls localization.getLocalizedStringWithNamespace with the \"UiComponents\" namespace. Do NOT include the namespace in the key.\n * @internal\n */\n public static translate(key: string | string[]): string {\n if (!UiComponents.initialized) {\n Logger.logError(\n UiComponents.loggerCategory(this),\n `translate: UiComponents.initialize has not been called. Returning blank string.`\n );\n return \"\";\n }\n return UiComponents.localization.getLocalizedString(key, {\n ns: UiComponents.localizationNamespace,\n });\n }\n\n /** @internal */\n public static loggerCategory(obj: any): string {\n const className = getObjectClassName(obj);\n const category =\n UiComponents.packageName + (className ? `.${className}` : \"\");\n return category;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ImageRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/ImageRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EACV,KAAK,EAIN,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAkC;IAE1D,OAAO,CAAC,WAAW;IAenB,8BAA8B;IAC9B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,mBAAmB;IAW3B,iCAAiC;IACjC,OAAO,CAAC,SAAS;IAgBjB,+BAA+B;IAC/B,OAAO,CAAC,SAAS;IAIjB,sCAAsC;IACtC,OAAO,CAAC,cAAc;IAItB,sDAAsD;IACtD,OAAO,CAAC,0BAA0B;IAIlC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAKzB,yDAAyD;IAClD,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS;CA0BnD"}
1
+ {"version":3,"file":"ImageRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/ImageRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EACV,KAAK,EAIN,MAAM,gBAAgB,CAAC;AAGxB;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAkC;IAE1D,OAAO,CAAC,WAAW;IAenB,8BAA8B;IAC9B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,mBAAmB;IAW3B,iCAAiC;IACjC,OAAO,CAAC,SAAS;IAejB,+BAA+B;IAC/B,OAAO,CAAC,SAAS;IAIjB,sCAAsC;IACtC,OAAO,CAAC,cAAc;IAItB,sDAAsD;IACtD,OAAO,CAAC,0BAA0B;IAIlC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAKzB,yDAAyD;IAClD,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS;CA0BnD"}
@@ -6,9 +6,9 @@
6
6
  * @module Common
7
7
  */
8
8
  import * as React from "react";
9
- import { IconSpecUtilities, UiError } from "@itwin/appui-abstract";
10
9
  import { Icon, WebFontIcon } from "@itwin/core-react";
11
10
  import { UiComponents } from "../UiComponents";
11
+ import { UiError } from "@itwin/appui-abstract";
12
12
  /** A class that renders images from data provided by an image loader
13
13
  * @internal
14
14
  */
@@ -59,9 +59,8 @@ class ImageRenderer {
59
59
  svgAsDataUri = this.convertSvgToDataUri(svg.trim());
60
60
  ImageRenderer._svgCache.set(svg, svgAsDataUri);
61
61
  }
62
- const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgAsDataUri);
63
62
  return (React.createElement("div", null,
64
- React.createElement(Icon, { iconSpec: iconSpec })));
63
+ React.createElement(Icon, { iconSpec: svgAsDataUri })));
65
64
  }
66
65
  /** Render image from an url */
67
66
  renderUrl(url) {
@@ -1 +1 @@
1
- {"version":3,"file":"ImageRenderer.js","sourceRoot":"","sources":["../../../../src/components-react/common/ImageRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\nimport * as React from \"react\";\nimport { IconSpecUtilities, UiError } from \"@itwin/appui-abstract\";\nimport type { WebFontIconProps } from \"@itwin/core-react\";\nimport { Icon, WebFontIcon } from \"@itwin/core-react\";\nimport { UiComponents } from \"../UiComponents\";\nimport type {\n Image,\n ImageFileFormat,\n LoadedBinaryImage,\n LoadedImage,\n} from \"./IImageLoader\";\n\n/** A class that renders images from data provided by an image loader\n * @internal\n */\nexport class ImageRenderer {\n private static _svgCache: Map<string, string> = new Map();\n\n private hexToBase64(hexstring: string) {\n const match = hexstring.match(/\\w{2}/g);\n // istanbul ignore next\n if (!match) return \"\";\n\n // eslint-disable-next-line deprecation/deprecation\n return btoa(\n match\n .map((a) => {\n return String.fromCharCode(parseInt(a, 16));\n })\n .join(\"\")\n );\n }\n\n /** Render raw binary image */\n private renderBinary(data: string, format: ImageFileFormat) {\n // Convert binary to base64\n const dataAsBase64 = this.hexToBase64(data);\n return <img src={`data:image/${format};base64,${dataAsBase64}`} alt=\"\" />;\n }\n\n private isSvg(input: string): boolean {\n const parser = new DOMParser();\n const doc = parser.parseFromString(input, \"application/xml\");\n\n const errorNode = doc.querySelector(\"parsererror\");\n // istanbul ignore if\n if (errorNode) {\n return false;\n }\n\n const rootNode = doc.documentElement.nodeName.toLowerCase();\n return \"svg\" === rootNode;\n }\n\n private convertSvgToDataUri(svg: string) {\n // istanbul ignore if\n if (!this.isSvg(svg)) {\n return \"\";\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const svgAsBase64 = btoa(svg);\n return `data:image/svg+xml;base64,${svgAsBase64}`;\n }\n\n /** Render svg string into JSX */\n private renderSvg(svg: string) {\n let svgAsDataUri = ImageRenderer._svgCache.get(svg);\n // istanbul ignore else\n if (undefined === svgAsDataUri) {\n svgAsDataUri = this.convertSvgToDataUri(svg.trim());\n ImageRenderer._svgCache.set(svg, svgAsDataUri);\n }\n\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgAsDataUri);\n return (\n <div>\n <Icon iconSpec={iconSpec} />\n </div>\n );\n }\n\n /** Render image from an url */\n private renderUrl(url: string) {\n return <img src={url} alt=\"\" />;\n }\n\n /** Render image as core-react icon */\n private renderCoreIcon(iconName: string) {\n return <WebFontIcon iconName={iconName} />;\n }\n\n /** Replaces the escaped instances of \"\\:\" with \":\" */\n private normalizeEscapedIconString(escapedIconString: string) {\n return escapedIconString.replace(/\\\\:/g, \":\");\n }\n\n /**\n * Extract class and name from icon name, if the name follows format \"{className}:{fontName}\".\n * className and fontName can be escaped using \\ if : is needed.\n */\n private extractIconClassAndName(\n iconName: string\n ): Pick<WebFontIconProps, \"iconClassName\" | \"iconName\"> {\n const matches = iconName.match(/(\\\\.|[^:])+/g);\n if (!matches || matches.length !== 2)\n return {\n iconClassName: undefined,\n iconName,\n };\n\n return {\n iconClassName: this.normalizeEscapedIconString(matches[0]),\n iconName: this.normalizeEscapedIconString(matches[1]),\n };\n }\n\n /**\n * Render image as provided webfont icon.\n * Defaults to core-react icon if iconName does not contain className.\n */\n private renderWebfontIcon(iconName: string) {\n const iconInfo = this.extractIconClassAndName(iconName);\n return <WebFontIcon {...iconInfo} />;\n }\n\n /** Render image from data provided by an image loader */\n public render(loadedImage: Image): React.ReactNode {\n switch (loadedImage.sourceType) {\n case \"binary\":\n const image = loadedImage as LoadedBinaryImage;\n return this.renderBinary(image.value, image.fileFormat);\n\n case \"url\":\n return this.renderUrl((loadedImage as LoadedImage).value);\n\n case \"svg\":\n return this.renderSvg((loadedImage as LoadedImage).value);\n\n case \"core-icon\":\n return this.renderCoreIcon((loadedImage as LoadedImage).value);\n\n case \"webfont-icon\":\n return this.renderWebfontIcon((loadedImage as LoadedImage).value);\n\n default:\n const unhandledSourceType: never = loadedImage.sourceType; // Compile time check that all cases are handled\n throw new UiError(\n UiComponents.loggerCategory(this),\n `Can't handle sourceType: \"${unhandledSourceType}\"`\n );\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ImageRenderer.js","sourceRoot":"","sources":["../../../../src/components-react/common/ImageRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\nimport * as React from \"react\";\nimport type { WebFontIconProps } from \"@itwin/core-react\";\nimport { Icon, WebFontIcon } from \"@itwin/core-react\";\nimport { UiComponents } from \"../UiComponents\";\nimport type {\n Image,\n ImageFileFormat,\n LoadedBinaryImage,\n LoadedImage,\n} from \"./IImageLoader\";\nimport { UiError } from \"@itwin/appui-abstract\";\n\n/** A class that renders images from data provided by an image loader\n * @internal\n */\nexport class ImageRenderer {\n private static _svgCache: Map<string, string> = new Map();\n\n private hexToBase64(hexstring: string) {\n const match = hexstring.match(/\\w{2}/g);\n // istanbul ignore next\n if (!match) return \"\";\n\n // eslint-disable-next-line deprecation/deprecation\n return btoa(\n match\n .map((a) => {\n return String.fromCharCode(parseInt(a, 16));\n })\n .join(\"\")\n );\n }\n\n /** Render raw binary image */\n private renderBinary(data: string, format: ImageFileFormat) {\n // Convert binary to base64\n const dataAsBase64 = this.hexToBase64(data);\n return <img src={`data:image/${format};base64,${dataAsBase64}`} alt=\"\" />;\n }\n\n private isSvg(input: string): boolean {\n const parser = new DOMParser();\n const doc = parser.parseFromString(input, \"application/xml\");\n\n const errorNode = doc.querySelector(\"parsererror\");\n // istanbul ignore if\n if (errorNode) {\n return false;\n }\n\n const rootNode = doc.documentElement.nodeName.toLowerCase();\n return \"svg\" === rootNode;\n }\n\n private convertSvgToDataUri(svg: string) {\n // istanbul ignore if\n if (!this.isSvg(svg)) {\n return \"\";\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const svgAsBase64 = btoa(svg);\n return `data:image/svg+xml;base64,${svgAsBase64}`;\n }\n\n /** Render svg string into JSX */\n private renderSvg(svg: string) {\n let svgAsDataUri = ImageRenderer._svgCache.get(svg);\n // istanbul ignore else\n if (undefined === svgAsDataUri) {\n svgAsDataUri = this.convertSvgToDataUri(svg.trim());\n ImageRenderer._svgCache.set(svg, svgAsDataUri);\n }\n\n return (\n <div>\n <Icon iconSpec={svgAsDataUri} />\n </div>\n );\n }\n\n /** Render image from an url */\n private renderUrl(url: string) {\n return <img src={url} alt=\"\" />;\n }\n\n /** Render image as core-react icon */\n private renderCoreIcon(iconName: string) {\n return <WebFontIcon iconName={iconName} />;\n }\n\n /** Replaces the escaped instances of \"\\:\" with \":\" */\n private normalizeEscapedIconString(escapedIconString: string) {\n return escapedIconString.replace(/\\\\:/g, \":\");\n }\n\n /**\n * Extract class and name from icon name, if the name follows format \"{className}:{fontName}\".\n * className and fontName can be escaped using \\ if : is needed.\n */\n private extractIconClassAndName(\n iconName: string\n ): Pick<WebFontIconProps, \"iconClassName\" | \"iconName\"> {\n const matches = iconName.match(/(\\\\.|[^:])+/g);\n if (!matches || matches.length !== 2)\n return {\n iconClassName: undefined,\n iconName,\n };\n\n return {\n iconClassName: this.normalizeEscapedIconString(matches[0]),\n iconName: this.normalizeEscapedIconString(matches[1]),\n };\n }\n\n /**\n * Render image as provided webfont icon.\n * Defaults to core-react icon if iconName does not contain className.\n */\n private renderWebfontIcon(iconName: string) {\n const iconInfo = this.extractIconClassAndName(iconName);\n return <WebFontIcon {...iconInfo} />;\n }\n\n /** Render image from data provided by an image loader */\n public render(loadedImage: Image): React.ReactNode {\n switch (loadedImage.sourceType) {\n case \"binary\":\n const image = loadedImage as LoadedBinaryImage;\n return this.renderBinary(image.value, image.fileFormat);\n\n case \"url\":\n return this.renderUrl((loadedImage as LoadedImage).value);\n\n case \"svg\":\n return this.renderSvg((loadedImage as LoadedImage).value);\n\n case \"core-icon\":\n return this.renderCoreIcon((loadedImage as LoadedImage).value);\n\n case \"webfont-icon\":\n return this.renderWebfontIcon((loadedImage as LoadedImage).value);\n\n default:\n const unhandledSourceType: never = loadedImage.sourceType; // Compile time check that all cases are handled\n throw new UiError(\n UiComponents.loggerCategory(this),\n `Can't handle sourceType: \"${unhandledSourceType}\"`\n );\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UseAsyncValue.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/UseAsyncValue.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAMH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAiCzE"}
1
+ {"version":3,"file":"UseAsyncValue.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/UseAsyncValue.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAMH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAqBzE"}
@@ -6,39 +6,29 @@
6
6
  * @module Common
7
7
  */
8
8
  import * as React from "react";
9
- import { from, Subject, takeUntil } from "rxjs";
10
- import { isPromiseLike, useEffectSkipFirst } from "@itwin/core-react";
9
+ import { from } from "rxjs";
10
+ import { isPromiseLike } from "@itwin/core-react";
11
11
  /**
12
12
  * Custom hook for working with possibly async values.
13
13
  * @public
14
14
  */
15
15
  export function useAsyncValue(value) {
16
- const cancelled = React.useMemo(() => new Subject(), []);
17
- // cancel any pending promises on unmount
18
- React.useEffect(() => () => cancelled.next(), [cancelled]);
19
16
  const [result, setResult] = React.useState(() => {
20
17
  if (isPromiseLike(value)) {
21
- from(value)
22
- .pipe(takeUntil(cancelled))
23
- .subscribe({ next: (resolvedValue) => setResult(resolvedValue) });
24
18
  return undefined;
25
19
  }
26
20
  return value;
27
21
  });
28
- useEffectSkipFirst(() => {
29
- const updateValue = (newValue) => {
30
- cancelled.next();
31
- setResult(newValue);
32
- };
22
+ React.useEffect(() => {
33
23
  if (isPromiseLike(value)) {
34
- const subscription = from(value)
35
- .pipe(takeUntil(cancelled))
36
- .subscribe({ next: (resolvedValue) => updateValue(resolvedValue) });
24
+ const subscription = from(value).subscribe({
25
+ next: (resolvedValue) => setResult(resolvedValue),
26
+ });
37
27
  return () => subscription.unsubscribe();
38
28
  }
39
- updateValue(value);
40
- return undefined;
41
- }, [value, cancelled]);
29
+ setResult(value);
30
+ return;
31
+ }, [value]);
42
32
  return result;
43
33
  }
44
34
  //# sourceMappingURL=UseAsyncValue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UseAsyncValue.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseAsyncValue.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAI,KAAyB;IACxD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,EAAQ,EAAE,EAAE,CAAC,CAAC;IAC/D,yCAAyC;IACzC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAE3D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC9C,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC;iBACR,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;iBAC1B,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACpE,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,kBAAkB,CAAC,GAAG,EAAE;QACtB,MAAM,WAAW,GAAG,CAAC,QAAW,EAAE,EAAE;YAClC,SAAS,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC,CAAC;QAEF,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;iBAC7B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;iBAC1B,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACtE,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACzC;QAED,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAEvB,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\nimport * as React from \"react\";\nimport { from, Subject, takeUntil } from \"rxjs\";\nimport { isPromiseLike, useEffectSkipFirst } from \"@itwin/core-react\";\n\n/**\n * Custom hook for working with possibly async values.\n * @public\n */\nexport function useAsyncValue<T>(value: T | PromiseLike<T>): T | undefined {\n const cancelled = React.useMemo(() => new Subject<void>(), []);\n // cancel any pending promises on unmount\n React.useEffect(() => () => cancelled.next(), [cancelled]);\n\n const [result, setResult] = React.useState(() => {\n if (isPromiseLike(value)) {\n from(value)\n .pipe(takeUntil(cancelled))\n .subscribe({ next: (resolvedValue) => setResult(resolvedValue) });\n return undefined;\n }\n return value;\n });\n\n useEffectSkipFirst(() => {\n const updateValue = (newValue: T) => {\n cancelled.next();\n setResult(newValue);\n };\n\n if (isPromiseLike(value)) {\n const subscription = from(value)\n .pipe(takeUntil(cancelled))\n .subscribe({ next: (resolvedValue) => updateValue(resolvedValue) });\n return () => subscription.unsubscribe();\n }\n\n updateValue(value);\n return undefined;\n }, [value, cancelled]);\n\n return result;\n}\n"]}
1
+ {"version":3,"file":"UseAsyncValue.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseAsyncValue.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAI,KAAyB;IACxD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC9C,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;YACxB,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;gBACzC,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC;aAClD,CAAC,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACzC;QAED,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO;IACT,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\nimport * as React from \"react\";\nimport { from } from \"rxjs\";\nimport { isPromiseLike } from \"@itwin/core-react\";\n\n/**\n * Custom hook for working with possibly async values.\n * @public\n */\nexport function useAsyncValue<T>(value: T | PromiseLike<T>): T | undefined {\n const [result, setResult] = React.useState(() => {\n if (isPromiseLike(value)) {\n return undefined;\n }\n return value;\n });\n\n React.useEffect(() => {\n if (isPromiseLike(value)) {\n const subscription = from(value).subscribe({\n next: (resolvedValue) => setResult(resolvedValue),\n });\n return () => subscription.unsubscribe();\n }\n\n setResult(value);\n return;\n }, [value]);\n\n return result;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UseContextWithMandatoryProvider.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/UseContextWithMandatoryProvider.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,gBAAgB;AAChB,wBAAgB,kCAAkC,CAAC,CAAC,EAClD,WAAW,EAAE,MAAM,GAClB;IACD,KAAK,CAAC,uBAAuB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACrD,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;CAC5C,CAkBA"}
1
+ {"version":3,"file":"UseContextWithMandatoryProvider.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/UseContextWithMandatoryProvider.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,gBAAgB;AAChB,wBAAgB,kCAAkC,CAAC,CAAC,EAClD,WAAW,EAAE,MAAM,GAClB;IACD,KAAK,CAAC,uBAAuB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACrD,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;CAC5C,CAkBA"}
@@ -2,7 +2,8 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- import { getClassName, UiError } from "@itwin/appui-abstract";
5
+ import { UiError } from "@itwin/appui-abstract";
6
+ import { getObjectClassName } from "@itwin/core-react";
6
7
  import { UiComponents } from "../UiComponents";
7
8
  import React from "react";
8
9
  /** @internal */
@@ -12,7 +13,7 @@ export function createContextWithMandatoryProvider(contextName) {
12
13
  const value = React.useContext(context);
13
14
  /* istanbul ignore if */
14
15
  if (value === undefined) {
15
- throw new UiError(UiComponents.loggerCategory(ConsumingComponent), `'${getClassName(ConsumingComponent)}' expects to be wrapped by a '${contextName}' provider.`);
16
+ throw new UiError(UiComponents.loggerCategory(ConsumingComponent), `'${getObjectClassName(ConsumingComponent)}' expects to be wrapped by a '${contextName}' provider.`);
16
17
  }
17
18
  return value;
18
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UseContextWithMandatoryProvider.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseContextWithMandatoryProvider.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,gBAAgB;AAChB,MAAM,UAAU,kCAAkC,CAChD,WAAmB;IAMnB,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAI,SAAqB,CAAC,CAAC;IAC9D,SAAS,6BAA6B,CACpC,kBAA0C;QAE1C,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,wBAAwB;QACxB,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,MAAM,IAAI,OAAO,CACf,YAAY,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAC/C,IAAI,YAAY,CACd,kBAAkB,CACnB,iCAAiC,WAAW,aAAa,CAC3D,CAAC;SACH;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;AAC7E,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { getClassName, UiError } from \"@itwin/appui-abstract\";\nimport { UiComponents } from \"../UiComponents\";\nimport React from \"react\";\n\n/** @internal */\nexport function createContextWithMandatoryProvider<T>(\n contextName: string\n): [\n React.ProviderExoticComponent<React.ProviderProps<T>>,\n React.ExoticComponent<React.ConsumerProps<T>>,\n <P>(component: React.ComponentType<P>) => T\n] {\n const context = React.createContext<T>(undefined as any as T);\n function useContextWithoutDefaultValue<P>(\n ConsumingComponent: React.ComponentType<P>\n ) {\n const value = React.useContext(context);\n /* istanbul ignore if */\n if (value === undefined) {\n throw new UiError(\n UiComponents.loggerCategory(ConsumingComponent),\n `'${getClassName(\n ConsumingComponent\n )}' expects to be wrapped by a '${contextName}' provider.`\n );\n }\n return value;\n }\n return [context.Provider, context.Consumer, useContextWithoutDefaultValue];\n}\n"]}
1
+ {"version":3,"file":"UseContextWithMandatoryProvider.js","sourceRoot":"","sources":["../../../../src/components-react/common/UseContextWithMandatoryProvider.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,gBAAgB;AAChB,MAAM,UAAU,kCAAkC,CAChD,WAAmB;IAMnB,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAI,SAAqB,CAAC,CAAC;IAC9D,SAAS,6BAA6B,CACpC,kBAA0C;QAE1C,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,wBAAwB;QACxB,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,MAAM,IAAI,OAAO,CACf,YAAY,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAC/C,IAAI,kBAAkB,CACpB,kBAAkB,CACnB,iCAAiC,WAAW,aAAa,CAC3D,CAAC;SACH;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;AAC7E,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { UiError } from \"@itwin/appui-abstract\";\nimport { getObjectClassName } from \"@itwin/core-react\";\nimport { UiComponents } from \"../UiComponents\";\nimport React from \"react\";\n\n/** @internal */\nexport function createContextWithMandatoryProvider<T>(\n contextName: string\n): [\n React.ProviderExoticComponent<React.ProviderProps<T>>,\n React.ExoticComponent<React.ConsumerProps<T>>,\n <P>(component: React.ComponentType<P>) => T\n] {\n const context = React.createContext<T>(undefined as any as T);\n function useContextWithoutDefaultValue<P>(\n ConsumingComponent: React.ComponentType<P>\n ) {\n const value = React.useContext(context);\n /* istanbul ignore if */\n if (value === undefined) {\n throw new UiError(\n UiComponents.loggerCategory(ConsumingComponent),\n `'${getObjectClassName(\n ConsumingComponent\n )}' expects to be wrapped by a '${contextName}' provider.`\n );\n }\n return value;\n }\n return [context.Provider, context.Consumer, useContextWithoutDefaultValue];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UseDebouncedAsyncValue.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/UseDebouncedAsyncValue.ts"],"names":[],"mappings":"AAIA;;GAEG;AASH;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAC5C,iBAAiB,EAAE,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;;;EAsDxD"}
1
+ {"version":3,"file":"UseDebouncedAsyncValue.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/UseDebouncedAsyncValue.ts"],"names":[],"mappings":"AAIA;;GAEG;AASH;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAC5C,iBAAiB,EAAE,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;;;EAuDxD"}