@sapui5/sap.fe.templates 1.102.3 → 1.105.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 (145) hide show
  1. package/package.json +4 -5
  2. package/src/sap/fe/templates/.library +1 -1
  3. package/src/sap/fe/templates/AnalyticalListPage/Component.js +2 -2
  4. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +2 -2
  5. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.ts +1 -1
  6. package/src/sap/fe/templates/Feedback.js +18 -18
  7. package/src/sap/fe/templates/Feedback.ts +12 -12
  8. package/src/sap/fe/templates/ListComponent.js +2 -2
  9. package/src/sap/fe/templates/ListReport/Component.js +2 -2
  10. package/src/sap/fe/templates/ListReport/ExtensionAPI.js +13 -14
  11. package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +11 -13
  12. package/src/sap/fe/templates/ListReport/ListReport.view.xml +12 -74
  13. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +95 -392
  14. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +99 -367
  15. package/src/sap/fe/templates/ListReport/ListReportTemplating.js +1 -1
  16. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +471 -0
  17. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +347 -0
  18. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +16 -9
  19. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +17 -11
  20. package/src/sap/fe/templates/ListReport/overrides/Share.js +3 -4
  21. package/src/sap/fe/templates/ListReport/overrides/Share.ts +6 -7
  22. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +22 -31
  23. package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +33 -37
  24. package/src/sap/fe/templates/ListReport/view/fragments/Chart.fragment.xml +3 -0
  25. package/src/sap/fe/templates/ListReport/view/fragments/CollectionVisualization.fragment.xml +11 -5
  26. package/src/sap/fe/templates/{controls → ListReport/view/fragments}/MacroChart.fragment.xml +3 -2
  27. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +20 -4
  28. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +80 -48
  29. package/src/sap/fe/templates/{controls → ListReport/view/fragments}/Table.fragment.xml +6 -5
  30. package/src/sap/fe/templates/ListReport/view/fragments/VariantManagement.fragment.xml +31 -0
  31. package/src/sap/fe/templates/ObjectPage/Component.js +2 -2
  32. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +21 -20
  33. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +23 -22
  34. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +52 -146
  35. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +303 -268
  36. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +191 -242
  37. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +72 -71
  38. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +81 -88
  39. package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.js +178 -0
  40. package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.tsx +132 -0
  41. package/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +2 -2
  42. package/src/sap/fe/templates/ObjectPage/controls/StashableVBox.js +2 -2
  43. package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +3 -4
  44. package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.ts +4 -4
  45. package/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
  46. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +1 -1
  47. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.ts +1 -1
  48. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
  49. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.ts +1 -1
  50. package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.js +1 -1
  51. package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.js +1 -1
  52. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +1 -1
  53. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.ts +6 -6
  54. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +1 -1
  55. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.ts +2 -2
  56. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +1 -1
  57. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.ts +2 -2
  58. package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +1 -1
  59. package/src/sap/fe/templates/ObjectPage/overrides/Paginator.ts +1 -1
  60. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +67 -41
  61. package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +44 -56
  62. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +2 -2
  63. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.ts +4 -4
  64. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +3 -10
  65. package/src/sap/fe/templates/ObjectPage/view/fragments/Chart.fragment.xml +13 -0
  66. package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +15 -5
  67. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +1 -1
  68. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPoint.fragment.xml +1 -1
  69. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +1 -14
  70. package/src/sap/fe/templates/ObjectPage/view/fragments/Heading.fragment.xml +2 -2
  71. package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingTitle.fragment.xml +3 -0
  72. package/src/sap/fe/templates/ObjectPage/view/fragments/MacroChart.fragment.xml +22 -0
  73. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderAddress.fragment.xml +7 -2
  74. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderContact.fragment.xml +26 -0
  75. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +8 -3
  76. package/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +12 -50
  77. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +6 -2
  78. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionFormContent.fragment.xml +1 -0
  79. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionMoreFormContent.fragment.xml +1 -0
  80. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionPresentationVisualization.fragment.xml +1 -1
  81. package/src/sap/fe/templates/ObjectPage/view/fragments/Table.fragment.xml +23 -0
  82. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +26 -29
  83. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.ts +30 -33
  84. package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +4 -5
  85. package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.ts +4 -5
  86. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +141 -53
  87. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.ts +108 -54
  88. package/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +1 -1
  89. package/src/sap/fe/templates/RootContainer/overrides/EditFlow.ts +3 -3
  90. package/src/sap/fe/templates/TableScroller.js +3 -3
  91. package/src/sap/fe/templates/TableScroller.ts +2 -2
  92. package/src/sap/fe/templates/library.js +7 -3
  93. package/src/sap/fe/templates/library.ts +5 -0
  94. package/src/sap/fe/templates/messagebundle.properties +7 -22
  95. package/src/sap/fe/templates/messagebundle_ar.properties +3 -12
  96. package/src/sap/fe/templates/messagebundle_bg.properties +2 -11
  97. package/src/sap/fe/templates/messagebundle_ca.properties +2 -11
  98. package/src/sap/fe/templates/messagebundle_cs.properties +3 -12
  99. package/src/sap/fe/templates/messagebundle_cy.properties +2 -11
  100. package/src/sap/fe/templates/messagebundle_da.properties +3 -12
  101. package/src/sap/fe/templates/messagebundle_de.properties +2 -11
  102. package/src/sap/fe/templates/messagebundle_el.properties +2 -11
  103. package/src/sap/fe/templates/messagebundle_en.properties +2 -11
  104. package/src/sap/fe/templates/messagebundle_en_GB.properties +2 -11
  105. package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +2 -11
  106. package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +2 -11
  107. package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +2 -11
  108. package/src/sap/fe/templates/messagebundle_es.properties +0 -9
  109. package/src/sap/fe/templates/messagebundle_es_MX.properties +2 -11
  110. package/src/sap/fe/templates/messagebundle_et.properties +0 -9
  111. package/src/sap/fe/templates/messagebundle_fi.properties +2 -11
  112. package/src/sap/fe/templates/messagebundle_fr.properties +3 -12
  113. package/src/sap/fe/templates/messagebundle_fr_CA.properties +2 -11
  114. package/src/sap/fe/templates/messagebundle_hi.properties +2 -11
  115. package/src/sap/fe/templates/messagebundle_hr.properties +2 -11
  116. package/src/sap/fe/templates/messagebundle_hu.properties +2 -11
  117. package/src/sap/fe/templates/messagebundle_id.properties +2 -11
  118. package/src/sap/fe/templates/messagebundle_it.properties +2 -11
  119. package/src/sap/fe/templates/messagebundle_iw.properties +2 -11
  120. package/src/sap/fe/templates/messagebundle_ja.properties +2 -11
  121. package/src/sap/fe/templates/messagebundle_kk.properties +2 -11
  122. package/src/sap/fe/templates/messagebundle_ko.properties +2 -11
  123. package/src/sap/fe/templates/messagebundle_lt.properties +2 -11
  124. package/src/sap/fe/templates/messagebundle_lv.properties +2 -11
  125. package/src/sap/fe/templates/messagebundle_ms.properties +2 -11
  126. package/src/sap/fe/templates/messagebundle_nl.properties +2 -11
  127. package/src/sap/fe/templates/messagebundle_no.properties +0 -9
  128. package/src/sap/fe/templates/messagebundle_pl.properties +0 -9
  129. package/src/sap/fe/templates/messagebundle_pt.properties +3 -12
  130. package/src/sap/fe/templates/messagebundle_pt_PT.properties +2 -11
  131. package/src/sap/fe/templates/messagebundle_ro.properties +0 -9
  132. package/src/sap/fe/templates/messagebundle_ru.properties +2 -11
  133. package/src/sap/fe/templates/messagebundle_sh.properties +2 -11
  134. package/src/sap/fe/templates/messagebundle_sk.properties +2 -11
  135. package/src/sap/fe/templates/messagebundle_sl.properties +2 -11
  136. package/src/sap/fe/templates/messagebundle_sv.properties +2 -11
  137. package/src/sap/fe/templates/messagebundle_th.properties +1 -10
  138. package/src/sap/fe/templates/messagebundle_tr.properties +2 -11
  139. package/src/sap/fe/templates/messagebundle_uk.properties +2 -11
  140. package/src/sap/fe/templates/messagebundle_vi.properties +0 -9
  141. package/src/sap/fe/templates/messagebundle_zh_CN.properties +0 -9
  142. package/src/sap/fe/templates/messagebundle_zh_TW.properties +2 -11
  143. package/src/sap/fe/templates/ListReport/view/fragments/MultipleModeOld.fragment.xml +0 -50
  144. package/src/sap/fe/templates/ObjectPage/view/fragments/SwitchDraftAndActiveObjectPopOver.fragment.xml +0 -27
  145. package/src/sap/fe/templates/controls/Chart.fragment.xml +0 -25
@@ -42,4 +42,4 @@ sap.ui.define(["sap/fe/core/helpers/StableIdHelper"], function (StableIdHelper)
42
42
  _exports.getDefaultPath = getDefaultPath;
43
43
  return _exports;
44
44
  }, false);
45
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxpc3RSZXBvcnRUZW1wbGF0aW5nLnRzIl0sIm5hbWVzIjpbImdldFZhcmlhbnRCYWNrUmVmZXJlbmNlIiwib1ZpZXdEYXRhIiwib0NvbnZlcnRlckNvbnRleHQiLCJ2YXJpYW50TWFuYWdlbWVudCIsImdlbmVyYXRlIiwiZmlsdGVyQmFySWQiLCJ1bmRlZmluZWQiLCJnZXREZWZhdWx0UGF0aCIsImFWaWV3cyIsImkiLCJsZW5ndGgiLCJkZWZhdWx0UGF0aCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVPLE1BQU1BLHVCQUF1QixHQUFHLFVBQVVDLFNBQVYsRUFBMEJDLGlCQUExQixFQUFrRDtBQUN4RixRQUFJRCxTQUFTLElBQUlBLFNBQVMsQ0FBQ0UsaUJBQVYsS0FBZ0MsTUFBakQsRUFBeUQ7QUFDeEQsYUFBTywyQkFBUDtBQUNBOztBQUNELFFBQUlGLFNBQVMsSUFBSUEsU0FBUyxDQUFDRSxpQkFBVixLQUFnQyxTQUFqRCxFQUE0RDtBQUMzRCxhQUFPQyxRQUFRLENBQUMsQ0FBQ0YsaUJBQWlCLENBQUNHLFdBQW5CLEVBQWdDLG1CQUFoQyxDQUFELENBQWY7QUFDQTs7QUFDRCxXQUFPQyxTQUFQO0FBQ0EsR0FSTTs7OztBQVVBLE1BQU1DLGNBQWMsR0FBRyxVQUFVQyxNQUFWLEVBQXVCO0FBQ3BELFNBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsTUFBTSxDQUFDRSxNQUEzQixFQUFtQ0QsQ0FBQyxFQUFwQyxFQUF3QztBQUN2QyxVQUFJRCxNQUFNLENBQUNDLENBQUQsQ0FBTixDQUFVRSxXQUFkLEVBQTJCO0FBQzFCLGVBQU9ILE1BQU0sQ0FBQ0MsQ0FBRCxDQUFOLENBQVVFLFdBQWpCO0FBQ0E7QUFDRDtBQUNELEdBTk0iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRlbXBsYXRlIEhlbHBlcnMgZm9yIHRoZSBMaXN0IFJlcG9ydFxuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuXG4vKipcbiAqIE1ldGhvZCByZXR1cm5zIGFuIFZhcmlhbnRCYWNrUmVmZXJlbmNlIGV4cHJlc3Npb24gYmFzZWQgb24gdmFyaWFudE1hbmFnZW1lbnQgYW5kIG9Db252ZXJ0ZXJDb250ZXh0IHZhbHVlLlxuICpcbiAqIEBmdW5jdGlvblxuICogQG5hbWUgZ2V0VmFyaWFudEJhY2tSZWZlcmVuY2VcbiAqIEBwYXJhbSB7b2JqZWN0fSBvVmlld0RhdGEgT2JqZWN0IENvbnRhaW5pbmcgVmlldyBEYXRhXG4gKiBAcGFyYW0ge29iamVjdH0gb0NvbnZlcnRlckNvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgY29udmVydGVkIGNvbnRleHRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldFZhcmlhbnRCYWNrUmVmZXJlbmNlID0gZnVuY3Rpb24gKG9WaWV3RGF0YTogYW55LCBvQ29udmVydGVyQ29udGV4dDogYW55KSB7XG5cdGlmIChvVmlld0RhdGEgJiYgb1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIlBhZ2VcIikge1xuXHRcdHJldHVybiBcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIjtcblx0fVxuXHRpZiAob1ZpZXdEYXRhICYmIG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCA9PT0gXCJDb250cm9sXCIpIHtcblx0XHRyZXR1cm4gZ2VuZXJhdGUoW29Db252ZXJ0ZXJDb250ZXh0LmZpbHRlckJhcklkLCBcIlZhcmlhbnRNYW5hZ2VtZW50XCJdKTtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRQYXRoID0gZnVuY3Rpb24gKGFWaWV3czogYW55KSB7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYVZpZXdzLmxlbmd0aDsgaSsrKSB7XG5cdFx0aWYgKGFWaWV3c1tpXS5kZWZhdWx0UGF0aCkge1xuXHRcdFx0cmV0dXJuIGFWaWV3c1tpXS5kZWZhdWx0UGF0aDtcblx0XHR9XG5cdH1cbn07XG4iXX0=
45
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRWYXJpYW50QmFja1JlZmVyZW5jZSIsIm9WaWV3RGF0YSIsIm9Db252ZXJ0ZXJDb250ZXh0IiwidmFyaWFudE1hbmFnZW1lbnQiLCJnZW5lcmF0ZSIsImZpbHRlckJhcklkIiwidW5kZWZpbmVkIiwiZ2V0RGVmYXVsdFBhdGgiLCJhVmlld3MiLCJpIiwibGVuZ3RoIiwiZGVmYXVsdFBhdGgiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkxpc3RSZXBvcnRUZW1wbGF0aW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRlbXBsYXRlIEhlbHBlcnMgZm9yIHRoZSBMaXN0IFJlcG9ydFxuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuXG4vKipcbiAqIE1ldGhvZCByZXR1cm5zIGFuIFZhcmlhbnRCYWNrUmVmZXJlbmNlIGV4cHJlc3Npb24gYmFzZWQgb24gdmFyaWFudE1hbmFnZW1lbnQgYW5kIG9Db252ZXJ0ZXJDb250ZXh0IHZhbHVlLlxuICpcbiAqIEBmdW5jdGlvblxuICogQG5hbWUgZ2V0VmFyaWFudEJhY2tSZWZlcmVuY2VcbiAqIEBwYXJhbSB7b2JqZWN0fSBvVmlld0RhdGEgT2JqZWN0IENvbnRhaW5pbmcgVmlldyBEYXRhXG4gKiBAcGFyYW0ge29iamVjdH0gb0NvbnZlcnRlckNvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgY29udmVydGVkIGNvbnRleHRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldFZhcmlhbnRCYWNrUmVmZXJlbmNlID0gZnVuY3Rpb24gKG9WaWV3RGF0YTogYW55LCBvQ29udmVydGVyQ29udGV4dDogYW55KSB7XG5cdGlmIChvVmlld0RhdGEgJiYgb1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIlBhZ2VcIikge1xuXHRcdHJldHVybiBcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIjtcblx0fVxuXHRpZiAob1ZpZXdEYXRhICYmIG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCA9PT0gXCJDb250cm9sXCIpIHtcblx0XHRyZXR1cm4gZ2VuZXJhdGUoW29Db252ZXJ0ZXJDb250ZXh0LmZpbHRlckJhcklkLCBcIlZhcmlhbnRNYW5hZ2VtZW50XCJdKTtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRQYXRoID0gZnVuY3Rpb24gKGFWaWV3czogYW55KSB7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYVZpZXdzLmxlbmd0aDsgaSsrKSB7XG5cdFx0aWYgKGFWaWV3c1tpXS5kZWZhdWx0UGF0aCkge1xuXHRcdFx0cmV0dXJuIGFWaWV3c1tpXS5kZWZhdWx0UGF0aDtcblx0XHR9XG5cdH1cbn07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7RUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFFTyxJQUFNQSx1QkFBdUIsR0FBRyxVQUFVQyxTQUFWLEVBQTBCQyxpQkFBMUIsRUFBa0Q7SUFDeEYsSUFBSUQsU0FBUyxJQUFJQSxTQUFTLENBQUNFLGlCQUFWLEtBQWdDLE1BQWpELEVBQXlEO01BQ3hELE9BQU8sMkJBQVA7SUFDQTs7SUFDRCxJQUFJRixTQUFTLElBQUlBLFNBQVMsQ0FBQ0UsaUJBQVYsS0FBZ0MsU0FBakQsRUFBNEQ7TUFDM0QsT0FBT0MsUUFBUSxDQUFDLENBQUNGLGlCQUFpQixDQUFDRyxXQUFuQixFQUFnQyxtQkFBaEMsQ0FBRCxDQUFmO0lBQ0E7O0lBQ0QsT0FBT0MsU0FBUDtFQUNBLENBUk07Ozs7RUFVQSxJQUFNQyxjQUFjLEdBQUcsVUFBVUMsTUFBVixFQUF1QjtJQUNwRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELE1BQU0sQ0FBQ0UsTUFBM0IsRUFBbUNELENBQUMsRUFBcEMsRUFBd0M7TUFDdkMsSUFBSUQsTUFBTSxDQUFDQyxDQUFELENBQU4sQ0FBVUUsV0FBZCxFQUEyQjtRQUMxQixPQUFPSCxNQUFNLENBQUNDLENBQUQsQ0FBTixDQUFVRSxXQUFqQjtNQUNBO0lBQ0Q7RUFDRCxDQU5NIn0=
@@ -0,0 +1,471 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/MessageStrip", "sap/fe/macros/DelegateUtil", "sap/m/IconTabFilter", "sap/ui/core/Control", "sap/ui/core/Core", "sap/ui/fl/write/api/ControlPersonalizationWriteAPI", "sap/ui/model/json/JSONModel"], function (Log, CommonUtils, ClassSupport, MessageStrip, DelegateUtil, IconTabFilter, Control, Core, ControlPersonalizationWriteAPI, JSONModel) {
6
+ "use strict";
7
+
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;
9
+
10
+ var property = ClassSupport.property;
11
+ var event = ClassSupport.event;
12
+ var defineUI5Class = ClassSupport.defineUI5Class;
13
+ var association = ClassSupport.association;
14
+ var aggregation = ClassSupport.aggregation;
15
+
16
+ function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }
17
+
18
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
19
+
20
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
21
+
22
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
23
+
24
+ function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
25
+
26
+ function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); }
27
+
28
+ var BindingAction;
29
+
30
+ (function (BindingAction) {
31
+ BindingAction["Suspend"] = "suspendBinding";
32
+ BindingAction["Resume"] = "resumeBinding";
33
+ })(BindingAction || (BindingAction = {}));
34
+
35
+ var MultipleModeControl = (_dec = defineUI5Class("sap.fe.templates.ListReport.controls.MultipleModeControl"), _dec2 = property({
36
+ type: "boolean"
37
+ }), _dec3 = property({
38
+ type: "boolean",
39
+ defaultValue: false
40
+ }), _dec4 = property({
41
+ type: "boolean",
42
+ defaultValue: false
43
+ }), _dec5 = aggregation({
44
+ type: "sap.m.IconTabBar",
45
+ multiple: false,
46
+ isDefault: true
47
+ }), _dec6 = association({
48
+ type: "sap.ui.core.Control",
49
+ multiple: true
50
+ }), _dec7 = association({
51
+ type: "sap.fe.core.controls.FilterBar",
52
+ multiple: false
53
+ }), _dec8 = event(), _dec(_class = (_class2 = /*#__PURE__*/function (_Control) {
54
+ _inheritsLoose(MultipleModeControl, _Control);
55
+
56
+ function MultipleModeControl() {
57
+ var _this;
58
+
59
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
60
+ args[_key] = arguments[_key];
61
+ }
62
+
63
+ _this = _Control.call.apply(_Control, [this].concat(args)) || this;
64
+
65
+ _initializerDefineProperty(_this, "showCounts", _descriptor, _assertThisInitialized(_this));
66
+
67
+ _initializerDefineProperty(_this, "freezeContent", _descriptor2, _assertThisInitialized(_this));
68
+
69
+ _initializerDefineProperty(_this, "countsOutDated", _descriptor3, _assertThisInitialized(_this));
70
+
71
+ _initializerDefineProperty(_this, "content", _descriptor4, _assertThisInitialized(_this));
72
+
73
+ _initializerDefineProperty(_this, "innerControls", _descriptor5, _assertThisInitialized(_this));
74
+
75
+ _initializerDefineProperty(_this, "filterControl", _descriptor6, _assertThisInitialized(_this));
76
+
77
+ _initializerDefineProperty(_this, "select", _descriptor7, _assertThisInitialized(_this));
78
+
79
+ return _this;
80
+ }
81
+
82
+ var _proto = MultipleModeControl.prototype;
83
+
84
+ _proto.onBeforeRendering = function onBeforeRendering() {
85
+ var _this$_getFilterContr,
86
+ _this2 = this;
87
+
88
+ this.getTabsModel(); // Generate the model which is mandatory for some bindings
89
+
90
+ var oFilterBarAPI = (_this$_getFilterContr = this._getFilterControl()) === null || _this$_getFilterContr === void 0 ? void 0 : _this$_getFilterContr.getParent();
91
+
92
+ this._getAllInnerControls().forEach(function (oMacroAPI) {
93
+ var _oMacroAPI$suspendBin;
94
+
95
+ if (_this2.showCounts) {
96
+ oMacroAPI.attachEvent("internalDataRequested", _this2._refreshTabsCount.bind(_this2));
97
+ }
98
+
99
+ (_oMacroAPI$suspendBin = oMacroAPI.suspendBinding) === null || _oMacroAPI$suspendBin === void 0 ? void 0 : _oMacroAPI$suspendBin.call(oMacroAPI);
100
+ });
101
+
102
+ if (oFilterBarAPI) {
103
+ oFilterBarAPI.attachEvent("internalSearch", this._onSearch.bind(this));
104
+ oFilterBarAPI.attachEvent("internalFilterChanged", this._onFilterChanged.bind(this));
105
+ }
106
+ };
107
+
108
+ _proto.onAfterRendering = function onAfterRendering() {
109
+ var _this$getSelectedInne, _this$getSelectedInne2;
110
+
111
+ (_this$getSelectedInne = this.getSelectedInnerControl()) === null || _this$getSelectedInne === void 0 ? void 0 : (_this$getSelectedInne2 = _this$getSelectedInne.resumeBinding) === null || _this$getSelectedInne2 === void 0 ? void 0 : _this$getSelectedInne2.call(_this$getSelectedInne, !this.getProperty("freezeContent"));
112
+ };
113
+
114
+ MultipleModeControl.render = function render(oRm, oControl) {
115
+ oRm.renderControl(oControl.content);
116
+ }
117
+ /**
118
+ * Gets the entity set of the displayed visualization.
119
+ *
120
+ * @returns {string} The entity set
121
+ */
122
+ ;
123
+
124
+ _proto.getDisplayedEntitySet = function getDisplayedEntitySet() {
125
+ var _this$getSelectedInne3, _this$getSelectedInne4;
126
+
127
+ return (_this$getSelectedInne3 = this.getSelectedInnerControl()) === null || _this$getSelectedInne3 === void 0 ? void 0 : (_this$getSelectedInne4 = _this$getSelectedInne3.content) === null || _this$getSelectedInne4 === void 0 ? void 0 : _this$getSelectedInne4.data("targetCollectionPath").slice(1);
128
+ }
129
+ /**
130
+ * Gets the model containing information related to the IconTabFilters.
131
+ *
132
+ * @returns {sap.ui.model.Model | undefined} The model
133
+ */
134
+ ;
135
+
136
+ _proto.getTabsModel = function getTabsModel() {
137
+ var sTabsModel = "tabsInternal";
138
+ var oContent = this.content;
139
+
140
+ if (!oContent) {
141
+ return undefined;
142
+ }
143
+
144
+ var oModel = oContent.getModel(sTabsModel);
145
+
146
+ if (!oModel) {
147
+ oModel = new JSONModel({});
148
+ oContent.setModel(oModel, sTabsModel);
149
+ }
150
+
151
+ return oModel;
152
+ }
153
+ /**
154
+ * Gets the inner control of the displayed tab.
155
+ *
156
+ * @returns {InnerControlType | undefined} The control
157
+ */
158
+ ;
159
+
160
+ _proto.getSelectedInnerControl = function getSelectedInnerControl() {
161
+ var _this3 = this;
162
+
163
+ var oSelectedTab = this.content.getItems().find(function (oItem) {
164
+ return oItem.getKey() === _this3.content.getSelectedKey();
165
+ });
166
+ return oSelectedTab ? this._getAllInnerControls().find(function (oMacroAPI) {
167
+ return _this3._getTabFromInnerControl(oMacroAPI) === oSelectedTab;
168
+ }) : undefined;
169
+ }
170
+ /**
171
+ * Manages the binding of all inner controls when the selected IconTabFilter is changed.
172
+ *
173
+ * @param {sap.ui.base.Event} oEvent Event fired by the IconTabBar
174
+ */
175
+ ;
176
+
177
+ MultipleModeControl.handleTabChange = function handleTabChange(oEvent) {
178
+ var _oMultiControl$_getVi, _oMultiControl$_getVi2;
179
+
180
+ var oIconTabBar = oEvent.getSource();
181
+ var oMultiControl = oIconTabBar.getParent();
182
+ var mParameters = oEvent.getParameters();
183
+
184
+ oMultiControl._setInnerBinding(true);
185
+
186
+ var sPreviousSelectedKey = mParameters === null || mParameters === void 0 ? void 0 : mParameters.previousKey;
187
+ var sSelectedKey = mParameters === null || mParameters === void 0 ? void 0 : mParameters.selectedKey;
188
+
189
+ if (sSelectedKey && sPreviousSelectedKey !== sSelectedKey) {
190
+ var oFilterBar = oMultiControl._getFilterControl();
191
+
192
+ if (oFilterBar && !oMultiControl.getProperty("freezeContent")) {
193
+ if (!oMultiControl.getSelectedInnerControl()) {
194
+ //custom tab
195
+ oMultiControl._refreshCustomView(oFilterBar.getFilterConditions(), "tabChanged");
196
+ }
197
+ }
198
+
199
+ ControlPersonalizationWriteAPI.add({
200
+ changes: [{
201
+ changeSpecificData: {
202
+ changeType: "selectIconTabBarFilter",
203
+ content: {
204
+ selectedKey: sSelectedKey,
205
+ previousSelectedKey: sPreviousSelectedKey
206
+ }
207
+ },
208
+ selectorElement: oIconTabBar
209
+ }]
210
+ });
211
+ }
212
+
213
+ (_oMultiControl$_getVi = oMultiControl._getViewController()) === null || _oMultiControl$_getVi === void 0 ? void 0 : (_oMultiControl$_getVi2 = _oMultiControl$_getVi.getExtensionAPI()) === null || _oMultiControl$_getVi2 === void 0 ? void 0 : _oMultiControl$_getVi2.updateAppState();
214
+ oMultiControl.fireEvent("select", {
215
+ iconTabBar: oIconTabBar,
216
+ selectedKey: sSelectedKey,
217
+ previousKey: sPreviousSelectedKey
218
+ });
219
+ }
220
+ /**
221
+ * Invalidates the content of all inner controls.
222
+ */
223
+ ;
224
+
225
+ _proto.invalidateContent = function invalidateContent() {
226
+ this.setCountsOutDated(true);
227
+
228
+ this._getAllInnerControls().forEach(function (oMacroAPI) {
229
+ var _oMacroAPI$invalidate;
230
+
231
+ (_oMacroAPI$invalidate = oMacroAPI.invalidateContent) === null || _oMacroAPI$invalidate === void 0 ? void 0 : _oMacroAPI$invalidate.call(oMacroAPI);
232
+ });
233
+ }
234
+ /**
235
+ * Sets the counts to out of date or up to date
236
+ * If the counts are set to "out of date" and the selected IconTabFilter doesn't contain an inner control all inner controls are requested to get the new counts.
237
+ *
238
+ * @param {boolean} bValue Freeze or not the control
239
+ */
240
+ ;
241
+
242
+ _proto.setCountsOutDated = function setCountsOutDated() {
243
+ var bValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
244
+ this.setProperty("countsOutDated", bValue); // if the current tab is not configured with no inner Control
245
+ // the tab counts must be manually refreshed since no Macro API will sent event internalDataRequested
246
+
247
+ if (bValue && !this.getSelectedInnerControl()) {
248
+ this._refreshTabsCount();
249
+ }
250
+ }
251
+ /**
252
+ * Freezes the content :
253
+ * - content is frozen: the binding of the inner controls are suspended.
254
+ * - content is unfrozen: the binding of inner control related to the selected IconTabFilter is resumed.
255
+ *
256
+ * @param {boolean} bValue Freeze or not the control
257
+ */
258
+ ;
259
+
260
+ _proto.setFreezeContent = function setFreezeContent(bValue) {
261
+ this.setProperty("freezeContent", bValue);
262
+
263
+ this._setInnerBinding();
264
+ }
265
+ /**
266
+ * Updates the internal model with the properties that are not applicable on each IconTabFilter (containing inner control) according to the entityType of the filter control.
267
+ *
268
+ * @param oResourceBundle
269
+ */
270
+ ;
271
+
272
+ _proto._updateMultiTabNotApplicableFields = function _updateMultiTabNotApplicableFields(oResourceBundle) {
273
+ var _this4 = this;
274
+
275
+ var tabsModel = this.getTabsModel();
276
+
277
+ var oFilterControl = this._getFilterControl();
278
+
279
+ if (tabsModel && oFilterControl) {
280
+ var results = {};
281
+
282
+ this._getAllInnerControls().forEach(function (oMacroAPI) {
283
+ var oTab = _this4._getTabFromInnerControl(oMacroAPI);
284
+
285
+ if (oTab) {
286
+ var _oMacroAPI$refreshNot;
287
+
288
+ var sTabId = oTab.getKey();
289
+ var mIgnoredFields = ((_oMacroAPI$refreshNot = oMacroAPI.refreshNotApplicableFields) === null || _oMacroAPI$refreshNot === void 0 ? void 0 : _oMacroAPI$refreshNot.call(oMacroAPI, oFilterControl)) || [];
290
+ results[sTabId] = {
291
+ notApplicable: {
292
+ fields: mIgnoredFields,
293
+ title: _this4._setTabMessageStrip({
294
+ entityTypePath: oFilterControl.data("entityType"),
295
+ ignoredFields: mIgnoredFields,
296
+ resourceBundle: oResourceBundle,
297
+ title: oTab.getText()
298
+ })
299
+ }
300
+ };
301
+ }
302
+ });
303
+
304
+ tabsModel.setData(results);
305
+ }
306
+ };
307
+
308
+ _proto._getAllInnerControls = function _getAllInnerControls() {
309
+ var _this5 = this;
310
+
311
+ var bOnlyForVisibleTab = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
312
+ return this.innerControls.reduce(function (aInnerControls, sInnerControl) {
313
+ var oControl = Core.byId(sInnerControl);
314
+
315
+ if (oControl) {
316
+ aInnerControls.push(oControl);
317
+ }
318
+
319
+ return aInnerControls.filter(function (oInnerControl) {
320
+ var _this5$_getTabFromInn;
321
+
322
+ return !bOnlyForVisibleTab || ((_this5$_getTabFromInn = _this5._getTabFromInnerControl(oInnerControl)) === null || _this5$_getTabFromInn === void 0 ? void 0 : _this5$_getTabFromInn.getVisible());
323
+ });
324
+ }, []) || [];
325
+ };
326
+
327
+ _proto._getFilterControl = function _getFilterControl() {
328
+ return Core.byId(this.filterControl);
329
+ };
330
+
331
+ _proto._getTabFromInnerControl = function _getTabFromInnerControl(oControl) {
332
+ var sSupportedClass = IconTabFilter.getMetadata().getName();
333
+ var oTab = oControl;
334
+
335
+ if (oTab && !oTab.isA(sSupportedClass) && oTab.getParent) {
336
+ oTab = oControl.getParent();
337
+ }
338
+
339
+ return oTab && oTab.isA(sSupportedClass) ? oTab : undefined;
340
+ };
341
+
342
+ _proto._getViewController = function _getViewController() {
343
+ var oView = CommonUtils.getTargetView(this);
344
+ return oView && oView.getController();
345
+ };
346
+
347
+ _proto._refreshCustomView = function _refreshCustomView(oFilterConditions, sRefreshCause) {
348
+ var _this$_getViewControl, _this$_getViewControl2;
349
+
350
+ (_this$_getViewControl = this._getViewController()) === null || _this$_getViewControl === void 0 ? void 0 : (_this$_getViewControl2 = _this$_getViewControl.onViewNeedsRefresh) === null || _this$_getViewControl2 === void 0 ? void 0 : _this$_getViewControl2.call(_this$_getViewControl, {
351
+ filterConditions: oFilterConditions,
352
+ currentTabId: this.content.getSelectedKey(),
353
+ refreshCause: sRefreshCause
354
+ });
355
+ };
356
+
357
+ _proto._refreshTabsCount = function _refreshTabsCount() {
358
+ var _this6 = this;
359
+
360
+ var sSelectedKey = this.content.getSelectedKey();
361
+
362
+ this._getAllInnerControls(true).forEach(function (oMacroAPI) {
363
+ var oIconTabFilter = _this6._getTabFromInnerControl(oMacroAPI);
364
+
365
+ if (oMacroAPI !== null && oMacroAPI !== void 0 && oMacroAPI.getCounts && (_this6.countsOutDated || sSelectedKey === (oIconTabFilter === null || oIconTabFilter === void 0 ? void 0 : oIconTabFilter.getKey()))) {
366
+ if (oIconTabFilter && oIconTabFilter.setCount) {
367
+ oIconTabFilter.setCount("...");
368
+ oMacroAPI.getCounts().then(function (iCount) {
369
+ return oIconTabFilter.setCount(iCount || "0");
370
+ }).catch(function (oError) {
371
+ Log.error("Error while requesting Counts for Control", oError);
372
+ });
373
+ }
374
+ }
375
+ });
376
+
377
+ this.setCountsOutDated(false);
378
+ };
379
+
380
+ _proto._setInnerBinding = function _setInnerBinding() {
381
+ var _this7 = this;
382
+
383
+ var bRequestIfNotInitialized = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
384
+
385
+ if (this.content) {
386
+ this._getAllInnerControls().forEach(function (oMacroAPI) {
387
+ var _oMacroAPI$sAction;
388
+
389
+ var oIconTabFilter = _this7._getTabFromInnerControl(oMacroAPI);
390
+
391
+ var bIsSelectedKey = (oIconTabFilter === null || oIconTabFilter === void 0 ? void 0 : oIconTabFilter.getKey()) === _this7.content.getSelectedKey();
392
+
393
+ var sAction = bIsSelectedKey && !_this7.getProperty("freezeContent") ? BindingAction.Resume : BindingAction.Suspend;
394
+ (_oMacroAPI$sAction = oMacroAPI[sAction]) === null || _oMacroAPI$sAction === void 0 ? void 0 : _oMacroAPI$sAction.call(oMacroAPI, sAction === BindingAction.Resume ? bRequestIfNotInitialized && bIsSelectedKey : undefined);
395
+ });
396
+ }
397
+ };
398
+
399
+ _proto._setTabMessageStrip = function _setTabMessageStrip(properties) {
400
+ var sText = "";
401
+ var aIgnoredFields = properties.ignoredFields;
402
+
403
+ var oFilterControl = this._getFilterControl();
404
+
405
+ if (oFilterControl && Array.isArray(aIgnoredFields) && aIgnoredFields.length > 0 && properties.title) {
406
+ var aIgnoredLabels = MessageStrip.getLabels(aIgnoredFields, properties.entityTypePath, oFilterControl, properties.resourceBundle);
407
+ sText = MessageStrip.getText(aIgnoredLabels, oFilterControl, properties.title, DelegateUtil.getLocalizedText);
408
+ return sText;
409
+ }
410
+ };
411
+
412
+ _proto._onSearch = function _onSearch(oEvent) {
413
+ this.setCountsOutDated(true);
414
+ this.setFreezeContent(false);
415
+
416
+ if (this.getSelectedInnerControl()) {
417
+ var _this$_getViewControl3;
418
+
419
+ this._updateMultiTabNotApplicableFields((_this$_getViewControl3 = this._getViewController()) === null || _this$_getViewControl3 === void 0 ? void 0 : _this$_getViewControl3.oResourceBundle);
420
+ } else {
421
+ // custom tab
422
+ this._refreshCustomView(oEvent.getParameter("conditions"), "search");
423
+ }
424
+ };
425
+
426
+ _proto._onFilterChanged = function _onFilterChanged(oEvent) {
427
+ if (oEvent.getParameter("conditionsBased")) {
428
+ this.setFreezeContent(true);
429
+ }
430
+ };
431
+
432
+ return MultipleModeControl;
433
+ }(Control), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "showCounts", [_dec2], {
434
+ configurable: true,
435
+ enumerable: true,
436
+ writable: true,
437
+ initializer: null
438
+ }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "freezeContent", [_dec3], {
439
+ configurable: true,
440
+ enumerable: true,
441
+ writable: true,
442
+ initializer: null
443
+ }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "countsOutDated", [_dec4], {
444
+ configurable: true,
445
+ enumerable: true,
446
+ writable: true,
447
+ initializer: null
448
+ }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "content", [_dec5], {
449
+ configurable: true,
450
+ enumerable: true,
451
+ writable: true,
452
+ initializer: null
453
+ }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "innerControls", [_dec6], {
454
+ configurable: true,
455
+ enumerable: true,
456
+ writable: true,
457
+ initializer: null
458
+ }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "filterControl", [_dec7], {
459
+ configurable: true,
460
+ enumerable: true,
461
+ writable: true,
462
+ initializer: null
463
+ }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "select", [_dec8], {
464
+ configurable: true,
465
+ enumerable: true,
466
+ writable: true,
467
+ initializer: null
468
+ })), _class2)) || _class);
469
+ return MultipleModeControl;
470
+ }, false);
471
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCaW5kaW5nQWN0aW9uIiwiTXVsdGlwbGVNb2RlQ29udHJvbCIsImRlZmluZVVJNUNsYXNzIiwicHJvcGVydHkiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiYWdncmVnYXRpb24iLCJtdWx0aXBsZSIsImlzRGVmYXVsdCIsImFzc29jaWF0aW9uIiwiZXZlbnQiLCJvbkJlZm9yZVJlbmRlcmluZyIsImdldFRhYnNNb2RlbCIsIm9GaWx0ZXJCYXJBUEkiLCJfZ2V0RmlsdGVyQ29udHJvbCIsImdldFBhcmVudCIsIl9nZXRBbGxJbm5lckNvbnRyb2xzIiwiZm9yRWFjaCIsIm9NYWNyb0FQSSIsInNob3dDb3VudHMiLCJhdHRhY2hFdmVudCIsIl9yZWZyZXNoVGFic0NvdW50IiwiYmluZCIsInN1c3BlbmRCaW5kaW5nIiwiX29uU2VhcmNoIiwiX29uRmlsdGVyQ2hhbmdlZCIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJnZXRTZWxlY3RlZElubmVyQ29udHJvbCIsInJlc3VtZUJpbmRpbmciLCJnZXRQcm9wZXJ0eSIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwicmVuZGVyQ29udHJvbCIsImNvbnRlbnQiLCJnZXREaXNwbGF5ZWRFbnRpdHlTZXQiLCJkYXRhIiwic2xpY2UiLCJzVGFic01vZGVsIiwib0NvbnRlbnQiLCJ1bmRlZmluZWQiLCJvTW9kZWwiLCJnZXRNb2RlbCIsIkpTT05Nb2RlbCIsInNldE1vZGVsIiwib1NlbGVjdGVkVGFiIiwiZ2V0SXRlbXMiLCJmaW5kIiwib0l0ZW0iLCJnZXRLZXkiLCJnZXRTZWxlY3RlZEtleSIsIl9nZXRUYWJGcm9tSW5uZXJDb250cm9sIiwiaGFuZGxlVGFiQ2hhbmdlIiwib0V2ZW50Iiwib0ljb25UYWJCYXIiLCJnZXRTb3VyY2UiLCJvTXVsdGlDb250cm9sIiwibVBhcmFtZXRlcnMiLCJnZXRQYXJhbWV0ZXJzIiwiX3NldElubmVyQmluZGluZyIsInNQcmV2aW91c1NlbGVjdGVkS2V5IiwicHJldmlvdXNLZXkiLCJzU2VsZWN0ZWRLZXkiLCJzZWxlY3RlZEtleSIsIm9GaWx0ZXJCYXIiLCJfcmVmcmVzaEN1c3RvbVZpZXciLCJnZXRGaWx0ZXJDb25kaXRpb25zIiwiQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJIiwiYWRkIiwiY2hhbmdlcyIsImNoYW5nZVNwZWNpZmljRGF0YSIsImNoYW5nZVR5cGUiLCJwcmV2aW91c1NlbGVjdGVkS2V5Iiwic2VsZWN0b3JFbGVtZW50IiwiX2dldFZpZXdDb250cm9sbGVyIiwiZ2V0RXh0ZW5zaW9uQVBJIiwidXBkYXRlQXBwU3RhdGUiLCJmaXJlRXZlbnQiLCJpY29uVGFiQmFyIiwiaW52YWxpZGF0ZUNvbnRlbnQiLCJzZXRDb3VudHNPdXREYXRlZCIsImJWYWx1ZSIsInNldFByb3BlcnR5Iiwic2V0RnJlZXplQ29udGVudCIsIl91cGRhdGVNdWx0aVRhYk5vdEFwcGxpY2FibGVGaWVsZHMiLCJvUmVzb3VyY2VCdW5kbGUiLCJ0YWJzTW9kZWwiLCJvRmlsdGVyQ29udHJvbCIsInJlc3VsdHMiLCJvVGFiIiwic1RhYklkIiwibUlnbm9yZWRGaWVsZHMiLCJyZWZyZXNoTm90QXBwbGljYWJsZUZpZWxkcyIsIm5vdEFwcGxpY2FibGUiLCJmaWVsZHMiLCJ0aXRsZSIsIl9zZXRUYWJNZXNzYWdlU3RyaXAiLCJlbnRpdHlUeXBlUGF0aCIsImlnbm9yZWRGaWVsZHMiLCJyZXNvdXJjZUJ1bmRsZSIsImdldFRleHQiLCJzZXREYXRhIiwiYk9ubHlGb3JWaXNpYmxlVGFiIiwiaW5uZXJDb250cm9scyIsInJlZHVjZSIsImFJbm5lckNvbnRyb2xzIiwic0lubmVyQ29udHJvbCIsIkNvcmUiLCJieUlkIiwicHVzaCIsImZpbHRlciIsIm9Jbm5lckNvbnRyb2wiLCJnZXRWaXNpYmxlIiwiZmlsdGVyQ29udHJvbCIsInNTdXBwb3J0ZWRDbGFzcyIsIkljb25UYWJGaWx0ZXIiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJpc0EiLCJvVmlldyIsIkNvbW1vblV0aWxzIiwiZ2V0VGFyZ2V0VmlldyIsImdldENvbnRyb2xsZXIiLCJvRmlsdGVyQ29uZGl0aW9ucyIsInNSZWZyZXNoQ2F1c2UiLCJvblZpZXdOZWVkc1JlZnJlc2giLCJmaWx0ZXJDb25kaXRpb25zIiwiY3VycmVudFRhYklkIiwicmVmcmVzaENhdXNlIiwib0ljb25UYWJGaWx0ZXIiLCJnZXRDb3VudHMiLCJjb3VudHNPdXREYXRlZCIsInNldENvdW50IiwidGhlbiIsImlDb3VudCIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiZXJyb3IiLCJiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQiLCJiSXNTZWxlY3RlZEtleSIsInNBY3Rpb24iLCJSZXN1bWUiLCJTdXNwZW5kIiwicHJvcGVydGllcyIsInNUZXh0IiwiYUlnbm9yZWRGaWVsZHMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJhSWdub3JlZExhYmVscyIsIk1lc3NhZ2VTdHJpcCIsImdldExhYmVscyIsIkRlbGVnYXRlVXRpbCIsImdldExvY2FsaXplZFRleHQiLCJnZXRQYXJhbWV0ZXIiLCJDb250cm9sIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJNdWx0aXBsZU1vZGVDb250cm9sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL01hY3JvQVBJXCI7XG5pbXBvcnQgSWNvblRhYkJhciBmcm9tIFwic2FwL20vSWNvblRhYkJhclwiO1xuaW1wb3J0IEljb25UYWJGaWx0ZXIgZnJvbSBcInNhcC9tL0ljb25UYWJGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIENvcmVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCBDb250cm9sUGVyc29uYWxpemF0aW9uV3JpdGVBUEkgZnJvbSBcInNhcC91aS9mbC93cml0ZS9hcGkvQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIElubmVyQ29udHJvbFR5cGUgPSBNYWNyb0FQSSAmXG5cdFBhcnRpYWw8e1xuXHRcdHJlc3VtZUJpbmRpbmc6IEZ1bmN0aW9uO1xuXHRcdHN1c3BlbmRCaW5kaW5nOiBGdW5jdGlvbjtcblx0XHRnZXRDb3VudHM6IEZ1bmN0aW9uO1xuXHRcdHJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzOiBGdW5jdGlvbjtcblx0XHRpbnZhbGlkYXRlQ29udGVudDogRnVuY3Rpb247XG5cdH0+O1xuXG50eXBlIE1lc3NhZ2VTdHJpcFByb3BlcnRpZXMgPSB7XG5cdGVudGl0eVR5cGVQYXRoOiBzdHJpbmc7XG5cdGlnbm9yZWRGaWVsZHM6IGFueVtdO1xuXHRyZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGU7XG5cdHRpdGxlOiBzdHJpbmc7XG59O1xuXG5lbnVtIEJpbmRpbmdBY3Rpb24ge1xuXHRTdXNwZW5kID0gXCJzdXNwZW5kQmluZGluZ1wiLFxuXHRSZXN1bWUgPSBcInJlc3VtZUJpbmRpbmdcIlxufVxuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUudGVtcGxhdGVzLkxpc3RSZXBvcnQuY29udHJvbHMuTXVsdGlwbGVNb2RlQ29udHJvbFwiKVxuY2xhc3MgTXVsdGlwbGVNb2RlQ29udHJvbCBleHRlbmRzIENvbnRyb2wge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRzaG93Q291bnRzITogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRmcmVlemVDb250ZW50ITogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRjb3VudHNPdXREYXRlZCE6IGJvb2xlYW47XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAubS5JY29uVGFiQmFyXCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdGNvbnRlbnQhOiBJY29uVGFiQmFyO1xuXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLCBtdWx0aXBsZTogdHJ1ZSB9KVxuXHRpbm5lckNvbnRyb2xzITogc3RyaW5nW107XG5cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9scy5GaWx0ZXJCYXJcIiwgbXVsdGlwbGU6IGZhbHNlIH0pXG5cdGZpbHRlckNvbnRyb2whOiBzdHJpbmc7XG5cblx0QGV2ZW50KClcblx0c2VsZWN0ITogRnVuY3Rpb247XG5cblx0b25CZWZvcmVSZW5kZXJpbmcoKSB7XG5cdFx0dGhpcy5nZXRUYWJzTW9kZWwoKTsgLy8gR2VuZXJhdGUgdGhlIG1vZGVsIHdoaWNoIGlzIG1hbmRhdG9yeSBmb3Igc29tZSBiaW5kaW5nc1xuXG5cdFx0Y29uc3Qgb0ZpbHRlckJhckFQSSA9IHRoaXMuX2dldEZpbHRlckNvbnRyb2woKT8uZ2V0UGFyZW50KCk7XG5cdFx0dGhpcy5fZ2V0QWxsSW5uZXJDb250cm9scygpLmZvckVhY2goKG9NYWNyb0FQSSkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuc2hvd0NvdW50cykge1xuXHRcdFx0XHRvTWFjcm9BUEkuYXR0YWNoRXZlbnQoXCJpbnRlcm5hbERhdGFSZXF1ZXN0ZWRcIiwgdGhpcy5fcmVmcmVzaFRhYnNDb3VudC5iaW5kKHRoaXMpKTtcblx0XHRcdH1cblx0XHRcdG9NYWNyb0FQSS5zdXNwZW5kQmluZGluZz8uKCk7XG5cdFx0fSk7XG5cdFx0aWYgKG9GaWx0ZXJCYXJBUEkpIHtcblx0XHRcdG9GaWx0ZXJCYXJBUEkuYXR0YWNoRXZlbnQoXCJpbnRlcm5hbFNlYXJjaFwiLCB0aGlzLl9vblNlYXJjaC5iaW5kKHRoaXMpKTtcblx0XHRcdG9GaWx0ZXJCYXJBUEkuYXR0YWNoRXZlbnQoXCJpbnRlcm5hbEZpbHRlckNoYW5nZWRcIiwgdGhpcy5fb25GaWx0ZXJDaGFuZ2VkLmJpbmQodGhpcykpO1xuXHRcdH1cblx0fVxuXG5cdG9uQWZ0ZXJSZW5kZXJpbmcoKSB7XG5cdFx0dGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpPy5yZXN1bWVCaW5kaW5nPy4oIXRoaXMuZ2V0UHJvcGVydHkoXCJmcmVlemVDb250ZW50XCIpKTtcblx0fVxuXG5cdHN0YXRpYyByZW5kZXIob1JtOiBSZW5kZXJNYW5hZ2VyLCBvQ29udHJvbDogTXVsdGlwbGVNb2RlQ29udHJvbCkge1xuXHRcdG9SbS5yZW5kZXJDb250cm9sKG9Db250cm9sLmNvbnRlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGVudGl0eSBzZXQgb2YgdGhlIGRpc3BsYXllZCB2aXN1YWxpemF0aW9uLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZW50aXR5IHNldFxuXHQgKi9cblx0Z2V0RGlzcGxheWVkRW50aXR5U2V0KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKT8uY29udGVudD8uZGF0YShcInRhcmdldENvbGxlY3Rpb25QYXRoXCIpLnNsaWNlKDEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIG1vZGVsIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgSWNvblRhYkZpbHRlcnMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtzYXAudWkubW9kZWwuTW9kZWwgfCB1bmRlZmluZWR9IFRoZSBtb2RlbFxuXHQgKi9cblx0Z2V0VGFic01vZGVsKCk6IE1vZGVsIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBzVGFic01vZGVsID0gXCJ0YWJzSW50ZXJuYWxcIjtcblx0XHRjb25zdCBvQ29udGVudCA9IHRoaXMuY29udGVudDtcblx0XHRpZiAoIW9Db250ZW50KSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRsZXQgb01vZGVsID0gb0NvbnRlbnQuZ2V0TW9kZWwoc1RhYnNNb2RlbCk7XG5cdFx0aWYgKCFvTW9kZWwpIHtcblx0XHRcdG9Nb2RlbCA9IG5ldyBKU09OTW9kZWwoe30pO1xuXHRcdFx0b0NvbnRlbnQuc2V0TW9kZWwob01vZGVsLCBzVGFic01vZGVsKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9Nb2RlbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBpbm5lciBjb250cm9sIG9mIHRoZSBkaXNwbGF5ZWQgdGFiLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7SW5uZXJDb250cm9sVHlwZSB8IHVuZGVmaW5lZH0gVGhlIGNvbnRyb2xcblx0ICovXG5cdGdldFNlbGVjdGVkSW5uZXJDb250cm9sKCk6IElubmVyQ29udHJvbFR5cGUgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG9TZWxlY3RlZFRhYiA9IHRoaXMuY29udGVudC5nZXRJdGVtcygpLmZpbmQoKG9JdGVtKSA9PiAob0l0ZW0gYXMgSWNvblRhYkZpbHRlcikuZ2V0S2V5KCkgPT09IHRoaXMuY29udGVudC5nZXRTZWxlY3RlZEtleSgpKTtcblx0XHRyZXR1cm4gb1NlbGVjdGVkVGFiXG5cdFx0XHQ/IHRoaXMuX2dldEFsbElubmVyQ29udHJvbHMoKS5maW5kKChvTWFjcm9BUEkpID0+IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob01hY3JvQVBJKSA9PT0gb1NlbGVjdGVkVGFiKVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogTWFuYWdlcyB0aGUgYmluZGluZyBvZiBhbGwgaW5uZXIgY29udHJvbHMgd2hlbiB0aGUgc2VsZWN0ZWQgSWNvblRhYkZpbHRlciBpcyBjaGFuZ2VkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3NhcC51aS5iYXNlLkV2ZW50fSBvRXZlbnQgRXZlbnQgZmlyZWQgYnkgdGhlIEljb25UYWJCYXJcblx0ICovXG5cdHN0YXRpYyBoYW5kbGVUYWJDaGFuZ2Uob0V2ZW50OiBhbnkpOiB2b2lkIHtcblx0XHRjb25zdCBvSWNvblRhYkJhciA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBvTXVsdGlDb250cm9sID0gb0ljb25UYWJCYXIuZ2V0UGFyZW50KCk7XG5cblx0XHRjb25zdCBtUGFyYW1ldGVycyA9IG9FdmVudC5nZXRQYXJhbWV0ZXJzKCk7XG5cdFx0b011bHRpQ29udHJvbC5fc2V0SW5uZXJCaW5kaW5nKHRydWUpO1xuXHRcdGNvbnN0IHNQcmV2aW91c1NlbGVjdGVkS2V5ID0gbVBhcmFtZXRlcnM/LnByZXZpb3VzS2V5O1xuXHRcdGNvbnN0IHNTZWxlY3RlZEtleSA9IG1QYXJhbWV0ZXJzPy5zZWxlY3RlZEtleTtcblxuXHRcdGlmIChzU2VsZWN0ZWRLZXkgJiYgc1ByZXZpb3VzU2VsZWN0ZWRLZXkgIT09IHNTZWxlY3RlZEtleSkge1xuXHRcdFx0Y29uc3Qgb0ZpbHRlckJhciA9IG9NdWx0aUNvbnRyb2wuX2dldEZpbHRlckNvbnRyb2woKTtcblx0XHRcdGlmIChvRmlsdGVyQmFyICYmICFvTXVsdGlDb250cm9sLmdldFByb3BlcnR5KFwiZnJlZXplQ29udGVudFwiKSkge1xuXHRcdFx0XHRpZiAoIW9NdWx0aUNvbnRyb2wuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKSkge1xuXHRcdFx0XHRcdC8vY3VzdG9tIHRhYlxuXHRcdFx0XHRcdG9NdWx0aUNvbnRyb2wuX3JlZnJlc2hDdXN0b21WaWV3KG9GaWx0ZXJCYXIuZ2V0RmlsdGVyQ29uZGl0aW9ucygpLCBcInRhYkNoYW5nZWRcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdENvbnRyb2xQZXJzb25hbGl6YXRpb25Xcml0ZUFQSS5hZGQoe1xuXHRcdFx0XHRjaGFuZ2VzOiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Y2hhbmdlU3BlY2lmaWNEYXRhOiB7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZVR5cGU6IFwic2VsZWN0SWNvblRhYkJhckZpbHRlclwiLFxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiB7XG5cdFx0XHRcdFx0XHRcdFx0c2VsZWN0ZWRLZXk6IHNTZWxlY3RlZEtleSxcblx0XHRcdFx0XHRcdFx0XHRwcmV2aW91c1NlbGVjdGVkS2V5OiBzUHJldmlvdXNTZWxlY3RlZEtleVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0c2VsZWN0b3JFbGVtZW50OiBvSWNvblRhYkJhclxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0b011bHRpQ29udHJvbC5fZ2V0Vmlld0NvbnRyb2xsZXIoKT8uZ2V0RXh0ZW5zaW9uQVBJKCk/LnVwZGF0ZUFwcFN0YXRlKCk7XG5cblx0XHRvTXVsdGlDb250cm9sLmZpcmVFdmVudChcInNlbGVjdFwiLCB7XG5cdFx0XHRpY29uVGFiQmFyOiBvSWNvblRhYkJhcixcblx0XHRcdHNlbGVjdGVkS2V5OiBzU2VsZWN0ZWRLZXksXG5cdFx0XHRwcmV2aW91c0tleTogc1ByZXZpb3VzU2VsZWN0ZWRLZXlcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbnZhbGlkYXRlcyB0aGUgY29udGVudCBvZiBhbGwgaW5uZXIgY29udHJvbHMuXG5cdCAqL1xuXHRpbnZhbGlkYXRlQ29udGVudCgpIHtcblx0XHR0aGlzLnNldENvdW50c091dERhdGVkKHRydWUpO1xuXHRcdHRoaXMuX2dldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChvTWFjcm9BUEkpID0+IHtcblx0XHRcdG9NYWNyb0FQSS5pbnZhbGlkYXRlQ29udGVudD8uKCk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgY291bnRzIHRvIG91dCBvZiBkYXRlIG9yIHVwIHRvIGRhdGVcblx0ICogSWYgdGhlIGNvdW50cyBhcmUgc2V0IHRvIFwib3V0IG9mIGRhdGVcIiBhbmQgdGhlIHNlbGVjdGVkIEljb25UYWJGaWx0ZXIgZG9lc24ndCBjb250YWluIGFuIGlubmVyIGNvbnRyb2wgYWxsIGlubmVyIGNvbnRyb2xzIGFyZSByZXF1ZXN0ZWQgdG8gZ2V0IHRoZSBuZXcgY291bnRzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJWYWx1ZSBGcmVlemUgb3Igbm90IHRoZSBjb250cm9sXG5cdCAqL1xuXHRzZXRDb3VudHNPdXREYXRlZChiVmFsdWUgPSB0cnVlKSB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImNvdW50c091dERhdGVkXCIsIGJWYWx1ZSk7XG5cdFx0Ly8gaWYgdGhlIGN1cnJlbnQgdGFiIGlzIG5vdCBjb25maWd1cmVkIHdpdGggbm8gaW5uZXIgQ29udHJvbFxuXHRcdC8vIHRoZSB0YWIgY291bnRzIG11c3QgYmUgbWFudWFsbHkgcmVmcmVzaGVkIHNpbmNlIG5vIE1hY3JvIEFQSSB3aWxsIHNlbnQgZXZlbnQgaW50ZXJuYWxEYXRhUmVxdWVzdGVkXG5cdFx0aWYgKGJWYWx1ZSAmJiAhdGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpKSB7XG5cdFx0XHR0aGlzLl9yZWZyZXNoVGFic0NvdW50KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEZyZWV6ZXMgdGhlIGNvbnRlbnQgOlxuXHQgKiAgLSBjb250ZW50IGlzIGZyb3plbjogdGhlIGJpbmRpbmcgb2YgdGhlIGlubmVyIGNvbnRyb2xzIGFyZSBzdXNwZW5kZWQuXG5cdCAqICAtIGNvbnRlbnQgaXMgdW5mcm96ZW46IHRoZSBiaW5kaW5nIG9mIGlubmVyIGNvbnRyb2wgcmVsYXRlZCB0byB0aGUgc2VsZWN0ZWQgSWNvblRhYkZpbHRlciBpcyByZXN1bWVkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJWYWx1ZSBGcmVlemUgb3Igbm90IHRoZSBjb250cm9sXG5cdCAqL1xuXHRzZXRGcmVlemVDb250ZW50KGJWYWx1ZTogYm9vbGVhbikge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJmcmVlemVDb250ZW50XCIsIGJWYWx1ZSk7XG5cdFx0dGhpcy5fc2V0SW5uZXJCaW5kaW5nKCk7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgaW50ZXJuYWwgbW9kZWwgd2l0aCB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSBub3QgYXBwbGljYWJsZSBvbiBlYWNoIEljb25UYWJGaWx0ZXIgKGNvbnRhaW5pbmcgaW5uZXIgY29udHJvbCkgYWNjb3JkaW5nIHRvIHRoZSBlbnRpdHlUeXBlIG9mIHRoZSBmaWx0ZXIgY29udHJvbC5cblx0ICpcblx0ICogQHBhcmFtIG9SZXNvdXJjZUJ1bmRsZVxuXHQgKi9cblx0X3VwZGF0ZU11bHRpVGFiTm90QXBwbGljYWJsZUZpZWxkcyhvUmVzb3VyY2VCdW5kbGU6IFJlc291cmNlQnVuZGxlKSB7XG5cdFx0Y29uc3QgdGFic01vZGVsID0gdGhpcy5nZXRUYWJzTW9kZWwoKTtcblx0XHRjb25zdCBvRmlsdGVyQ29udHJvbCA9IHRoaXMuX2dldEZpbHRlckNvbnRyb2woKSBhcyBDb250cm9sO1xuXHRcdGlmICh0YWJzTW9kZWwgJiYgb0ZpbHRlckNvbnRyb2wpIHtcblx0XHRcdGNvbnN0IHJlc3VsdHM6IGFueSA9IHt9O1xuXHRcdFx0dGhpcy5fZ2V0QWxsSW5uZXJDb250cm9scygpLmZvckVhY2goKG9NYWNyb0FQSSkgPT4ge1xuXHRcdFx0XHRjb25zdCBvVGFiID0gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvTWFjcm9BUEkpO1xuXHRcdFx0XHRpZiAob1RhYikge1xuXHRcdFx0XHRcdGNvbnN0IHNUYWJJZCA9IG9UYWIuZ2V0S2V5KCk7XG5cdFx0XHRcdFx0Y29uc3QgbUlnbm9yZWRGaWVsZHMgPSBvTWFjcm9BUEkucmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHM/LihvRmlsdGVyQ29udHJvbCkgfHwgW107XG5cdFx0XHRcdFx0cmVzdWx0c1tzVGFiSWRdID0ge1xuXHRcdFx0XHRcdFx0bm90QXBwbGljYWJsZToge1xuXHRcdFx0XHRcdFx0XHRmaWVsZHM6IG1JZ25vcmVkRmllbGRzLFxuXHRcdFx0XHRcdFx0XHR0aXRsZTogdGhpcy5fc2V0VGFiTWVzc2FnZVN0cmlwKHtcblx0XHRcdFx0XHRcdFx0XHRlbnRpdHlUeXBlUGF0aDogb0ZpbHRlckNvbnRyb2wuZGF0YShcImVudGl0eVR5cGVcIiksXG5cdFx0XHRcdFx0XHRcdFx0aWdub3JlZEZpZWxkczogbUlnbm9yZWRGaWVsZHMsXG5cdFx0XHRcdFx0XHRcdFx0cmVzb3VyY2VCdW5kbGU6IG9SZXNvdXJjZUJ1bmRsZSxcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogb1RhYi5nZXRUZXh0KClcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdCh0YWJzTW9kZWwgYXMgYW55KS5zZXREYXRhKHJlc3VsdHMpO1xuXHRcdH1cblx0fVxuXG5cdF9nZXRBbGxJbm5lckNvbnRyb2xzKGJPbmx5Rm9yVmlzaWJsZVRhYiA9IGZhbHNlKTogSW5uZXJDb250cm9sVHlwZVtdIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5pbm5lckNvbnRyb2xzLnJlZHVjZSgoYUlubmVyQ29udHJvbHM6IElubmVyQ29udHJvbFR5cGVbXSwgc0lubmVyQ29udHJvbDogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sID0gQ29yZS5ieUlkKHNJbm5lckNvbnRyb2wpIGFzIElubmVyQ29udHJvbFR5cGU7XG5cdFx0XHRcdGlmIChvQ29udHJvbCkge1xuXHRcdFx0XHRcdGFJbm5lckNvbnRyb2xzLnB1c2gob0NvbnRyb2wpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhSW5uZXJDb250cm9scy5maWx0ZXIoXG5cdFx0XHRcdFx0KG9Jbm5lckNvbnRyb2wpID0+ICFiT25seUZvclZpc2libGVUYWIgfHwgdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvSW5uZXJDb250cm9sKT8uZ2V0VmlzaWJsZSgpXG5cdFx0XHRcdCk7XG5cdFx0XHR9LCBbXSkgfHwgW11cblx0XHQpO1xuXHR9XG5cblx0X2dldEZpbHRlckNvbnRyb2woKTogRmlsdGVyQmFyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gQ29yZS5ieUlkKHRoaXMuZmlsdGVyQ29udHJvbCkgYXMgRmlsdGVyQmFyIHwgdW5kZWZpbmVkO1xuXHR9XG5cblx0X2dldFRhYkZyb21Jbm5lckNvbnRyb2wob0NvbnRyb2w6IENvbnRyb2wpOiBJY29uVGFiRmlsdGVyIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBzU3VwcG9ydGVkQ2xhc3MgPSBJY29uVGFiRmlsdGVyLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpO1xuXHRcdGxldCBvVGFiOiBhbnkgPSBvQ29udHJvbDtcblx0XHRpZiAob1RhYiAmJiAhb1RhYi5pc0Eoc1N1cHBvcnRlZENsYXNzKSAmJiBvVGFiLmdldFBhcmVudCkge1xuXHRcdFx0b1RhYiA9IG9Db250cm9sLmdldFBhcmVudCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gb1RhYiAmJiBvVGFiLmlzQShzU3VwcG9ydGVkQ2xhc3MpID8gKG9UYWIgYXMgSWNvblRhYkZpbHRlcikgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHRfZ2V0Vmlld0NvbnRyb2xsZXIoKSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpO1xuXHRcdHJldHVybiBvVmlldyAmJiBvVmlldy5nZXRDb250cm9sbGVyKCk7XG5cdH1cblxuXHRfcmVmcmVzaEN1c3RvbVZpZXcob0ZpbHRlckNvbmRpdGlvbnM6IGFueSwgc1JlZnJlc2hDYXVzZTogc3RyaW5nKSB7XG5cdFx0dGhpcy5fZ2V0Vmlld0NvbnRyb2xsZXIoKT8ub25WaWV3TmVlZHNSZWZyZXNoPy4oe1xuXHRcdFx0ZmlsdGVyQ29uZGl0aW9uczogb0ZpbHRlckNvbmRpdGlvbnMsXG5cdFx0XHRjdXJyZW50VGFiSWQ6IHRoaXMuY29udGVudC5nZXRTZWxlY3RlZEtleSgpLFxuXHRcdFx0cmVmcmVzaENhdXNlOiBzUmVmcmVzaENhdXNlXG5cdFx0fSk7XG5cdH1cblxuXHRfcmVmcmVzaFRhYnNDb3VudCgpOiB2b2lkIHtcblx0XHRjb25zdCBzU2VsZWN0ZWRLZXkgPSB0aGlzLmNvbnRlbnQuZ2V0U2VsZWN0ZWRLZXkoKTtcblx0XHR0aGlzLl9nZXRBbGxJbm5lckNvbnRyb2xzKHRydWUpLmZvckVhY2goKG9NYWNyb0FQSSkgPT4ge1xuXHRcdFx0Y29uc3Qgb0ljb25UYWJGaWx0ZXIgPSB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9NYWNyb0FQSSk7XG5cdFx0XHRpZiAob01hY3JvQVBJPy5nZXRDb3VudHMgJiYgKHRoaXMuY291bnRzT3V0RGF0ZWQgfHwgc1NlbGVjdGVkS2V5ID09PSBvSWNvblRhYkZpbHRlcj8uZ2V0S2V5KCkpKSB7XG5cdFx0XHRcdGlmIChvSWNvblRhYkZpbHRlciAmJiBvSWNvblRhYkZpbHRlci5zZXRDb3VudCkge1xuXHRcdFx0XHRcdG9JY29uVGFiRmlsdGVyLnNldENvdW50KFwiLi4uXCIpO1xuXHRcdFx0XHRcdG9NYWNyb0FQSVxuXHRcdFx0XHRcdFx0LmdldENvdW50cygpXG5cdFx0XHRcdFx0XHQudGhlbigoaUNvdW50OiBzdHJpbmcpID0+IG9JY29uVGFiRmlsdGVyLnNldENvdW50KGlDb3VudCB8fCBcIjBcIikpXG5cdFx0XHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIHJlcXVlc3RpbmcgQ291bnRzIGZvciBDb250cm9sXCIsIG9FcnJvcik7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQoZmFsc2UpO1xuXHR9XG5cblx0X3NldElubmVyQmluZGluZyhiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQgPSBmYWxzZSkge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuX2dldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChvTWFjcm9BUEkpID0+IHtcblx0XHRcdFx0Y29uc3Qgb0ljb25UYWJGaWx0ZXIgPSB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9NYWNyb0FQSSk7XG5cdFx0XHRcdGNvbnN0IGJJc1NlbGVjdGVkS2V5ID0gb0ljb25UYWJGaWx0ZXI/LmdldEtleSgpID09PSB0aGlzLmNvbnRlbnQuZ2V0U2VsZWN0ZWRLZXkoKTtcblx0XHRcdFx0Y29uc3Qgc0FjdGlvbiA9IGJJc1NlbGVjdGVkS2V5ICYmICF0aGlzLmdldFByb3BlcnR5KFwiZnJlZXplQ29udGVudFwiKSA/IEJpbmRpbmdBY3Rpb24uUmVzdW1lIDogQmluZGluZ0FjdGlvbi5TdXNwZW5kO1xuXHRcdFx0XHRvTWFjcm9BUElbc0FjdGlvbl0/LihzQWN0aW9uID09PSBCaW5kaW5nQWN0aW9uLlJlc3VtZSA/IGJSZXF1ZXN0SWZOb3RJbml0aWFsaXplZCAmJiBiSXNTZWxlY3RlZEtleSA6IHVuZGVmaW5lZCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRfc2V0VGFiTWVzc2FnZVN0cmlwKHByb3BlcnRpZXM6IE1lc3NhZ2VTdHJpcFByb3BlcnRpZXMpIHtcblx0XHRsZXQgc1RleHQgPSBcIlwiO1xuXHRcdGNvbnN0IGFJZ25vcmVkRmllbGRzID0gcHJvcGVydGllcy5pZ25vcmVkRmllbGRzO1xuXHRcdGNvbnN0IG9GaWx0ZXJDb250cm9sID0gdGhpcy5fZ2V0RmlsdGVyQ29udHJvbCgpIGFzIENvbnRyb2w7XG5cdFx0aWYgKG9GaWx0ZXJDb250cm9sICYmIEFycmF5LmlzQXJyYXkoYUlnbm9yZWRGaWVsZHMpICYmIGFJZ25vcmVkRmllbGRzLmxlbmd0aCA+IDAgJiYgcHJvcGVydGllcy50aXRsZSkge1xuXHRcdFx0Y29uc3QgYUlnbm9yZWRMYWJlbHMgPSBNZXNzYWdlU3RyaXAuZ2V0TGFiZWxzKFxuXHRcdFx0XHRhSWdub3JlZEZpZWxkcyxcblx0XHRcdFx0cHJvcGVydGllcy5lbnRpdHlUeXBlUGF0aCxcblx0XHRcdFx0b0ZpbHRlckNvbnRyb2wsXG5cdFx0XHRcdHByb3BlcnRpZXMucmVzb3VyY2VCdW5kbGVcblx0XHRcdCk7XG5cdFx0XHRzVGV4dCA9IE1lc3NhZ2VTdHJpcC5nZXRUZXh0KGFJZ25vcmVkTGFiZWxzLCBvRmlsdGVyQ29udHJvbCwgcHJvcGVydGllcy50aXRsZSwgRGVsZWdhdGVVdGlsLmdldExvY2FsaXplZFRleHQpO1xuXHRcdFx0cmV0dXJuIHNUZXh0O1xuXHRcdH1cblx0fVxuXG5cdF9vblNlYXJjaChvRXZlbnQ6IENvcmVFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0dGhpcy5zZXRGcmVlemVDb250ZW50KGZhbHNlKTtcblx0XHRpZiAodGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpKSB7XG5cdFx0XHR0aGlzLl91cGRhdGVNdWx0aVRhYk5vdEFwcGxpY2FibGVGaWVsZHModGhpcy5fZ2V0Vmlld0NvbnRyb2xsZXIoKT8ub1Jlc291cmNlQnVuZGxlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gY3VzdG9tIHRhYlxuXHRcdFx0dGhpcy5fcmVmcmVzaEN1c3RvbVZpZXcob0V2ZW50LmdldFBhcmFtZXRlcihcImNvbmRpdGlvbnNcIiksIFwic2VhcmNoXCIpO1xuXHRcdH1cblx0fVxuXG5cdF9vbkZpbHRlckNoYW5nZWQob0V2ZW50OiBDb3JlRXZlbnQpOiB2b2lkIHtcblx0XHRpZiAob0V2ZW50LmdldFBhcmFtZXRlcihcImNvbmRpdGlvbnNCYXNlZFwiKSkge1xuXHRcdFx0dGhpcy5zZXRGcmVlemVDb250ZW50KHRydWUpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBNdWx0aXBsZU1vZGVDb250cm9sO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFrQ0tBLGE7O2FBQUFBLGE7SUFBQUEsYTtJQUFBQSxhO0tBQUFBLGEsS0FBQUEsYTs7TUFNQ0MsbUIsV0FETEMsY0FBYyxDQUFDLDBEQUFELEMsVUFFYkMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFSLENBQUQsQyxVQUdSRCxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFNBQVI7SUFBbUJDLFlBQVksRUFBRTtFQUFqQyxDQUFELEMsVUFHUkYsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxTQUFSO0lBQW1CQyxZQUFZLEVBQUU7RUFBakMsQ0FBRCxDLFVBR1JDLFdBQVcsQ0FBQztJQUFFRixJQUFJLEVBQUUsa0JBQVI7SUFBNEJHLFFBQVEsRUFBRSxLQUF0QztJQUE2Q0MsU0FBUyxFQUFFO0VBQXhELENBQUQsQyxVQUdYQyxXQUFXLENBQUM7SUFBRUwsSUFBSSxFQUFFLHFCQUFSO0lBQStCRyxRQUFRLEVBQUU7RUFBekMsQ0FBRCxDLFVBR1hFLFdBQVcsQ0FBQztJ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