@yoobic/yobi 8.3.0-31 → 8.3.0-34

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 (1160) hide show
  1. package/dist/cjs/{button.factory-0de98db0.js → button.factory-70a142d1.js} +2 -2
  2. package/dist/cjs/{camera-helpers-b017bf7d.js → camera-helpers-2492c44a.js} +3 -3
  3. package/dist/cjs/{chat-helpers-70680c7d.js → chat-helpers-98866a04.js} +2 -2
  4. package/dist/cjs/{common-helpers-03171bbd.js → common-helpers-cdca5902.js} +2 -2
  5. package/dist/cjs/design-system.cjs.js +1 -1
  6. package/dist/cjs/{draggable-dots-helpers-0c6d1f7d.js → draggable-dots-helpers-e9e28b93.js} +2 -2
  7. package/dist/cjs/{draggable-tags-helpers-fd708301.js → draggable-tags-helpers-f2405f71.js} +2 -2
  8. package/dist/cjs/{entities-helpers-298d2620.js → entities-helpers-225c42d5.js} +3 -3
  9. package/dist/cjs/{filters-helpers-b30b3ea7.js → filters-helpers-c869c436.js} +3 -3
  10. package/dist/cjs/{form-choice-helpers-3812b8ab.js → form-choice-helpers-f9a06b33.js} +5 -5
  11. package/dist/cjs/{form-helpers-c6beec00.js → form-helpers-5d960eec.js} +3 -3
  12. package/dist/cjs/{form-input-helpers-425be3ea.js → form-input-helpers-84107b90.js} +4 -4
  13. package/dist/cjs/{form-text-area-helpers-a3ad0e64.js → form-text-area-helpers-8990c355.js} +2 -2
  14. package/dist/cjs/{grid-renderers-8a8c04eb.js → grid-renderers-05b2f69d.js} +7 -7
  15. package/dist/cjs/{incentive-helpers-e5263f62.js → incentive-helpers-2d829892.js} +3 -3
  16. package/dist/cjs/{index-4cc48ba6.js → index-3fe8871a.js} +1 -1
  17. package/dist/cjs/{index-8f48ac42.js → index-486eab7b.js} +13 -0
  18. package/dist/cjs/{index-e3d346bc.js → index-5fbb1164.js} +2 -2
  19. package/dist/cjs/index-666aa0e3.js +4 -0
  20. package/dist/cjs/index-6db7954e.js +4 -0
  21. package/dist/cjs/{index-4bb469be.js → index-af133077.js} +1 -1
  22. package/dist/cjs/{index-7bb35a50.js → index-e1579e58.js} +1 -1
  23. package/dist/cjs/{index-f833fae9.js → index-ee4856bc.js} +3 -3
  24. package/dist/cjs/{index-153c8e28.js → index-f846c933.js} +3 -3
  25. package/dist/cjs/loader.cjs.js +1 -1
  26. package/dist/cjs/{localForage-8e1af981.js → localForage-da7fc314.js} +2 -2
  27. package/dist/cjs/{map-helpers-5cc34278.js → map-helpers-2de0c5ec.js} +2 -2
  28. package/dist/cjs/{mission-locked-banner-f9b8ea67.js → mission-locked-banner-c0aa7aa3.js} +2 -2
  29. package/dist/cjs/{missions-helpers-078bef28.js → missions-helpers-d86ef2b5.js} +4 -4
  30. package/dist/cjs/{modal-animations-ac198cd2.js → modal-animations-a301d389.js} +2 -2
  31. package/dist/cjs/{operation-helpers-9fdb8e12.js → operation-helpers-448cd435.js} +2 -2
  32. package/dist/cjs/{overlays-3336db5b.js → overlays-9322ea2a.js} +3 -3
  33. package/dist/cjs/{overlays-1e1d13ed.js → overlays-cb3d5f1a.js} +2 -2
  34. package/dist/cjs/{swiper-85a04eb4.js → swiper-c54338a8.js} +6 -6
  35. package/dist/cjs/{theme-0c4353c2.js → theme-c9c7eb03.js} +2 -2
  36. package/dist/cjs/{tippy.esm-967e43c8.js → tippy.esm-c65d2e50.js} +1 -1
  37. package/dist/cjs/{video-player-helpers-00c01bb5.js → video-player-helpers-95fabf21.js} +4 -4
  38. package/dist/cjs/{web-ce104380.js → web-4bde2cb3.js} +2 -2
  39. package/dist/cjs/{web-ad37c884.js → web-a8532a83.js} +2 -2
  40. package/dist/cjs/{web-8687e392.js → web-db546270.js} +4 -4
  41. package/dist/cjs/{web-ab21612e.js → web-e1770a24.js} +2 -2
  42. package/dist/cjs/yoo-about.cjs.entry.js +3 -3
  43. package/dist/cjs/yoo-accordion.cjs.entry.js +8 -8
  44. package/dist/cjs/yoo-action-sheet-controller.cjs.entry.js +4 -4
  45. package/dist/cjs/yoo-action-sheet.cjs.entry.js +6 -6
  46. package/dist/cjs/yoo-ag-grid.cjs.entry.js +8 -8
  47. package/dist/cjs/yoo-alert.cjs.entry.js +6 -6
  48. package/dist/cjs/yoo-amap.cjs.entry.js +5 -5
  49. package/dist/cjs/yoo-announcement-heading.cjs.entry.js +16 -7
  50. package/dist/cjs/yoo-app.cjs.entry.js +3 -3
  51. package/dist/cjs/yoo-audio-player.cjs.entry.js +4 -4
  52. package/dist/cjs/yoo-audio-recorder-dialog.cjs.entry.js +4 -4
  53. package/dist/cjs/yoo-avatar.cjs.entry.js +3 -3
  54. package/dist/cjs/yoo-avatars.cjs.entry.js +3 -3
  55. package/dist/cjs/yoo-background.cjs.entry.js +4 -4
  56. package/dist/cjs/yoo-banner.cjs.entry.js +4 -4
  57. package/dist/cjs/yoo-barcode-dialog.cjs.entry.js +3 -3
  58. package/dist/cjs/yoo-battle-count-down.cjs.entry.js +4 -4
  59. package/dist/cjs/yoo-battle-result.cjs.entry.js +3 -3
  60. package/dist/cjs/yoo-battle-user-stats.cjs.entry.js +4 -4
  61. package/dist/cjs/yoo-breadcrumbs.cjs.entry.js +3 -3
  62. package/dist/cjs/yoo-button.cjs.entry.js +4 -4
  63. package/dist/cjs/yoo-calendar.cjs.entry.js +3 -3
  64. package/dist/cjs/yoo-camera-preview-dialog.cjs.entry.js +6 -6
  65. package/dist/cjs/yoo-card-battle-result.cjs.entry.js +3 -3
  66. package/dist/cjs/yoo-card-battle.cjs.entry.js +3 -3
  67. package/dist/cjs/yoo-card-calendar.cjs.entry.js +4 -4
  68. package/dist/cjs/yoo-card-campaign.cjs.entry.js +4 -4
  69. package/dist/cjs/yoo-card-cell.cjs.entry.js +4 -4
  70. package/dist/cjs/yoo-card-chat.cjs.entry.js +3 -3
  71. package/dist/cjs/yoo-card-course-row-compact.cjs.entry.js +3 -3
  72. package/dist/cjs/yoo-card-course-row.cjs.entry.js +5 -5
  73. package/dist/cjs/yoo-card-course.cjs.entry.js +3 -3
  74. package/dist/cjs/yoo-card-feed-row.cjs.entry.js +3 -3
  75. package/dist/cjs/yoo-card-feed.cjs.entry.js +7 -7
  76. package/dist/cjs/yoo-card-file.cjs.entry.js +3 -3
  77. package/dist/cjs/yoo-card-image.cjs.entry.js +3 -3
  78. package/dist/cjs/yoo-card-inbox.cjs.entry.js +3 -3
  79. package/dist/cjs/yoo-card-incentive-rank.cjs.entry.js +3 -3
  80. package/dist/cjs/yoo-card-incentive.cjs.entry.js +5 -5
  81. package/dist/cjs/yoo-card-kanban.cjs.entry.js +4 -4
  82. package/dist/cjs/yoo-card-lesson.cjs.entry.js +4 -4
  83. package/dist/cjs/yoo-card-list-collapsible.cjs.entry.js +4 -4
  84. package/dist/cjs/yoo-card-list-color.cjs.entry.js +3 -3
  85. package/dist/cjs/yoo-card-list-simple.cjs.entry.js +4 -4
  86. package/dist/cjs/yoo-card-list.cjs.entry.js +4 -4
  87. package/dist/cjs/yoo-card-location.cjs.entry.js +3 -3
  88. package/dist/cjs/yoo-card-media.cjs.entry.js +4 -4
  89. package/dist/cjs/yoo-card-menu.cjs.entry.js +4 -4
  90. package/dist/cjs/yoo-card-notification.cjs.entry.js +3 -3
  91. package/dist/cjs/yoo-card-plan.cjs.entry.js +4 -4
  92. package/dist/cjs/yoo-card-progress.cjs.entry.js +3 -3
  93. package/dist/cjs/yoo-card-recommendation.cjs.entry.js +4 -4
  94. package/dist/cjs/yoo-card-sticky.cjs.entry.js +4 -4
  95. package/dist/cjs/yoo-card-video.cjs.entry.js +3 -3
  96. package/dist/cjs/yoo-chart.cjs.entry.js +3 -3
  97. package/dist/cjs/yoo-chat-message-dialog.cjs.entry.js +4 -4
  98. package/dist/cjs/yoo-chat-message-preview.cjs.entry.js +3 -3
  99. package/dist/cjs/yoo-chat-message.cjs.entry.js +5 -5
  100. package/dist/cjs/yoo-chat.cjs.entry.js +7 -7
  101. package/dist/cjs/yoo-collapsible.cjs.entry.js +3 -3
  102. package/dist/cjs/yoo-color-selector.cjs.entry.js +3 -3
  103. package/dist/cjs/yoo-community-detail.cjs.entry.js +4 -4
  104. package/dist/cjs/yoo-context-menu-dialog.cjs.entry.js +4 -4
  105. package/dist/cjs/yoo-context-menu.cjs.entry.js +4 -4
  106. package/dist/cjs/yoo-copyright.cjs.entry.js +3 -3
  107. package/dist/cjs/yoo-count-down.cjs.entry.js +4 -4
  108. package/dist/cjs/yoo-course-info-card.cjs.entry.js +3 -3
  109. package/dist/cjs/yoo-course-summary.cjs.entry.js +4 -4
  110. package/dist/cjs/yoo-dashboard-detail.cjs.entry.js +3 -3
  111. package/dist/cjs/yoo-date.cjs.entry.js +3 -3
  112. package/dist/cjs/yoo-detail-bar.cjs.entry.js +4 -4
  113. package/dist/cjs/yoo-device-list.cjs.entry.js +3 -3
  114. package/dist/cjs/yoo-device.cjs.entry.js +3 -3
  115. package/dist/cjs/yoo-draw-flow.cjs.entry.js +39 -21
  116. package/dist/cjs/yoo-empty-state.cjs.entry.js +1 -1
  117. package/dist/cjs/yoo-entity-query-builder.cjs.entry.js +4 -4
  118. package/dist/cjs/yoo-entity-search-dialog.cjs.entry.js +4 -4
  119. package/dist/cjs/yoo-entity-search-filters.cjs.entry.js +5 -5
  120. package/dist/cjs/yoo-entity-search-recent.cjs.entry.js +3 -3
  121. package/dist/cjs/yoo-entity-search-sorts.cjs.entry.js +4 -4
  122. package/dist/cjs/yoo-entity-search-tags.cjs.entry.js +4 -4
  123. package/dist/cjs/yoo-entity-search.cjs.entry.js +4 -4
  124. package/dist/cjs/yoo-entity.cjs.entry.js +11 -11
  125. package/dist/cjs/yoo-feed-detail.cjs.entry.js +6 -6
  126. package/dist/cjs/yoo-flag.cjs.entry.js +3 -3
  127. package/dist/cjs/yoo-form-audience.cjs.entry.js +5 -5
  128. package/dist/cjs/yoo-form-autocomplete-dialog.cjs.entry.js +4 -4
  129. package/dist/cjs/yoo-form-autocomplete.cjs.entry.js +5 -5
  130. package/dist/cjs/yoo-form-barcode-dialog.cjs.entry.js +4 -4
  131. package/dist/cjs/yoo-form-barcode.cjs.entry.js +5 -5
  132. package/dist/cjs/yoo-form-calendar-dialog.cjs.entry.js +4 -4
  133. package/dist/cjs/yoo-form-capture-map-dialog.cjs.entry.js +3 -3
  134. package/dist/cjs/yoo-form-capture-tag-dialog.cjs.entry.js +4 -4
  135. package/dist/cjs/yoo-form-capture-view-dialog.cjs.entry.js +4 -4
  136. package/dist/cjs/yoo-form-capture-webcam-dialog.cjs.entry.js +5 -5
  137. package/dist/cjs/yoo-form-capture.cjs.entry.js +7 -7
  138. package/dist/cjs/yoo-form-carousel.cjs.entry.js +4 -4
  139. package/dist/cjs/yoo-form-catalog-dialog.cjs.entry.js +4 -4
  140. package/dist/cjs/yoo-form-catalog.cjs.entry.js +5 -5
  141. package/dist/cjs/yoo-form-categorize-words.cjs.entry.js +7 -7
  142. package/dist/cjs/yoo-form-checkbox.cjs.entry.js +5 -5
  143. package/dist/cjs/yoo-form-checklist.cjs.entry.js +5 -5
  144. package/dist/cjs/yoo-form-choice-button.cjs.entry.js +7 -7
  145. package/dist/cjs/yoo-form-choice-card.cjs.entry.js +7 -7
  146. package/dist/cjs/yoo-form-choice-chat.cjs.entry.js +7 -7
  147. package/dist/cjs/yoo-form-choice-image.cjs.entry.js +7 -7
  148. package/dist/cjs/yoo-form-choice-radio.cjs.entry.js +7 -7
  149. package/dist/cjs/yoo-form-color-field.cjs.entry.js +5 -5
  150. package/dist/cjs/yoo-form-color-picker.cjs.entry.js +3 -3
  151. package/dist/cjs/yoo-form-conditions.cjs.entry.js +3 -3
  152. package/dist/cjs/yoo-form-connect.cjs.entry.js +6 -6
  153. package/dist/cjs/yoo-form-creator-block-expandable.cjs.entry.js +6 -6
  154. package/dist/cjs/yoo-form-creator-block-simple.cjs.entry.js +5 -5
  155. package/dist/cjs/yoo-form-creator-condition-block.cjs.entry.js +5 -5
  156. package/dist/cjs/yoo-form-creator-field-selector.cjs.entry.js +10 -6
  157. package/dist/cjs/yoo-form-creator-header.cjs.entry.js +4 -4
  158. package/dist/cjs/yoo-form-creator-live-preview.cjs.entry.js +4 -4
  159. package/dist/cjs/yoo-form-creator-overlay.cjs.entry.js +3 -3
  160. package/dist/cjs/yoo-form-creator-page-card-list.cjs.entry.js +4 -4
  161. package/dist/cjs/yoo-form-creator-page-card.cjs.entry.js +4 -4
  162. package/dist/cjs/yoo-form-creator-score-expandable.cjs.entry.js +5 -5
  163. package/dist/cjs/yoo-form-creator-scoring-card-list.cjs.entry.js +3 -3
  164. package/dist/cjs/yoo-form-creator-scoring-card.cjs.entry.js +3 -3
  165. package/dist/cjs/yoo-form-creator-scoring-quick-setup.cjs.entry.js +3 -3
  166. package/dist/cjs/yoo-form-creator-translate-dialog.cjs.entry.js +4 -4
  167. package/dist/cjs/yoo-form-creator-translate.cjs.entry.js +4 -4
  168. package/dist/cjs/yoo-form-creator-workflow-side-selection.cjs.entry.js +5 -5
  169. package/dist/cjs/yoo-form-creator-workflow-step.cjs.entry.js +4 -4
  170. package/dist/cjs/yoo-form-creator.cjs.entry.js +7 -7
  171. package/dist/cjs/yoo-form-date-time.cjs.entry.js +5 -5
  172. package/dist/cjs/yoo-form-daterange.cjs.entry.js +5 -5
  173. package/dist/cjs/yoo-form-document-dialog.cjs.entry.js +4 -4
  174. package/dist/cjs/yoo-form-document.cjs.entry.js +5 -5
  175. package/dist/cjs/yoo-form-dynamic-dialog.cjs.entry.js +5 -5
  176. package/dist/cjs/yoo-form-dynamic.cjs.entry.js +7 -7
  177. package/dist/cjs/yoo-form-emailreport.cjs.entry.js +5 -5
  178. package/dist/cjs/yoo-form-entity-value-pairs.cjs.entry.js +3 -3
  179. package/dist/cjs/yoo-form-explanation.cjs.entry.js +3 -3
  180. package/dist/cjs/yoo-form-feed-preview.cjs.entry.js +5 -5
  181. package/dist/cjs/yoo-form-feedback.cjs.entry.js +5 -5
  182. package/dist/cjs/yoo-form-filter-date.cjs.entry.js +3 -3
  183. package/dist/cjs/yoo-form-filter-number.cjs.entry.js +3 -3
  184. package/dist/cjs/yoo-form-filter-text.cjs.entry.js +3 -3
  185. package/dist/cjs/yoo-form-filter.cjs.entry.js +4 -4
  186. package/dist/cjs/yoo-form-footer.cjs.entry.js +6 -6
  187. package/dist/cjs/yoo-form-formula.cjs.entry.js +5 -5
  188. package/dist/cjs/yoo-form-hotzones-creator.cjs.entry.js +3 -3
  189. package/dist/cjs/yoo-form-hotzones.cjs.entry.js +7 -7
  190. package/dist/cjs/yoo-form-iframe-dialog.cjs.entry.js +3 -3
  191. package/dist/cjs/yoo-form-image-collection.cjs.entry.js +6 -6
  192. package/dist/cjs/yoo-form-image-tagging-creator.cjs.entry.js +6 -6
  193. package/dist/cjs/yoo-form-image-tagging.cjs.entry.js +9 -9
  194. package/dist/cjs/yoo-form-incentive-participants.cjs.entry.js +1 -1
  195. package/dist/cjs/yoo-form-incentive-targets.cjs.entry.js +5 -5
  196. package/dist/cjs/yoo-form-input-comments.cjs.entry.js +3 -3
  197. package/dist/cjs/yoo-form-input-container.cjs.entry.js +6 -6
  198. package/dist/cjs/yoo-form-input.cjs.entry.js +9 -9
  199. package/dist/cjs/yoo-form-json.cjs.entry.js +6 -6
  200. package/dist/cjs/yoo-form-location.cjs.entry.js +5 -5
  201. package/dist/cjs/yoo-form-missing-word.cjs.entry.js +7 -7
  202. package/dist/cjs/yoo-form-missionfield.cjs.entry.js +5 -5
  203. package/dist/cjs/yoo-form-multi-input.cjs.entry.js +5 -5
  204. package/dist/cjs/yoo-form-number-picker-dialog.cjs.entry.js +3 -3
  205. package/dist/cjs/yoo-form-number-picker.cjs.entry.js +3 -3
  206. package/dist/cjs/yoo-form-opening-hours.cjs.entry.js +3 -3
  207. package/dist/cjs/yoo-form-permissions.cjs.entry.js +4 -4
  208. package/dist/cjs/yoo-form-phone-number.cjs.entry.js +3 -3
  209. package/dist/cjs/yoo-form-plan-assign.cjs.entry.js +5 -5
  210. package/dist/cjs/yoo-form-plan.cjs.entry.js +5 -5
  211. package/dist/cjs/yoo-form-pricecheck.cjs.entry.js +5 -5
  212. package/dist/cjs/yoo-form-product-batch.cjs.entry.js +6 -6
  213. package/dist/cjs/yoo-form-products-sales.cjs.entry.js +5 -5
  214. package/dist/cjs/yoo-form-progress-indicator.cjs.entry.js +4 -4
  215. package/dist/cjs/yoo-form-qrcode.cjs.entry.js +5 -5
  216. package/dist/cjs/yoo-form-query-builder.cjs.entry.js +5 -5
  217. package/dist/cjs/yoo-form-range.cjs.entry.js +5 -5
  218. package/dist/cjs/yoo-form-ranking.cjs.entry.js +6 -6
  219. package/dist/cjs/yoo-form-recap-step.cjs.entry.js +3 -3
  220. package/dist/cjs/yoo-form-recurrence-delay.cjs.entry.js +3 -3
  221. package/dist/cjs/yoo-form-recurrence-preview.cjs.entry.js +4 -4
  222. package/dist/cjs/yoo-form-recurrence.cjs.entry.js +3 -3
  223. package/dist/cjs/yoo-form-reorder.cjs.entry.js +5 -5
  224. package/dist/cjs/yoo-form-scorm.cjs.entry.js +5 -5
  225. package/dist/cjs/yoo-form-shopping.cjs.entry.js +5 -5
  226. package/dist/cjs/yoo-form-signature-pad-dialog.cjs.entry.js +4 -4
  227. package/dist/cjs/yoo-form-signature-pad.cjs.entry.js +5 -5
  228. package/dist/cjs/yoo-form-sorts.cjs.entry.js +5 -5
  229. package/dist/cjs/yoo-form-star-rating.cjs.entry.js +5 -5
  230. package/dist/cjs/yoo-form-stripe-card.cjs.entry.js +5 -5
  231. package/dist/cjs/yoo-form-swipe-cards.cjs.entry.js +6 -6
  232. package/dist/cjs/yoo-form-table.cjs.entry.js +5 -5
  233. package/dist/cjs/yoo-form-task.cjs.entry.js +5 -5
  234. package/dist/cjs/yoo-form-text-area.cjs.entry.js +6 -6
  235. package/dist/cjs/yoo-form-text-editor.cjs.entry.js +7 -7
  236. package/dist/cjs/yoo-form-time.cjs.entry.js +5 -5
  237. package/dist/cjs/yoo-form-timeslots.cjs.entry.js +5 -5
  238. package/dist/cjs/yoo-form-todo-dialog.cjs.entry.js +4 -4
  239. package/dist/cjs/yoo-form-todo-list-dialog.cjs.entry.js +5 -5
  240. package/dist/cjs/yoo-form-todo-list-task.cjs.entry.js +5 -5
  241. package/dist/cjs/yoo-form-todo-list.cjs.entry.js +5 -5
  242. package/dist/cjs/yoo-form-todo-single.cjs.entry.js +5 -5
  243. package/dist/cjs/yoo-form-todo.cjs.entry.js +5 -5
  244. package/dist/cjs/yoo-form-toggle.cjs.entry.js +5 -5
  245. package/dist/cjs/yoo-form-uploader.cjs.entry.js +5 -5
  246. package/dist/cjs/yoo-form-videoplayer.cjs.entry.js +5 -5
  247. package/dist/cjs/yoo-form-wiki.cjs.entry.js +5 -5
  248. package/dist/cjs/yoo-grid-calendar.cjs.entry.js +6 -6
  249. package/dist/cjs/yoo-grid.cjs.entry.js +14 -14
  250. package/dist/cjs/yoo-gridstack.cjs.entry.js +4 -4
  251. package/dist/cjs/yoo-header.cjs.entry.js +4 -4
  252. package/dist/cjs/yoo-healthscore-dialog.cjs.entry.js +4 -4
  253. package/dist/cjs/yoo-healthscore.cjs.entry.js +3 -3
  254. package/dist/cjs/yoo-image-cropper-dialog.cjs.entry.js +3 -3
  255. package/dist/cjs/yoo-img.cjs.entry.js +5 -5
  256. package/dist/cjs/yoo-incentive-detail.cjs.entry.js +5 -5
  257. package/dist/cjs/yoo-input-bar.cjs.entry.js +1755 -1950
  258. package/dist/cjs/yoo-ion-alert-controller.cjs.entry.js +4 -4
  259. package/dist/cjs/yoo-ion-content.cjs.entry.js +3 -3
  260. package/dist/cjs/yoo-ion-footer.cjs.entry.js +4 -4
  261. package/dist/cjs/yoo-ion-infinite-scroll-content.cjs.entry.js +3 -3
  262. package/dist/cjs/yoo-ion-infinite-scroll.cjs.entry.js +3 -3
  263. package/dist/cjs/yoo-ion-item-divider.cjs.entry.js +5 -5
  264. package/dist/cjs/yoo-ion-item-options.cjs.entry.js +4 -4
  265. package/dist/cjs/yoo-ion-item-sliding.cjs.entry.js +5 -5
  266. package/dist/cjs/yoo-ion-item.cjs.entry.js +5 -5
  267. package/dist/cjs/yoo-ion-list.cjs.entry.js +4 -4
  268. package/dist/cjs/yoo-ion-modal-controller.cjs.entry.js +4 -4
  269. package/dist/cjs/yoo-ion-modal.cjs.entry.js +9 -9
  270. package/dist/cjs/yoo-ion-refresher.cjs.entry.js +4 -4
  271. package/dist/cjs/yoo-ion-scroll.cjs.entry.js +4 -4
  272. package/dist/cjs/yoo-ion-slide.cjs.entry.js +4 -4
  273. package/dist/cjs/{yoo-ion-slides-0c6323bf.js → yoo-ion-slides-d17a56d8.js} +25 -22
  274. package/dist/cjs/yoo-ion-slides.cjs.entry.js +6 -6
  275. package/dist/cjs/yoo-ion-toast-controller.cjs.entry.js +4 -4
  276. package/dist/cjs/yoo-kanban.cjs.entry.js +4 -4
  277. package/dist/cjs/yoo-kpi-card.cjs.entry.js +3 -3
  278. package/dist/cjs/yoo-kpi-container.cjs.entry.js +4 -4
  279. package/dist/cjs/yoo-kpi-external.cjs.entry.js +3 -3
  280. package/dist/cjs/yoo-kpi.cjs.entry.js +3 -3
  281. package/dist/cjs/yoo-layout-sections.cjs.entry.js +3 -3
  282. package/dist/cjs/yoo-layout-tabs.cjs.entry.js +3 -3
  283. package/dist/cjs/yoo-layout-two-columns.cjs.entry.js +3 -3
  284. package/dist/cjs/yoo-lesson-detail-card.cjs.entry.js +3 -3
  285. package/dist/cjs/yoo-lesson-detail.cjs.entry.js +4 -4
  286. package/dist/cjs/yoo-lesson-heading.cjs.entry.js +4 -4
  287. package/dist/cjs/yoo-lesson-highscores.cjs.entry.js +3 -3
  288. package/dist/cjs/yoo-lesson-question-result.cjs.entry.js +3 -3
  289. package/dist/cjs/yoo-line-state.cjs.entry.js +1 -1
  290. package/dist/cjs/yoo-links-menu.cjs.entry.js +3 -3
  291. package/dist/cjs/yoo-links-preview.cjs.entry.js +5 -5
  292. package/dist/cjs/yoo-loader.cjs.entry.js +3 -3
  293. package/dist/cjs/yoo-location-info.cjs.entry.js +3 -3
  294. package/dist/cjs/yoo-location-map.cjs.entry.js +4 -4
  295. package/dist/cjs/yoo-login.cjs.entry.js +3 -3
  296. package/dist/cjs/yoo-lottie.cjs.entry.js +3 -3
  297. package/dist/cjs/yoo-map-gl.cjs.entry.js +4 -4
  298. package/dist/cjs/yoo-map-js.cjs.entry.js +5 -5
  299. package/dist/cjs/yoo-map-legend.cjs.entry.js +5 -5
  300. package/dist/cjs/yoo-map.cjs.entry.js +4 -4
  301. package/dist/cjs/yoo-markdown.cjs.entry.js +5 -5
  302. package/dist/cjs/yoo-memo-list-dialog.cjs.entry.js +3 -3
  303. package/dist/cjs/yoo-memo-list.cjs.entry.js +3 -3
  304. package/dist/cjs/yoo-mention-tag.cjs.entry.js +3 -3
  305. package/dist/cjs/yoo-mission-details.cjs.entry.js +5 -5
  306. package/dist/cjs/yoo-mission-heading.cjs.entry.js +7 -7
  307. package/dist/cjs/yoo-mission-score.cjs.entry.js +3 -3
  308. package/dist/cjs/yoo-mission-todo.cjs.entry.js +4 -4
  309. package/dist/cjs/yoo-mobile-tabbar-more.cjs.entry.js +3 -3
  310. package/dist/cjs/yoo-mobile-tabbar.cjs.entry.js +4 -4
  311. package/dist/cjs/yoo-modal.cjs.entry.js +4 -4
  312. package/dist/cjs/yoo-navbar.cjs.entry.js +4 -4
  313. package/dist/cjs/yoo-numbers-display.cjs.entry.js +4 -4
  314. package/dist/cjs/yoo-photo-editor.cjs.entry.js +8 -8
  315. package/dist/cjs/yoo-pivot-table.cjs.entry.js +8 -8
  316. package/dist/cjs/yoo-podium.cjs.entry.js +3 -3
  317. package/dist/cjs/yoo-profile-list.cjs.entry.js +3 -3
  318. package/dist/cjs/yoo-profile-summary.cjs.entry.js +4 -4
  319. package/dist/cjs/yoo-progress-bar.cjs.entry.js +3 -3
  320. package/dist/cjs/yoo-progress-loader.cjs.entry.js +3 -3
  321. package/dist/cjs/yoo-progress-recap.cjs.entry.js +3 -3
  322. package/dist/cjs/yoo-property-card.cjs.entry.js +4 -4
  323. package/dist/cjs/yoo-range.cjs.entry.js +5 -5
  324. package/dist/cjs/yoo-rating.cjs.entry.js +3 -3
  325. package/dist/cjs/yoo-reset-password.cjs.entry.js +3 -3
  326. package/dist/cjs/yoo-result-dialog.cjs.entry.js +4 -4
  327. package/dist/cjs/yoo-reveal.cjs.entry.js +3 -3
  328. package/dist/cjs/yoo-salesai-formula.cjs.entry.js +3 -3
  329. package/dist/cjs/yoo-scandit.cjs.entry.js +4 -4
  330. package/dist/cjs/yoo-scratch-card-creator.cjs.entry.js +3 -3
  331. package/dist/cjs/yoo-scratch-card.cjs.entry.js +5 -5
  332. package/dist/cjs/yoo-section-list.cjs.entry.js +3 -3
  333. package/dist/cjs/yoo-segmented-control.cjs.entry.js +3 -3
  334. package/dist/cjs/yoo-side-menu-tree.cjs.entry.js +3 -3
  335. package/dist/cjs/yoo-side-menu.cjs.entry.js +5 -4
  336. package/dist/cjs/yoo-slides-media.cjs.entry.js +6 -6
  337. package/dist/cjs/yoo-start-meeting-popup.cjs.entry.js +4 -4
  338. package/dist/cjs/yoo-tabs.cjs.entry.js +3 -3
  339. package/dist/cjs/yoo-text-sequence.cjs.entry.js +4 -4
  340. package/dist/cjs/yoo-text.cjs.entry.js +4 -4
  341. package/dist/cjs/yoo-toast.cjs.entry.js +5 -5
  342. package/dist/cjs/yoo-tooltip.cjs.entry.js +6 -6
  343. package/dist/cjs/yoo-truncate.cjs.entry.js +4 -4
  344. package/dist/cjs/yoo-truncated-line.cjs.entry.js +3 -3
  345. package/dist/cjs/yoo-user-detail.cjs.entry.js +3 -3
  346. package/dist/cjs/yoo-user-profile.cjs.entry.js +5 -5
  347. package/dist/cjs/yoo-user-wizard.cjs.entry.js +4 -4
  348. package/dist/cjs/yoo-videoplayer-core.cjs.entry.js +4 -4
  349. package/dist/cjs/yoo-videoplayer-dailymotion.cjs.entry.js +5 -5
  350. package/dist/cjs/yoo-videoplayer-videojs.cjs.entry.js +6 -6
  351. package/dist/cjs/yoo-videoplayer-vimeo.cjs.entry.js +5 -5
  352. package/dist/cjs/yoo-videoplayer-youtube.cjs.entry.js +5 -5
  353. package/dist/cjs/yoo-virtual-item.cjs.entry.js +3 -3
  354. package/dist/cjs/yoo-virtual-scroll.cjs.entry.js +4 -4
  355. package/dist/cjs/yoo-waitlist-location-result.cjs.entry.js +3 -3
  356. package/dist/cjs/yoo-waitlist-location-start.cjs.entry.js +3 -3
  357. package/dist/cjs/yoo-walkthrough.cjs.entry.js +3 -3
  358. package/dist/cjs/yoo-web-menu.cjs.entry.js +4 -4
  359. package/dist/cjs/yoo-webcam.cjs.entry.js +3 -3
  360. package/dist/cjs/yoo-welcome-banner.cjs.entry.js +4 -4
  361. package/dist/cjs/yoo-widget-chart.cjs.entry.js +3 -3
  362. package/dist/cjs/yoo-widget-small-size.cjs.entry.js +3 -3
  363. package/dist/cjs/yoo-widget-tab.cjs.entry.js +3 -3
  364. package/dist/cjs/yoo-widget-tile.cjs.entry.js +3 -3
  365. package/dist/cjs/yoo-workflow-state-dialog.cjs.entry.js +3 -3
  366. package/dist/cjs/yoo-workflow-state.cjs.entry.js +3 -3
  367. package/dist/cjs/yoo-workflow.cjs.entry.js +6 -6
  368. package/dist/cjs/yoo-zebra.cjs.entry.js +3 -3
  369. package/dist/cjs/yoo-zoom.cjs.entry.js +3 -3
  370. package/dist/collection/components/2.molecules/accordion/accordion.js +2 -1
  371. package/dist/collection/components/2.molecules/modal/modal.js +3 -2
  372. package/dist/collection/components/2.molecules/scroll-to-button/scroll-to-button.js +1 -1
  373. package/dist/collection/components/2.molecules/slide/slide.css +2 -2
  374. package/dist/collection/components/2.molecules/slides/slides.css +2 -2
  375. package/dist/collection/components/entities/card-placeholder/card-placeholder.js +1 -1
  376. package/dist/collection/components/entities/entity/entity.js +1 -1
  377. package/dist/collection/components/form/form-autocomplete/form-autocomplete.js +2 -2
  378. package/dist/collection/components/form/form-autocomplete-dialog/form-autocomplete-dialog.js +1 -1
  379. package/dist/collection/components/form/form-entity-value-pairs/form-entity-value-pairs.js +1 -1
  380. package/dist/collection/components/form/form-table/form-table.js +1 -1
  381. package/dist/collection/components/form-creator/form-creator-block-expandable/form-creator-block-expandable.css +58 -61
  382. package/dist/collection/components/form-creator/form-creator-block-simple/form-creator-block-simple.css +6 -9
  383. package/dist/collection/components/form-creator/form-creator-condition-block/form-creator-condition-block.css +6 -9
  384. package/dist/collection/components/form-creator/form-creator-field-selector/form-creator-field-selector.js +43 -2
  385. package/dist/collection/components/form-creator/form-creator-score-expandable/form-creator-score-expandable.css +40 -34
  386. package/dist/collection/components/grid/grid/grid.js +1 -1
  387. package/dist/collection/components/grid/grid-calendar/grid-calendar.js +1 -1
  388. package/dist/collection/components/grid/kanban/kanban.js +1 -1
  389. package/dist/collection/feature-communicate/feed/card-feed/default/card-feed.js +1 -1
  390. package/dist/collection/feature-operate/mission/announcement-heading/announcement-heading.css +19 -4
  391. package/dist/collection/feature-operate/mission/announcement-heading/announcement-heading.js +14 -1
  392. package/dist/collection/feature-operate/mission/helpers/missions-helpers.js +2 -2
  393. package/dist/collection/feature-operate/mission/mission-heading/mission-heading.css +3 -3
  394. package/dist/collection/feature-platform/admin/draw-flow/draw-flow.css +155 -76
  395. package/dist/collection/feature-platform/admin/draw-flow/draw-flow.js +79 -31
  396. package/dist/collection/feature-platform/app/app/app.js +1 -1
  397. package/dist/collection/feature-platform/menu/side-menu/side-menu.js +2 -1
  398. package/dist/design-system/{button.factory-548f00ff.js → button.factory-ce9f5896.js} +2 -2
  399. package/dist/design-system/{camera-helpers-b16f47f2.js → camera-helpers-e374d2a7.js} +3 -3
  400. package/dist/{esm/chat-helpers-e8a3a6e2.js → design-system/chat-helpers-e72f7f94.js} +2 -2
  401. package/dist/{esm/common-helpers-641f84cf.js → design-system/common-helpers-7572b8db.js} +2 -2
  402. package/dist/design-system/design-system.esm.js +1 -1
  403. package/dist/design-system/{draggable-dots-helpers-79bf1f7a.js → draggable-dots-helpers-94a9e4dd.js} +2 -2
  404. package/dist/{esm/draggable-tags-helpers-c1097a8c.js → design-system/draggable-tags-helpers-a2d4d574.js} +2 -2
  405. package/dist/{esm/entities-helpers-2a80a41c.js → design-system/entities-helpers-a9eca0ab.js} +3 -3
  406. package/dist/design-system/{filters-helpers-3305ff76.js → filters-helpers-7fdfdc59.js} +3 -3
  407. package/dist/design-system/{form-choice-helpers-49666400.js → form-choice-helpers-a860db21.js} +5 -5
  408. package/dist/{esm/form-helpers-4ff88a48.js → design-system/form-helpers-db554989.js} +3 -3
  409. package/dist/{esm/form-input-helpers-7ecb9d6b.js → design-system/form-input-helpers-fcc6367d.js} +4 -4
  410. package/dist/design-system/{form-text-area-helpers-f1a0044f.js → form-text-area-helpers-7e0482b0.js} +2 -2
  411. package/dist/design-system/{grid-renderers-15a38038.js → grid-renderers-e277f1e5.js} +7 -7
  412. package/dist/{esm/incentive-helpers-9b9177ec.js → design-system/incentive-helpers-cd9067be.js} +3 -3
  413. package/dist/{esm/index-181fe32c.js → design-system/index-01b59ca9.js} +3 -3
  414. package/dist/{esm/index-77dfdf51.js → design-system/index-0364dfe5.js} +1 -1
  415. package/dist/{esm/index-1c9c7197.js → design-system/index-2e4cfd24.js} +3 -3
  416. package/dist/design-system/{index-51fc9b51.js → index-40df0cc2.js} +2 -2
  417. package/dist/{esm/index-673b1a64.js → design-system/index-572f0595.js} +1 -1
  418. package/dist/design-system/{index-c79e2959.js → index-76818c72.js} +13 -1
  419. package/dist/design-system/index-830cded5.js +1 -0
  420. package/dist/design-system/index-85ea6716.js +1 -0
  421. package/dist/{esm/index-4495b427.js → design-system/index-bfa34b4f.js} +1 -1
  422. package/dist/{esm/localForage-1804a51c.js → design-system/localForage-555cba17.js} +2 -2
  423. package/dist/{esm/map-helpers-6ffcb9df.js → design-system/map-helpers-e1d37c2a.js} +2 -2
  424. package/dist/design-system/{mission-locked-banner-9be5e25c.js → mission-locked-banner-3a9216cc.js} +2 -2
  425. package/dist/design-system/{missions-helpers-f4a522bb.js → missions-helpers-cc964ca1.js} +4 -4
  426. package/dist/design-system/{modal-animations-89e5badf.js → modal-animations-7da0af0b.js} +2 -2
  427. package/dist/{esm/operation-helpers-888900f4.js → design-system/operation-helpers-55154d6d.js} +2 -2
  428. package/dist/design-system/{overlays-8ed6c5e4.js → overlays-8db3bed4.js} +3 -3
  429. package/dist/{esm/overlays-e3cdcf07.js → design-system/overlays-c2a9d2bf.js} +2 -2
  430. package/dist/design-system/swiper-cf1b8880.js +12 -0
  431. package/dist/{esm/theme-e481c7a9.js → design-system/theme-d5c48d1b.js} +2 -2
  432. package/dist/{esm/tippy.esm-0dbfaeec.js → design-system/tippy.esm-4ea96ba2.js} +1 -1
  433. package/dist/design-system/{video-player-helpers-ce9c661b.js → video-player-helpers-36fabc6d.js} +4 -4
  434. package/dist/{esm/web-3dd9ef35.js → design-system/web-093990a5.js} +2 -2
  435. package/dist/{esm/web-9ecc48b4.js → design-system/web-0daf06e2.js} +4 -4
  436. package/dist/{esm/web-4475031c.js → design-system/web-9cff6eb3.js} +2 -2
  437. package/dist/{esm/web-ce74eca3.js → design-system/web-cdbaa3d1.js} +2 -2
  438. package/dist/design-system/yoo-about.entry.js +3 -3
  439. package/dist/design-system/yoo-accordion.entry.js +8 -8
  440. package/dist/design-system/yoo-action-sheet-controller.entry.js +4 -4
  441. package/dist/design-system/yoo-action-sheet.entry.js +6 -6
  442. package/dist/design-system/yoo-ag-grid.entry.js +8 -8
  443. package/dist/design-system/yoo-alert.entry.js +6 -6
  444. package/dist/design-system/yoo-amap.entry.js +5 -5
  445. package/dist/design-system/yoo-announcement-heading.entry.js +16 -7
  446. package/dist/design-system/yoo-app.entry.js +3 -3
  447. package/dist/design-system/yoo-audio-player.entry.js +4 -4
  448. package/dist/design-system/yoo-audio-recorder-dialog.entry.js +4 -4
  449. package/dist/design-system/yoo-avatar.entry.js +3 -3
  450. package/dist/design-system/yoo-avatars.entry.js +3 -3
  451. package/dist/design-system/yoo-background.entry.js +4 -4
  452. package/dist/design-system/yoo-banner.entry.js +4 -4
  453. package/dist/design-system/yoo-barcode-dialog.entry.js +3 -3
  454. package/dist/design-system/yoo-battle-count-down.entry.js +4 -4
  455. package/dist/design-system/yoo-battle-result.entry.js +3 -3
  456. package/dist/design-system/yoo-battle-user-stats.entry.js +4 -4
  457. package/dist/design-system/yoo-breadcrumbs.entry.js +3 -3
  458. package/dist/design-system/yoo-button.entry.js +4 -4
  459. package/dist/design-system/yoo-calendar.entry.js +3 -3
  460. package/dist/design-system/yoo-camera-preview-dialog.entry.js +6 -6
  461. package/dist/design-system/yoo-card-battle-result.entry.js +3 -3
  462. package/dist/design-system/yoo-card-battle.entry.js +3 -3
  463. package/dist/design-system/yoo-card-calendar.entry.js +4 -4
  464. package/dist/design-system/yoo-card-campaign.entry.js +4 -4
  465. package/dist/design-system/yoo-card-cell.entry.js +4 -4
  466. package/dist/design-system/yoo-card-chat.entry.js +3 -3
  467. package/dist/design-system/yoo-card-course-row-compact.entry.js +3 -3
  468. package/dist/design-system/yoo-card-course-row.entry.js +5 -5
  469. package/dist/design-system/yoo-card-course.entry.js +3 -3
  470. package/dist/design-system/yoo-card-feed-row.entry.js +3 -3
  471. package/dist/design-system/yoo-card-feed.entry.js +7 -7
  472. package/dist/design-system/yoo-card-file.entry.js +3 -3
  473. package/dist/design-system/yoo-card-image.entry.js +3 -3
  474. package/dist/design-system/yoo-card-inbox.entry.js +3 -3
  475. package/dist/design-system/yoo-card-incentive-rank.entry.js +3 -3
  476. package/dist/design-system/yoo-card-incentive.entry.js +5 -5
  477. package/dist/design-system/yoo-card-kanban.entry.js +4 -4
  478. package/dist/design-system/yoo-card-lesson.entry.js +4 -4
  479. package/dist/design-system/yoo-card-list-collapsible.entry.js +4 -4
  480. package/dist/design-system/yoo-card-list-color.entry.js +3 -3
  481. package/dist/design-system/yoo-card-list-simple.entry.js +4 -4
  482. package/dist/design-system/yoo-card-list.entry.js +4 -4
  483. package/dist/design-system/yoo-card-location.entry.js +3 -3
  484. package/dist/design-system/yoo-card-media.entry.js +4 -4
  485. package/dist/design-system/yoo-card-menu.entry.js +4 -4
  486. package/dist/design-system/yoo-card-notification.entry.js +3 -3
  487. package/dist/design-system/yoo-card-plan.entry.js +4 -4
  488. package/dist/design-system/yoo-card-progress.entry.js +3 -3
  489. package/dist/design-system/yoo-card-recommendation.entry.js +4 -4
  490. package/dist/design-system/yoo-card-sticky.entry.js +4 -4
  491. package/dist/design-system/yoo-card-video.entry.js +3 -3
  492. package/dist/design-system/yoo-chart.entry.js +3 -3
  493. package/dist/design-system/yoo-chat-message-dialog.entry.js +4 -4
  494. package/dist/design-system/yoo-chat-message-preview.entry.js +3 -3
  495. package/dist/design-system/yoo-chat-message.entry.js +5 -5
  496. package/dist/design-system/yoo-chat.entry.js +7 -7
  497. package/dist/design-system/yoo-collapsible.entry.js +3 -3
  498. package/dist/design-system/yoo-color-selector.entry.js +3 -3
  499. package/dist/design-system/yoo-community-detail.entry.js +4 -4
  500. package/dist/design-system/yoo-context-menu-dialog.entry.js +4 -4
  501. package/dist/design-system/yoo-context-menu.entry.js +4 -4
  502. package/dist/design-system/yoo-copyright.entry.js +3 -3
  503. package/dist/design-system/yoo-count-down.entry.js +4 -4
  504. package/dist/design-system/yoo-course-info-card.entry.js +3 -3
  505. package/dist/design-system/yoo-course-summary.entry.js +4 -4
  506. package/dist/design-system/yoo-dashboard-detail.entry.js +3 -3
  507. package/dist/design-system/yoo-date.entry.js +3 -3
  508. package/dist/design-system/yoo-detail-bar.entry.js +4 -4
  509. package/dist/design-system/yoo-device-list.entry.js +3 -3
  510. package/dist/design-system/yoo-device.entry.js +3 -3
  511. package/dist/design-system/yoo-draw-flow.entry.js +39 -21
  512. package/dist/design-system/yoo-empty-state.entry.js +1 -1
  513. package/dist/design-system/yoo-entity-query-builder.entry.js +4 -4
  514. package/dist/design-system/yoo-entity-search-dialog.entry.js +4 -4
  515. package/dist/design-system/yoo-entity-search-filters.entry.js +5 -5
  516. package/dist/design-system/yoo-entity-search-recent.entry.js +3 -3
  517. package/dist/design-system/yoo-entity-search-sorts.entry.js +4 -4
  518. package/dist/design-system/yoo-entity-search-tags.entry.js +4 -4
  519. package/dist/design-system/yoo-entity-search.entry.js +4 -4
  520. package/dist/design-system/yoo-entity.entry.js +11 -11
  521. package/dist/design-system/yoo-feed-detail.entry.js +6 -6
  522. package/dist/design-system/yoo-flag.entry.js +3 -3
  523. package/dist/design-system/yoo-form-audience.entry.js +5 -5
  524. package/dist/design-system/yoo-form-autocomplete-dialog.entry.js +4 -4
  525. package/dist/design-system/yoo-form-autocomplete.entry.js +5 -5
  526. package/dist/design-system/yoo-form-barcode-dialog.entry.js +4 -4
  527. package/dist/design-system/yoo-form-barcode.entry.js +5 -5
  528. package/dist/design-system/yoo-form-calendar-dialog.entry.js +4 -4
  529. package/dist/design-system/yoo-form-capture-map-dialog.entry.js +3 -3
  530. package/dist/design-system/yoo-form-capture-tag-dialog.entry.js +4 -4
  531. package/dist/design-system/yoo-form-capture-view-dialog.entry.js +4 -4
  532. package/dist/design-system/yoo-form-capture-webcam-dialog.entry.js +5 -5
  533. package/dist/design-system/yoo-form-capture.entry.js +7 -7
  534. package/dist/design-system/yoo-form-carousel.entry.js +4 -4
  535. package/dist/design-system/yoo-form-catalog-dialog.entry.js +4 -4
  536. package/dist/design-system/yoo-form-catalog.entry.js +5 -5
  537. package/dist/design-system/yoo-form-categorize-words.entry.js +7 -7
  538. package/dist/design-system/yoo-form-checkbox.entry.js +5 -5
  539. package/dist/design-system/yoo-form-checklist.entry.js +5 -5
  540. package/dist/design-system/yoo-form-choice-button.entry.js +7 -7
  541. package/dist/design-system/yoo-form-choice-card.entry.js +7 -7
  542. package/dist/design-system/yoo-form-choice-chat.entry.js +7 -7
  543. package/dist/design-system/yoo-form-choice-image.entry.js +7 -7
  544. package/dist/design-system/yoo-form-choice-radio.entry.js +7 -7
  545. package/dist/design-system/yoo-form-color-field.entry.js +5 -5
  546. package/dist/design-system/yoo-form-color-picker.entry.js +3 -3
  547. package/dist/design-system/yoo-form-conditions.entry.js +3 -3
  548. package/dist/design-system/yoo-form-connect.entry.js +6 -6
  549. package/dist/design-system/yoo-form-creator-block-expandable.entry.js +6 -6
  550. package/dist/design-system/yoo-form-creator-block-simple.entry.js +5 -5
  551. package/dist/design-system/yoo-form-creator-condition-block.entry.js +5 -5
  552. package/dist/design-system/yoo-form-creator-field-selector.entry.js +10 -6
  553. package/dist/design-system/yoo-form-creator-header.entry.js +4 -4
  554. package/dist/design-system/yoo-form-creator-live-preview.entry.js +4 -4
  555. package/dist/design-system/yoo-form-creator-overlay.entry.js +3 -3
  556. package/dist/design-system/yoo-form-creator-page-card-list.entry.js +4 -4
  557. package/dist/design-system/yoo-form-creator-page-card.entry.js +4 -4
  558. package/dist/design-system/yoo-form-creator-score-expandable.entry.js +5 -5
  559. package/dist/design-system/yoo-form-creator-scoring-card-list.entry.js +3 -3
  560. package/dist/design-system/yoo-form-creator-scoring-card.entry.js +3 -3
  561. package/dist/design-system/yoo-form-creator-scoring-quick-setup.entry.js +3 -3
  562. package/dist/design-system/yoo-form-creator-translate-dialog.entry.js +4 -4
  563. package/dist/design-system/yoo-form-creator-translate.entry.js +4 -4
  564. package/dist/design-system/yoo-form-creator-workflow-side-selection.entry.js +5 -5
  565. package/dist/design-system/yoo-form-creator-workflow-step.entry.js +4 -4
  566. package/dist/design-system/yoo-form-creator.entry.js +7 -7
  567. package/dist/design-system/yoo-form-date-time.entry.js +5 -5
  568. package/dist/design-system/yoo-form-daterange.entry.js +5 -5
  569. package/dist/design-system/yoo-form-document-dialog.entry.js +4 -4
  570. package/dist/design-system/yoo-form-document.entry.js +5 -5
  571. package/dist/design-system/yoo-form-dynamic-dialog.entry.js +5 -5
  572. package/dist/design-system/yoo-form-dynamic.entry.js +7 -7
  573. package/dist/design-system/yoo-form-emailreport.entry.js +5 -5
  574. package/dist/design-system/yoo-form-entity-value-pairs.entry.js +3 -3
  575. package/dist/design-system/yoo-form-explanation.entry.js +3 -3
  576. package/dist/design-system/yoo-form-feed-preview.entry.js +5 -5
  577. package/dist/design-system/yoo-form-feedback.entry.js +5 -5
  578. package/dist/design-system/yoo-form-filter-date.entry.js +3 -3
  579. package/dist/design-system/yoo-form-filter-number.entry.js +3 -3
  580. package/dist/design-system/yoo-form-filter-text.entry.js +3 -3
  581. package/dist/design-system/yoo-form-filter.entry.js +4 -4
  582. package/dist/design-system/yoo-form-footer.entry.js +6 -6
  583. package/dist/design-system/yoo-form-formula.entry.js +5 -5
  584. package/dist/design-system/yoo-form-hotzones-creator.entry.js +3 -3
  585. package/dist/design-system/yoo-form-hotzones.entry.js +7 -7
  586. package/dist/design-system/yoo-form-iframe-dialog.entry.js +3 -3
  587. package/dist/design-system/yoo-form-image-collection.entry.js +6 -6
  588. package/dist/design-system/yoo-form-image-tagging-creator.entry.js +6 -6
  589. package/dist/design-system/yoo-form-image-tagging.entry.js +9 -9
  590. package/dist/design-system/yoo-form-incentive-participants.entry.js +1 -1
  591. package/dist/design-system/yoo-form-incentive-targets.entry.js +5 -5
  592. package/dist/design-system/yoo-form-input-comments.entry.js +3 -3
  593. package/dist/design-system/yoo-form-input-container.entry.js +6 -6
  594. package/dist/design-system/yoo-form-input.entry.js +9 -9
  595. package/dist/design-system/yoo-form-json.entry.js +6 -6
  596. package/dist/design-system/yoo-form-location.entry.js +5 -5
  597. package/dist/design-system/yoo-form-missing-word.entry.js +7 -7
  598. package/dist/design-system/yoo-form-missionfield.entry.js +5 -5
  599. package/dist/design-system/yoo-form-multi-input.entry.js +5 -5
  600. package/dist/design-system/yoo-form-number-picker-dialog.entry.js +3 -3
  601. package/dist/design-system/yoo-form-number-picker.entry.js +3 -3
  602. package/dist/design-system/yoo-form-opening-hours.entry.js +3 -3
  603. package/dist/design-system/yoo-form-permissions.entry.js +4 -4
  604. package/dist/design-system/yoo-form-phone-number.entry.js +3 -3
  605. package/dist/design-system/yoo-form-plan-assign.entry.js +5 -5
  606. package/dist/design-system/yoo-form-plan.entry.js +5 -5
  607. package/dist/design-system/yoo-form-pricecheck.entry.js +5 -5
  608. package/dist/design-system/yoo-form-product-batch.entry.js +6 -6
  609. package/dist/design-system/yoo-form-products-sales.entry.js +5 -5
  610. package/dist/design-system/yoo-form-progress-indicator.entry.js +4 -4
  611. package/dist/design-system/yoo-form-qrcode.entry.js +5 -5
  612. package/dist/design-system/yoo-form-query-builder.entry.js +5 -5
  613. package/dist/design-system/yoo-form-range.entry.js +5 -5
  614. package/dist/design-system/yoo-form-ranking.entry.js +6 -6
  615. package/dist/design-system/yoo-form-recap-step.entry.js +3 -3
  616. package/dist/design-system/yoo-form-recurrence-delay.entry.js +3 -3
  617. package/dist/design-system/yoo-form-recurrence-preview.entry.js +4 -4
  618. package/dist/design-system/yoo-form-recurrence.entry.js +3 -3
  619. package/dist/design-system/yoo-form-reorder.entry.js +5 -5
  620. package/dist/design-system/yoo-form-scorm.entry.js +5 -5
  621. package/dist/design-system/yoo-form-shopping.entry.js +5 -5
  622. package/dist/design-system/yoo-form-signature-pad-dialog.entry.js +4 -4
  623. package/dist/design-system/yoo-form-signature-pad.entry.js +5 -5
  624. package/dist/design-system/yoo-form-sorts.entry.js +5 -5
  625. package/dist/design-system/yoo-form-star-rating.entry.js +5 -5
  626. package/dist/design-system/yoo-form-stripe-card.entry.js +5 -5
  627. package/dist/design-system/yoo-form-swipe-cards.entry.js +6 -6
  628. package/dist/design-system/yoo-form-table.entry.js +5 -5
  629. package/dist/design-system/yoo-form-task.entry.js +5 -5
  630. package/dist/design-system/yoo-form-text-area.entry.js +6 -6
  631. package/dist/design-system/yoo-form-text-editor.entry.js +7 -7
  632. package/dist/design-system/yoo-form-time.entry.js +5 -5
  633. package/dist/design-system/yoo-form-timeslots.entry.js +5 -5
  634. package/dist/design-system/yoo-form-todo-dialog.entry.js +4 -4
  635. package/dist/design-system/yoo-form-todo-list-dialog.entry.js +5 -5
  636. package/dist/design-system/yoo-form-todo-list-task.entry.js +5 -5
  637. package/dist/design-system/yoo-form-todo-list.entry.js +5 -5
  638. package/dist/design-system/yoo-form-todo-single.entry.js +5 -5
  639. package/dist/design-system/yoo-form-todo.entry.js +5 -5
  640. package/dist/design-system/yoo-form-toggle.entry.js +5 -5
  641. package/dist/design-system/yoo-form-uploader.entry.js +5 -5
  642. package/dist/design-system/yoo-form-videoplayer.entry.js +5 -5
  643. package/dist/design-system/yoo-form-wiki.entry.js +5 -5
  644. package/dist/design-system/yoo-grid-calendar.entry.js +6 -6
  645. package/dist/design-system/yoo-grid.entry.js +14 -14
  646. package/dist/design-system/yoo-gridstack.entry.js +4 -4
  647. package/dist/design-system/yoo-header.entry.js +4 -4
  648. package/dist/design-system/yoo-healthscore-dialog.entry.js +4 -4
  649. package/dist/design-system/yoo-healthscore.entry.js +3 -3
  650. package/dist/design-system/yoo-image-cropper-dialog.entry.js +3 -3
  651. package/dist/design-system/yoo-img.entry.js +5 -5
  652. package/dist/design-system/yoo-incentive-detail.entry.js +5 -5
  653. package/dist/design-system/yoo-input-bar.entry.js +1755 -1950
  654. package/dist/design-system/yoo-ion-alert-controller.entry.js +4 -4
  655. package/dist/design-system/yoo-ion-content.entry.js +3 -3
  656. package/dist/design-system/yoo-ion-footer.entry.js +4 -4
  657. package/dist/design-system/yoo-ion-infinite-scroll-content.entry.js +3 -3
  658. package/dist/design-system/yoo-ion-infinite-scroll.entry.js +3 -3
  659. package/dist/design-system/yoo-ion-item-divider.entry.js +5 -5
  660. package/dist/design-system/yoo-ion-item-options.entry.js +4 -4
  661. package/dist/design-system/yoo-ion-item-sliding.entry.js +5 -5
  662. package/dist/design-system/yoo-ion-item.entry.js +5 -5
  663. package/dist/design-system/yoo-ion-list.entry.js +4 -4
  664. package/dist/design-system/yoo-ion-modal-controller.entry.js +4 -4
  665. package/dist/design-system/yoo-ion-modal.entry.js +9 -9
  666. package/dist/design-system/yoo-ion-refresher.entry.js +4 -4
  667. package/dist/design-system/yoo-ion-scroll.entry.js +4 -4
  668. package/dist/design-system/yoo-ion-slide.entry.js +4 -4
  669. package/dist/{esm/yoo-ion-slides-21356ade.js → design-system/yoo-ion-slides-027b1bbf.js} +25 -22
  670. package/dist/design-system/yoo-ion-slides.entry.js +6 -6
  671. package/dist/design-system/yoo-ion-toast-controller.entry.js +4 -4
  672. package/dist/design-system/yoo-kanban.entry.js +4 -4
  673. package/dist/design-system/yoo-kpi-card.entry.js +3 -3
  674. package/dist/design-system/yoo-kpi-container.entry.js +4 -4
  675. package/dist/design-system/yoo-kpi-external.entry.js +3 -3
  676. package/dist/design-system/yoo-kpi.entry.js +3 -3
  677. package/dist/design-system/yoo-layout-sections.entry.js +3 -3
  678. package/dist/design-system/yoo-layout-tabs.entry.js +3 -3
  679. package/dist/design-system/yoo-layout-two-columns.entry.js +3 -3
  680. package/dist/design-system/yoo-lesson-detail-card.entry.js +3 -3
  681. package/dist/design-system/yoo-lesson-detail.entry.js +4 -4
  682. package/dist/design-system/yoo-lesson-heading.entry.js +4 -4
  683. package/dist/design-system/yoo-lesson-highscores.entry.js +3 -3
  684. package/dist/design-system/yoo-lesson-question-result.entry.js +3 -3
  685. package/dist/design-system/yoo-line-state.entry.js +1 -1
  686. package/dist/design-system/yoo-links-menu.entry.js +3 -3
  687. package/dist/design-system/yoo-links-preview.entry.js +5 -5
  688. package/dist/design-system/yoo-loader.entry.js +3 -3
  689. package/dist/design-system/yoo-location-info.entry.js +3 -3
  690. package/dist/design-system/yoo-location-map.entry.js +4 -4
  691. package/dist/design-system/yoo-login.entry.js +3 -3
  692. package/dist/design-system/yoo-lottie.entry.js +3 -3
  693. package/dist/design-system/yoo-map-gl.entry.js +4 -4
  694. package/dist/design-system/yoo-map-js.entry.js +5 -5
  695. package/dist/design-system/yoo-map-legend.entry.js +5 -5
  696. package/dist/design-system/yoo-map.entry.js +4 -4
  697. package/dist/design-system/yoo-markdown.entry.js +5 -5
  698. package/dist/design-system/yoo-memo-list-dialog.entry.js +3 -3
  699. package/dist/design-system/yoo-memo-list.entry.js +3 -3
  700. package/dist/design-system/yoo-mention-tag.entry.js +3 -3
  701. package/dist/design-system/yoo-mission-details.entry.js +5 -5
  702. package/dist/design-system/yoo-mission-heading.entry.js +7 -7
  703. package/dist/design-system/yoo-mission-score.entry.js +3 -3
  704. package/dist/design-system/yoo-mission-todo.entry.js +4 -4
  705. package/dist/design-system/yoo-mobile-tabbar-more.entry.js +3 -3
  706. package/dist/design-system/yoo-mobile-tabbar.entry.js +4 -4
  707. package/dist/design-system/yoo-modal.entry.js +4 -4
  708. package/dist/design-system/yoo-navbar.entry.js +4 -4
  709. package/dist/design-system/yoo-numbers-display.entry.js +4 -4
  710. package/dist/design-system/yoo-photo-editor.entry.js +8 -8
  711. package/dist/design-system/yoo-pivot-table.entry.js +8 -8
  712. package/dist/design-system/yoo-podium.entry.js +3 -3
  713. package/dist/design-system/yoo-profile-list.entry.js +3 -3
  714. package/dist/design-system/yoo-profile-summary.entry.js +4 -4
  715. package/dist/design-system/yoo-progress-bar.entry.js +3 -3
  716. package/dist/design-system/yoo-progress-loader.entry.js +3 -3
  717. package/dist/design-system/yoo-progress-recap.entry.js +3 -3
  718. package/dist/design-system/yoo-property-card.entry.js +4 -4
  719. package/dist/design-system/yoo-range.entry.js +5 -5
  720. package/dist/design-system/yoo-rating.entry.js +3 -3
  721. package/dist/design-system/yoo-reset-password.entry.js +3 -3
  722. package/dist/design-system/yoo-result-dialog.entry.js +4 -4
  723. package/dist/design-system/yoo-reveal.entry.js +3 -3
  724. package/dist/design-system/yoo-salesai-formula.entry.js +3 -3
  725. package/dist/design-system/yoo-scandit.entry.js +4 -4
  726. package/dist/design-system/yoo-scratch-card-creator.entry.js +3 -3
  727. package/dist/design-system/yoo-scratch-card.entry.js +5 -5
  728. package/dist/design-system/yoo-section-list.entry.js +3 -3
  729. package/dist/design-system/yoo-segmented-control.entry.js +3 -3
  730. package/dist/design-system/yoo-side-menu-tree.entry.js +3 -3
  731. package/dist/design-system/yoo-side-menu.entry.js +5 -4
  732. package/dist/design-system/yoo-slides-media.entry.js +6 -6
  733. package/dist/design-system/yoo-start-meeting-popup.entry.js +4 -4
  734. package/dist/design-system/yoo-tabs.entry.js +3 -3
  735. package/dist/design-system/yoo-text-sequence.entry.js +4 -4
  736. package/dist/design-system/yoo-text.entry.js +4 -4
  737. package/dist/design-system/yoo-toast.entry.js +5 -5
  738. package/dist/design-system/yoo-tooltip.entry.js +6 -6
  739. package/dist/design-system/yoo-truncate.entry.js +4 -4
  740. package/dist/design-system/yoo-truncated-line.entry.js +3 -3
  741. package/dist/design-system/yoo-user-detail.entry.js +3 -3
  742. package/dist/design-system/yoo-user-profile.entry.js +5 -5
  743. package/dist/design-system/yoo-user-wizard.entry.js +4 -4
  744. package/dist/design-system/yoo-videoplayer-core.entry.js +4 -4
  745. package/dist/design-system/yoo-videoplayer-dailymotion.entry.js +5 -5
  746. package/dist/design-system/yoo-videoplayer-videojs.entry.js +6 -6
  747. package/dist/design-system/yoo-videoplayer-vimeo.entry.js +5 -5
  748. package/dist/design-system/yoo-videoplayer-youtube.entry.js +5 -5
  749. package/dist/design-system/yoo-virtual-item.entry.js +3 -3
  750. package/dist/design-system/yoo-virtual-scroll.entry.js +4 -4
  751. package/dist/design-system/yoo-waitlist-location-result.entry.js +3 -3
  752. package/dist/design-system/yoo-waitlist-location-start.entry.js +3 -3
  753. package/dist/design-system/yoo-walkthrough.entry.js +3 -3
  754. package/dist/design-system/yoo-web-menu.entry.js +4 -4
  755. package/dist/design-system/yoo-webcam.entry.js +3 -3
  756. package/dist/design-system/yoo-welcome-banner.entry.js +4 -4
  757. package/dist/design-system/yoo-widget-chart.entry.js +3 -3
  758. package/dist/design-system/yoo-widget-small-size.entry.js +3 -3
  759. package/dist/design-system/yoo-widget-tab.entry.js +3 -3
  760. package/dist/design-system/yoo-widget-tile.entry.js +3 -3
  761. package/dist/design-system/yoo-workflow-state-dialog.entry.js +3 -3
  762. package/dist/design-system/yoo-workflow-state.entry.js +3 -3
  763. package/dist/design-system/yoo-workflow.entry.js +6 -6
  764. package/dist/design-system/yoo-zebra.entry.js +3 -3
  765. package/dist/design-system/yoo-zoom.entry.js +3 -3
  766. package/dist/esm/{button.factory-548f00ff.js → button.factory-ce9f5896.js} +2 -2
  767. package/dist/esm/{camera-helpers-b16f47f2.js → camera-helpers-e374d2a7.js} +3 -3
  768. package/dist/{design-system/chat-helpers-e8a3a6e2.js → esm/chat-helpers-e72f7f94.js} +2 -2
  769. package/dist/{design-system/common-helpers-641f84cf.js → esm/common-helpers-7572b8db.js} +2 -2
  770. package/dist/esm/design-system.js +1 -1
  771. package/dist/esm/{draggable-dots-helpers-79bf1f7a.js → draggable-dots-helpers-94a9e4dd.js} +2 -2
  772. package/dist/{design-system/draggable-tags-helpers-c1097a8c.js → esm/draggable-tags-helpers-a2d4d574.js} +2 -2
  773. package/dist/{design-system/entities-helpers-2a80a41c.js → esm/entities-helpers-a9eca0ab.js} +3 -3
  774. package/dist/esm/{filters-helpers-3305ff76.js → filters-helpers-7fdfdc59.js} +3 -3
  775. package/dist/esm/{form-choice-helpers-49666400.js → form-choice-helpers-a860db21.js} +5 -5
  776. package/dist/{design-system/form-helpers-4ff88a48.js → esm/form-helpers-db554989.js} +3 -3
  777. package/dist/{design-system/form-input-helpers-7ecb9d6b.js → esm/form-input-helpers-fcc6367d.js} +4 -4
  778. package/dist/esm/{form-text-area-helpers-f1a0044f.js → form-text-area-helpers-7e0482b0.js} +2 -2
  779. package/dist/esm/{grid-renderers-15a38038.js → grid-renderers-e277f1e5.js} +7 -7
  780. package/dist/{design-system/incentive-helpers-9b9177ec.js → esm/incentive-helpers-cd9067be.js} +3 -3
  781. package/dist/{design-system/index-181fe32c.js → esm/index-01b59ca9.js} +3 -3
  782. package/dist/{design-system/index-77dfdf51.js → esm/index-0364dfe5.js} +1 -1
  783. package/dist/{design-system/index-1c9c7197.js → esm/index-2e4cfd24.js} +3 -3
  784. package/dist/esm/{index-51fc9b51.js → index-40df0cc2.js} +2 -2
  785. package/dist/{design-system/index-673b1a64.js → esm/index-572f0595.js} +1 -1
  786. package/dist/esm/{index-c79e2959.js → index-76818c72.js} +13 -1
  787. package/dist/esm/index-830cded5.js +1 -0
  788. package/dist/esm/index-85ea6716.js +1 -0
  789. package/dist/{design-system/index-4495b427.js → esm/index-bfa34b4f.js} +1 -1
  790. package/dist/esm/loader.js +1 -1
  791. package/dist/{design-system/localForage-1804a51c.js → esm/localForage-555cba17.js} +2 -2
  792. package/dist/{design-system/map-helpers-6ffcb9df.js → esm/map-helpers-e1d37c2a.js} +2 -2
  793. package/dist/esm/{mission-locked-banner-9be5e25c.js → mission-locked-banner-3a9216cc.js} +2 -2
  794. package/dist/esm/{missions-helpers-f4a522bb.js → missions-helpers-cc964ca1.js} +4 -4
  795. package/dist/esm/{modal-animations-89e5badf.js → modal-animations-7da0af0b.js} +2 -2
  796. package/dist/{design-system/operation-helpers-888900f4.js → esm/operation-helpers-55154d6d.js} +2 -2
  797. package/dist/esm/{overlays-8ed6c5e4.js → overlays-8db3bed4.js} +3 -3
  798. package/dist/{design-system/overlays-e3cdcf07.js → esm/overlays-c2a9d2bf.js} +2 -2
  799. package/dist/esm/swiper-cf1b8880.js +12 -0
  800. package/dist/{design-system/theme-e481c7a9.js → esm/theme-d5c48d1b.js} +2 -2
  801. package/dist/{design-system/tippy.esm-0dbfaeec.js → esm/tippy.esm-4ea96ba2.js} +1 -1
  802. package/dist/esm/{video-player-helpers-ce9c661b.js → video-player-helpers-36fabc6d.js} +4 -4
  803. package/dist/{design-system/web-3dd9ef35.js → esm/web-093990a5.js} +2 -2
  804. package/dist/{design-system/web-9ecc48b4.js → esm/web-0daf06e2.js} +4 -4
  805. package/dist/{design-system/web-4475031c.js → esm/web-9cff6eb3.js} +2 -2
  806. package/dist/{design-system/web-ce74eca3.js → esm/web-cdbaa3d1.js} +2 -2
  807. package/dist/esm/yoo-about.entry.js +3 -3
  808. package/dist/esm/yoo-accordion.entry.js +8 -8
  809. package/dist/esm/yoo-action-sheet-controller.entry.js +4 -4
  810. package/dist/esm/yoo-action-sheet.entry.js +6 -6
  811. package/dist/esm/yoo-ag-grid.entry.js +8 -8
  812. package/dist/esm/yoo-alert.entry.js +6 -6
  813. package/dist/esm/yoo-amap.entry.js +5 -5
  814. package/dist/esm/yoo-announcement-heading.entry.js +16 -7
  815. package/dist/esm/yoo-app.entry.js +3 -3
  816. package/dist/esm/yoo-audio-player.entry.js +4 -4
  817. package/dist/esm/yoo-audio-recorder-dialog.entry.js +4 -4
  818. package/dist/esm/yoo-avatar.entry.js +3 -3
  819. package/dist/esm/yoo-avatars.entry.js +3 -3
  820. package/dist/esm/yoo-background.entry.js +4 -4
  821. package/dist/esm/yoo-banner.entry.js +4 -4
  822. package/dist/esm/yoo-barcode-dialog.entry.js +3 -3
  823. package/dist/esm/yoo-battle-count-down.entry.js +4 -4
  824. package/dist/esm/yoo-battle-result.entry.js +3 -3
  825. package/dist/esm/yoo-battle-user-stats.entry.js +4 -4
  826. package/dist/esm/yoo-breadcrumbs.entry.js +3 -3
  827. package/dist/esm/yoo-button.entry.js +4 -4
  828. package/dist/esm/yoo-calendar.entry.js +3 -3
  829. package/dist/esm/yoo-camera-preview-dialog.entry.js +6 -6
  830. package/dist/esm/yoo-card-battle-result.entry.js +3 -3
  831. package/dist/esm/yoo-card-battle.entry.js +3 -3
  832. package/dist/esm/yoo-card-calendar.entry.js +4 -4
  833. package/dist/esm/yoo-card-campaign.entry.js +4 -4
  834. package/dist/esm/yoo-card-cell.entry.js +4 -4
  835. package/dist/esm/yoo-card-chat.entry.js +3 -3
  836. package/dist/esm/yoo-card-course-row-compact.entry.js +3 -3
  837. package/dist/esm/yoo-card-course-row.entry.js +5 -5
  838. package/dist/esm/yoo-card-course.entry.js +3 -3
  839. package/dist/esm/yoo-card-feed-row.entry.js +3 -3
  840. package/dist/esm/yoo-card-feed.entry.js +7 -7
  841. package/dist/esm/yoo-card-file.entry.js +3 -3
  842. package/dist/esm/yoo-card-image.entry.js +3 -3
  843. package/dist/esm/yoo-card-inbox.entry.js +3 -3
  844. package/dist/esm/yoo-card-incentive-rank.entry.js +3 -3
  845. package/dist/esm/yoo-card-incentive.entry.js +5 -5
  846. package/dist/esm/yoo-card-kanban.entry.js +4 -4
  847. package/dist/esm/yoo-card-lesson.entry.js +4 -4
  848. package/dist/esm/yoo-card-list-collapsible.entry.js +4 -4
  849. package/dist/esm/yoo-card-list-color.entry.js +3 -3
  850. package/dist/esm/yoo-card-list-simple.entry.js +4 -4
  851. package/dist/esm/yoo-card-list.entry.js +4 -4
  852. package/dist/esm/yoo-card-location.entry.js +3 -3
  853. package/dist/esm/yoo-card-media.entry.js +4 -4
  854. package/dist/esm/yoo-card-menu.entry.js +4 -4
  855. package/dist/esm/yoo-card-notification.entry.js +3 -3
  856. package/dist/esm/yoo-card-plan.entry.js +4 -4
  857. package/dist/esm/yoo-card-progress.entry.js +3 -3
  858. package/dist/esm/yoo-card-recommendation.entry.js +4 -4
  859. package/dist/esm/yoo-card-sticky.entry.js +4 -4
  860. package/dist/esm/yoo-card-video.entry.js +3 -3
  861. package/dist/esm/yoo-chart.entry.js +3 -3
  862. package/dist/esm/yoo-chat-message-dialog.entry.js +4 -4
  863. package/dist/esm/yoo-chat-message-preview.entry.js +3 -3
  864. package/dist/esm/yoo-chat-message.entry.js +5 -5
  865. package/dist/esm/yoo-chat.entry.js +7 -7
  866. package/dist/esm/yoo-collapsible.entry.js +3 -3
  867. package/dist/esm/yoo-color-selector.entry.js +3 -3
  868. package/dist/esm/yoo-community-detail.entry.js +4 -4
  869. package/dist/esm/yoo-context-menu-dialog.entry.js +4 -4
  870. package/dist/esm/yoo-context-menu.entry.js +4 -4
  871. package/dist/esm/yoo-copyright.entry.js +3 -3
  872. package/dist/esm/yoo-count-down.entry.js +4 -4
  873. package/dist/esm/yoo-course-info-card.entry.js +3 -3
  874. package/dist/esm/yoo-course-summary.entry.js +4 -4
  875. package/dist/esm/yoo-dashboard-detail.entry.js +3 -3
  876. package/dist/esm/yoo-date.entry.js +3 -3
  877. package/dist/esm/yoo-detail-bar.entry.js +4 -4
  878. package/dist/esm/yoo-device-list.entry.js +3 -3
  879. package/dist/esm/yoo-device.entry.js +3 -3
  880. package/dist/esm/yoo-draw-flow.entry.js +39 -21
  881. package/dist/esm/yoo-empty-state.entry.js +1 -1
  882. package/dist/esm/yoo-entity-query-builder.entry.js +4 -4
  883. package/dist/esm/yoo-entity-search-dialog.entry.js +4 -4
  884. package/dist/esm/yoo-entity-search-filters.entry.js +5 -5
  885. package/dist/esm/yoo-entity-search-recent.entry.js +3 -3
  886. package/dist/esm/yoo-entity-search-sorts.entry.js +4 -4
  887. package/dist/esm/yoo-entity-search-tags.entry.js +4 -4
  888. package/dist/esm/yoo-entity-search.entry.js +4 -4
  889. package/dist/esm/yoo-entity.entry.js +11 -11
  890. package/dist/esm/yoo-feed-detail.entry.js +6 -6
  891. package/dist/esm/yoo-flag.entry.js +3 -3
  892. package/dist/esm/yoo-form-audience.entry.js +5 -5
  893. package/dist/esm/yoo-form-autocomplete-dialog.entry.js +4 -4
  894. package/dist/esm/yoo-form-autocomplete.entry.js +5 -5
  895. package/dist/esm/yoo-form-barcode-dialog.entry.js +4 -4
  896. package/dist/esm/yoo-form-barcode.entry.js +5 -5
  897. package/dist/esm/yoo-form-calendar-dialog.entry.js +4 -4
  898. package/dist/esm/yoo-form-capture-map-dialog.entry.js +3 -3
  899. package/dist/esm/yoo-form-capture-tag-dialog.entry.js +4 -4
  900. package/dist/esm/yoo-form-capture-view-dialog.entry.js +4 -4
  901. package/dist/esm/yoo-form-capture-webcam-dialog.entry.js +5 -5
  902. package/dist/esm/yoo-form-capture.entry.js +7 -7
  903. package/dist/esm/yoo-form-carousel.entry.js +4 -4
  904. package/dist/esm/yoo-form-catalog-dialog.entry.js +4 -4
  905. package/dist/esm/yoo-form-catalog.entry.js +5 -5
  906. package/dist/esm/yoo-form-categorize-words.entry.js +7 -7
  907. package/dist/esm/yoo-form-checkbox.entry.js +5 -5
  908. package/dist/esm/yoo-form-checklist.entry.js +5 -5
  909. package/dist/esm/yoo-form-choice-button.entry.js +7 -7
  910. package/dist/esm/yoo-form-choice-card.entry.js +7 -7
  911. package/dist/esm/yoo-form-choice-chat.entry.js +7 -7
  912. package/dist/esm/yoo-form-choice-image.entry.js +7 -7
  913. package/dist/esm/yoo-form-choice-radio.entry.js +7 -7
  914. package/dist/esm/yoo-form-color-field.entry.js +5 -5
  915. package/dist/esm/yoo-form-color-picker.entry.js +3 -3
  916. package/dist/esm/yoo-form-conditions.entry.js +3 -3
  917. package/dist/esm/yoo-form-connect.entry.js +6 -6
  918. package/dist/esm/yoo-form-creator-block-expandable.entry.js +6 -6
  919. package/dist/esm/yoo-form-creator-block-simple.entry.js +5 -5
  920. package/dist/esm/yoo-form-creator-condition-block.entry.js +5 -5
  921. package/dist/esm/yoo-form-creator-field-selector.entry.js +10 -6
  922. package/dist/esm/yoo-form-creator-header.entry.js +4 -4
  923. package/dist/esm/yoo-form-creator-live-preview.entry.js +4 -4
  924. package/dist/esm/yoo-form-creator-overlay.entry.js +3 -3
  925. package/dist/esm/yoo-form-creator-page-card-list.entry.js +4 -4
  926. package/dist/esm/yoo-form-creator-page-card.entry.js +4 -4
  927. package/dist/esm/yoo-form-creator-score-expandable.entry.js +5 -5
  928. package/dist/esm/yoo-form-creator-scoring-card-list.entry.js +3 -3
  929. package/dist/esm/yoo-form-creator-scoring-card.entry.js +3 -3
  930. package/dist/esm/yoo-form-creator-scoring-quick-setup.entry.js +3 -3
  931. package/dist/esm/yoo-form-creator-translate-dialog.entry.js +4 -4
  932. package/dist/esm/yoo-form-creator-translate.entry.js +4 -4
  933. package/dist/esm/yoo-form-creator-workflow-side-selection.entry.js +5 -5
  934. package/dist/esm/yoo-form-creator-workflow-step.entry.js +4 -4
  935. package/dist/esm/yoo-form-creator.entry.js +7 -7
  936. package/dist/esm/yoo-form-date-time.entry.js +5 -5
  937. package/dist/esm/yoo-form-daterange.entry.js +5 -5
  938. package/dist/esm/yoo-form-document-dialog.entry.js +4 -4
  939. package/dist/esm/yoo-form-document.entry.js +5 -5
  940. package/dist/esm/yoo-form-dynamic-dialog.entry.js +5 -5
  941. package/dist/esm/yoo-form-dynamic.entry.js +7 -7
  942. package/dist/esm/yoo-form-emailreport.entry.js +5 -5
  943. package/dist/esm/yoo-form-entity-value-pairs.entry.js +3 -3
  944. package/dist/esm/yoo-form-explanation.entry.js +3 -3
  945. package/dist/esm/yoo-form-feed-preview.entry.js +5 -5
  946. package/dist/esm/yoo-form-feedback.entry.js +5 -5
  947. package/dist/esm/yoo-form-filter-date.entry.js +3 -3
  948. package/dist/esm/yoo-form-filter-number.entry.js +3 -3
  949. package/dist/esm/yoo-form-filter-text.entry.js +3 -3
  950. package/dist/esm/yoo-form-filter.entry.js +4 -4
  951. package/dist/esm/yoo-form-footer.entry.js +6 -6
  952. package/dist/esm/yoo-form-formula.entry.js +5 -5
  953. package/dist/esm/yoo-form-hotzones-creator.entry.js +3 -3
  954. package/dist/esm/yoo-form-hotzones.entry.js +7 -7
  955. package/dist/esm/yoo-form-iframe-dialog.entry.js +3 -3
  956. package/dist/esm/yoo-form-image-collection.entry.js +6 -6
  957. package/dist/esm/yoo-form-image-tagging-creator.entry.js +6 -6
  958. package/dist/esm/yoo-form-image-tagging.entry.js +9 -9
  959. package/dist/esm/yoo-form-incentive-participants.entry.js +1 -1
  960. package/dist/esm/yoo-form-incentive-targets.entry.js +5 -5
  961. package/dist/esm/yoo-form-input-comments.entry.js +3 -3
  962. package/dist/esm/yoo-form-input-container.entry.js +6 -6
  963. package/dist/esm/yoo-form-input.entry.js +9 -9
  964. package/dist/esm/yoo-form-json.entry.js +6 -6
  965. package/dist/esm/yoo-form-location.entry.js +5 -5
  966. package/dist/esm/yoo-form-missing-word.entry.js +7 -7
  967. package/dist/esm/yoo-form-missionfield.entry.js +5 -5
  968. package/dist/esm/yoo-form-multi-input.entry.js +5 -5
  969. package/dist/esm/yoo-form-number-picker-dialog.entry.js +3 -3
  970. package/dist/esm/yoo-form-number-picker.entry.js +3 -3
  971. package/dist/esm/yoo-form-opening-hours.entry.js +3 -3
  972. package/dist/esm/yoo-form-permissions.entry.js +4 -4
  973. package/dist/esm/yoo-form-phone-number.entry.js +3 -3
  974. package/dist/esm/yoo-form-plan-assign.entry.js +5 -5
  975. package/dist/esm/yoo-form-plan.entry.js +5 -5
  976. package/dist/esm/yoo-form-pricecheck.entry.js +5 -5
  977. package/dist/esm/yoo-form-product-batch.entry.js +6 -6
  978. package/dist/esm/yoo-form-products-sales.entry.js +5 -5
  979. package/dist/esm/yoo-form-progress-indicator.entry.js +4 -4
  980. package/dist/esm/yoo-form-qrcode.entry.js +5 -5
  981. package/dist/esm/yoo-form-query-builder.entry.js +5 -5
  982. package/dist/esm/yoo-form-range.entry.js +5 -5
  983. package/dist/esm/yoo-form-ranking.entry.js +6 -6
  984. package/dist/esm/yoo-form-recap-step.entry.js +3 -3
  985. package/dist/esm/yoo-form-recurrence-delay.entry.js +3 -3
  986. package/dist/esm/yoo-form-recurrence-preview.entry.js +4 -4
  987. package/dist/esm/yoo-form-recurrence.entry.js +3 -3
  988. package/dist/esm/yoo-form-reorder.entry.js +5 -5
  989. package/dist/esm/yoo-form-scorm.entry.js +5 -5
  990. package/dist/esm/yoo-form-shopping.entry.js +5 -5
  991. package/dist/esm/yoo-form-signature-pad-dialog.entry.js +4 -4
  992. package/dist/esm/yoo-form-signature-pad.entry.js +5 -5
  993. package/dist/esm/yoo-form-sorts.entry.js +5 -5
  994. package/dist/esm/yoo-form-star-rating.entry.js +5 -5
  995. package/dist/esm/yoo-form-stripe-card.entry.js +5 -5
  996. package/dist/esm/yoo-form-swipe-cards.entry.js +6 -6
  997. package/dist/esm/yoo-form-table.entry.js +5 -5
  998. package/dist/esm/yoo-form-task.entry.js +5 -5
  999. package/dist/esm/yoo-form-text-area.entry.js +6 -6
  1000. package/dist/esm/yoo-form-text-editor.entry.js +7 -7
  1001. package/dist/esm/yoo-form-time.entry.js +5 -5
  1002. package/dist/esm/yoo-form-timeslots.entry.js +5 -5
  1003. package/dist/esm/yoo-form-todo-dialog.entry.js +4 -4
  1004. package/dist/esm/yoo-form-todo-list-dialog.entry.js +5 -5
  1005. package/dist/esm/yoo-form-todo-list-task.entry.js +5 -5
  1006. package/dist/esm/yoo-form-todo-list.entry.js +5 -5
  1007. package/dist/esm/yoo-form-todo-single.entry.js +5 -5
  1008. package/dist/esm/yoo-form-todo.entry.js +5 -5
  1009. package/dist/esm/yoo-form-toggle.entry.js +5 -5
  1010. package/dist/esm/yoo-form-uploader.entry.js +5 -5
  1011. package/dist/esm/yoo-form-videoplayer.entry.js +5 -5
  1012. package/dist/esm/yoo-form-wiki.entry.js +5 -5
  1013. package/dist/esm/yoo-grid-calendar.entry.js +6 -6
  1014. package/dist/esm/yoo-grid.entry.js +14 -14
  1015. package/dist/esm/yoo-gridstack.entry.js +4 -4
  1016. package/dist/esm/yoo-header.entry.js +4 -4
  1017. package/dist/esm/yoo-healthscore-dialog.entry.js +4 -4
  1018. package/dist/esm/yoo-healthscore.entry.js +3 -3
  1019. package/dist/esm/yoo-image-cropper-dialog.entry.js +3 -3
  1020. package/dist/esm/yoo-img.entry.js +5 -5
  1021. package/dist/esm/yoo-incentive-detail.entry.js +5 -5
  1022. package/dist/esm/yoo-input-bar.entry.js +1755 -1950
  1023. package/dist/esm/yoo-ion-alert-controller.entry.js +4 -4
  1024. package/dist/esm/yoo-ion-content.entry.js +3 -3
  1025. package/dist/esm/yoo-ion-footer.entry.js +4 -4
  1026. package/dist/esm/yoo-ion-infinite-scroll-content.entry.js +3 -3
  1027. package/dist/esm/yoo-ion-infinite-scroll.entry.js +3 -3
  1028. package/dist/esm/yoo-ion-item-divider.entry.js +5 -5
  1029. package/dist/esm/yoo-ion-item-options.entry.js +4 -4
  1030. package/dist/esm/yoo-ion-item-sliding.entry.js +5 -5
  1031. package/dist/esm/yoo-ion-item.entry.js +5 -5
  1032. package/dist/esm/yoo-ion-list.entry.js +4 -4
  1033. package/dist/esm/yoo-ion-modal-controller.entry.js +4 -4
  1034. package/dist/esm/yoo-ion-modal.entry.js +9 -9
  1035. package/dist/esm/yoo-ion-refresher.entry.js +4 -4
  1036. package/dist/esm/yoo-ion-scroll.entry.js +4 -4
  1037. package/dist/esm/yoo-ion-slide.entry.js +4 -4
  1038. package/dist/{design-system/yoo-ion-slides-21356ade.js → esm/yoo-ion-slides-027b1bbf.js} +25 -22
  1039. package/dist/esm/yoo-ion-slides.entry.js +6 -6
  1040. package/dist/esm/yoo-ion-toast-controller.entry.js +4 -4
  1041. package/dist/esm/yoo-kanban.entry.js +4 -4
  1042. package/dist/esm/yoo-kpi-card.entry.js +3 -3
  1043. package/dist/esm/yoo-kpi-container.entry.js +4 -4
  1044. package/dist/esm/yoo-kpi-external.entry.js +3 -3
  1045. package/dist/esm/yoo-kpi.entry.js +3 -3
  1046. package/dist/esm/yoo-layout-sections.entry.js +3 -3
  1047. package/dist/esm/yoo-layout-tabs.entry.js +3 -3
  1048. package/dist/esm/yoo-layout-two-columns.entry.js +3 -3
  1049. package/dist/esm/yoo-lesson-detail-card.entry.js +3 -3
  1050. package/dist/esm/yoo-lesson-detail.entry.js +4 -4
  1051. package/dist/esm/yoo-lesson-heading.entry.js +4 -4
  1052. package/dist/esm/yoo-lesson-highscores.entry.js +3 -3
  1053. package/dist/esm/yoo-lesson-question-result.entry.js +3 -3
  1054. package/dist/esm/yoo-line-state.entry.js +1 -1
  1055. package/dist/esm/yoo-links-menu.entry.js +3 -3
  1056. package/dist/esm/yoo-links-preview.entry.js +5 -5
  1057. package/dist/esm/yoo-loader.entry.js +3 -3
  1058. package/dist/esm/yoo-location-info.entry.js +3 -3
  1059. package/dist/esm/yoo-location-map.entry.js +4 -4
  1060. package/dist/esm/yoo-login.entry.js +3 -3
  1061. package/dist/esm/yoo-lottie.entry.js +3 -3
  1062. package/dist/esm/yoo-map-gl.entry.js +4 -4
  1063. package/dist/esm/yoo-map-js.entry.js +5 -5
  1064. package/dist/esm/yoo-map-legend.entry.js +5 -5
  1065. package/dist/esm/yoo-map.entry.js +4 -4
  1066. package/dist/esm/yoo-markdown.entry.js +5 -5
  1067. package/dist/esm/yoo-memo-list-dialog.entry.js +3 -3
  1068. package/dist/esm/yoo-memo-list.entry.js +3 -3
  1069. package/dist/esm/yoo-mention-tag.entry.js +3 -3
  1070. package/dist/esm/yoo-mission-details.entry.js +5 -5
  1071. package/dist/esm/yoo-mission-heading.entry.js +7 -7
  1072. package/dist/esm/yoo-mission-score.entry.js +3 -3
  1073. package/dist/esm/yoo-mission-todo.entry.js +4 -4
  1074. package/dist/esm/yoo-mobile-tabbar-more.entry.js +3 -3
  1075. package/dist/esm/yoo-mobile-tabbar.entry.js +4 -4
  1076. package/dist/esm/yoo-modal.entry.js +4 -4
  1077. package/dist/esm/yoo-navbar.entry.js +4 -4
  1078. package/dist/esm/yoo-numbers-display.entry.js +4 -4
  1079. package/dist/esm/yoo-photo-editor.entry.js +8 -8
  1080. package/dist/esm/yoo-pivot-table.entry.js +8 -8
  1081. package/dist/esm/yoo-podium.entry.js +3 -3
  1082. package/dist/esm/yoo-profile-list.entry.js +3 -3
  1083. package/dist/esm/yoo-profile-summary.entry.js +4 -4
  1084. package/dist/esm/yoo-progress-bar.entry.js +3 -3
  1085. package/dist/esm/yoo-progress-loader.entry.js +3 -3
  1086. package/dist/esm/yoo-progress-recap.entry.js +3 -3
  1087. package/dist/esm/yoo-property-card.entry.js +4 -4
  1088. package/dist/esm/yoo-range.entry.js +5 -5
  1089. package/dist/esm/yoo-rating.entry.js +3 -3
  1090. package/dist/esm/yoo-reset-password.entry.js +3 -3
  1091. package/dist/esm/yoo-result-dialog.entry.js +4 -4
  1092. package/dist/esm/yoo-reveal.entry.js +3 -3
  1093. package/dist/esm/yoo-salesai-formula.entry.js +3 -3
  1094. package/dist/esm/yoo-scandit.entry.js +4 -4
  1095. package/dist/esm/yoo-scratch-card-creator.entry.js +3 -3
  1096. package/dist/esm/yoo-scratch-card.entry.js +5 -5
  1097. package/dist/esm/yoo-section-list.entry.js +3 -3
  1098. package/dist/esm/yoo-segmented-control.entry.js +3 -3
  1099. package/dist/esm/yoo-side-menu-tree.entry.js +3 -3
  1100. package/dist/esm/yoo-side-menu.entry.js +5 -4
  1101. package/dist/esm/yoo-slides-media.entry.js +6 -6
  1102. package/dist/esm/yoo-start-meeting-popup.entry.js +4 -4
  1103. package/dist/esm/yoo-tabs.entry.js +3 -3
  1104. package/dist/esm/yoo-text-sequence.entry.js +4 -4
  1105. package/dist/esm/yoo-text.entry.js +4 -4
  1106. package/dist/esm/yoo-toast.entry.js +5 -5
  1107. package/dist/esm/yoo-tooltip.entry.js +6 -6
  1108. package/dist/esm/yoo-truncate.entry.js +4 -4
  1109. package/dist/esm/yoo-truncated-line.entry.js +3 -3
  1110. package/dist/esm/yoo-user-detail.entry.js +3 -3
  1111. package/dist/esm/yoo-user-profile.entry.js +5 -5
  1112. package/dist/esm/yoo-user-wizard.entry.js +4 -4
  1113. package/dist/esm/yoo-videoplayer-core.entry.js +4 -4
  1114. package/dist/esm/yoo-videoplayer-dailymotion.entry.js +5 -5
  1115. package/dist/esm/yoo-videoplayer-videojs.entry.js +6 -6
  1116. package/dist/esm/yoo-videoplayer-vimeo.entry.js +5 -5
  1117. package/dist/esm/yoo-videoplayer-youtube.entry.js +5 -5
  1118. package/dist/esm/yoo-virtual-item.entry.js +3 -3
  1119. package/dist/esm/yoo-virtual-scroll.entry.js +4 -4
  1120. package/dist/esm/yoo-waitlist-location-result.entry.js +3 -3
  1121. package/dist/esm/yoo-waitlist-location-start.entry.js +3 -3
  1122. package/dist/esm/yoo-walkthrough.entry.js +3 -3
  1123. package/dist/esm/yoo-web-menu.entry.js +4 -4
  1124. package/dist/esm/yoo-webcam.entry.js +3 -3
  1125. package/dist/esm/yoo-welcome-banner.entry.js +4 -4
  1126. package/dist/esm/yoo-widget-chart.entry.js +3 -3
  1127. package/dist/esm/yoo-widget-small-size.entry.js +3 -3
  1128. package/dist/esm/yoo-widget-tab.entry.js +3 -3
  1129. package/dist/esm/yoo-widget-tile.entry.js +3 -3
  1130. package/dist/esm/yoo-workflow-state-dialog.entry.js +3 -3
  1131. package/dist/esm/yoo-workflow-state.entry.js +3 -3
  1132. package/dist/esm/yoo-workflow.entry.js +6 -6
  1133. package/dist/esm/yoo-zebra.entry.js +3 -3
  1134. package/dist/esm/yoo-zoom.entry.js +3 -3
  1135. package/dist/types/components/2.molecules/accordion/types/index.d.ts +2 -0
  1136. package/dist/types/components/form-creator/form-creator-field-selector/form-creator-field-selector.d.ts +5 -0
  1137. package/dist/types/components.d.ts +12 -6
  1138. package/dist/types/feature-operate/mission/announcement-heading/announcement-heading.d.ts +1 -0
  1139. package/dist/types/feature-platform/admin/draw-flow/draw-flow.d.ts +11 -6
  1140. package/dist/types/home/runner/work/yoobic-ng-6/yoobic-ng-6/design-system/stencil/.stencil/shared/interfaces/src/entities/algorithm/algorithm.interface.d.ts +2 -0
  1141. package/dist/types/home/runner/work/yoobic-ng-6/yoobic-ng-6/design-system/stencil/.stencil/shared/interfaces/src/entities/battle/battle.interface.d.ts +2 -3
  1142. package/dist/types/home/runner/work/yoobic-ng-6/yoobic-ng-6/design-system/stencil/.stencil/shared/interfaces/src/entities/condition/condition.interface.d.ts +1 -1
  1143. package/dist/types/home/runner/work/yoobic-ng-6/yoobic-ng-6/design-system/stencil/.stencil/shared/interfaces/src/entities/custom-app/custom-app.interface.d.ts +11 -1
  1144. package/dist/types/home/runner/work/yoobic-ng-6/yoobic-ng-6/design-system/stencil/.stencil/shared/interfaces/src/entities/entity/entity.interface.d.ts +1 -1
  1145. package/dist/types/home/runner/work/yoobic-ng-6/yoobic-ng-6/design-system/stencil/.stencil/shared/interfaces/src/entities/index.d.ts +1 -0
  1146. package/dist/types/home/runner/work/yoobic-ng-6/yoobic-ng-6/design-system/stencil/.stencil/shared/interfaces/src/entities/journey/journey.interface.d.ts +26 -0
  1147. package/dist/types/home/runner/work/yoobic-ng-6/yoobic-ng-6/design-system/stencil/.stencil/shared/interfaces/src/entities/page/page.interface.d.ts +2 -1
  1148. package/dist/types/home/runner/work/yoobic-ng-6/yoobic-ng-6/design-system/stencil/.stencil/shared/interfaces/src/types/routes.d.ts +2 -0
  1149. package/dist/types/home/runner/work/yoobic-ng-6/yoobic-ng-6/design-system/stencil/.stencil/shared/interfaces/src/ui/app/app.interface.d.ts +1 -1
  1150. package/dist/types/home/runner/work/yoobic-ng-6/yoobic-ng-6/design-system/stencil/.stencil/shared/interfaces/src/ui/button/button.interface.d.ts +1 -0
  1151. package/dist/types/home/runner/work/yoobic-ng-6/yoobic-ng-6/design-system/stencil/.stencil/shared/interfaces/src/ui/modal/modal.interface.d.ts +3 -0
  1152. package/package.json +1 -1
  1153. package/dist/cjs/index-5c167de6.js +0 -4
  1154. package/dist/cjs/index-afea1559.js +0 -4
  1155. package/dist/design-system/index-38d4fe1e.js +0 -1
  1156. package/dist/design-system/index-fe99ca0c.js +0 -1
  1157. package/dist/design-system/swiper-90a4231e.js +0 -12
  1158. package/dist/esm/index-38d4fe1e.js +0 -1
  1159. package/dist/esm/index-fe99ca0c.js +0 -1
  1160. package/dist/esm/swiper-90a4231e.js +0 -12
@@ -1,10 +1,10 @@
1
1
  import { r as registerInstance, i as createEvent, h, e as Host$1, g as getElement } from './index-54cb3c5d.js';
2
- import { g as getPicture, P as PictureSourceType, M as MediaType, a as getVideoDevices, b as getVideo, i as importMultipleFromLibrary, s as showAudioRecorder, c as MediaCapture } from './camera-helpers-b16f47f2.js';
3
- import { bR as filter, bS as not, bT as raceWith, bU as argsOrArgArray, bV as Subject, bW as Subscription, bX as Observable, bY as merge$1, bZ as share, b_ as process_1, b$ as fromEvent, c0 as __extends, aE as gsapTo, U as isNullOrUndefined, y as isWeb, z as debounce, N as getAsyncExtraData, c1 as getMediaType, a9 as isVideo, c2 as isMedia, c3 as isBase64, F as isIOS, f as isNativeMobile, c4 as File, t as translate, a8 as showActionSheet, c5 as hasWebCam, a7 as showAlert, x as showModal, w as getModalAnimation, c6 as replaceAndGetAllLinks, ab as isImage, c7 as addFilePrefix, c8 as read, n as closeModal, c9 as keepAwake, ca as moveToImageDirectory, X as getSession, cb as vibrateHapticMedium, av as hideKeyboard, h as isAndroid, a0 as getUserDisplayName } from './overlays-8ed6c5e4.js';
4
- import { R as MessageInput, M as MessageType, U as IFileUploadAcceptMode } from './index-c79e2959.js';
5
- import './index-4495b427.js';
2
+ import { g as getPicture, P as PictureSourceType, M as MediaType, a as getVideoDevices, b as getVideo, i as importMultipleFromLibrary, s as showAudioRecorder, c as MediaCapture } from './camera-helpers-e374d2a7.js';
3
+ import { bR as filter, bS as not, bT as raceWith, bU as argsOrArgArray, bV as Subject, bW as Subscription, bX as Observable, bY as merge$1, bZ as share, b_ as process_1, b$ as fromEvent, c0 as __extends, aE as gsapTo, U as isNullOrUndefined, y as isWeb, z as debounce, N as getAsyncExtraData, c1 as getMediaType, a9 as isVideo, c2 as isMedia, c3 as isBase64, F as isIOS, f as isNativeMobile, c4 as File, t as translate, a8 as showActionSheet, c5 as hasWebCam, a7 as showAlert, x as showModal, w as getModalAnimation, c6 as replaceAndGetAllLinks, ab as isImage, c7 as addFilePrefix, c8 as read, n as closeModal, c9 as keepAwake, ca as moveToImageDirectory, X as getSession, cb as vibrateHapticMedium, av as hideKeyboard, h as isAndroid, a0 as getUserDisplayName } from './overlays-8db3bed4.js';
4
+ import { R as MessageInput, M as MessageType, U as IFileUploadAcceptMode } from './index-76818c72.js';
5
+ import './index-bfa34b4f.js';
6
6
  import { a as isNumber, n as compact, i as isArray } from './lodash-f839ddb6.js';
7
- import { e as showPhotoEditor, f as sanitizeHTML, g as getAppContext } from './common-helpers-641f84cf.js';
7
+ import { e as showPhotoEditor, f as sanitizeHTML, g as getAppContext } from './common-helpers-7572b8db.js';
8
8
  import './_commonjsHelpers-f4d11124.js';
9
9
 
10
10
  function partition(predicate, thisArg) {
@@ -16,7 +16,7 @@ function race(...args) {
16
16
  }
17
17
 
18
18
  /**
19
- * @license Angular v14.0.4
19
+ * @license Angular v14.0.5
20
20
  * (c) 2010-2022 Google LLC. https://angular.io/
21
21
  * License: MIT
22
22
  */
@@ -1600,96 +1600,6 @@ function getNamespaceUri(namespace) {
1600
1600
  (name === MATH_ML_NAMESPACE ? MATH_ML_NAMESPACE_URI : null);
1601
1601
  }
1602
1602
 
1603
- /**
1604
- * @license
1605
- * Copyright Google LLC All Rights Reserved.
1606
- *
1607
- * Use of this source code is governed by an MIT-style license that can be
1608
- * found in the LICENSE file at https://angular.io/license
1609
- */
1610
- /**
1611
- * Most of the use of `document` in Angular is from within the DI system so it is possible to simply
1612
- * inject the `DOCUMENT` token and are done.
1613
- *
1614
- * Ivy is special because it does not rely upon the DI and must get hold of the document some other
1615
- * way.
1616
- *
1617
- * The solution is to define `getDocument()` and `setDocument()` top-level functions for ivy.
1618
- * Wherever ivy needs the global document, it calls `getDocument()` instead.
1619
- *
1620
- * When running ivy outside of a browser environment, it is necessary to call `setDocument()` to
1621
- * tell ivy what the global `document` is.
1622
- *
1623
- * Angular does this for us in each of the standard platforms (`Browser`, `Server`, and `WebWorker`)
1624
- * by calling `setDocument()` when providing the `DOCUMENT` token.
1625
- */
1626
- let DOCUMENT = undefined;
1627
- /**
1628
- * Tell ivy what the `document` is for this platform.
1629
- *
1630
- * It is only necessary to call this if the current platform is not a browser.
1631
- *
1632
- * @param document The object representing the global `document` in this environment.
1633
- */
1634
- function setDocument(document) {
1635
- DOCUMENT = document;
1636
- }
1637
- /**
1638
- * Access the object that represents the `document` for this platform.
1639
- *
1640
- * Ivy calls this whenever it needs to access the `document` object.
1641
- * For example to create the renderer or to do sanitization.
1642
- */
1643
- function getDocument() {
1644
- if (DOCUMENT !== undefined) {
1645
- return DOCUMENT;
1646
- }
1647
- else if (typeof document !== 'undefined') {
1648
- return document;
1649
- }
1650
- // No "document" can be found. This should only happen if we are running ivy outside Angular and
1651
- // the current platform is not a browser. Since this is not a supported scenario at the moment
1652
- // this should not happen in Angular apps.
1653
- // Once we support running ivy outside of Angular we will need to publish `setDocument()` as a
1654
- // public API. Meanwhile we just return `undefined` and let the application fail.
1655
- return undefined;
1656
- }
1657
-
1658
- /**
1659
- * @license
1660
- * Copyright Google LLC All Rights Reserved.
1661
- *
1662
- * Use of this source code is governed by an MIT-style license that can be
1663
- * found in the LICENSE file at https://angular.io/license
1664
- */
1665
- // TODO: cleanup once the code is merged in angular/angular
1666
- var RendererStyleFlags3;
1667
- (function (RendererStyleFlags3) {
1668
- RendererStyleFlags3[RendererStyleFlags3["Important"] = 1] = "Important";
1669
- RendererStyleFlags3[RendererStyleFlags3["DashCase"] = 2] = "DashCase";
1670
- })(RendererStyleFlags3 || (RendererStyleFlags3 = {}));
1671
- /** Returns whether the `renderer` is a `ProceduralRenderer3` */
1672
- function isProceduralRenderer(renderer) {
1673
- return !!(renderer.listen);
1674
- }
1675
- let renderer3Enabled = false;
1676
- function enableRenderer3() {
1677
- renderer3Enabled = true;
1678
- }
1679
- const domRendererFactory3 = {
1680
- createRenderer: (hostElement, rendererType) => {
1681
- if (!renderer3Enabled) {
1682
- throw new Error(ngDevMode ?
1683
- `Renderer3 is not supported. This problem is likely caused by some component in the hierarchy was constructed without a correct parent injector.` :
1684
- 'Renderer3 disabled');
1685
- }
1686
- return getDocument();
1687
- }
1688
- };
1689
- // Note: This hack is necessary so we don't erroneously get a circular dependency
1690
- // failure based on types.
1691
- const unusedValueExportToPlacateAjd$6 = 1;
1692
-
1693
1603
  /**
1694
1604
  * @license
1695
1605
  * Copyright Google LLC All Rights Reserved.
@@ -1772,7 +1682,6 @@ function getNativeByTNode(tNode, lView) {
1772
1682
  ngDevMode && assertTNodeForLView(tNode, lView);
1773
1683
  ngDevMode && assertIndexInRange(lView, tNode.index);
1774
1684
  const node = unwrapRNode(lView[tNode.index]);
1775
- ngDevMode && !isProceduralRenderer(lView[RENDERER]) && assertDomNode(node);
1776
1685
  return node;
1777
1686
  }
1778
1687
  /**
@@ -1788,7 +1697,6 @@ function getNativeByTNodeOrNull(tNode, lView) {
1788
1697
  if (index !== -1) {
1789
1698
  ngDevMode && assertTNodeForLView(tNode, lView);
1790
1699
  const node = unwrapRNode(lView[index]);
1791
- ngDevMode && node !== null && !isProceduralRenderer(lView[RENDERER]) && assertDomNode(node);
1792
1700
  return node;
1793
1701
  }
1794
1702
  return null;
@@ -2737,7 +2645,7 @@ function isFactory(obj) {
2737
2645
  }
2738
2646
  // Note: This hack is necessary so we don't erroneously get a circular dependency
2739
2647
  // failure based on types.
2740
- const unusedValueExportToPlacateAjd$5 = 1;
2648
+ const unusedValueExportToPlacateAjd$6 = 1;
2741
2649
 
2742
2650
  /**
2743
2651
  * Converts `TNodeType` into human readable text.
@@ -2756,7 +2664,7 @@ function toTNodeTypeAsString(tNodeType) {
2756
2664
  }
2757
2665
  // Note: This hack is necessary so we don't erroneously get a circular dependency
2758
2666
  // failure based on types.
2759
- const unusedValueExportToPlacateAjd$4 = 1;
2667
+ const unusedValueExportToPlacateAjd$5 = 1;
2760
2668
  /**
2761
2669
  * Returns `true` if the `TNode` has a directive which has `@Input()` for `class` binding.
2762
2670
  *
@@ -2860,7 +2768,6 @@ function assertPureTNodeType(type) {
2860
2768
  * @returns the index value that was last accessed in the attributes array
2861
2769
  */
2862
2770
  function setUpAttributes(renderer, native, attrs) {
2863
- const isProc = isProceduralRenderer(renderer);
2864
2771
  let i = 0;
2865
2772
  while (i < attrs.length) {
2866
2773
  const value = attrs[i];
@@ -2877,9 +2784,7 @@ function setUpAttributes(renderer, native, attrs) {
2877
2784
  const attrName = attrs[i++];
2878
2785
  const attrVal = attrs[i++];
2879
2786
  ngDevMode && ngDevMode.rendererSetAttribute++;
2880
- isProc ?
2881
- renderer.setAttribute(native, attrName, attrVal, namespaceURI) :
2882
- native.setAttributeNS(namespaceURI, attrName, attrVal);
2787
+ renderer.setAttribute(native, attrName, attrVal, namespaceURI);
2883
2788
  }
2884
2789
  else {
2885
2790
  // attrName is string;
@@ -2888,14 +2793,10 @@ function setUpAttributes(renderer, native, attrs) {
2888
2793
  // Standard attributes
2889
2794
  ngDevMode && ngDevMode.rendererSetAttribute++;
2890
2795
  if (isAnimationProp(attrName)) {
2891
- if (isProc) {
2892
- renderer.setProperty(native, attrName, attrVal);
2893
- }
2796
+ renderer.setProperty(native, attrName, attrVal);
2894
2797
  }
2895
2798
  else {
2896
- isProc ?
2897
- renderer.setAttribute(native, attrName, attrVal) :
2898
- native.setAttribute(attrName, attrVal);
2799
+ renderer.setAttribute(native, attrName, attrVal);
2899
2800
  }
2900
2801
  i++;
2901
2802
  }
@@ -5337,6 +5238,61 @@ function setAllowDuplicateNgModuleIdsForTest(allowDuplicates) {
5337
5238
  checkForDuplicateNgModules = !allowDuplicates;
5338
5239
  }
5339
5240
 
5241
+ /**
5242
+ * @license
5243
+ * Copyright Google LLC All Rights Reserved.
5244
+ *
5245
+ * Use of this source code is governed by an MIT-style license that can be
5246
+ * found in the LICENSE file at https://angular.io/license
5247
+ */
5248
+ /**
5249
+ * Most of the use of `document` in Angular is from within the DI system so it is possible to simply
5250
+ * inject the `DOCUMENT` token and are done.
5251
+ *
5252
+ * Ivy is special because it does not rely upon the DI and must get hold of the document some other
5253
+ * way.
5254
+ *
5255
+ * The solution is to define `getDocument()` and `setDocument()` top-level functions for ivy.
5256
+ * Wherever ivy needs the global document, it calls `getDocument()` instead.
5257
+ *
5258
+ * When running ivy outside of a browser environment, it is necessary to call `setDocument()` to
5259
+ * tell ivy what the global `document` is.
5260
+ *
5261
+ * Angular does this for us in each of the standard platforms (`Browser`, `Server`, and `WebWorker`)
5262
+ * by calling `setDocument()` when providing the `DOCUMENT` token.
5263
+ */
5264
+ let DOCUMENT = undefined;
5265
+ /**
5266
+ * Tell ivy what the `document` is for this platform.
5267
+ *
5268
+ * It is only necessary to call this if the current platform is not a browser.
5269
+ *
5270
+ * @param document The object representing the global `document` in this environment.
5271
+ */
5272
+ function setDocument(document) {
5273
+ DOCUMENT = document;
5274
+ }
5275
+ /**
5276
+ * Access the object that represents the `document` for this platform.
5277
+ *
5278
+ * Ivy calls this whenever it needs to access the `document` object.
5279
+ * For example to create the renderer or to do sanitization.
5280
+ */
5281
+ function getDocument() {
5282
+ if (DOCUMENT !== undefined) {
5283
+ return DOCUMENT;
5284
+ }
5285
+ else if (typeof document !== 'undefined') {
5286
+ return document;
5287
+ }
5288
+ // No "document" can be found. This should only happen if we are running ivy outside Angular and
5289
+ // the current platform is not a browser. Since this is not a supported scenario at the moment
5290
+ // this should not happen in Angular apps.
5291
+ // Once we support running ivy outside of Angular we will need to publish `setDocument()` as a
5292
+ // public API. Meanwhile we just return `undefined` and let the application fail.
5293
+ return undefined;
5294
+ }
5295
+
5340
5296
  /**
5341
5297
  * @license
5342
5298
  * Copyright Google LLC All Rights Reserved.
@@ -7072,6 +7028,17 @@ function ensureIcuContainerVisitorLoaded(loader) {
7072
7028
  }
7073
7029
  }
7074
7030
 
7031
+ /**
7032
+ * @license
7033
+ * Copyright Google LLC All Rights Reserved.
7034
+ *
7035
+ * Use of this source code is governed by an MIT-style license that can be
7036
+ * found in the LICENSE file at https://angular.io/license
7037
+ */
7038
+ // Note: This hack is necessary so we don't erroneously get a circular dependency
7039
+ // failure based on types.
7040
+ const unusedValueExportToPlacateAjd$4 = 1;
7041
+
7075
7042
  /**
7076
7043
  * @license
7077
7044
  * Copyright Google LLC All Rights Reserved.
@@ -7154,7 +7121,7 @@ function getNearestLContainer(viewOrContainer) {
7154
7121
  * Use of this source code is governed by an MIT-style license that can be
7155
7122
  * found in the LICENSE file at https://angular.io/license
7156
7123
  */
7157
- const unusedValueToPlacateAjd$2 = unusedValueExportToPlacateAjd$8 + unusedValueExportToPlacateAjd$4 + unusedValueExportToPlacateAjd$3 + unusedValueExportToPlacateAjd$6 + unusedValueExportToPlacateAjd$7;
7124
+ const unusedValueToPlacateAjd$2 = unusedValueExportToPlacateAjd$8 + unusedValueExportToPlacateAjd$5 + unusedValueExportToPlacateAjd$4 + unusedValueExportToPlacateAjd$3 + unusedValueExportToPlacateAjd$7;
7158
7125
  /**
7159
7126
  * NOTE: for performance reasons, the possible actions are inlined within the function instead of
7160
7127
  * being passed as an argument.
@@ -7179,7 +7146,6 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
7179
7146
  lNodeToHandle = lNodeToHandle[HOST];
7180
7147
  }
7181
7148
  const rNode = unwrapRNode(lNodeToHandle);
7182
- ngDevMode && !isProceduralRenderer(renderer) && assertDomNode(rNode);
7183
7149
  if (action === 0 /* WalkTNodeTreeAction.Create */ && parent !== null) {
7184
7150
  if (beforeNode == null) {
7185
7151
  nativeAppendChild(renderer, parent, rNode);
@@ -7206,17 +7172,14 @@ function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, befo
7206
7172
  function createTextNode(renderer, value) {
7207
7173
  ngDevMode && ngDevMode.rendererCreateTextNode++;
7208
7174
  ngDevMode && ngDevMode.rendererSetText++;
7209
- return isProceduralRenderer(renderer) ? renderer.createText(value) :
7210
- renderer.createTextNode(value);
7175
+ return renderer.createText(value);
7211
7176
  }
7212
7177
  function updateTextNode(renderer, rNode, value) {
7213
7178
  ngDevMode && ngDevMode.rendererSetText++;
7214
- isProceduralRenderer(renderer) ? renderer.setValue(rNode, value) : rNode.textContent = value;
7179
+ renderer.setValue(rNode, value);
7215
7180
  }
7216
7181
  function createCommentNode(renderer, value) {
7217
7182
  ngDevMode && ngDevMode.rendererCreateComment++;
7218
- // isProceduralRenderer check is not needed because both `Renderer2` and `Renderer3` have the same
7219
- // method name.
7220
7183
  return renderer.createComment(escapeCommentText(value));
7221
7184
  }
7222
7185
  /**
@@ -7228,14 +7191,7 @@ function createCommentNode(renderer, value) {
7228
7191
  */
7229
7192
  function createElementNode(renderer, name, namespace) {
7230
7193
  ngDevMode && ngDevMode.rendererCreateElement++;
7231
- if (isProceduralRenderer(renderer)) {
7232
- return renderer.createElement(name, namespace);
7233
- }
7234
- else {
7235
- const namespaceUri = namespace !== null ? getNamespaceUri(namespace) : null;
7236
- return namespaceUri === null ? renderer.createElement(name) :
7237
- renderer.createElementNS(namespaceUri, name);
7238
- }
7194
+ return renderer.createElement(name, namespace);
7239
7195
  }
7240
7196
  /**
7241
7197
  * Removes all DOM elements associated with a view.
@@ -7467,7 +7423,7 @@ function detachView(lContainer, removeIndex) {
7467
7423
  function destroyLView(tView, lView) {
7468
7424
  if (!(lView[FLAGS] & 128 /* LViewFlags.Destroyed */)) {
7469
7425
  const renderer = lView[RENDERER];
7470
- if (isProceduralRenderer(renderer) && renderer.destroyNode) {
7426
+ if (renderer.destroyNode) {
7471
7427
  applyView(tView, lView, renderer, 3 /* WalkTNodeTreeAction.Destroy */, null, null);
7472
7428
  }
7473
7429
  destroyViewTree(lView);
@@ -7495,7 +7451,7 @@ function cleanUpView(tView, lView) {
7495
7451
  executeOnDestroys(tView, lView);
7496
7452
  processCleanups(tView, lView);
7497
7453
  // For component views only, the local renderer is destroyed at clean up time.
7498
- if (lView[TVIEW].type === 1 /* TViewType.Component */ && isProceduralRenderer(lView[RENDERER])) {
7454
+ if (lView[TVIEW].type === 1 /* TViewType.Component */) {
7499
7455
  ngDevMode && ngDevMode.rendererDestroy++;
7500
7456
  lView[RENDERER].destroy();
7501
7457
  }
@@ -7671,30 +7627,17 @@ function getClosestRElement(tView, tNode, lView) {
7671
7627
  }
7672
7628
  }
7673
7629
  /**
7674
- * Inserts a native node before another native node for a given parent using {@link Renderer3}.
7675
- * This is a utility function that can be used when native nodes were determined - it abstracts an
7676
- * actual renderer being used.
7630
+ * Inserts a native node before another native node for a given parent.
7631
+ * This is a utility function that can be used when native nodes were determined.
7677
7632
  */
7678
7633
  function nativeInsertBefore(renderer, parent, child, beforeNode, isMove) {
7679
7634
  ngDevMode && ngDevMode.rendererInsertBefore++;
7680
- if (isProceduralRenderer(renderer)) {
7681
- renderer.insertBefore(parent, child, beforeNode, isMove);
7682
- }
7683
- else {
7684
- const targetParent = isTemplateNode(parent) ? parent.content : parent;
7685
- targetParent.insertBefore(child, beforeNode, isMove);
7686
- }
7635
+ renderer.insertBefore(parent, child, beforeNode, isMove);
7687
7636
  }
7688
7637
  function nativeAppendChild(renderer, parent, child) {
7689
7638
  ngDevMode && ngDevMode.rendererAppendChild++;
7690
7639
  ngDevMode && assertDefined(parent, 'parent node must be defined');
7691
- if (isProceduralRenderer(renderer)) {
7692
- renderer.appendChild(parent, child);
7693
- }
7694
- else {
7695
- const targetParent = isTemplateNode(parent) ? parent.content : parent;
7696
- targetParent.appendChild(child);
7697
- }
7640
+ renderer.appendChild(parent, child);
7698
7641
  }
7699
7642
  function nativeAppendOrInsertBefore(renderer, parent, child, beforeNode, isMove) {
7700
7643
  if (beforeNode !== null) {
@@ -7706,12 +7649,7 @@ function nativeAppendOrInsertBefore(renderer, parent, child, beforeNode, isMove)
7706
7649
  }
7707
7650
  /** Removes a node from the DOM given its native parent. */
7708
7651
  function nativeRemoveChild(renderer, parent, child, isHostElement) {
7709
- if (isProceduralRenderer(renderer)) {
7710
- renderer.removeChild(parent, child, isHostElement);
7711
- }
7712
- else {
7713
- parent.removeChild(child);
7714
- }
7652
+ renderer.removeChild(parent, child, isHostElement);
7715
7653
  }
7716
7654
  /** Checks if an element is a `<template>` node. */
7717
7655
  function isTemplateNode(node) {
@@ -7721,13 +7659,13 @@ function isTemplateNode(node) {
7721
7659
  * Returns a native parent of a given native node.
7722
7660
  */
7723
7661
  function nativeParentNode(renderer, node) {
7724
- return (isProceduralRenderer(renderer) ? renderer.parentNode(node) : node.parentNode);
7662
+ return renderer.parentNode(node);
7725
7663
  }
7726
7664
  /**
7727
7665
  * Returns a native sibling of a given native node.
7728
7666
  */
7729
7667
  function nativeNextSibling(renderer, node) {
7730
- return isProceduralRenderer(renderer) ? renderer.nextSibling(node) : node.nextSibling;
7668
+ return renderer.nextSibling(node);
7731
7669
  }
7732
7670
  /**
7733
7671
  * Find a node in front of which `currentTNode` should be inserted.
@@ -8036,39 +7974,22 @@ function applyContainer(renderer, action, lContainer, parentRElement, beforeNode
8036
7974
  * otherwise).
8037
7975
  */
8038
7976
  function applyStyling(renderer, isClassBased, rNode, prop, value) {
8039
- const isProcedural = isProceduralRenderer(renderer);
8040
7977
  if (isClassBased) {
8041
7978
  // We actually want JS true/false here because any truthy value should add the class
8042
7979
  if (!value) {
8043
7980
  ngDevMode && ngDevMode.rendererRemoveClass++;
8044
- if (isProcedural) {
8045
- renderer.removeClass(rNode, prop);
8046
- }
8047
- else {
8048
- rNode.classList.remove(prop);
8049
- }
7981
+ renderer.removeClass(rNode, prop);
8050
7982
  }
8051
7983
  else {
8052
7984
  ngDevMode && ngDevMode.rendererAddClass++;
8053
- if (isProcedural) {
8054
- renderer.addClass(rNode, prop);
8055
- }
8056
- else {
8057
- ngDevMode && assertDefined(rNode.classList, 'HTMLElement expected');
8058
- rNode.classList.add(prop);
8059
- }
7985
+ renderer.addClass(rNode, prop);
8060
7986
  }
8061
7987
  }
8062
7988
  else {
8063
7989
  let flags = prop.indexOf('-') === -1 ? undefined : RendererStyleFlags2.DashCase;
8064
7990
  if (value == null /** || value === undefined */) {
8065
7991
  ngDevMode && ngDevMode.rendererRemoveStyle++;
8066
- if (isProcedural) {
8067
- renderer.removeStyle(rNode, prop, flags);
8068
- }
8069
- else {
8070
- rNode.style.removeProperty(prop);
8071
- }
7992
+ renderer.removeStyle(rNode, prop, flags);
8072
7993
  }
8073
7994
  else {
8074
7995
  // A value is important if it ends with `!important`. The style
@@ -8080,13 +8001,7 @@ function applyStyling(renderer, isClassBased, rNode, prop, value) {
8080
8001
  flags |= RendererStyleFlags2.Important;
8081
8002
  }
8082
8003
  ngDevMode && ngDevMode.rendererSetStyle++;
8083
- if (isProcedural) {
8084
- renderer.setStyle(rNode, prop, value, flags);
8085
- }
8086
- else {
8087
- ngDevMode && assertDefined(rNode.style, 'HTMLElement expected');
8088
- rNode.style.setProperty(prop, value, isImportant ? 'important' : '');
8089
- }
8004
+ renderer.setStyle(rNode, prop, value, flags);
8090
8005
  }
8091
8006
  }
8092
8007
  }
@@ -8102,12 +8017,7 @@ function applyStyling(renderer, isClassBased, rNode, prop, value) {
8102
8017
  */
8103
8018
  function writeDirectStyle(renderer, element, newValue) {
8104
8019
  ngDevMode && assertString(newValue, '\'newValue\' should be a string');
8105
- if (isProceduralRenderer(renderer)) {
8106
- renderer.setAttribute(element, 'style', newValue);
8107
- }
8108
- else {
8109
- element.style.cssText = newValue;
8110
- }
8020
+ renderer.setAttribute(element, 'style', newValue);
8111
8021
  ngDevMode && ngDevMode.rendererSetStyle++;
8112
8022
  }
8113
8023
  /**
@@ -8122,17 +8032,12 @@ function writeDirectStyle(renderer, element, newValue) {
8122
8032
  */
8123
8033
  function writeDirectClass(renderer, element, newValue) {
8124
8034
  ngDevMode && assertString(newValue, '\'newValue\' should be a string');
8125
- if (isProceduralRenderer(renderer)) {
8126
- if (newValue === '') {
8127
- // There are tests in `google3` which expect `element.getAttribute('class')` to be `null`.
8128
- renderer.removeAttribute(element, 'class');
8129
- }
8130
- else {
8131
- renderer.setAttribute(element, 'class', newValue);
8132
- }
8035
+ if (newValue === '') {
8036
+ // There are tests in `google3` which expect `element.getAttribute('class')` to be `null`.
8037
+ renderer.removeAttribute(element, 'class');
8133
8038
  }
8134
8039
  else {
8135
- element.className = newValue;
8040
+ renderer.setAttribute(element, 'class', newValue);
8136
8041
  }
8137
8042
  ngDevMode && ngDevMode.rendererSetClassName++;
8138
8043
  }
@@ -8182,7 +8087,7 @@ function classIndexOf(className, classToSearch, startingIndex) {
8182
8087
  * Use of this source code is governed by an MIT-style license that can be
8183
8088
  * found in the LICENSE file at https://angular.io/license
8184
8089
  */
8185
- const unusedValueToPlacateAjd$1 = unusedValueExportToPlacateAjd$4 + unusedValueExportToPlacateAjd$3;
8090
+ const unusedValueToPlacateAjd$1 = unusedValueExportToPlacateAjd$5 + unusedValueExportToPlacateAjd$4;
8186
8091
  const NG_TEMPLATE_SELECTOR = 'ng-template';
8187
8092
  /**
8188
8093
  * Search the `TAttributes` to see if it contains `cssClassToMatch` (case insensitive)
@@ -11513,6 +11418,13 @@ class LContainerDebug {
11513
11418
  }
11514
11419
  }
11515
11420
 
11421
+ /**
11422
+ * @license
11423
+ * Copyright Google LLC All Rights Reserved.
11424
+ *
11425
+ * Use of this source code is governed by an MIT-style license that can be
11426
+ * found in the LICENSE file at https://angular.io/license
11427
+ */
11516
11428
  /**
11517
11429
  * A permanent marker promise which signifies that the current CD tree is
11518
11430
  * clean.
@@ -11580,7 +11492,7 @@ function refreshChildComponents(hostLView, components) {
11580
11492
  /** Renders child components in the current view (creation mode). */
11581
11493
  function renderChildComponents(hostLView, components) {
11582
11494
  for (let i = 0; i < components.length; i++) {
11583
- renderComponent$1(hostLView, components[i]);
11495
+ renderComponent(hostLView, components[i]);
11584
11496
  }
11585
11497
  }
11586
11498
  function createLView(parentLView, tView, context, flags, host, tHostNode, rendererFactory, renderer, sanitizer, injector, embeddedViewInjector) {
@@ -12098,16 +12010,6 @@ function createViewBlueprint(bindingStartIndex, initialViewLength) {
12098
12010
  function createError(text, token) {
12099
12011
  return new Error(`Renderer: ${text} [${stringifyForError(token)}]`);
12100
12012
  }
12101
- function assertHostNodeExists(rElement, elementOrSelector) {
12102
- if (!rElement) {
12103
- if (typeof elementOrSelector === 'string') {
12104
- throw createError('Host node with selector not found:', elementOrSelector);
12105
- }
12106
- else {
12107
- throw createError('Host node is required:', elementOrSelector);
12108
- }
12109
- }
12110
- }
12111
12013
  /**
12112
12014
  * Locates the host native element, used for bootstrapping existing nodes into rendering pipeline.
12113
12015
  *
@@ -12116,21 +12018,9 @@ function assertHostNodeExists(rElement, elementOrSelector) {
12116
12018
  * @param encapsulation View Encapsulation defined for component that requests host element.
12117
12019
  */
12118
12020
  function locateHostElement(renderer, elementOrSelector, encapsulation) {
12119
- if (isProceduralRenderer(renderer)) {
12120
- // When using native Shadow DOM, do not clear host element to allow native slot projection
12121
- const preserveContent = encapsulation === ViewEncapsulation$1.ShadowDom;
12122
- return renderer.selectRootElement(elementOrSelector, preserveContent);
12123
- }
12124
- let rElement = typeof elementOrSelector === 'string' ?
12125
- renderer.querySelector(elementOrSelector) :
12126
- elementOrSelector;
12127
- ngDevMode && assertHostNodeExists(rElement, elementOrSelector);
12128
- // Always clear host element's content when Renderer3 is in use. For procedural renderer case we
12129
- // make it depend on whether ShadowDom encapsulation is used (in which case the content should be
12130
- // preserved to allow native slot projection). ShadowDom encapsulation requires procedural
12131
- // renderer, and procedural renderer case is handled above.
12132
- rElement.textContent = '';
12133
- return rElement;
12021
+ // When using native Shadow DOM, do not clear host element to allow native slot projection
12022
+ const preserveContent = encapsulation === ViewEncapsulation$1.ShadowDom;
12023
+ return renderer.selectRootElement(elementOrSelector, preserveContent);
12134
12024
  }
12135
12025
  /**
12136
12026
  * Saves context for this cleanup function in LView.cleanupInstances.
@@ -12345,13 +12235,7 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
12345
12235
  // It is assumed that the sanitizer is only added when the compiler determines that the
12346
12236
  // property is risky, so sanitization can be done without further checks.
12347
12237
  value = sanitizer != null ? sanitizer(value, tNode.value || '', propName) : value;
12348
- if (isProceduralRenderer(renderer)) {
12349
- renderer.setProperty(element, propName, value);
12350
- }
12351
- else if (!isAnimationProp(propName)) {
12352
- element.setProperty ? element.setProperty(propName, value) :
12353
- element[propName] = value;
12354
- }
12238
+ renderer.setProperty(element, propName, value);
12355
12239
  }
12356
12240
  else if (tNode.type & 12 /* TNodeType.AnyContainer */) {
12357
12241
  // If the node is a container and the property didn't
@@ -12375,23 +12259,15 @@ function setNgReflectProperty(lView, element, type, attrName, value) {
12375
12259
  const debugValue = normalizeDebugBindingValue(value);
12376
12260
  if (type & 3 /* TNodeType.AnyRNode */) {
12377
12261
  if (value == null) {
12378
- isProceduralRenderer(renderer) ? renderer.removeAttribute(element, attrName) :
12379
- element.removeAttribute(attrName);
12262
+ renderer.removeAttribute(element, attrName);
12380
12263
  }
12381
12264
  else {
12382
- isProceduralRenderer(renderer) ?
12383
- renderer.setAttribute(element, attrName, debugValue) :
12384
- element.setAttribute(attrName, debugValue);
12265
+ renderer.setAttribute(element, attrName, debugValue);
12385
12266
  }
12386
12267
  }
12387
12268
  else {
12388
12269
  const textContent = escapeCommentText(`bindings=${JSON.stringify({ [attrName]: debugValue }, null, 2)}`);
12389
- if (isProceduralRenderer(renderer)) {
12390
- renderer.setValue(element, textContent);
12391
- }
12392
- else {
12393
- element.textContent = textContent;
12394
- }
12270
+ renderer.setValue(element, textContent);
12395
12271
  }
12396
12272
  }
12397
12273
  function setNgReflectProperties(lView, element, type, dataValue, value) {
@@ -12745,19 +12621,12 @@ function elementAttributeInternal(tNode, lView, name, value, sanitizer, namespac
12745
12621
  function setElementAttribute(renderer, element, namespace, tagName, name, value, sanitizer) {
12746
12622
  if (value == null) {
12747
12623
  ngDevMode && ngDevMode.rendererRemoveAttribute++;
12748
- isProceduralRenderer(renderer) ? renderer.removeAttribute(element, name, namespace) :
12749
- element.removeAttribute(name);
12624
+ renderer.removeAttribute(element, name, namespace);
12750
12625
  }
12751
12626
  else {
12752
12627
  ngDevMode && ngDevMode.rendererSetAttribute++;
12753
12628
  const strValue = sanitizer == null ? renderStringify(value) : sanitizer(value, tagName || '', name);
12754
- if (isProceduralRenderer(renderer)) {
12755
- renderer.setAttribute(element, name, strValue, namespace);
12756
- }
12757
- else {
12758
- namespace ? element.setAttributeNS(namespace, name, strValue) :
12759
- element.setAttribute(name, strValue);
12760
- }
12629
+ renderer.setAttribute(element, name, strValue, namespace);
12761
12630
  }
12762
12631
  }
12763
12632
  /**
@@ -12849,7 +12718,6 @@ const LContainerArray = class LContainer extends Array {
12849
12718
  */
12850
12719
  function createLContainer(hostNative, currentView, native, tNode) {
12851
12720
  ngDevMode && assertLView(currentView);
12852
- ngDevMode && !isProceduralRenderer(currentView[RENDERER]) && assertDomNode(native);
12853
12721
  // https://jsperf.com/array-literal-vs-new-array-really
12854
12722
  const lContainer = new (ngDevMode ? LContainerArray : Array)(hostNative, // host native
12855
12723
  true, // Boolean `true` in this position signifies that this is an `LContainer`
@@ -12965,7 +12833,7 @@ function refreshContainsDirtyView(lView) {
12965
12833
  }
12966
12834
  }
12967
12835
  }
12968
- function renderComponent$1(hostLView, componentHostIdx) {
12836
+ function renderComponent(hostLView, componentHostIdx) {
12969
12837
  ngDevMode && assertEqual(isCreationMode(hostLView), true, 'Should be run in creation mode');
12970
12838
  const componentView = getComponentLViewByIndex(componentHostIdx, hostLView);
12971
12839
  const componentTView = componentView[TVIEW];
@@ -13317,48 +13185,135 @@ function computeStaticStyling(tNode, attrs, writeToHost) {
13317
13185
  * Use of this source code is governed by an MIT-style license that can be
13318
13186
  * found in the LICENSE file at https://angular.io/license
13319
13187
  */
13188
+ // TODO: A hack to not pull in the NullInjector from @angular/core.
13189
+ const NULL_INJECTOR = {
13190
+ get: (token, notFoundValue) => {
13191
+ throwProviderNotFoundError(token, 'NullInjector');
13192
+ }
13193
+ };
13320
13194
  /**
13321
- * Synchronously perform change detection on a component (and possibly its sub-components).
13195
+ * Creates the root component view and the root component node.
13322
13196
  *
13323
- * This function triggers change detection in a synchronous way on a component.
13197
+ * @param rNode Render host element.
13198
+ * @param def ComponentDef
13199
+ * @param rootView The parent view where the host node is stored
13200
+ * @param rendererFactory Factory to be used for creating child renderers.
13201
+ * @param hostRenderer The current renderer
13202
+ * @param sanitizer The sanitizer, if provided
13324
13203
  *
13325
- * @param component The component which the change detection should be performed on.
13204
+ * @returns Component view created
13326
13205
  */
13327
- function detectChanges(component) {
13328
- const view = getComponentViewByInstance(component);
13329
- detectChangesInternal(view[TVIEW], view, component);
13206
+ function createRootComponentView(rNode, def, rootView, rendererFactory, hostRenderer, sanitizer) {
13207
+ const tView = rootView[TVIEW];
13208
+ const index = HEADER_OFFSET;
13209
+ ngDevMode && assertIndexInRange(rootView, index);
13210
+ rootView[index] = rNode;
13211
+ // '#host' is added here as we don't know the real host DOM name (we don't want to read it) and at
13212
+ // the same time we want to communicate the debug `TNode` that this is a special `TNode`
13213
+ // representing a host element.
13214
+ const tNode = getOrCreateTNode(tView, index, 2 /* TNodeType.Element */, '#host', null);
13215
+ const mergedAttrs = tNode.mergedAttrs = def.hostAttrs;
13216
+ if (mergedAttrs !== null) {
13217
+ computeStaticStyling(tNode, mergedAttrs, true);
13218
+ if (rNode !== null) {
13219
+ setUpAttributes(hostRenderer, rNode, mergedAttrs);
13220
+ if (tNode.classes !== null) {
13221
+ writeDirectClass(hostRenderer, rNode, tNode.classes);
13222
+ }
13223
+ if (tNode.styles !== null) {
13224
+ writeDirectStyle(hostRenderer, rNode, tNode.styles);
13225
+ }
13226
+ }
13227
+ }
13228
+ const viewRenderer = rendererFactory.createRenderer(rNode, def);
13229
+ const componentView = createLView(rootView, getOrCreateTComponentView(def), null, def.onPush ? 32 /* LViewFlags.Dirty */ : 16 /* LViewFlags.CheckAlways */, rootView[index], tNode, rendererFactory, viewRenderer, sanitizer || null, null, null);
13230
+ if (tView.firstCreatePass) {
13231
+ diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, rootView), tView, def.type);
13232
+ markAsComponentHost(tView, tNode);
13233
+ initTNodeFlags(tNode, rootView.length, 1);
13234
+ }
13235
+ addToViewTree(rootView, componentView);
13236
+ // Store component view at node index, with node as the HOST
13237
+ return rootView[index] = componentView;
13330
13238
  }
13331
13239
  /**
13332
- * Marks the component as dirty (needing change detection). Marking a component dirty will
13333
- * schedule a change detection on it at some point in the future.
13334
- *
13335
- * Marking an already dirty component as dirty won't do anything. Only one outstanding change
13336
- * detection can be scheduled per component tree.
13337
- *
13338
- * @param component Component to mark as dirty.
13240
+ * Creates a root component and sets it up with features and host bindings. Shared by
13241
+ * renderComponent() and ViewContainerRef.createComponent().
13339
13242
  */
13340
- function markDirty(component) {
13341
- ngDevMode && assertDefined(component, 'component');
13342
- const rootView = markViewDirty(getComponentViewByInstance(component));
13343
- ngDevMode && assertDefined(rootView[CONTEXT], 'rootContext should be defined');
13344
- scheduleTick(rootView[CONTEXT], 1 /* RootContextFlags.DetectChanges */);
13345
- }
13243
+ function createRootComponent(componentView, componentDef, rootLView, rootContext, hostFeatures) {
13244
+ const tView = rootLView[TVIEW];
13245
+ // Create directive instance with factory() and store at next index in viewData
13246
+ const component = instantiateRootComponent(tView, rootLView, componentDef);
13247
+ rootContext.components.push(component);
13248
+ componentView[CONTEXT] = component;
13249
+ if (hostFeatures !== null) {
13250
+ for (const feature of hostFeatures) {
13251
+ feature(component, componentDef);
13252
+ }
13253
+ }
13254
+ // We want to generate an empty QueryList for root content queries for backwards
13255
+ // compatibility with ViewEngine.
13256
+ if (componentDef.contentQueries) {
13257
+ const tNode = getCurrentTNode();
13258
+ ngDevMode && assertDefined(tNode, 'TNode expected');
13259
+ componentDef.contentQueries(1 /* RenderFlags.Create */, component, tNode.directiveStart);
13260
+ }
13261
+ const rootTNode = getCurrentTNode();
13262
+ ngDevMode && assertDefined(rootTNode, 'tNode should have been already created');
13263
+ if (tView.firstCreatePass &&
13264
+ (componentDef.hostBindings !== null || componentDef.hostAttrs !== null)) {
13265
+ setSelectedIndex(rootTNode.index);
13266
+ const rootTView = rootLView[TVIEW];
13267
+ registerHostBindingOpCodes(rootTView, rootTNode, rootLView, rootTNode.directiveStart, rootTNode.directiveEnd, componentDef);
13268
+ invokeHostBindingsInCreationMode(componentDef, component);
13269
+ }
13270
+ return component;
13271
+ }
13272
+ function createRootContext(scheduler, playerHandler) {
13273
+ return {
13274
+ components: [],
13275
+ scheduler: scheduler || defaultScheduler,
13276
+ clean: CLEAN_PROMISE,
13277
+ playerHandler: playerHandler || null,
13278
+ flags: 0 /* RootContextFlags.Empty */
13279
+ };
13280
+ }
13346
13281
  /**
13347
- * Used to perform change detection on the whole application.
13282
+ * Used to enable lifecycle hooks on the root component.
13348
13283
  *
13349
- * This is equivalent to `detectChanges`, but invoked on root component. Additionally, `tick`
13350
- * executes lifecycle hooks and conditionally checks components based on their
13351
- * `ChangeDetectionStrategy` and dirtiness.
13284
+ * Include this feature when calling `renderComponent` if the root component
13285
+ * you are rendering has lifecycle hooks defined. Otherwise, the hooks won't
13286
+ * be called properly.
13352
13287
  *
13353
- * The preferred way to trigger change detection is to call `markDirty`. `markDirty` internally
13354
- * schedules `tick` using a scheduler in order to coalesce multiple `markDirty` calls into a
13355
- * single change detection run. By default, the scheduler is `requestAnimationFrame`, but can
13356
- * be changed when calling `renderComponent` and providing the `scheduler` option.
13288
+ * Example:
13289
+ *
13290
+ * ```
13291
+ * renderComponent(AppComponent, {hostFeatures: [LifecycleHooksFeature]});
13292
+ * ```
13357
13293
  */
13358
- function tick(component) {
13359
- const rootView = getRootView(component);
13360
- const rootContext = rootView[CONTEXT];
13361
- tickRootContext(rootContext);
13294
+ function LifecycleHooksFeature() {
13295
+ const tNode = getCurrentTNode();
13296
+ ngDevMode && assertDefined(tNode, 'TNode is required');
13297
+ registerPostOrderHooks(getLView()[TVIEW], tNode);
13298
+ }
13299
+ /**
13300
+ * Wait on component until it is rendered.
13301
+ *
13302
+ * This function returns a `Promise` which is resolved when the component's
13303
+ * change detection is executed. This is determined by finding the scheduler
13304
+ * associated with the `component`'s render tree and waiting until the scheduler
13305
+ * flushes. If nothing is scheduled, the function returns a resolved promise.
13306
+ *
13307
+ * Example:
13308
+ * ```
13309
+ * await whenRendered(myComponent);
13310
+ * ```
13311
+ *
13312
+ * @param component Component to wait upon
13313
+ * @returns Promise which resolves when the component is rendered.
13314
+ */
13315
+ function whenRendered(component) {
13316
+ return getRootContext(component).clean;
13362
13317
  }
13363
13318
 
13364
13319
  /**
@@ -13368,407 +13323,312 @@ function tick(component) {
13368
13323
  * Use of this source code is governed by an MIT-style license that can be
13369
13324
  * found in the LICENSE file at https://angular.io/license
13370
13325
  */
13326
+ function getSuperType(type) {
13327
+ return Object.getPrototypeOf(type.prototype).constructor;
13328
+ }
13371
13329
  /**
13372
- * Retrieves the component instance associated with a given DOM element.
13373
- *
13374
- * @usageNotes
13375
- * Given the following DOM structure:
13376
- *
13377
- * ```html
13378
- * <app-root>
13379
- * <div>
13380
- * <child-comp></child-comp>
13381
- * </div>
13382
- * </app-root>
13383
- * ```
13384
- *
13385
- * Calling `getComponent` on `<child-comp>` will return the instance of `ChildComponent`
13386
- * associated with this DOM element.
13387
- *
13388
- * Calling the function on `<app-root>` will return the `MyApp` instance.
13389
- *
13390
- *
13391
- * @param element DOM element from which the component should be retrieved.
13392
- * @returns Component instance associated with the element or `null` if there
13393
- * is no component associated with it.
13330
+ * Merges the definition from a super class to a sub class.
13331
+ * @param definition The definition that is a SubClass of another directive of component
13394
13332
  *
13395
- * @publicApi
13396
- * @globalApi ng
13333
+ * @codeGenApi
13397
13334
  */
13398
- function getComponent$1(element) {
13399
- ngDevMode && assertDomElement(element);
13400
- const context = getLContext(element);
13401
- if (context === null)
13402
- return null;
13403
- if (context.component === undefined) {
13404
- const lView = context.lView;
13405
- if (lView === null) {
13406
- return null;
13335
+ function ɵɵInheritDefinitionFeature(definition) {
13336
+ let superType = getSuperType(definition.type);
13337
+ let shouldInheritFields = true;
13338
+ const inheritanceChain = [definition];
13339
+ while (superType) {
13340
+ let superDef = undefined;
13341
+ if (isComponentDef(definition)) {
13342
+ // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.
13343
+ superDef = superType.ɵcmp || superType.ɵdir;
13407
13344
  }
13408
- context.component = getComponentAtNodeIndex(context.nodeIndex, lView);
13345
+ else {
13346
+ if (superType.ɵcmp) {
13347
+ throw new RuntimeError(903 /* RuntimeErrorCode.INVALID_INHERITANCE */, ngDevMode &&
13348
+ `Directives cannot inherit Components. Directive ${stringifyForError(definition.type)} is attempting to extend component ${stringifyForError(superType)}`);
13349
+ }
13350
+ // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.
13351
+ superDef = superType.ɵdir;
13352
+ }
13353
+ if (superDef) {
13354
+ if (shouldInheritFields) {
13355
+ inheritanceChain.push(superDef);
13356
+ // Some fields in the definition may be empty, if there were no values to put in them that
13357
+ // would've justified object creation. Unwrap them if necessary.
13358
+ const writeableDef = definition;
13359
+ writeableDef.inputs = maybeUnwrapEmpty(definition.inputs);
13360
+ writeableDef.declaredInputs = maybeUnwrapEmpty(definition.declaredInputs);
13361
+ writeableDef.outputs = maybeUnwrapEmpty(definition.outputs);
13362
+ // Merge hostBindings
13363
+ const superHostBindings = superDef.hostBindings;
13364
+ superHostBindings && inheritHostBindings(definition, superHostBindings);
13365
+ // Merge queries
13366
+ const superViewQuery = superDef.viewQuery;
13367
+ const superContentQueries = superDef.contentQueries;
13368
+ superViewQuery && inheritViewQuery(definition, superViewQuery);
13369
+ superContentQueries && inheritContentQueries(definition, superContentQueries);
13370
+ // Merge inputs and outputs
13371
+ fillProperties(definition.inputs, superDef.inputs);
13372
+ fillProperties(definition.declaredInputs, superDef.declaredInputs);
13373
+ fillProperties(definition.outputs, superDef.outputs);
13374
+ // Merge animations metadata.
13375
+ // If `superDef` is a Component, the `data` field is present (defaults to an empty object).
13376
+ if (isComponentDef(superDef) && superDef.data.animation) {
13377
+ // If super def is a Component, the `definition` is also a Component, since Directives can
13378
+ // not inherit Components (we throw an error above and cannot reach this code).
13379
+ const defData = definition.data;
13380
+ defData.animation = (defData.animation || []).concat(superDef.data.animation);
13381
+ }
13382
+ }
13383
+ // Run parent features
13384
+ const features = superDef.features;
13385
+ if (features) {
13386
+ for (let i = 0; i < features.length; i++) {
13387
+ const feature = features[i];
13388
+ if (feature && feature.ngInherit) {
13389
+ feature(definition);
13390
+ }
13391
+ // If `InheritDefinitionFeature` is a part of the current `superDef`, it means that this
13392
+ // def already has all the necessary information inherited from its super class(es), so we
13393
+ // can stop merging fields from super classes. However we need to iterate through the
13394
+ // prototype chain to look for classes that might contain other "features" (like
13395
+ // NgOnChanges), which we should invoke for the original `definition`. We set the
13396
+ // `shouldInheritFields` flag to indicate that, essentially skipping fields inheritance
13397
+ // logic and only invoking functions from the "features" list.
13398
+ if (feature === ɵɵInheritDefinitionFeature) {
13399
+ shouldInheritFields = false;
13400
+ }
13401
+ }
13402
+ }
13403
+ }
13404
+ superType = Object.getPrototypeOf(superType);
13409
13405
  }
13410
- return context.component;
13406
+ mergeHostAttrsAcrossInheritance(inheritanceChain);
13411
13407
  }
13412
13408
  /**
13413
- * If inside an embedded view (e.g. `*ngIf` or `*ngFor`), retrieves the context of the embedded
13414
- * view that the element is part of. Otherwise retrieves the instance of the component whose view
13415
- * owns the element (in this case, the result is the same as calling `getOwningComponent`).
13416
- *
13417
- * @param element Element for which to get the surrounding component instance.
13418
- * @returns Instance of the component that is around the element or null if the element isn't
13419
- * inside any component.
13409
+ * Merge the `hostAttrs` and `hostVars` from the inherited parent to the base class.
13420
13410
  *
13421
- * @publicApi
13422
- * @globalApi ng
13411
+ * @param inheritanceChain A list of `WritableDefs` starting at the top most type and listing
13412
+ * sub-types in order. For each type take the `hostAttrs` and `hostVars` and merge it with the child
13413
+ * type.
13423
13414
  */
13424
- function getContext(element) {
13425
- assertDomElement(element);
13426
- const context = getLContext(element);
13427
- const lView = context ? context.lView : null;
13428
- return lView === null ? null : lView[CONTEXT];
13415
+ function mergeHostAttrsAcrossInheritance(inheritanceChain) {
13416
+ let hostVars = 0;
13417
+ let hostAttrs = null;
13418
+ // We process the inheritance order from the base to the leaves here.
13419
+ for (let i = inheritanceChain.length - 1; i >= 0; i--) {
13420
+ const def = inheritanceChain[i];
13421
+ // For each `hostVars`, we need to add the superclass amount.
13422
+ def.hostVars = (hostVars += def.hostVars);
13423
+ // for each `hostAttrs` we need to merge it with superclass.
13424
+ def.hostAttrs =
13425
+ mergeHostAttrs(def.hostAttrs, hostAttrs = mergeHostAttrs(hostAttrs, def.hostAttrs));
13426
+ }
13429
13427
  }
13430
- /**
13431
- * Retrieves the component instance whose view contains the DOM element.
13432
- *
13433
- * For example, if `<child-comp>` is used in the template of `<app-comp>`
13434
- * (i.e. a `ViewChild` of `<app-comp>`), calling `getOwningComponent` on `<child-comp>`
13435
- * would return `<app-comp>`.
13436
- *
13437
- * @param elementOrDir DOM element, component or directive instance
13438
- * for which to retrieve the root components.
13439
- * @returns Component instance whose view owns the DOM element or null if the element is not
13440
- * part of a component view.
13441
- *
13442
- * @publicApi
13443
- * @globalApi ng
13444
- */
13445
- function getOwningComponent(elementOrDir) {
13446
- const context = getLContext(elementOrDir);
13447
- let lView = context ? context.lView : null;
13448
- if (lView === null)
13449
- return null;
13450
- let parent;
13451
- while (lView[TVIEW].type === 2 /* TViewType.Embedded */ && (parent = getLViewParent(lView))) {
13452
- lView = parent;
13428
+ function maybeUnwrapEmpty(value) {
13429
+ if (value === EMPTY_OBJ) {
13430
+ return {};
13431
+ }
13432
+ else if (value === EMPTY_ARRAY) {
13433
+ return [];
13434
+ }
13435
+ else {
13436
+ return value;
13453
13437
  }
13454
- return lView[FLAGS] & 256 /* LViewFlags.IsRoot */ ? null : lView[CONTEXT];
13455
13438
  }
13456
- /**
13457
- * Retrieves all root components associated with a DOM element, directive or component instance.
13458
- * Root components are those which have been bootstrapped by Angular.
13459
- *
13460
- * @param elementOrDir DOM element, component or directive instance
13461
- * for which to retrieve the root components.
13462
- * @returns Root components associated with the target object.
13463
- *
13464
- * @publicApi
13465
- * @globalApi ng
13466
- */
13467
- function getRootComponents(elementOrDir) {
13468
- const lView = readPatchedLView(elementOrDir);
13469
- return lView !== null ? [...getRootContext(lView).components] : [];
13439
+ function inheritViewQuery(definition, superViewQuery) {
13440
+ const prevViewQuery = definition.viewQuery;
13441
+ if (prevViewQuery) {
13442
+ definition.viewQuery = (rf, ctx) => {
13443
+ superViewQuery(rf, ctx);
13444
+ prevViewQuery(rf, ctx);
13445
+ };
13446
+ }
13447
+ else {
13448
+ definition.viewQuery = superViewQuery;
13449
+ }
13450
+ }
13451
+ function inheritContentQueries(definition, superContentQueries) {
13452
+ const prevContentQueries = definition.contentQueries;
13453
+ if (prevContentQueries) {
13454
+ definition.contentQueries = (rf, ctx, directiveIndex) => {
13455
+ superContentQueries(rf, ctx, directiveIndex);
13456
+ prevContentQueries(rf, ctx, directiveIndex);
13457
+ };
13458
+ }
13459
+ else {
13460
+ definition.contentQueries = superContentQueries;
13461
+ }
13462
+ }
13463
+ function inheritHostBindings(definition, superHostBindings) {
13464
+ const prevHostBindings = definition.hostBindings;
13465
+ if (prevHostBindings) {
13466
+ definition.hostBindings = (rf, ctx) => {
13467
+ superHostBindings(rf, ctx);
13468
+ prevHostBindings(rf, ctx);
13469
+ };
13470
+ }
13471
+ else {
13472
+ definition.hostBindings = superHostBindings;
13473
+ }
13470
13474
  }
13475
+
13471
13476
  /**
13472
- * Retrieves an `Injector` associated with an element, component or directive instance.
13473
- *
13474
- * @param elementOrDir DOM element, component or directive instance for which to
13475
- * retrieve the injector.
13476
- * @returns Injector associated with the element, component or directive instance.
13477
+ * @license
13478
+ * Copyright Google LLC All Rights Reserved.
13477
13479
  *
13478
- * @publicApi
13479
- * @globalApi ng
13480
+ * Use of this source code is governed by an MIT-style license that can be
13481
+ * found in the LICENSE file at https://angular.io/license
13480
13482
  */
13481
- function getInjector(elementOrDir) {
13482
- const context = getLContext(elementOrDir);
13483
- const lView = context ? context.lView : null;
13484
- if (lView === null)
13485
- return Injector.NULL;
13486
- const tNode = lView[TVIEW].data[context.nodeIndex];
13487
- return new NodeInjector(tNode, lView);
13488
- }
13489
13483
  /**
13490
- * Retrieve a set of injection tokens at a given DOM node.
13491
- *
13492
- * @param element Element for which the injection tokens should be retrieved.
13484
+ * Fields which exist on either directive or component definitions, and need to be copied from
13485
+ * parent to child classes by the `ɵɵCopyDefinitionFeature`.
13493
13486
  */
13494
- function getInjectionTokens(element) {
13495
- const context = getLContext(element);
13496
- const lView = context ? context.lView : null;
13497
- if (lView === null)
13498
- return [];
13499
- const tView = lView[TVIEW];
13500
- const tNode = tView.data[context.nodeIndex];
13501
- const providerTokens = [];
13502
- const startIndex = tNode.providerIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;
13503
- const endIndex = tNode.directiveEnd;
13504
- for (let i = startIndex; i < endIndex; i++) {
13505
- let value = tView.data[i];
13506
- if (isDirectiveDefHack(value)) {
13507
- // The fact that we sometimes store Type and sometimes DirectiveDef in this location is a
13508
- // design flaw. We should always store same type so that we can be monomorphic. The issue
13509
- // is that for Components/Directives we store the def instead the type. The correct behavior
13510
- // is that we should always be storing injectable type in this location.
13511
- value = value.type;
13512
- }
13513
- providerTokens.push(value);
13514
- }
13515
- return providerTokens;
13516
- }
13487
+ const COPY_DIRECTIVE_FIELDS = [
13488
+ // The child class should use the providers of its parent.
13489
+ 'providersResolver',
13490
+ // Not listed here are any fields which are handled by the `ɵɵInheritDefinitionFeature`, such
13491
+ // as inputs, outputs, and host binding functions.
13492
+ ];
13517
13493
  /**
13518
- * Retrieves directive instances associated with a given DOM node. Does not include
13519
- * component instances.
13520
- *
13521
- * @usageNotes
13522
- * Given the following DOM structure:
13494
+ * Fields which exist only on component definitions, and need to be copied from parent to child
13495
+ * classes by the `ɵɵCopyDefinitionFeature`.
13523
13496
  *
13524
- * ```html
13525
- * <app-root>
13526
- * <button my-button></button>
13527
- * <my-comp></my-comp>
13528
- * </app-root>
13529
- * ```
13497
+ * The type here allows any field of `ComponentDef` which is not also a property of `DirectiveDef`,
13498
+ * since those should go in `COPY_DIRECTIVE_FIELDS` above.
13499
+ */
13500
+ const COPY_COMPONENT_FIELDS = [
13501
+ // The child class should use the template function of its parent, including all template
13502
+ // semantics.
13503
+ 'template',
13504
+ 'decls',
13505
+ 'consts',
13506
+ 'vars',
13507
+ 'onPush',
13508
+ 'ngContentSelectors',
13509
+ // The child class should use the CSS styles of its parent, including all styling semantics.
13510
+ 'styles',
13511
+ 'encapsulation',
13512
+ // The child class should be checked by the runtime in the same way as its parent.
13513
+ 'schemas',
13514
+ ];
13515
+ /**
13516
+ * Copies the fields not handled by the `ɵɵInheritDefinitionFeature` from the supertype of a
13517
+ * definition.
13530
13518
  *
13531
- * Calling `getDirectives` on `<button>` will return an array with an instance of the `MyButton`
13532
- * directive that is associated with the DOM node.
13519
+ * This exists primarily to support ngcc migration of an existing View Engine pattern, where an
13520
+ * entire decorator is inherited from a parent to a child class. When ngcc detects this case, it
13521
+ * generates a skeleton definition on the child class, and applies this feature.
13533
13522
  *
13534
- * Calling `getDirectives` on `<my-comp>` will return an empty array.
13523
+ * The `ɵɵCopyDefinitionFeature` then copies any needed fields from the parent class' definition,
13524
+ * including things like the component template function.
13535
13525
  *
13536
- * @param node DOM node for which to get the directives.
13537
- * @returns Array of directives associated with the node.
13526
+ * @param definition The definition of a child class which inherits from a parent class with its
13527
+ * own definition.
13538
13528
  *
13539
- * @publicApi
13540
- * @globalApi ng
13529
+ * @codeGenApi
13541
13530
  */
13542
- function getDirectives(node) {
13543
- // Skip text nodes because we can't have directives associated with them.
13544
- if (node instanceof Text) {
13545
- return [];
13531
+ function ɵɵCopyDefinitionFeature(definition) {
13532
+ let superType = getSuperType(definition.type);
13533
+ let superDef = undefined;
13534
+ if (isComponentDef(definition)) {
13535
+ // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.
13536
+ superDef = superType.ɵcmp;
13546
13537
  }
13547
- const context = getLContext(node);
13548
- const lView = context ? context.lView : null;
13549
- if (lView === null) {
13550
- return [];
13538
+ else {
13539
+ // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.
13540
+ superDef = superType.ɵdir;
13551
13541
  }
13552
- const tView = lView[TVIEW];
13553
- const nodeIndex = context.nodeIndex;
13554
- if (!(tView === null || tView === void 0 ? void 0 : tView.data[nodeIndex])) {
13555
- return [];
13542
+ // Needed because `definition` fields are readonly.
13543
+ const defAny = definition;
13544
+ // Copy over any fields that apply to either directives or components.
13545
+ for (const field of COPY_DIRECTIVE_FIELDS) {
13546
+ defAny[field] = superDef[field];
13556
13547
  }
13557
- if (context.directives === undefined) {
13558
- context.directives = getDirectivesAtNodeIndex(nodeIndex, lView, false);
13548
+ if (isComponentDef(superDef)) {
13549
+ // Copy over any component-specific fields.
13550
+ for (const field of COPY_COMPONENT_FIELDS) {
13551
+ defAny[field] = superDef[field];
13552
+ }
13559
13553
  }
13560
- // The `directives` in this case are a named array called `LComponentView`. Clone the
13561
- // result so we don't expose an internal data structure in the user's console.
13562
- return context.directives === null ? [] : [...context.directives];
13563
13554
  }
13555
+
13564
13556
  /**
13565
- * Returns the debug (partial) metadata for a particular directive or component instance.
13566
- * The function accepts an instance of a directive or component and returns the corresponding
13567
- * metadata.
13568
- *
13569
- * @param directiveOrComponentInstance Instance of a directive or component
13570
- * @returns metadata of the passed directive or component
13557
+ * @license
13558
+ * Copyright Google LLC All Rights Reserved.
13571
13559
  *
13572
- * @publicApi
13573
- * @globalApi ng
13560
+ * Use of this source code is governed by an MIT-style license that can be
13561
+ * found in the LICENSE file at https://angular.io/license
13574
13562
  */
13575
- function getDirectiveMetadata$1(directiveOrComponentInstance) {
13576
- const { constructor } = directiveOrComponentInstance;
13577
- if (!constructor) {
13578
- throw new Error('Unable to find the instance constructor');
13579
- }
13580
- // In case a component inherits from a directive, we may have component and directive metadata
13581
- // To ensure we don't get the metadata of the directive, we want to call `getComponentDef` first.
13582
- const componentDef = getComponentDef(constructor);
13583
- if (componentDef) {
13584
- return {
13585
- inputs: componentDef.inputs,
13586
- outputs: componentDef.outputs,
13587
- encapsulation: componentDef.encapsulation,
13588
- changeDetection: componentDef.onPush ? ChangeDetectionStrategy.OnPush :
13589
- ChangeDetectionStrategy.Default
13590
- };
13591
- }
13592
- const directiveDef = getDirectiveDef(constructor);
13593
- if (directiveDef) {
13594
- return { inputs: directiveDef.inputs, outputs: directiveDef.outputs };
13563
+ let _symbolIterator = null;
13564
+ function getSymbolIterator() {
13565
+ if (!_symbolIterator) {
13566
+ const Symbol = _global['Symbol'];
13567
+ if (Symbol && Symbol.iterator) {
13568
+ _symbolIterator = Symbol.iterator;
13569
+ }
13570
+ else {
13571
+ // es6-shim specific logic
13572
+ const keys = Object.getOwnPropertyNames(Map.prototype);
13573
+ for (let i = 0; i < keys.length; ++i) {
13574
+ const key = keys[i];
13575
+ if (key !== 'entries' && key !== 'size' &&
13576
+ Map.prototype[key] === Map.prototype['entries']) {
13577
+ _symbolIterator = key;
13578
+ }
13579
+ }
13580
+ }
13595
13581
  }
13596
- return null;
13582
+ return _symbolIterator;
13597
13583
  }
13584
+
13598
13585
  /**
13599
- * Retrieve map of local references.
13600
- *
13601
- * The references are retrieved as a map of local reference name to element or directive instance.
13586
+ * @license
13587
+ * Copyright Google LLC All Rights Reserved.
13602
13588
  *
13603
- * @param target DOM element, component or directive instance for which to retrieve
13604
- * the local references.
13589
+ * Use of this source code is governed by an MIT-style license that can be
13590
+ * found in the LICENSE file at https://angular.io/license
13605
13591
  */
13606
- function getLocalRefs(target) {
13607
- const context = getLContext(target);
13608
- if (context === null)
13609
- return {};
13610
- if (context.localRefs === undefined) {
13611
- const lView = context.lView;
13612
- if (lView === null) {
13613
- return {};
13614
- }
13615
- context.localRefs = discoverLocalRefs(lView, context.nodeIndex);
13616
- }
13617
- return context.localRefs || {};
13618
- }
13619
- /**
13620
- * Retrieves the host element of a component or directive instance.
13621
- * The host element is the DOM element that matched the selector of the directive.
13622
- *
13623
- * @param componentOrDirective Component or directive instance for which the host
13624
- * element should be retrieved.
13625
- * @returns Host element of the target.
13626
- *
13627
- * @publicApi
13628
- * @globalApi ng
13629
- */
13630
- function getHostElement(componentOrDirective) {
13631
- return getLContext(componentOrDirective).native;
13592
+ function isIterable(obj) {
13593
+ return obj !== null && typeof obj === 'object' && obj[getSymbolIterator()] !== undefined;
13632
13594
  }
13633
- /**
13634
- * Retrieves the rendered text for a given component.
13635
- *
13636
- * This function retrieves the host element of a component and
13637
- * and then returns the `textContent` for that element. This implies
13638
- * that the text returned will include re-projected content of
13639
- * the component as well.
13640
- *
13641
- * @param component The component to return the content text for.
13642
- */
13643
- function getRenderedText(component) {
13644
- const hostElement = getHostElement(component);
13645
- return hostElement.textContent || '';
13595
+ function isListLikeIterable(obj) {
13596
+ if (!isJsObject(obj))
13597
+ return false;
13598
+ return Array.isArray(obj) ||
13599
+ (!(obj instanceof Map) && // JS Map are iterables but return entries as [k, v]
13600
+ getSymbolIterator() in obj); // JS Iterable have a Symbol.iterator prop
13646
13601
  }
13647
- /**
13648
- * Retrieves a list of event listeners associated with a DOM element. The list does include host
13649
- * listeners, but it does not include event listeners defined outside of the Angular context
13650
- * (e.g. through `addEventListener`).
13651
- *
13652
- * @usageNotes
13653
- * Given the following DOM structure:
13654
- *
13655
- * ```html
13656
- * <app-root>
13657
- * <div (click)="doSomething()"></div>
13658
- * </app-root>
13659
- * ```
13660
- *
13661
- * Calling `getListeners` on `<div>` will return an object that looks as follows:
13662
- *
13663
- * ```ts
13664
- * {
13665
- * name: 'click',
13666
- * element: <div>,
13667
- * callback: () => doSomething(),
13668
- * useCapture: false
13669
- * }
13670
- * ```
13671
- *
13672
- * @param element Element for which the DOM listeners should be retrieved.
13673
- * @returns Array of event listeners on the DOM element.
13674
- *
13675
- * @publicApi
13676
- * @globalApi ng
13677
- */
13678
- function getListeners(element) {
13679
- ngDevMode && assertDomElement(element);
13680
- const lContext = getLContext(element);
13681
- const lView = lContext === null ? null : lContext.lView;
13682
- if (lView === null)
13683
- return [];
13684
- const tView = lView[TVIEW];
13685
- const lCleanup = lView[CLEANUP];
13686
- const tCleanup = tView.cleanup;
13687
- const listeners = [];
13688
- if (tCleanup && lCleanup) {
13689
- for (let i = 0; i < tCleanup.length;) {
13690
- const firstParam = tCleanup[i++];
13691
- const secondParam = tCleanup[i++];
13692
- if (typeof firstParam === 'string') {
13693
- const name = firstParam;
13694
- const listenerElement = unwrapRNode(lView[secondParam]);
13695
- const callback = lCleanup[tCleanup[i++]];
13696
- const useCaptureOrIndx = tCleanup[i++];
13697
- // if useCaptureOrIndx is boolean then report it as is.
13698
- // if useCaptureOrIndx is positive number then it in unsubscribe method
13699
- // if useCaptureOrIndx is negative number then it is a Subscription
13700
- const type = (typeof useCaptureOrIndx === 'boolean' || useCaptureOrIndx >= 0) ? 'dom' : 'output';
13701
- const useCapture = typeof useCaptureOrIndx === 'boolean' ? useCaptureOrIndx : false;
13702
- if (element == listenerElement) {
13703
- listeners.push({ element, name, callback, useCapture, type });
13704
- }
13705
- }
13706
- }
13602
+ function areIterablesEqual(a, b, comparator) {
13603
+ const iterator1 = a[getSymbolIterator()]();
13604
+ const iterator2 = b[getSymbolIterator()]();
13605
+ while (true) {
13606
+ const item1 = iterator1.next();
13607
+ const item2 = iterator2.next();
13608
+ if (item1.done && item2.done)
13609
+ return true;
13610
+ if (item1.done || item2.done)
13611
+ return false;
13612
+ if (!comparator(item1.value, item2.value))
13613
+ return false;
13707
13614
  }
13708
- listeners.sort(sortListeners);
13709
- return listeners;
13710
- }
13711
- function sortListeners(a, b) {
13712
- if (a.name == b.name)
13713
- return 0;
13714
- return a.name < b.name ? -1 : 1;
13715
- }
13716
- /**
13717
- * This function should not exist because it is megamorphic and only mostly correct.
13718
- *
13719
- * See call site for more info.
13720
- */
13721
- function isDirectiveDefHack(obj) {
13722
- return obj.type !== undefined && obj.template !== undefined && obj.declaredInputs !== undefined;
13723
13615
  }
13724
- /**
13725
- * Returns the attached `DebugNode` instance for an element in the DOM.
13726
- *
13727
- * @param element DOM element which is owned by an existing component's view.
13728
- */
13729
- function getDebugNode$1(element) {
13730
- if (ngDevMode && !(element instanceof Node)) {
13731
- throw new Error('Expecting instance of DOM Element');
13732
- }
13733
- const lContext = getLContext(element);
13734
- const lView = lContext ? lContext.lView : null;
13735
- if (lView === null) {
13736
- return null;
13616
+ function iterateListLike(obj, fn) {
13617
+ if (Array.isArray(obj)) {
13618
+ for (let i = 0; i < obj.length; i++) {
13619
+ fn(obj[i]);
13620
+ }
13737
13621
  }
13738
- const nodeIndex = lContext.nodeIndex;
13739
- if (nodeIndex !== -1) {
13740
- const valueInLView = lView[nodeIndex];
13741
- // this means that value in the lView is a component with its own
13742
- // data. In this situation the TNode is not accessed at the same spot.
13743
- const tNode = isLView(valueInLView) ? valueInLView[T_HOST] : getTNode(lView[TVIEW], nodeIndex);
13744
- ngDevMode &&
13745
- assertEqual(tNode.index, nodeIndex, 'Expecting that TNode at index is same as index');
13746
- return buildDebugNode(tNode, lView);
13622
+ else {
13623
+ const iterator = obj[getSymbolIterator()]();
13624
+ let item;
13625
+ while (!((item = iterator.next()).done)) {
13626
+ fn(item.value);
13627
+ }
13747
13628
  }
13748
- return null;
13749
- }
13750
- /**
13751
- * Retrieve the component `LView` from component/element.
13752
- *
13753
- * NOTE: `LView` is a private and should not be leaked outside.
13754
- * Don't export this method to `ng.*` on window.
13755
- *
13756
- * @param target DOM element or component instance for which to retrieve the LView.
13757
- */
13758
- function getComponentLView(target) {
13759
- const lContext = getLContext(target);
13760
- const nodeIndx = lContext.nodeIndex;
13761
- const lView = lContext.lView;
13762
- ngDevMode && assertLView(lView);
13763
- const componentLView = lView[nodeIndx];
13764
- ngDevMode && assertLView(componentLView);
13765
- return componentLView;
13766
13629
  }
13767
- /** Asserts that a value is a DOM Element. */
13768
- function assertDomElement(value) {
13769
- if (typeof Element !== 'undefined' && !(value instanceof Element)) {
13770
- throw new Error('Expecting instance of DOM Element');
13771
- }
13630
+ function isJsObject(o) {
13631
+ return o !== null && (typeof o === 'function' || typeof o === 'object');
13772
13632
  }
13773
13633
 
13774
13634
  /**
@@ -13778,18 +13638,22 @@ function assertDomElement(value) {
13778
13638
  * Use of this source code is governed by an MIT-style license that can be
13779
13639
  * found in the LICENSE file at https://angular.io/license
13780
13640
  */
13781
- /**
13782
- * Marks a component for check (in case of OnPush components) and synchronously
13783
- * performs change detection on the application this component belongs to.
13784
- *
13785
- * @param component Component to {@link ChangeDetectorRef#markForCheck mark for check}.
13786
- *
13787
- * @publicApi
13788
- * @globalApi ng
13789
- */
13790
- function applyChanges(component) {
13791
- markDirty(component);
13792
- getRootComponents(component).forEach(rootComponent => detectChanges(rootComponent));
13641
+ function devModeEqual(a, b) {
13642
+ const isListLikeIterableA = isListLikeIterable(a);
13643
+ const isListLikeIterableB = isListLikeIterable(b);
13644
+ if (isListLikeIterableA && isListLikeIterableB) {
13645
+ return areIterablesEqual(a, b, devModeEqual);
13646
+ }
13647
+ else {
13648
+ const isAObject = a && (typeof a === 'object' || typeof a === 'function');
13649
+ const isBObject = b && (typeof b === 'object' || typeof b === 'function');
13650
+ if (!isListLikeIterableA && isAObject && !isListLikeIterableB && isBObject) {
13651
+ return true;
13652
+ }
13653
+ else {
13654
+ return Object.is(a, b);
13655
+ }
13656
+ }
13793
13657
  }
13794
13658
 
13795
13659
  /**
@@ -13799,70 +13663,73 @@ function applyChanges(component) {
13799
13663
  * Use of this source code is governed by an MIT-style license that can be
13800
13664
  * found in the LICENSE file at https://angular.io/license
13801
13665
  */
13666
+ // TODO(misko): consider inlining
13667
+ /** Updates binding and returns the value. */
13668
+ function updateBinding(lView, bindingIndex, value) {
13669
+ return lView[bindingIndex] = value;
13670
+ }
13671
+ /** Gets the current binding value. */
13672
+ function getBinding(lView, bindingIndex) {
13673
+ ngDevMode && assertIndexInRange(lView, bindingIndex);
13674
+ ngDevMode &&
13675
+ assertNotSame(lView[bindingIndex], NO_CHANGE, 'Stored value should never be NO_CHANGE.');
13676
+ return lView[bindingIndex];
13677
+ }
13802
13678
  /**
13803
- * This file introduces series of globally accessible debug tools
13804
- * to allow for the Angular debugging story to function.
13805
- *
13806
- * To see this in action run the following command:
13807
- *
13808
- * bazel run //packages/core/test/bundling/todo:devserver
13679
+ * Updates binding if changed, then returns whether it was updated.
13809
13680
  *
13810
- * Then load `localhost:5432` and start using the console tools.
13811
- */
13812
- /**
13813
- * This value reflects the property on the window where the dev
13814
- * tools are patched (window.ng).
13815
- * */
13816
- const GLOBAL_PUBLISH_EXPANDO_KEY = 'ng';
13817
- let _published = false;
13818
- /**
13819
- * Publishes a collection of default debug tools onto`window.ng`.
13681
+ * This function also checks the `CheckNoChangesMode` and throws if changes are made.
13682
+ * Some changes (Objects/iterables) during `CheckNoChangesMode` are exempt to comply with VE
13683
+ * behavior.
13820
13684
  *
13821
- * These functions are available globally when Angular is in development
13822
- * mode and are automatically stripped away from prod mode is on.
13685
+ * @param lView current `LView`
13686
+ * @param bindingIndex The binding in the `LView` to check
13687
+ * @param value New value to check against `lView[bindingIndex]`
13688
+ * @returns `true` if the bindings has changed. (Throws if binding has changed during
13689
+ * `CheckNoChangesMode`)
13823
13690
  */
13824
- function publishDefaultGlobalUtils$1() {
13825
- if (!_published) {
13826
- _published = true;
13827
- /**
13828
- * Warning: this function is *INTERNAL* and should not be relied upon in application's code.
13829
- * The contract of the function might be changed in any release and/or the function can be
13830
- * removed completely.
13831
- */
13832
- publishGlobalUtil('ɵsetProfiler', setProfiler);
13833
- publishGlobalUtil('getDirectiveMetadata', getDirectiveMetadata$1);
13834
- publishGlobalUtil('getComponent', getComponent$1);
13835
- publishGlobalUtil('getContext', getContext);
13836
- publishGlobalUtil('getListeners', getListeners);
13837
- publishGlobalUtil('getOwningComponent', getOwningComponent);
13838
- publishGlobalUtil('getHostElement', getHostElement);
13839
- publishGlobalUtil('getInjector', getInjector);
13840
- publishGlobalUtil('getRootComponents', getRootComponents);
13841
- publishGlobalUtil('getDirectives', getDirectives);
13842
- publishGlobalUtil('applyChanges', applyChanges);
13691
+ function bindingUpdated(lView, bindingIndex, value) {
13692
+ ngDevMode && assertNotSame(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');
13693
+ ngDevMode &&
13694
+ assertLessThan(bindingIndex, lView.length, `Slot should have been initialized to NO_CHANGE`);
13695
+ const oldValue = lView[bindingIndex];
13696
+ if (Object.is(oldValue, value)) {
13697
+ return false;
13843
13698
  }
13844
- }
13845
- /**
13846
- * Publishes the given function to `window.ng` so that it can be
13847
- * used from the browser console when an application is not in production.
13848
- */
13849
- function publishGlobalUtil(name, fn) {
13850
- if (typeof COMPILED === 'undefined' || !COMPILED) {
13851
- // Note: we can't export `ng` when using closure enhanced optimization as:
13852
- // - closure declares globals itself for minified names, which sometimes clobber our `ng` global
13853
- // - we can't declare a closure extern as the namespace `ng` is already used within Google
13854
- // for typings for AngularJS (via `goog.provide('ng....')`).
13855
- const w = _global;
13856
- ngDevMode && assertDefined(fn, 'function not defined');
13857
- if (w) {
13858
- let container = w[GLOBAL_PUBLISH_EXPANDO_KEY];
13859
- if (!container) {
13860
- container = w[GLOBAL_PUBLISH_EXPANDO_KEY] = {};
13699
+ else {
13700
+ if (ngDevMode && isInCheckNoChangesMode()) {
13701
+ // View engine didn't report undefined values as changed on the first checkNoChanges pass
13702
+ // (before the change detection was run).
13703
+ const oldValueToCompare = oldValue !== NO_CHANGE ? oldValue : undefined;
13704
+ if (!devModeEqual(oldValueToCompare, value)) {
13705
+ const details = getExpressionChangedErrorDetails(lView, bindingIndex, oldValueToCompare, value);
13706
+ throwErrorIfNoChangesMode(oldValue === NO_CHANGE, details.oldValue, details.newValue, details.propName);
13861
13707
  }
13862
- container[name] = fn;
13708
+ // There was a change, but the `devModeEqual` decided that the change is exempt from an error.
13709
+ // For this reason we exit as if no change. The early exit is needed to prevent the changed
13710
+ // value to be written into `LView` (If we would write the new value that we would not see it
13711
+ // as change on next CD.)
13712
+ return false;
13863
13713
  }
13714
+ lView[bindingIndex] = value;
13715
+ return true;
13864
13716
  }
13865
13717
  }
13718
+ /** Updates 2 bindings if changed, then returns whether either was updated. */
13719
+ function bindingUpdated2(lView, bindingIndex, exp1, exp2) {
13720
+ const different = bindingUpdated(lView, bindingIndex, exp1);
13721
+ return bindingUpdated(lView, bindingIndex + 1, exp2) || different;
13722
+ }
13723
+ /** Updates 3 bindings if changed, then returns whether any was updated. */
13724
+ function bindingUpdated3(lView, bindingIndex, exp1, exp2, exp3) {
13725
+ const different = bindingUpdated2(lView, bindingIndex, exp1, exp2);
13726
+ return bindingUpdated(lView, bindingIndex + 2, exp3) || different;
13727
+ }
13728
+ /** Updates 4 bindings if changed, then returns whether any was updated. */
13729
+ function bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4) {
13730
+ const different = bindingUpdated2(lView, bindingIndex, exp1, exp2);
13731
+ return bindingUpdated2(lView, bindingIndex + 2, exp3, exp4) || different;
13732
+ }
13866
13733
 
13867
13734
  /**
13868
13735
  * @license
@@ -13871,981 +13738,377 @@ function publishGlobalUtil(name, fn) {
13871
13738
  * Use of this source code is governed by an MIT-style license that can be
13872
13739
  * found in the LICENSE file at https://angular.io/license
13873
13740
  */
13874
- // TODO: A hack to not pull in the NullInjector from @angular/core.
13875
- const NULL_INJECTOR = {
13876
- get: (token, notFoundValue) => {
13877
- throwProviderNotFoundError(token, 'NullInjector');
13878
- }
13879
- };
13880
13741
  /**
13881
- * Bootstraps a Component into an existing host element and returns an instance
13882
- * of the component.
13742
+ * Updates the value of or removes a bound attribute on an Element.
13743
+ *
13744
+ * Used in the case of `[attr.title]="value"`
13883
13745
  *
13884
- * Use this function to bootstrap a component into the DOM tree. Each invocation
13885
- * of this function will create a separate tree of components, injectors and
13886
- * change detection cycles and lifetimes. To dynamically insert a new component
13887
- * into an existing tree such that it shares the same injection, change detection
13888
- * and object lifetime, use {@link ViewContainer#createComponent}.
13746
+ * @param name name The name of the attribute.
13747
+ * @param value value The attribute is removed when value is `null` or `undefined`.
13748
+ * Otherwise the attribute value is set to the stringified value.
13749
+ * @param sanitizer An optional function used to sanitize the value.
13750
+ * @param namespace Optional namespace to use when setting the attribute.
13889
13751
  *
13890
- * @param componentType Component to bootstrap
13891
- * @param options Optional parameters which control bootstrapping
13752
+ * @codeGenApi
13892
13753
  */
13893
- function renderComponent(componentType /* Type as workaround for: Microsoft/TypeScript/issues/4881 */, opts = {}) {
13894
- ngDevMode && publishDefaultGlobalUtils$1();
13895
- ngDevMode && assertComponentType(componentType);
13896
- enableRenderer3();
13897
- const rendererFactory = opts.rendererFactory || domRendererFactory3;
13898
- const sanitizer = opts.sanitizer || null;
13899
- const componentDef = getComponentDef(componentType);
13900
- if (componentDef.type != componentType)
13901
- componentDef.type = componentType;
13902
- // The first index of the first selector is the tag name.
13903
- const componentTag = componentDef.selectors[0][0];
13904
- const hostRenderer = rendererFactory.createRenderer(null, null);
13905
- const hostRNode = locateHostElement(hostRenderer, opts.host || componentTag, componentDef.encapsulation);
13906
- const rootFlags = componentDef.onPush ? 32 /* LViewFlags.Dirty */ | 256 /* LViewFlags.IsRoot */ :
13907
- 16 /* LViewFlags.CheckAlways */ | 256 /* LViewFlags.IsRoot */;
13908
- const rootContext = createRootContext(opts.scheduler, opts.playerHandler);
13909
- const renderer = rendererFactory.createRenderer(hostRNode, componentDef);
13910
- const rootTView = createTView(0 /* TViewType.Root */, null, null, 1, 0, null, null, null, null, null);
13911
- const rootView = createLView(null, rootTView, rootContext, rootFlags, null, null, rendererFactory, renderer, null, opts.injector || null, null);
13912
- enterView(rootView);
13913
- let component;
13914
- try {
13915
- if (rendererFactory.begin)
13916
- rendererFactory.begin();
13917
- const componentView = createRootComponentView(hostRNode, componentDef, rootView, rendererFactory, renderer, sanitizer);
13918
- component = createRootComponent(componentView, componentDef, rootView, rootContext, opts.hostFeatures || null);
13919
- // create mode pass
13920
- renderView(rootTView, rootView, null);
13921
- // update mode pass
13922
- refreshView(rootTView, rootView, null, null);
13923
- }
13924
- finally {
13925
- leaveView();
13926
- if (rendererFactory.end)
13927
- rendererFactory.end();
13754
+ function ɵɵattribute(name, value, sanitizer, namespace) {
13755
+ const lView = getLView();
13756
+ const bindingIndex = nextBindingIndex();
13757
+ if (bindingUpdated(lView, bindingIndex, value)) {
13758
+ const tView = getTView();
13759
+ const tNode = getSelectedTNode();
13760
+ elementAttributeInternal(tNode, lView, name, value, sanitizer, namespace);
13761
+ ngDevMode && storePropertyBindingMetadata(tView.data, tNode, 'attr.' + name, bindingIndex);
13928
13762
  }
13929
- return component;
13763
+ return ɵɵattribute;
13930
13764
  }
13765
+
13931
13766
  /**
13932
- * Creates the root component view and the root component node.
13933
- *
13934
- * @param rNode Render host element.
13935
- * @param def ComponentDef
13936
- * @param rootView The parent view where the host node is stored
13937
- * @param rendererFactory Factory to be used for creating child renderers.
13938
- * @param hostRenderer The current renderer
13939
- * @param sanitizer The sanitizer, if provided
13767
+ * @license
13768
+ * Copyright Google LLC All Rights Reserved.
13940
13769
  *
13941
- * @returns Component view created
13770
+ * Use of this source code is governed by an MIT-style license that can be
13771
+ * found in the LICENSE file at https://angular.io/license
13942
13772
  */
13943
- function createRootComponentView(rNode, def, rootView, rendererFactory, hostRenderer, sanitizer) {
13944
- const tView = rootView[TVIEW];
13945
- const index = HEADER_OFFSET;
13946
- ngDevMode && assertIndexInRange(rootView, index);
13947
- rootView[index] = rNode;
13948
- // '#host' is added here as we don't know the real host DOM name (we don't want to read it) and at
13949
- // the same time we want to communicate the debug `TNode` that this is a special `TNode`
13950
- // representing a host element.
13951
- const tNode = getOrCreateTNode(tView, index, 2 /* TNodeType.Element */, '#host', null);
13952
- const mergedAttrs = tNode.mergedAttrs = def.hostAttrs;
13953
- if (mergedAttrs !== null) {
13954
- computeStaticStyling(tNode, mergedAttrs, true);
13955
- if (rNode !== null) {
13956
- setUpAttributes(hostRenderer, rNode, mergedAttrs);
13957
- if (tNode.classes !== null) {
13958
- writeDirectClass(hostRenderer, rNode, tNode.classes);
13959
- }
13960
- if (tNode.styles !== null) {
13961
- writeDirectStyle(hostRenderer, rNode, tNode.styles);
13962
- }
13963
- }
13964
- }
13965
- const viewRenderer = rendererFactory.createRenderer(rNode, def);
13966
- const componentView = createLView(rootView, getOrCreateTComponentView(def), null, def.onPush ? 32 /* LViewFlags.Dirty */ : 16 /* LViewFlags.CheckAlways */, rootView[index], tNode, rendererFactory, viewRenderer, sanitizer || null, null, null);
13967
- if (tView.firstCreatePass) {
13968
- diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, rootView), tView, def.type);
13969
- markAsComponentHost(tView, tNode);
13970
- initTNodeFlags(tNode, rootView.length, 1);
13971
- }
13972
- addToViewTree(rootView, componentView);
13973
- // Store component view at node index, with node as the HOST
13974
- return rootView[index] = componentView;
13975
- }
13976
13773
  /**
13977
- * Creates a root component and sets it up with features and host bindings. Shared by
13978
- * renderComponent() and ViewContainerRef.createComponent().
13774
+ * Create interpolation bindings with a variable number of expressions.
13775
+ *
13776
+ * If there are 1 to 8 expressions `interpolation1()` to `interpolation8()` should be used instead.
13777
+ * Those are faster because there is no need to create an array of expressions and iterate over it.
13778
+ *
13779
+ * `values`:
13780
+ * - has static text at even indexes,
13781
+ * - has evaluated expressions at odd indexes.
13782
+ *
13783
+ * Returns the concatenated string when any of the arguments changes, `NO_CHANGE` otherwise.
13979
13784
  */
13980
- function createRootComponent(componentView, componentDef, rootLView, rootContext, hostFeatures) {
13981
- const tView = rootLView[TVIEW];
13982
- // Create directive instance with factory() and store at next index in viewData
13983
- const component = instantiateRootComponent(tView, rootLView, componentDef);
13984
- rootContext.components.push(component);
13985
- componentView[CONTEXT] = component;
13986
- if (hostFeatures !== null) {
13987
- for (const feature of hostFeatures) {
13988
- feature(component, componentDef);
13989
- }
13785
+ function interpolationV(lView, values) {
13786
+ ngDevMode && assertLessThan(2, values.length, 'should have at least 3 values');
13787
+ ngDevMode && assertEqual(values.length % 2, 1, 'should have an odd number of values');
13788
+ let isBindingUpdated = false;
13789
+ let bindingIndex = getBindingIndex();
13790
+ for (let i = 1; i < values.length; i += 2) {
13791
+ // Check if bindings (odd indexes) have changed
13792
+ isBindingUpdated = bindingUpdated(lView, bindingIndex++, values[i]) || isBindingUpdated;
13990
13793
  }
13991
- // We want to generate an empty QueryList for root content queries for backwards
13992
- // compatibility with ViewEngine.
13993
- if (componentDef.contentQueries) {
13994
- const tNode = getCurrentTNode();
13995
- ngDevMode && assertDefined(tNode, 'TNode expected');
13996
- componentDef.contentQueries(1 /* RenderFlags.Create */, component, tNode.directiveStart);
13794
+ setBindingIndex(bindingIndex);
13795
+ if (!isBindingUpdated) {
13796
+ return NO_CHANGE;
13997
13797
  }
13998
- const rootTNode = getCurrentTNode();
13999
- ngDevMode && assertDefined(rootTNode, 'tNode should have been already created');
14000
- if (tView.firstCreatePass &&
14001
- (componentDef.hostBindings !== null || componentDef.hostAttrs !== null)) {
14002
- setSelectedIndex(rootTNode.index);
14003
- const rootTView = rootLView[TVIEW];
14004
- registerHostBindingOpCodes(rootTView, rootTNode, rootLView, rootTNode.directiveStart, rootTNode.directiveEnd, componentDef);
14005
- invokeHostBindingsInCreationMode(componentDef, component);
13798
+ // Build the updated content
13799
+ let content = values[0];
13800
+ for (let i = 1; i < values.length; i += 2) {
13801
+ content += renderStringify(values[i]) + values[i + 1];
14006
13802
  }
14007
- return component;
14008
- }
14009
- function createRootContext(scheduler, playerHandler) {
14010
- return {
14011
- components: [],
14012
- scheduler: scheduler || defaultScheduler,
14013
- clean: CLEAN_PROMISE,
14014
- playerHandler: playerHandler || null,
14015
- flags: 0 /* RootContextFlags.Empty */
14016
- };
13803
+ return content;
14017
13804
  }
14018
13805
  /**
14019
- * Used to enable lifecycle hooks on the root component.
14020
- *
14021
- * Include this feature when calling `renderComponent` if the root component
14022
- * you are rendering has lifecycle hooks defined. Otherwise, the hooks won't
14023
- * be called properly.
14024
- *
14025
- * Example:
13806
+ * Creates an interpolation binding with 1 expression.
14026
13807
  *
14027
- * ```
14028
- * renderComponent(AppComponent, {hostFeatures: [LifecycleHooksFeature]});
14029
- * ```
13808
+ * @param prefix static value used for concatenation only.
13809
+ * @param v0 value checked for change.
13810
+ * @param suffix static value used for concatenation only.
14030
13811
  */
14031
- function LifecycleHooksFeature() {
14032
- const tNode = getCurrentTNode();
14033
- ngDevMode && assertDefined(tNode, 'TNode is required');
14034
- registerPostOrderHooks(getLView()[TVIEW], tNode);
13812
+ function interpolation1(lView, prefix, v0, suffix) {
13813
+ const different = bindingUpdated(lView, nextBindingIndex(), v0);
13814
+ return different ? prefix + renderStringify(v0) + suffix : NO_CHANGE;
14035
13815
  }
14036
13816
  /**
14037
- * Wait on component until it is rendered.
14038
- *
14039
- * This function returns a `Promise` which is resolved when the component's
14040
- * change detection is executed. This is determined by finding the scheduler
14041
- * associated with the `component`'s render tree and waiting until the scheduler
14042
- * flushes. If nothing is scheduled, the function returns a resolved promise.
14043
- *
14044
- * Example:
14045
- * ```
14046
- * await whenRendered(myComponent);
14047
- * ```
14048
- *
14049
- * @param component Component to wait upon
14050
- * @returns Promise which resolves when the component is rendered.
13817
+ * Creates an interpolation binding with 2 expressions.
14051
13818
  */
14052
- function whenRendered(component) {
14053
- return getRootContext(component).clean;
13819
+ function interpolation2(lView, prefix, v0, i0, v1, suffix) {
13820
+ const bindingIndex = getBindingIndex();
13821
+ const different = bindingUpdated2(lView, bindingIndex, v0, v1);
13822
+ incrementBindingIndex(2);
13823
+ return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + suffix : NO_CHANGE;
14054
13824
  }
14055
-
14056
13825
  /**
14057
- * @license
14058
- * Copyright Google LLC All Rights Reserved.
14059
- *
14060
- * Use of this source code is governed by an MIT-style license that can be
14061
- * found in the LICENSE file at https://angular.io/license
13826
+ * Creates an interpolation binding with 3 expressions.
14062
13827
  */
14063
- function getSuperType(type) {
14064
- return Object.getPrototypeOf(type.prototype).constructor;
13828
+ function interpolation3(lView, prefix, v0, i0, v1, i1, v2, suffix) {
13829
+ const bindingIndex = getBindingIndex();
13830
+ const different = bindingUpdated3(lView, bindingIndex, v0, v1, v2);
13831
+ incrementBindingIndex(3);
13832
+ return different ?
13833
+ prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 + renderStringify(v2) + suffix :
13834
+ NO_CHANGE;
14065
13835
  }
14066
13836
  /**
14067
- * Merges the definition from a super class to a sub class.
14068
- * @param definition The definition that is a SubClass of another directive of component
14069
- *
14070
- * @codeGenApi
13837
+ * Create an interpolation binding with 4 expressions.
14071
13838
  */
14072
- function ɵɵInheritDefinitionFeature(definition) {
14073
- let superType = getSuperType(definition.type);
14074
- let shouldInheritFields = true;
14075
- const inheritanceChain = [definition];
14076
- while (superType) {
14077
- let superDef = undefined;
14078
- if (isComponentDef(definition)) {
14079
- // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.
14080
- superDef = superType.ɵcmp || superType.ɵdir;
14081
- }
14082
- else {
14083
- if (superType.ɵcmp) {
14084
- throw new RuntimeError(903 /* RuntimeErrorCode.INVALID_INHERITANCE */, ngDevMode &&
14085
- `Directives cannot inherit Components. Directive ${stringifyForError(definition.type)} is attempting to extend component ${stringifyForError(superType)}`);
14086
- }
14087
- // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.
14088
- superDef = superType.ɵdir;
14089
- }
14090
- if (superDef) {
14091
- if (shouldInheritFields) {
14092
- inheritanceChain.push(superDef);
14093
- // Some fields in the definition may be empty, if there were no values to put in them that
14094
- // would've justified object creation. Unwrap them if necessary.
14095
- const writeableDef = definition;
14096
- writeableDef.inputs = maybeUnwrapEmpty(definition.inputs);
14097
- writeableDef.declaredInputs = maybeUnwrapEmpty(definition.declaredInputs);
14098
- writeableDef.outputs = maybeUnwrapEmpty(definition.outputs);
14099
- // Merge hostBindings
14100
- const superHostBindings = superDef.hostBindings;
14101
- superHostBindings && inheritHostBindings(definition, superHostBindings);
14102
- // Merge queries
14103
- const superViewQuery = superDef.viewQuery;
14104
- const superContentQueries = superDef.contentQueries;
14105
- superViewQuery && inheritViewQuery(definition, superViewQuery);
14106
- superContentQueries && inheritContentQueries(definition, superContentQueries);
14107
- // Merge inputs and outputs
14108
- fillProperties(definition.inputs, superDef.inputs);
14109
- fillProperties(definition.declaredInputs, superDef.declaredInputs);
14110
- fillProperties(definition.outputs, superDef.outputs);
14111
- // Merge animations metadata.
14112
- // If `superDef` is a Component, the `data` field is present (defaults to an empty object).
14113
- if (isComponentDef(superDef) && superDef.data.animation) {
14114
- // If super def is a Component, the `definition` is also a Component, since Directives can
14115
- // not inherit Components (we throw an error above and cannot reach this code).
14116
- const defData = definition.data;
14117
- defData.animation = (defData.animation || []).concat(superDef.data.animation);
14118
- }
14119
- }
14120
- // Run parent features
14121
- const features = superDef.features;
14122
- if (features) {
14123
- for (let i = 0; i < features.length; i++) {
14124
- const feature = features[i];
14125
- if (feature && feature.ngInherit) {
14126
- feature(definition);
14127
- }
14128
- // If `InheritDefinitionFeature` is a part of the current `superDef`, it means that this
14129
- // def already has all the necessary information inherited from its super class(es), so we
14130
- // can stop merging fields from super classes. However we need to iterate through the
14131
- // prototype chain to look for classes that might contain other "features" (like
14132
- // NgOnChanges), which we should invoke for the original `definition`. We set the
14133
- // `shouldInheritFields` flag to indicate that, essentially skipping fields inheritance
14134
- // logic and only invoking functions from the "features" list.
14135
- if (feature === ɵɵInheritDefinitionFeature) {
14136
- shouldInheritFields = false;
14137
- }
14138
- }
14139
- }
14140
- }
14141
- superType = Object.getPrototypeOf(superType);
14142
- }
14143
- mergeHostAttrsAcrossInheritance(inheritanceChain);
13839
+ function interpolation4(lView, prefix, v0, i0, v1, i1, v2, i2, v3, suffix) {
13840
+ const bindingIndex = getBindingIndex();
13841
+ const different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);
13842
+ incrementBindingIndex(4);
13843
+ return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 +
13844
+ renderStringify(v2) + i2 + renderStringify(v3) + suffix :
13845
+ NO_CHANGE;
14144
13846
  }
14145
13847
  /**
14146
- * Merge the `hostAttrs` and `hostVars` from the inherited parent to the base class.
14147
- *
14148
- * @param inheritanceChain A list of `WritableDefs` starting at the top most type and listing
14149
- * sub-types in order. For each type take the `hostAttrs` and `hostVars` and merge it with the child
14150
- * type.
13848
+ * Creates an interpolation binding with 5 expressions.
14151
13849
  */
14152
- function mergeHostAttrsAcrossInheritance(inheritanceChain) {
14153
- let hostVars = 0;
14154
- let hostAttrs = null;
14155
- // We process the inheritance order from the base to the leaves here.
14156
- for (let i = inheritanceChain.length - 1; i >= 0; i--) {
14157
- const def = inheritanceChain[i];
14158
- // For each `hostVars`, we need to add the superclass amount.
14159
- def.hostVars = (hostVars += def.hostVars);
14160
- // for each `hostAttrs` we need to merge it with superclass.
14161
- def.hostAttrs =
14162
- mergeHostAttrs(def.hostAttrs, hostAttrs = mergeHostAttrs(hostAttrs, def.hostAttrs));
14163
- }
14164
- }
14165
- function maybeUnwrapEmpty(value) {
14166
- if (value === EMPTY_OBJ) {
14167
- return {};
14168
- }
14169
- else if (value === EMPTY_ARRAY) {
14170
- return [];
14171
- }
14172
- else {
14173
- return value;
14174
- }
14175
- }
14176
- function inheritViewQuery(definition, superViewQuery) {
14177
- const prevViewQuery = definition.viewQuery;
14178
- if (prevViewQuery) {
14179
- definition.viewQuery = (rf, ctx) => {
14180
- superViewQuery(rf, ctx);
14181
- prevViewQuery(rf, ctx);
14182
- };
14183
- }
14184
- else {
14185
- definition.viewQuery = superViewQuery;
14186
- }
14187
- }
14188
- function inheritContentQueries(definition, superContentQueries) {
14189
- const prevContentQueries = definition.contentQueries;
14190
- if (prevContentQueries) {
14191
- definition.contentQueries = (rf, ctx, directiveIndex) => {
14192
- superContentQueries(rf, ctx, directiveIndex);
14193
- prevContentQueries(rf, ctx, directiveIndex);
14194
- };
14195
- }
14196
- else {
14197
- definition.contentQueries = superContentQueries;
14198
- }
14199
- }
14200
- function inheritHostBindings(definition, superHostBindings) {
14201
- const prevHostBindings = definition.hostBindings;
14202
- if (prevHostBindings) {
14203
- definition.hostBindings = (rf, ctx) => {
14204
- superHostBindings(rf, ctx);
14205
- prevHostBindings(rf, ctx);
14206
- };
14207
- }
14208
- else {
14209
- definition.hostBindings = superHostBindings;
14210
- }
13850
+ function interpolation5(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix) {
13851
+ const bindingIndex = getBindingIndex();
13852
+ let different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);
13853
+ different = bindingUpdated(lView, bindingIndex + 4, v4) || different;
13854
+ incrementBindingIndex(5);
13855
+ return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 +
13856
+ renderStringify(v2) + i2 + renderStringify(v3) + i3 + renderStringify(v4) + suffix :
13857
+ NO_CHANGE;
14211
13858
  }
14212
-
14213
13859
  /**
14214
- * @license
14215
- * Copyright Google LLC All Rights Reserved.
14216
- *
14217
- * Use of this source code is governed by an MIT-style license that can be
14218
- * found in the LICENSE file at https://angular.io/license
13860
+ * Creates an interpolation binding with 6 expressions.
14219
13861
  */
13862
+ function interpolation6(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix) {
13863
+ const bindingIndex = getBindingIndex();
13864
+ let different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);
13865
+ different = bindingUpdated2(lView, bindingIndex + 4, v4, v5) || different;
13866
+ incrementBindingIndex(6);
13867
+ return different ?
13868
+ prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 + renderStringify(v2) + i2 +
13869
+ renderStringify(v3) + i3 + renderStringify(v4) + i4 + renderStringify(v5) + suffix :
13870
+ NO_CHANGE;
13871
+ }
14220
13872
  /**
14221
- * Fields which exist on either directive or component definitions, and need to be copied from
14222
- * parent to child classes by the `ɵɵCopyDefinitionFeature`.
13873
+ * Creates an interpolation binding with 7 expressions.
14223
13874
  */
14224
- const COPY_DIRECTIVE_FIELDS = [
14225
- // The child class should use the providers of its parent.
14226
- 'providersResolver',
14227
- // Not listed here are any fields which are handled by the `ɵɵInheritDefinitionFeature`, such
14228
- // as inputs, outputs, and host binding functions.
14229
- ];
13875
+ function interpolation7(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix) {
13876
+ const bindingIndex = getBindingIndex();
13877
+ let different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);
13878
+ different = bindingUpdated3(lView, bindingIndex + 4, v4, v5, v6) || different;
13879
+ incrementBindingIndex(7);
13880
+ return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 +
13881
+ renderStringify(v2) + i2 + renderStringify(v3) + i3 + renderStringify(v4) + i4 +
13882
+ renderStringify(v5) + i5 + renderStringify(v6) + suffix :
13883
+ NO_CHANGE;
13884
+ }
14230
13885
  /**
14231
- * Fields which exist only on component definitions, and need to be copied from parent to child
14232
- * classes by the `ɵɵCopyDefinitionFeature`.
14233
- *
14234
- * The type here allows any field of `ComponentDef` which is not also a property of `DirectiveDef`,
14235
- * since those should go in `COPY_DIRECTIVE_FIELDS` above.
13886
+ * Creates an interpolation binding with 8 expressions.
14236
13887
  */
14237
- const COPY_COMPONENT_FIELDS = [
14238
- // The child class should use the template function of its parent, including all template
14239
- // semantics.
14240
- 'template',
14241
- 'decls',
14242
- 'consts',
14243
- 'vars',
14244
- 'onPush',
14245
- 'ngContentSelectors',
14246
- // The child class should use the CSS styles of its parent, including all styling semantics.
14247
- 'styles',
14248
- 'encapsulation',
14249
- // The child class should be checked by the runtime in the same way as its parent.
14250
- 'schemas',
14251
- ];
13888
+ function interpolation8(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix) {
13889
+ const bindingIndex = getBindingIndex();
13890
+ let different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);
13891
+ different = bindingUpdated4(lView, bindingIndex + 4, v4, v5, v6, v7) || different;
13892
+ incrementBindingIndex(8);
13893
+ return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 +
13894
+ renderStringify(v2) + i2 + renderStringify(v3) + i3 + renderStringify(v4) + i4 +
13895
+ renderStringify(v5) + i5 + renderStringify(v6) + i6 + renderStringify(v7) + suffix :
13896
+ NO_CHANGE;
13897
+ }
13898
+
14252
13899
  /**
14253
- * Copies the fields not handled by the `ɵɵInheritDefinitionFeature` from the supertype of a
14254
- * definition.
14255
13900
  *
14256
- * This exists primarily to support ngcc migration of an existing View Engine pattern, where an
14257
- * entire decorator is inherited from a parent to a child class. When ngcc detects this case, it
14258
- * generates a skeleton definition on the child class, and applies this feature.
13901
+ * Update an interpolated attribute on an element with single bound value surrounded by text.
14259
13902
  *
14260
- * The `ɵɵCopyDefinitionFeature` then copies any needed fields from the parent class' definition,
14261
- * including things like the component template function.
13903
+ * Used when the value passed to a property has 1 interpolated value in it:
14262
13904
  *
14263
- * @param definition The definition of a child class which inherits from a parent class with its
14264
- * own definition.
13905
+ * ```html
13906
+ * <div attr.title="prefix{{v0}}suffix"></div>
13907
+ * ```
14265
13908
  *
14266
- * @codeGenApi
14267
- */
14268
- function ɵɵCopyDefinitionFeature(definition) {
14269
- let superType = getSuperType(definition.type);
14270
- let superDef = undefined;
14271
- if (isComponentDef(definition)) {
14272
- // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.
14273
- superDef = superType.ɵcmp;
14274
- }
14275
- else {
14276
- // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.
14277
- superDef = superType.ɵdir;
14278
- }
14279
- // Needed because `definition` fields are readonly.
14280
- const defAny = definition;
14281
- // Copy over any fields that apply to either directives or components.
14282
- for (const field of COPY_DIRECTIVE_FIELDS) {
14283
- defAny[field] = superDef[field];
14284
- }
14285
- if (isComponentDef(superDef)) {
14286
- // Copy over any component-specific fields.
14287
- for (const field of COPY_COMPONENT_FIELDS) {
14288
- defAny[field] = superDef[field];
14289
- }
14290
- }
14291
- }
14292
-
14293
- /**
14294
- * @license
14295
- * Copyright Google LLC All Rights Reserved.
13909
+ * Its compiled representation is::
14296
13910
  *
14297
- * Use of this source code is governed by an MIT-style license that can be
14298
- * found in the LICENSE file at https://angular.io/license
13911
+ * ```ts
13912
+ * ɵɵattributeInterpolate1('title', 'prefix', v0, 'suffix');
13913
+ * ```
13914
+ *
13915
+ * @param attrName The name of the attribute to update
13916
+ * @param prefix Static value used for concatenation only.
13917
+ * @param v0 Value checked for change.
13918
+ * @param suffix Static value used for concatenation only.
13919
+ * @param sanitizer An optional sanitizer function
13920
+ * @returns itself, so that it may be chained.
13921
+ * @codeGenApi
14299
13922
  */
14300
- let _symbolIterator = null;
14301
- function getSymbolIterator() {
14302
- if (!_symbolIterator) {
14303
- const Symbol = _global['Symbol'];
14304
- if (Symbol && Symbol.iterator) {
14305
- _symbolIterator = Symbol.iterator;
14306
- }
14307
- else {
14308
- // es6-shim specific logic
14309
- const keys = Object.getOwnPropertyNames(Map.prototype);
14310
- for (let i = 0; i < keys.length; ++i) {
14311
- const key = keys[i];
14312
- if (key !== 'entries' && key !== 'size' &&
14313
- Map.prototype[key] === Map.prototype['entries']) {
14314
- _symbolIterator = key;
14315
- }
14316
- }
14317
- }
13923
+ function ɵɵattributeInterpolate1(attrName, prefix, v0, suffix, sanitizer, namespace) {
13924
+ const lView = getLView();
13925
+ const interpolatedValue = interpolation1(lView, prefix, v0, suffix);
13926
+ if (interpolatedValue !== NO_CHANGE) {
13927
+ const tNode = getSelectedTNode();
13928
+ elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
13929
+ ngDevMode &&
13930
+ storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 1, prefix, suffix);
14318
13931
  }
14319
- return _symbolIterator;
13932
+ return ɵɵattributeInterpolate1;
14320
13933
  }
14321
-
14322
13934
  /**
14323
- * @license
14324
- * Copyright Google LLC All Rights Reserved.
14325
13935
  *
14326
- * Use of this source code is governed by an MIT-style license that can be
14327
- * found in the LICENSE file at https://angular.io/license
13936
+ * Update an interpolated attribute on an element with 2 bound values surrounded by text.
13937
+ *
13938
+ * Used when the value passed to a property has 2 interpolated values in it:
13939
+ *
13940
+ * ```html
13941
+ * <div attr.title="prefix{{v0}}-{{v1}}suffix"></div>
13942
+ * ```
13943
+ *
13944
+ * Its compiled representation is::
13945
+ *
13946
+ * ```ts
13947
+ * ɵɵattributeInterpolate2('title', 'prefix', v0, '-', v1, 'suffix');
13948
+ * ```
13949
+ *
13950
+ * @param attrName The name of the attribute to update
13951
+ * @param prefix Static value used for concatenation only.
13952
+ * @param v0 Value checked for change.
13953
+ * @param i0 Static value used for concatenation only.
13954
+ * @param v1 Value checked for change.
13955
+ * @param suffix Static value used for concatenation only.
13956
+ * @param sanitizer An optional sanitizer function
13957
+ * @returns itself, so that it may be chained.
13958
+ * @codeGenApi
14328
13959
  */
14329
- function isIterable(obj) {
14330
- return obj !== null && typeof obj === 'object' && obj[getSymbolIterator()] !== undefined;
14331
- }
14332
- function isListLikeIterable(obj) {
14333
- if (!isJsObject(obj))
14334
- return false;
14335
- return Array.isArray(obj) ||
14336
- (!(obj instanceof Map) && // JS Map are iterables but return entries as [k, v]
14337
- getSymbolIterator() in obj); // JS Iterable have a Symbol.iterator prop
14338
- }
14339
- function areIterablesEqual(a, b, comparator) {
14340
- const iterator1 = a[getSymbolIterator()]();
14341
- const iterator2 = b[getSymbolIterator()]();
14342
- while (true) {
14343
- const item1 = iterator1.next();
14344
- const item2 = iterator2.next();
14345
- if (item1.done && item2.done)
14346
- return true;
14347
- if (item1.done || item2.done)
14348
- return false;
14349
- if (!comparator(item1.value, item2.value))
14350
- return false;
14351
- }
14352
- }
14353
- function iterateListLike(obj, fn) {
14354
- if (Array.isArray(obj)) {
14355
- for (let i = 0; i < obj.length; i++) {
14356
- fn(obj[i]);
14357
- }
14358
- }
14359
- else {
14360
- const iterator = obj[getSymbolIterator()]();
14361
- let item;
14362
- while (!((item = iterator.next()).done)) {
14363
- fn(item.value);
14364
- }
13960
+ function ɵɵattributeInterpolate2(attrName, prefix, v0, i0, v1, suffix, sanitizer, namespace) {
13961
+ const lView = getLView();
13962
+ const interpolatedValue = interpolation2(lView, prefix, v0, i0, v1, suffix);
13963
+ if (interpolatedValue !== NO_CHANGE) {
13964
+ const tNode = getSelectedTNode();
13965
+ elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
13966
+ ngDevMode &&
13967
+ storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 2, prefix, i0, suffix);
14365
13968
  }
13969
+ return ɵɵattributeInterpolate2;
14366
13970
  }
14367
- function isJsObject(o) {
14368
- return o !== null && (typeof o === 'function' || typeof o === 'object');
14369
- }
14370
-
14371
13971
  /**
14372
- * @license
14373
- * Copyright Google LLC All Rights Reserved.
14374
13972
  *
14375
- * Use of this source code is governed by an MIT-style license that can be
14376
- * found in the LICENSE file at https://angular.io/license
13973
+ * Update an interpolated attribute on an element with 3 bound values surrounded by text.
13974
+ *
13975
+ * Used when the value passed to a property has 3 interpolated values in it:
13976
+ *
13977
+ * ```html
13978
+ * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
13979
+ * ```
13980
+ *
13981
+ * Its compiled representation is::
13982
+ *
13983
+ * ```ts
13984
+ * ɵɵattributeInterpolate3(
13985
+ * 'title', 'prefix', v0, '-', v1, '-', v2, 'suffix');
13986
+ * ```
13987
+ *
13988
+ * @param attrName The name of the attribute to update
13989
+ * @param prefix Static value used for concatenation only.
13990
+ * @param v0 Value checked for change.
13991
+ * @param i0 Static value used for concatenation only.
13992
+ * @param v1 Value checked for change.
13993
+ * @param i1 Static value used for concatenation only.
13994
+ * @param v2 Value checked for change.
13995
+ * @param suffix Static value used for concatenation only.
13996
+ * @param sanitizer An optional sanitizer function
13997
+ * @returns itself, so that it may be chained.
13998
+ * @codeGenApi
14377
13999
  */
14378
- function devModeEqual(a, b) {
14379
- const isListLikeIterableA = isListLikeIterable(a);
14380
- const isListLikeIterableB = isListLikeIterable(b);
14381
- if (isListLikeIterableA && isListLikeIterableB) {
14382
- return areIterablesEqual(a, b, devModeEqual);
14383
- }
14384
- else {
14385
- const isAObject = a && (typeof a === 'object' || typeof a === 'function');
14386
- const isBObject = b && (typeof b === 'object' || typeof b === 'function');
14387
- if (!isListLikeIterableA && isAObject && !isListLikeIterableB && isBObject) {
14388
- return true;
14389
- }
14390
- else {
14391
- return Object.is(a, b);
14392
- }
14000
+ function ɵɵattributeInterpolate3(attrName, prefix, v0, i0, v1, i1, v2, suffix, sanitizer, namespace) {
14001
+ const lView = getLView();
14002
+ const interpolatedValue = interpolation3(lView, prefix, v0, i0, v1, i1, v2, suffix);
14003
+ if (interpolatedValue !== NO_CHANGE) {
14004
+ const tNode = getSelectedTNode();
14005
+ elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
14006
+ ngDevMode &&
14007
+ storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 3, prefix, i0, i1, suffix);
14393
14008
  }
14009
+ return ɵɵattributeInterpolate3;
14394
14010
  }
14395
-
14396
14011
  /**
14397
- * @license
14398
- * Copyright Google LLC All Rights Reserved.
14399
14012
  *
14400
- * Use of this source code is governed by an MIT-style license that can be
14401
- * found in the LICENSE file at https://angular.io/license
14013
+ * Update an interpolated attribute on an element with 4 bound values surrounded by text.
14014
+ *
14015
+ * Used when the value passed to a property has 4 interpolated values in it:
14016
+ *
14017
+ * ```html
14018
+ * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
14019
+ * ```
14020
+ *
14021
+ * Its compiled representation is::
14022
+ *
14023
+ * ```ts
14024
+ * ɵɵattributeInterpolate4(
14025
+ * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
14026
+ * ```
14027
+ *
14028
+ * @param attrName The name of the attribute to update
14029
+ * @param prefix Static value used for concatenation only.
14030
+ * @param v0 Value checked for change.
14031
+ * @param i0 Static value used for concatenation only.
14032
+ * @param v1 Value checked for change.
14033
+ * @param i1 Static value used for concatenation only.
14034
+ * @param v2 Value checked for change.
14035
+ * @param i2 Static value used for concatenation only.
14036
+ * @param v3 Value checked for change.
14037
+ * @param suffix Static value used for concatenation only.
14038
+ * @param sanitizer An optional sanitizer function
14039
+ * @returns itself, so that it may be chained.
14040
+ * @codeGenApi
14402
14041
  */
14403
- // TODO(misko): consider inlining
14404
- /** Updates binding and returns the value. */
14405
- function updateBinding(lView, bindingIndex, value) {
14406
- return lView[bindingIndex] = value;
14407
- }
14408
- /** Gets the current binding value. */
14409
- function getBinding(lView, bindingIndex) {
14410
- ngDevMode && assertIndexInRange(lView, bindingIndex);
14411
- ngDevMode &&
14412
- assertNotSame(lView[bindingIndex], NO_CHANGE, 'Stored value should never be NO_CHANGE.');
14413
- return lView[bindingIndex];
14042
+ function ɵɵattributeInterpolate4(attrName, prefix, v0, i0, v1, i1, v2, i2, v3, suffix, sanitizer, namespace) {
14043
+ const lView = getLView();
14044
+ const interpolatedValue = interpolation4(lView, prefix, v0, i0, v1, i1, v2, i2, v3, suffix);
14045
+ if (interpolatedValue !== NO_CHANGE) {
14046
+ const tNode = getSelectedTNode();
14047
+ elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
14048
+ ngDevMode &&
14049
+ storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 4, prefix, i0, i1, i2, suffix);
14050
+ }
14051
+ return ɵɵattributeInterpolate4;
14414
14052
  }
14415
14053
  /**
14416
- * Updates binding if changed, then returns whether it was updated.
14417
14054
  *
14418
- * This function also checks the `CheckNoChangesMode` and throws if changes are made.
14419
- * Some changes (Objects/iterables) during `CheckNoChangesMode` are exempt to comply with VE
14420
- * behavior.
14421
- *
14422
- * @param lView current `LView`
14423
- * @param bindingIndex The binding in the `LView` to check
14424
- * @param value New value to check against `lView[bindingIndex]`
14425
- * @returns `true` if the bindings has changed. (Throws if binding has changed during
14426
- * `CheckNoChangesMode`)
14427
- */
14428
- function bindingUpdated(lView, bindingIndex, value) {
14429
- ngDevMode && assertNotSame(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');
14430
- ngDevMode &&
14431
- assertLessThan(bindingIndex, lView.length, `Slot should have been initialized to NO_CHANGE`);
14432
- const oldValue = lView[bindingIndex];
14433
- if (Object.is(oldValue, value)) {
14434
- return false;
14435
- }
14436
- else {
14437
- if (ngDevMode && isInCheckNoChangesMode()) {
14438
- // View engine didn't report undefined values as changed on the first checkNoChanges pass
14439
- // (before the change detection was run).
14440
- const oldValueToCompare = oldValue !== NO_CHANGE ? oldValue : undefined;
14441
- if (!devModeEqual(oldValueToCompare, value)) {
14442
- const details = getExpressionChangedErrorDetails(lView, bindingIndex, oldValueToCompare, value);
14443
- throwErrorIfNoChangesMode(oldValue === NO_CHANGE, details.oldValue, details.newValue, details.propName);
14444
- }
14445
- // There was a change, but the `devModeEqual` decided that the change is exempt from an error.
14446
- // For this reason we exit as if no change. The early exit is needed to prevent the changed
14447
- // value to be written into `LView` (If we would write the new value that we would not see it
14448
- // as change on next CD.)
14449
- return false;
14450
- }
14451
- lView[bindingIndex] = value;
14452
- return true;
14453
- }
14454
- }
14455
- /** Updates 2 bindings if changed, then returns whether either was updated. */
14456
- function bindingUpdated2(lView, bindingIndex, exp1, exp2) {
14457
- const different = bindingUpdated(lView, bindingIndex, exp1);
14458
- return bindingUpdated(lView, bindingIndex + 1, exp2) || different;
14459
- }
14460
- /** Updates 3 bindings if changed, then returns whether any was updated. */
14461
- function bindingUpdated3(lView, bindingIndex, exp1, exp2, exp3) {
14462
- const different = bindingUpdated2(lView, bindingIndex, exp1, exp2);
14463
- return bindingUpdated(lView, bindingIndex + 2, exp3) || different;
14464
- }
14465
- /** Updates 4 bindings if changed, then returns whether any was updated. */
14466
- function bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4) {
14467
- const different = bindingUpdated2(lView, bindingIndex, exp1, exp2);
14468
- return bindingUpdated2(lView, bindingIndex + 2, exp3, exp4) || different;
14469
- }
14470
-
14471
- /**
14472
- * @license
14473
- * Copyright Google LLC All Rights Reserved.
14474
- *
14475
- * Use of this source code is governed by an MIT-style license that can be
14476
- * found in the LICENSE file at https://angular.io/license
14477
- */
14478
- /**
14479
- * Updates the value of or removes a bound attribute on an Element.
14480
- *
14481
- * Used in the case of `[attr.title]="value"`
14482
- *
14483
- * @param name name The name of the attribute.
14484
- * @param value value The attribute is removed when value is `null` or `undefined`.
14485
- * Otherwise the attribute value is set to the stringified value.
14486
- * @param sanitizer An optional function used to sanitize the value.
14487
- * @param namespace Optional namespace to use when setting the attribute.
14488
- *
14489
- * @codeGenApi
14490
- */
14491
- function ɵɵattribute(name, value, sanitizer, namespace) {
14492
- const lView = getLView();
14493
- const bindingIndex = nextBindingIndex();
14494
- if (bindingUpdated(lView, bindingIndex, value)) {
14495
- const tView = getTView();
14496
- const tNode = getSelectedTNode();
14497
- elementAttributeInternal(tNode, lView, name, value, sanitizer, namespace);
14498
- ngDevMode && storePropertyBindingMetadata(tView.data, tNode, 'attr.' + name, bindingIndex);
14499
- }
14500
- return ɵɵattribute;
14501
- }
14502
-
14503
- /**
14504
- * @license
14505
- * Copyright Google LLC All Rights Reserved.
14506
- *
14507
- * Use of this source code is governed by an MIT-style license that can be
14508
- * found in the LICENSE file at https://angular.io/license
14509
- */
14510
- /**
14511
- * Create interpolation bindings with a variable number of expressions.
14512
- *
14513
- * If there are 1 to 8 expressions `interpolation1()` to `interpolation8()` should be used instead.
14514
- * Those are faster because there is no need to create an array of expressions and iterate over it.
14515
- *
14516
- * `values`:
14517
- * - has static text at even indexes,
14518
- * - has evaluated expressions at odd indexes.
14519
- *
14520
- * Returns the concatenated string when any of the arguments changes, `NO_CHANGE` otherwise.
14521
- */
14522
- function interpolationV(lView, values) {
14523
- ngDevMode && assertLessThan(2, values.length, 'should have at least 3 values');
14524
- ngDevMode && assertEqual(values.length % 2, 1, 'should have an odd number of values');
14525
- let isBindingUpdated = false;
14526
- let bindingIndex = getBindingIndex();
14527
- for (let i = 1; i < values.length; i += 2) {
14528
- // Check if bindings (odd indexes) have changed
14529
- isBindingUpdated = bindingUpdated(lView, bindingIndex++, values[i]) || isBindingUpdated;
14530
- }
14531
- setBindingIndex(bindingIndex);
14532
- if (!isBindingUpdated) {
14533
- return NO_CHANGE;
14534
- }
14535
- // Build the updated content
14536
- let content = values[0];
14537
- for (let i = 1; i < values.length; i += 2) {
14538
- content += renderStringify(values[i]) + values[i + 1];
14539
- }
14540
- return content;
14541
- }
14542
- /**
14543
- * Creates an interpolation binding with 1 expression.
14544
- *
14545
- * @param prefix static value used for concatenation only.
14546
- * @param v0 value checked for change.
14547
- * @param suffix static value used for concatenation only.
14548
- */
14549
- function interpolation1(lView, prefix, v0, suffix) {
14550
- const different = bindingUpdated(lView, nextBindingIndex(), v0);
14551
- return different ? prefix + renderStringify(v0) + suffix : NO_CHANGE;
14552
- }
14553
- /**
14554
- * Creates an interpolation binding with 2 expressions.
14555
- */
14556
- function interpolation2(lView, prefix, v0, i0, v1, suffix) {
14557
- const bindingIndex = getBindingIndex();
14558
- const different = bindingUpdated2(lView, bindingIndex, v0, v1);
14559
- incrementBindingIndex(2);
14560
- return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + suffix : NO_CHANGE;
14561
- }
14562
- /**
14563
- * Creates an interpolation binding with 3 expressions.
14564
- */
14565
- function interpolation3(lView, prefix, v0, i0, v1, i1, v2, suffix) {
14566
- const bindingIndex = getBindingIndex();
14567
- const different = bindingUpdated3(lView, bindingIndex, v0, v1, v2);
14568
- incrementBindingIndex(3);
14569
- return different ?
14570
- prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 + renderStringify(v2) + suffix :
14571
- NO_CHANGE;
14572
- }
14573
- /**
14574
- * Create an interpolation binding with 4 expressions.
14575
- */
14576
- function interpolation4(lView, prefix, v0, i0, v1, i1, v2, i2, v3, suffix) {
14577
- const bindingIndex = getBindingIndex();
14578
- const different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);
14579
- incrementBindingIndex(4);
14580
- return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 +
14581
- renderStringify(v2) + i2 + renderStringify(v3) + suffix :
14582
- NO_CHANGE;
14583
- }
14584
- /**
14585
- * Creates an interpolation binding with 5 expressions.
14586
- */
14587
- function interpolation5(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix) {
14588
- const bindingIndex = getBindingIndex();
14589
- let different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);
14590
- different = bindingUpdated(lView, bindingIndex + 4, v4) || different;
14591
- incrementBindingIndex(5);
14592
- return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 +
14593
- renderStringify(v2) + i2 + renderStringify(v3) + i3 + renderStringify(v4) + suffix :
14594
- NO_CHANGE;
14595
- }
14596
- /**
14597
- * Creates an interpolation binding with 6 expressions.
14598
- */
14599
- function interpolation6(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix) {
14600
- const bindingIndex = getBindingIndex();
14601
- let different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);
14602
- different = bindingUpdated2(lView, bindingIndex + 4, v4, v5) || different;
14603
- incrementBindingIndex(6);
14604
- return different ?
14605
- prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 + renderStringify(v2) + i2 +
14606
- renderStringify(v3) + i3 + renderStringify(v4) + i4 + renderStringify(v5) + suffix :
14607
- NO_CHANGE;
14608
- }
14609
- /**
14610
- * Creates an interpolation binding with 7 expressions.
14611
- */
14612
- function interpolation7(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix) {
14613
- const bindingIndex = getBindingIndex();
14614
- let different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);
14615
- different = bindingUpdated3(lView, bindingIndex + 4, v4, v5, v6) || different;
14616
- incrementBindingIndex(7);
14617
- return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 +
14618
- renderStringify(v2) + i2 + renderStringify(v3) + i3 + renderStringify(v4) + i4 +
14619
- renderStringify(v5) + i5 + renderStringify(v6) + suffix :
14620
- NO_CHANGE;
14621
- }
14622
- /**
14623
- * Creates an interpolation binding with 8 expressions.
14624
- */
14625
- function interpolation8(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix) {
14626
- const bindingIndex = getBindingIndex();
14627
- let different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);
14628
- different = bindingUpdated4(lView, bindingIndex + 4, v4, v5, v6, v7) || different;
14629
- incrementBindingIndex(8);
14630
- return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 +
14631
- renderStringify(v2) + i2 + renderStringify(v3) + i3 + renderStringify(v4) + i4 +
14632
- renderStringify(v5) + i5 + renderStringify(v6) + i6 + renderStringify(v7) + suffix :
14633
- NO_CHANGE;
14634
- }
14635
-
14636
- /**
14637
- *
14638
- * Update an interpolated attribute on an element with single bound value surrounded by text.
14055
+ * Update an interpolated attribute on an element with 5 bound values surrounded by text.
14639
14056
  *
14640
- * Used when the value passed to a property has 1 interpolated value in it:
14057
+ * Used when the value passed to a property has 5 interpolated values in it:
14641
14058
  *
14642
14059
  * ```html
14643
- * <div attr.title="prefix{{v0}}suffix"></div>
14060
+ * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
14644
14061
  * ```
14645
14062
  *
14646
14063
  * Its compiled representation is::
14647
14064
  *
14648
14065
  * ```ts
14649
- * ɵɵattributeInterpolate1('title', 'prefix', v0, 'suffix');
14066
+ * ɵɵattributeInterpolate5(
14067
+ * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
14650
14068
  * ```
14651
14069
  *
14652
14070
  * @param attrName The name of the attribute to update
14653
14071
  * @param prefix Static value used for concatenation only.
14654
14072
  * @param v0 Value checked for change.
14073
+ * @param i0 Static value used for concatenation only.
14074
+ * @param v1 Value checked for change.
14075
+ * @param i1 Static value used for concatenation only.
14076
+ * @param v2 Value checked for change.
14077
+ * @param i2 Static value used for concatenation only.
14078
+ * @param v3 Value checked for change.
14079
+ * @param i3 Static value used for concatenation only.
14080
+ * @param v4 Value checked for change.
14655
14081
  * @param suffix Static value used for concatenation only.
14656
14082
  * @param sanitizer An optional sanitizer function
14657
14083
  * @returns itself, so that it may be chained.
14658
14084
  * @codeGenApi
14659
14085
  */
14660
- function ɵɵattributeInterpolate1(attrName, prefix, v0, suffix, sanitizer, namespace) {
14086
+ function ɵɵattributeInterpolate5(attrName, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix, sanitizer, namespace) {
14661
14087
  const lView = getLView();
14662
- const interpolatedValue = interpolation1(lView, prefix, v0, suffix);
14088
+ const interpolatedValue = interpolation5(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix);
14663
14089
  if (interpolatedValue !== NO_CHANGE) {
14664
14090
  const tNode = getSelectedTNode();
14665
14091
  elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
14666
14092
  ngDevMode &&
14667
- storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 1, prefix, suffix);
14093
+ storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 5, prefix, i0, i1, i2, i3, suffix);
14668
14094
  }
14669
- return ɵɵattributeInterpolate1;
14095
+ return ɵɵattributeInterpolate5;
14670
14096
  }
14671
14097
  /**
14672
14098
  *
14673
- * Update an interpolated attribute on an element with 2 bound values surrounded by text.
14099
+ * Update an interpolated attribute on an element with 6 bound values surrounded by text.
14674
14100
  *
14675
- * Used when the value passed to a property has 2 interpolated values in it:
14101
+ * Used when the value passed to a property has 6 interpolated values in it:
14676
14102
  *
14677
14103
  * ```html
14678
- * <div attr.title="prefix{{v0}}-{{v1}}suffix"></div>
14104
+ * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
14679
14105
  * ```
14680
14106
  *
14681
14107
  * Its compiled representation is::
14682
14108
  *
14683
14109
  * ```ts
14684
- * ɵɵattributeInterpolate2('title', 'prefix', v0, '-', v1, 'suffix');
14685
- * ```
14686
- *
14687
- * @param attrName The name of the attribute to update
14688
- * @param prefix Static value used for concatenation only.
14689
- * @param v0 Value checked for change.
14690
- * @param i0 Static value used for concatenation only.
14691
- * @param v1 Value checked for change.
14692
- * @param suffix Static value used for concatenation only.
14693
- * @param sanitizer An optional sanitizer function
14694
- * @returns itself, so that it may be chained.
14695
- * @codeGenApi
14696
- */
14697
- function ɵɵattributeInterpolate2(attrName, prefix, v0, i0, v1, suffix, sanitizer, namespace) {
14698
- const lView = getLView();
14699
- const interpolatedValue = interpolation2(lView, prefix, v0, i0, v1, suffix);
14700
- if (interpolatedValue !== NO_CHANGE) {
14701
- const tNode = getSelectedTNode();
14702
- elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
14703
- ngDevMode &&
14704
- storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 2, prefix, i0, suffix);
14705
- }
14706
- return ɵɵattributeInterpolate2;
14707
- }
14708
- /**
14709
- *
14710
- * Update an interpolated attribute on an element with 3 bound values surrounded by text.
14711
- *
14712
- * Used when the value passed to a property has 3 interpolated values in it:
14713
- *
14714
- * ```html
14715
- * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
14716
- * ```
14717
- *
14718
- * Its compiled representation is::
14719
- *
14720
- * ```ts
14721
- * ɵɵattributeInterpolate3(
14722
- * 'title', 'prefix', v0, '-', v1, '-', v2, 'suffix');
14723
- * ```
14724
- *
14725
- * @param attrName The name of the attribute to update
14726
- * @param prefix Static value used for concatenation only.
14727
- * @param v0 Value checked for change.
14728
- * @param i0 Static value used for concatenation only.
14729
- * @param v1 Value checked for change.
14730
- * @param i1 Static value used for concatenation only.
14731
- * @param v2 Value checked for change.
14732
- * @param suffix Static value used for concatenation only.
14733
- * @param sanitizer An optional sanitizer function
14734
- * @returns itself, so that it may be chained.
14735
- * @codeGenApi
14736
- */
14737
- function ɵɵattributeInterpolate3(attrName, prefix, v0, i0, v1, i1, v2, suffix, sanitizer, namespace) {
14738
- const lView = getLView();
14739
- const interpolatedValue = interpolation3(lView, prefix, v0, i0, v1, i1, v2, suffix);
14740
- if (interpolatedValue !== NO_CHANGE) {
14741
- const tNode = getSelectedTNode();
14742
- elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
14743
- ngDevMode &&
14744
- storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 3, prefix, i0, i1, suffix);
14745
- }
14746
- return ɵɵattributeInterpolate3;
14747
- }
14748
- /**
14749
- *
14750
- * Update an interpolated attribute on an element with 4 bound values surrounded by text.
14751
- *
14752
- * Used when the value passed to a property has 4 interpolated values in it:
14753
- *
14754
- * ```html
14755
- * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
14756
- * ```
14757
- *
14758
- * Its compiled representation is::
14759
- *
14760
- * ```ts
14761
- * ɵɵattributeInterpolate4(
14762
- * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
14763
- * ```
14764
- *
14765
- * @param attrName The name of the attribute to update
14766
- * @param prefix Static value used for concatenation only.
14767
- * @param v0 Value checked for change.
14768
- * @param i0 Static value used for concatenation only.
14769
- * @param v1 Value checked for change.
14770
- * @param i1 Static value used for concatenation only.
14771
- * @param v2 Value checked for change.
14772
- * @param i2 Static value used for concatenation only.
14773
- * @param v3 Value checked for change.
14774
- * @param suffix Static value used for concatenation only.
14775
- * @param sanitizer An optional sanitizer function
14776
- * @returns itself, so that it may be chained.
14777
- * @codeGenApi
14778
- */
14779
- function ɵɵattributeInterpolate4(attrName, prefix, v0, i0, v1, i1, v2, i2, v3, suffix, sanitizer, namespace) {
14780
- const lView = getLView();
14781
- const interpolatedValue = interpolation4(lView, prefix, v0, i0, v1, i1, v2, i2, v3, suffix);
14782
- if (interpolatedValue !== NO_CHANGE) {
14783
- const tNode = getSelectedTNode();
14784
- elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
14785
- ngDevMode &&
14786
- storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 4, prefix, i0, i1, i2, suffix);
14787
- }
14788
- return ɵɵattributeInterpolate4;
14789
- }
14790
- /**
14791
- *
14792
- * Update an interpolated attribute on an element with 5 bound values surrounded by text.
14793
- *
14794
- * Used when the value passed to a property has 5 interpolated values in it:
14795
- *
14796
- * ```html
14797
- * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
14798
- * ```
14799
- *
14800
- * Its compiled representation is::
14801
- *
14802
- * ```ts
14803
- * ɵɵattributeInterpolate5(
14804
- * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
14805
- * ```
14806
- *
14807
- * @param attrName The name of the attribute to update
14808
- * @param prefix Static value used for concatenation only.
14809
- * @param v0 Value checked for change.
14810
- * @param i0 Static value used for concatenation only.
14811
- * @param v1 Value checked for change.
14812
- * @param i1 Static value used for concatenation only.
14813
- * @param v2 Value checked for change.
14814
- * @param i2 Static value used for concatenation only.
14815
- * @param v3 Value checked for change.
14816
- * @param i3 Static value used for concatenation only.
14817
- * @param v4 Value checked for change.
14818
- * @param suffix Static value used for concatenation only.
14819
- * @param sanitizer An optional sanitizer function
14820
- * @returns itself, so that it may be chained.
14821
- * @codeGenApi
14822
- */
14823
- function ɵɵattributeInterpolate5(attrName, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix, sanitizer, namespace) {
14824
- const lView = getLView();
14825
- const interpolatedValue = interpolation5(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix);
14826
- if (interpolatedValue !== NO_CHANGE) {
14827
- const tNode = getSelectedTNode();
14828
- elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
14829
- ngDevMode &&
14830
- storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 5, prefix, i0, i1, i2, i3, suffix);
14831
- }
14832
- return ɵɵattributeInterpolate5;
14833
- }
14834
- /**
14835
- *
14836
- * Update an interpolated attribute on an element with 6 bound values surrounded by text.
14837
- *
14838
- * Used when the value passed to a property has 6 interpolated values in it:
14839
- *
14840
- * ```html
14841
- * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
14842
- * ```
14843
- *
14844
- * Its compiled representation is::
14845
- *
14846
- * ```ts
14847
- * ɵɵattributeInterpolate6(
14848
- * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
14110
+ * ɵɵattributeInterpolate6(
14111
+ * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
14849
14112
  * ```
14850
14113
  *
14851
14114
  * @param attrName The name of the attribute to update
@@ -15018,6 +14281,57 @@ function ɵɵattributeInterpolateV(attrName, values, sanitizer, namespace) {
15018
14281
  return ɵɵattributeInterpolateV;
15019
14282
  }
15020
14283
 
14284
+ /**
14285
+ * @license
14286
+ * Copyright Google LLC All Rights Reserved.
14287
+ *
14288
+ * Use of this source code is governed by an MIT-style license that can be
14289
+ * found in the LICENSE file at https://angular.io/license
14290
+ */
14291
+ /**
14292
+ * Synchronously perform change detection on a component (and possibly its sub-components).
14293
+ *
14294
+ * This function triggers change detection in a synchronous way on a component.
14295
+ *
14296
+ * @param component The component which the change detection should be performed on.
14297
+ */
14298
+ function detectChanges(component) {
14299
+ const view = getComponentViewByInstance(component);
14300
+ detectChangesInternal(view[TVIEW], view, component);
14301
+ }
14302
+ /**
14303
+ * Marks the component as dirty (needing change detection). Marking a component dirty will
14304
+ * schedule a change detection on it at some point in the future.
14305
+ *
14306
+ * Marking an already dirty component as dirty won't do anything. Only one outstanding change
14307
+ * detection can be scheduled per component tree.
14308
+ *
14309
+ * @param component Component to mark as dirty.
14310
+ */
14311
+ function markDirty(component) {
14312
+ ngDevMode && assertDefined(component, 'component');
14313
+ const rootView = markViewDirty(getComponentViewByInstance(component));
14314
+ ngDevMode && assertDefined(rootView[CONTEXT], 'rootContext should be defined');
14315
+ scheduleTick(rootView[CONTEXT], 1 /* RootContextFlags.DetectChanges */);
14316
+ }
14317
+ /**
14318
+ * Used to perform change detection on the whole application.
14319
+ *
14320
+ * This is equivalent to `detectChanges`, but invoked on root component. Additionally, `tick`
14321
+ * executes lifecycle hooks and conditionally checks components based on their
14322
+ * `ChangeDetectionStrategy` and dirtiness.
14323
+ *
14324
+ * The preferred way to trigger change detection is to call `markDirty`. `markDirty` internally
14325
+ * schedules `tick` using a scheduler in order to coalesce multiple `markDirty` calls into a
14326
+ * single change detection run. By default, the scheduler is `requestAnimationFrame`, but can
14327
+ * be changed when calling `renderComponent` and providing the `scheduler` option.
14328
+ */
14329
+ function tick(component) {
14330
+ const rootView = getRootView(component);
14331
+ const rootContext = rootView[CONTEXT];
14332
+ tickRootContext(rootContext);
14333
+ }
14334
+
15021
14335
  /**
15022
14336
  * @license
15023
14337
  * Copyright Google LLC All Rights Reserved.
@@ -15562,51 +14876,42 @@ function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn,
15562
14876
  tNode.index;
15563
14877
  // In order to match current behavior, native DOM event listeners must be added for all
15564
14878
  // events (including outputs).
15565
- if (isProceduralRenderer(renderer)) {
15566
- // There might be cases where multiple directives on the same element try to register an event
15567
- // handler function for the same event. In this situation we want to avoid registration of
15568
- // several native listeners as each registration would be intercepted by NgZone and
15569
- // trigger change detection. This would mean that a single user action would result in several
15570
- // change detections being invoked. To avoid this situation we want to have only one call to
15571
- // native handler registration (for the same element and same type of event).
15572
- //
15573
- // In order to have just one native event handler in presence of multiple handler functions,
15574
- // we just register a first handler function as a native event listener and then chain
15575
- // (coalesce) other handler functions on top of the first native handler function.
15576
- let existingListener = null;
15577
- // Please note that the coalescing described here doesn't happen for events specifying an
15578
- // alternative target (ex. (document:click)) - this is to keep backward compatibility with the
15579
- // view engine.
15580
- // Also, we don't have to search for existing listeners is there are no directives
15581
- // matching on a given node as we can't register multiple event handlers for the same event in
15582
- // a template (this would mean having duplicate attributes).
15583
- if (!eventTargetResolver && isTNodeDirectiveHost) {
15584
- existingListener = findExistingListener(tView, lView, eventName, tNode.index);
15585
- }
15586
- if (existingListener !== null) {
15587
- // Attach a new listener to coalesced listeners list, maintaining the order in which
15588
- // listeners are registered. For performance reasons, we keep a reference to the last
15589
- // listener in that list (in `__ngLastListenerFn__` field), so we can avoid going through
15590
- // the entire set each time we need to add a new listener.
15591
- const lastListenerFn = existingListener.__ngLastListenerFn__ || existingListener;
15592
- lastListenerFn.__ngNextListenerFn__ = listenerFn;
15593
- existingListener.__ngLastListenerFn__ = listenerFn;
15594
- processOutputs = false;
15595
- }
15596
- else {
15597
- listenerFn = wrapListener(tNode, lView, context, listenerFn, false /** preventDefault */);
15598
- const cleanupFn = renderer.listen(target, eventName, listenerFn);
15599
- ngDevMode && ngDevMode.rendererAddEventListener++;
15600
- lCleanup.push(listenerFn, cleanupFn);
15601
- tCleanup && tCleanup.push(eventName, idxOrTargetGetter, lCleanupIndex, lCleanupIndex + 1);
15602
- }
14879
+ // There might be cases where multiple directives on the same element try to register an event
14880
+ // handler function for the same event. In this situation we want to avoid registration of
14881
+ // several native listeners as each registration would be intercepted by NgZone and
14882
+ // trigger change detection. This would mean that a single user action would result in several
14883
+ // change detections being invoked. To avoid this situation we want to have only one call to
14884
+ // native handler registration (for the same element and same type of event).
14885
+ //
14886
+ // In order to have just one native event handler in presence of multiple handler functions,
14887
+ // we just register a first handler function as a native event listener and then chain
14888
+ // (coalesce) other handler functions on top of the first native handler function.
14889
+ let existingListener = null;
14890
+ // Please note that the coalescing described here doesn't happen for events specifying an
14891
+ // alternative target (ex. (document:click)) - this is to keep backward compatibility with the
14892
+ // view engine.
14893
+ // Also, we don't have to search for existing listeners is there are no directives
14894
+ // matching on a given node as we can't register multiple event handlers for the same event in
14895
+ // a template (this would mean having duplicate attributes).
14896
+ if (!eventTargetResolver && isTNodeDirectiveHost) {
14897
+ existingListener = findExistingListener(tView, lView, eventName, tNode.index);
14898
+ }
14899
+ if (existingListener !== null) {
14900
+ // Attach a new listener to coalesced listeners list, maintaining the order in which
14901
+ // listeners are registered. For performance reasons, we keep a reference to the last
14902
+ // listener in that list (in `__ngLastListenerFn__` field), so we can avoid going through
14903
+ // the entire set each time we need to add a new listener.
14904
+ const lastListenerFn = existingListener.__ngLastListenerFn__ || existingListener;
14905
+ lastListenerFn.__ngNextListenerFn__ = listenerFn;
14906
+ existingListener.__ngLastListenerFn__ = listenerFn;
14907
+ processOutputs = false;
15603
14908
  }
15604
14909
  else {
15605
- listenerFn = wrapListener(tNode, lView, context, listenerFn, true /** preventDefault */);
15606
- target.addEventListener(eventName, listenerFn, useCapture);
14910
+ listenerFn = wrapListener(tNode, lView, context, listenerFn, false /** preventDefault */);
14911
+ const cleanupFn = renderer.listen(target, eventName, listenerFn);
15607
14912
  ngDevMode && ngDevMode.rendererAddEventListener++;
15608
- lCleanup.push(listenerFn);
15609
- tCleanup && tCleanup.push(eventName, idxOrTargetGetter, lCleanupIndex, useCapture);
14913
+ lCleanup.push(listenerFn, cleanupFn);
14914
+ tCleanup && tCleanup.push(eventName, idxOrTargetGetter, lCleanupIndex, lCleanupIndex + 1);
15610
14915
  }
15611
14916
  }
15612
14917
  else {
@@ -17680,7 +16985,7 @@ function findStylingValue(tData, tNode, lView, prop, index, isClassBased) {
17680
16985
  valueAtLViewIndex = isStylingMap ? EMPTY_ARRAY : undefined;
17681
16986
  }
17682
16987
  let currentValue = isStylingMap ? keyValueArrayGet(valueAtLViewIndex, prop) :
17683
- key === prop ? valueAtLViewIndex : undefined;
16988
+ (key === prop ? valueAtLViewIndex : undefined);
17684
16989
  if (containsStatics && !isStylingValuePresent(currentValue)) {
17685
16990
  currentValue = keyValueArrayGet(rawKey, prop);
17686
16991
  }
@@ -21533,7 +20838,7 @@ function noComponentFactoryError(component) {
21533
20838
  return error;
21534
20839
  }
21535
20840
  const ERROR_COMPONENT = 'ngComponent';
21536
- function getComponent(error) {
20841
+ function getComponent$1(error) {
21537
20842
  return error[ERROR_COMPONENT];
21538
20843
  }
21539
20844
  class _NullComponentFactoryResolver {
@@ -21717,14 +21022,6 @@ class Renderer2 {
21717
21022
  * @nocollapse
21718
21023
  */
21719
21024
  Renderer2.__NG_ELEMENT_ID__ = () => injectRenderer2();
21720
- /** Returns a Renderer2 (or throws when application was bootstrapped with Renderer3) */
21721
- function getOrCreateRenderer2(lView) {
21722
- const renderer = lView[RENDERER];
21723
- if (ngDevMode && !isProceduralRenderer(renderer)) {
21724
- throw new Error('Cannot inject Renderer2 when the application uses Renderer3!');
21725
- }
21726
- return renderer;
21727
- }
21728
21025
  /** Injects a Renderer2 for the current component. */
21729
21026
  function injectRenderer2() {
21730
21027
  // We need the Renderer to be based on the component that it's being injected into, however since
@@ -21732,7 +21029,7 @@ function injectRenderer2() {
21732
21029
  const lView = getLView();
21733
21030
  const tNode = getCurrentTNode();
21734
21031
  const nodeAtIndex = getComponentLViewByIndex(tNode.index, lView);
21735
- return getOrCreateRenderer2(isLView(nodeAtIndex) ? nodeAtIndex : lView);
21032
+ return (isLView(nodeAtIndex) ? nodeAtIndex : lView)[RENDERER];
21736
21033
  }
21737
21034
 
21738
21035
  /**
@@ -21779,7 +21076,7 @@ class Version {
21779
21076
  /**
21780
21077
  * @publicApi
21781
21078
  */
21782
- const VERSION = new Version('14.0.4');
21079
+ const VERSION = new Version('14.0.5');
21783
21080
 
21784
21081
  /**
21785
21082
  * @license
@@ -22158,367 +21455,783 @@ class RootViewRef extends ViewRef$1 {
22158
21455
  * Use of this source code is governed by an MIT-style license that can be
22159
21456
  * found in the LICENSE file at https://angular.io/license
22160
21457
  */
22161
- class ComponentFactoryResolver extends ComponentFactoryResolver$1 {
22162
- /**
22163
- * @param ngModule The NgModuleRef to which all resolved factories are bound.
22164
- */
22165
- constructor(ngModule) {
22166
- super();
22167
- this.ngModule = ngModule;
22168
- }
22169
- resolveComponentFactory(component) {
22170
- ngDevMode && assertComponentType(component);
22171
- const componentDef = getComponentDef(component);
22172
- return new ComponentFactory(componentDef, this.ngModule);
22173
- }
22174
- }
22175
- function toRefArray(map) {
22176
- const array = [];
22177
- for (let nonMinified in map) {
22178
- if (map.hasOwnProperty(nonMinified)) {
22179
- const minified = map[nonMinified];
22180
- array.push({ propName: minified, templateName: nonMinified });
21458
+ class ComponentFactoryResolver extends ComponentFactoryResolver$1 {
21459
+ /**
21460
+ * @param ngModule The NgModuleRef to which all resolved factories are bound.
21461
+ */
21462
+ constructor(ngModule) {
21463
+ super();
21464
+ this.ngModule = ngModule;
21465
+ }
21466
+ resolveComponentFactory(component) {
21467
+ ngDevMode && assertComponentType(component);
21468
+ const componentDef = getComponentDef(component);
21469
+ return new ComponentFactory(componentDef, this.ngModule);
21470
+ }
21471
+ }
21472
+ function toRefArray(map) {
21473
+ const array = [];
21474
+ for (let nonMinified in map) {
21475
+ if (map.hasOwnProperty(nonMinified)) {
21476
+ const minified = map[nonMinified];
21477
+ array.push({ propName: minified, templateName: nonMinified });
21478
+ }
21479
+ }
21480
+ return array;
21481
+ }
21482
+ function getNamespace(elementName) {
21483
+ const name = elementName.toLowerCase();
21484
+ return name === 'svg' ? SVG_NAMESPACE : (name === 'math' ? MATH_ML_NAMESPACE : null);
21485
+ }
21486
+ /**
21487
+ * Injector that looks up a value using a specific injector, before falling back to the module
21488
+ * injector. Used primarily when creating components or embedded views dynamically.
21489
+ */
21490
+ class ChainedInjector {
21491
+ constructor(injector, parentInjector) {
21492
+ this.injector = injector;
21493
+ this.parentInjector = parentInjector;
21494
+ }
21495
+ get(token, notFoundValue, flags) {
21496
+ const value = this.injector.get(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, flags);
21497
+ if (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR ||
21498
+ notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) {
21499
+ // Return the value from the root element injector when
21500
+ // - it provides it
21501
+ // (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)
21502
+ // - the module injector should not be checked
21503
+ // (notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)
21504
+ return value;
21505
+ }
21506
+ return this.parentInjector.get(token, notFoundValue, flags);
21507
+ }
21508
+ }
21509
+ /**
21510
+ * Render3 implementation of {@link viewEngine_ComponentFactory}.
21511
+ */
21512
+ class ComponentFactory extends ComponentFactory$1 {
21513
+ /**
21514
+ * @param componentDef The component definition.
21515
+ * @param ngModule The NgModuleRef to which the factory is bound.
21516
+ */
21517
+ constructor(componentDef, ngModule) {
21518
+ super();
21519
+ this.componentDef = componentDef;
21520
+ this.ngModule = ngModule;
21521
+ this.componentType = componentDef.type;
21522
+ this.selector = stringifyCSSSelectorList(componentDef.selectors);
21523
+ this.ngContentSelectors =
21524
+ componentDef.ngContentSelectors ? componentDef.ngContentSelectors : [];
21525
+ this.isBoundToModule = !!ngModule;
21526
+ }
21527
+ get inputs() {
21528
+ return toRefArray(this.componentDef.inputs);
21529
+ }
21530
+ get outputs() {
21531
+ return toRefArray(this.componentDef.outputs);
21532
+ }
21533
+ create(injector, projectableNodes, rootSelectorOrNode, environmentInjector) {
21534
+ environmentInjector = environmentInjector || this.ngModule;
21535
+ let realEnvironmentInjector = environmentInjector instanceof EnvironmentInjector ?
21536
+ environmentInjector :
21537
+ environmentInjector === null || environmentInjector === void 0 ? void 0 : environmentInjector.injector;
21538
+ if (realEnvironmentInjector && this.componentDef.getStandaloneInjector !== null) {
21539
+ realEnvironmentInjector = this.componentDef.getStandaloneInjector(realEnvironmentInjector) ||
21540
+ realEnvironmentInjector;
21541
+ }
21542
+ const rootViewInjector = realEnvironmentInjector ? new ChainedInjector(injector, realEnvironmentInjector) : injector;
21543
+ const rendererFactory = rootViewInjector.get(RendererFactory2, null);
21544
+ if (rendererFactory === null) {
21545
+ throw new RuntimeError(407 /* RuntimeErrorCode.RENDERER_NOT_FOUND */, ngDevMode &&
21546
+ 'Angular was not able to inject a renderer (RendererFactory2). ' +
21547
+ 'Likely this is due to a broken DI hierarchy. ' +
21548
+ 'Make sure that any injector used to create this component has a correct parent.');
21549
+ }
21550
+ const sanitizer = rootViewInjector.get(Sanitizer, null);
21551
+ const hostRenderer = rendererFactory.createRenderer(null, this.componentDef);
21552
+ // Determine a tag name used for creating host elements when this component is created
21553
+ // dynamically. Default to 'div' if this component did not specify any tag name in its selector.
21554
+ const elementName = this.componentDef.selectors[0][0] || 'div';
21555
+ const hostRNode = rootSelectorOrNode ?
21556
+ locateHostElement(hostRenderer, rootSelectorOrNode, this.componentDef.encapsulation) :
21557
+ createElementNode(rendererFactory.createRenderer(null, this.componentDef), elementName, getNamespace(elementName));
21558
+ const rootFlags = this.componentDef.onPush ? 32 /* LViewFlags.Dirty */ | 256 /* LViewFlags.IsRoot */ :
21559
+ 16 /* LViewFlags.CheckAlways */ | 256 /* LViewFlags.IsRoot */;
21560
+ const rootContext = createRootContext();
21561
+ // Create the root view. Uses empty TView and ContentTemplate.
21562
+ const rootTView = createTView(0 /* TViewType.Root */, null, null, 1, 0, null, null, null, null, null);
21563
+ const rootLView = createLView(null, rootTView, rootContext, rootFlags, null, null, rendererFactory, hostRenderer, sanitizer, rootViewInjector, null);
21564
+ // rootView is the parent when bootstrapping
21565
+ // TODO(misko): it looks like we are entering view here but we don't really need to as
21566
+ // `renderView` does that. However as the code is written it is needed because
21567
+ // `createRootComponentView` and `createRootComponent` both read global state. Fixing those
21568
+ // issues would allow us to drop this.
21569
+ enterView(rootLView);
21570
+ let component;
21571
+ let tElementNode;
21572
+ try {
21573
+ const componentView = createRootComponentView(hostRNode, this.componentDef, rootLView, rendererFactory, hostRenderer);
21574
+ if (hostRNode) {
21575
+ if (rootSelectorOrNode) {
21576
+ setUpAttributes(hostRenderer, hostRNode, ['ng-version', VERSION.full]);
21577
+ }
21578
+ else {
21579
+ // If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
21580
+ // is not defined), also apply attributes and classes extracted from component selector.
21581
+ // Extract attributes and classes from the first selector only to match VE behavior.
21582
+ const { attrs, classes } = extractAttrsAndClassesFromSelector(this.componentDef.selectors[0]);
21583
+ if (attrs) {
21584
+ setUpAttributes(hostRenderer, hostRNode, attrs);
21585
+ }
21586
+ if (classes && classes.length > 0) {
21587
+ writeDirectClass(hostRenderer, hostRNode, classes.join(' '));
21588
+ }
21589
+ }
21590
+ }
21591
+ tElementNode = getTNode(rootTView, HEADER_OFFSET);
21592
+ if (projectableNodes !== undefined) {
21593
+ const projection = tElementNode.projection = [];
21594
+ for (let i = 0; i < this.ngContentSelectors.length; i++) {
21595
+ const nodesforSlot = projectableNodes[i];
21596
+ // Projectable nodes can be passed as array of arrays or an array of iterables (ngUpgrade
21597
+ // case). Here we do normalize passed data structure to be an array of arrays to avoid
21598
+ // complex checks down the line.
21599
+ // We also normalize the length of the passed in projectable nodes (to match the number of
21600
+ // <ng-container> slots defined by a component).
21601
+ projection.push(nodesforSlot != null ? Array.from(nodesforSlot) : null);
21602
+ }
21603
+ }
21604
+ // TODO: should LifecycleHooksFeature and other host features be generated by the compiler and
21605
+ // executed here?
21606
+ // Angular 5 reference: https://stackblitz.com/edit/lifecycle-hooks-vcref
21607
+ component = createRootComponent(componentView, this.componentDef, rootLView, rootContext, [LifecycleHooksFeature]);
21608
+ renderView(rootTView, rootLView, null);
21609
+ }
21610
+ finally {
21611
+ leaveView();
21612
+ }
21613
+ return new ComponentRef(this.componentType, component, createElementRef(tElementNode, rootLView), rootLView, tElementNode);
21614
+ }
21615
+ }
21616
+ const componentFactoryResolver = new ComponentFactoryResolver();
21617
+ /**
21618
+ * Creates a ComponentFactoryResolver and stores it on the injector. Or, if the
21619
+ * ComponentFactoryResolver
21620
+ * already exists, retrieves the existing ComponentFactoryResolver.
21621
+ *
21622
+ * @returns The ComponentFactoryResolver instance to use
21623
+ */
21624
+ function injectComponentFactoryResolver() {
21625
+ return componentFactoryResolver;
21626
+ }
21627
+ /**
21628
+ * Represents an instance of a Component created via a {@link ComponentFactory}.
21629
+ *
21630
+ * `ComponentRef` provides access to the Component Instance as well other objects related to this
21631
+ * Component Instance and allows you to destroy the Component Instance via the {@link #destroy}
21632
+ * method.
21633
+ *
21634
+ */
21635
+ class ComponentRef extends ComponentRef$1 {
21636
+ constructor(componentType, instance, location, _rootLView, _tNode) {
21637
+ super();
21638
+ this.location = location;
21639
+ this._rootLView = _rootLView;
21640
+ this._tNode = _tNode;
21641
+ this.instance = instance;
21642
+ this.hostView = this.changeDetectorRef = new RootViewRef(_rootLView);
21643
+ this.componentType = componentType;
21644
+ }
21645
+ get injector() {
21646
+ return new NodeInjector(this._tNode, this._rootLView);
21647
+ }
21648
+ destroy() {
21649
+ this.hostView.destroy();
21650
+ }
21651
+ onDestroy(callback) {
21652
+ this.hostView.onDestroy(callback);
21653
+ }
21654
+ }
21655
+
21656
+ /**
21657
+ * @license
21658
+ * Copyright Google LLC All Rights Reserved.
21659
+ *
21660
+ * Use of this source code is governed by an MIT-style license that can be
21661
+ * found in the LICENSE file at https://angular.io/license
21662
+ */
21663
+ /**
21664
+ * Returns a new NgModuleRef instance based on the NgModule class and parent injector provided.
21665
+ * @param ngModule NgModule class.
21666
+ * @param parentInjector Optional injector instance to use as a parent for the module injector. If
21667
+ * not provided, `NullInjector` will be used instead.
21668
+ * @publicApi
21669
+ */
21670
+ function createNgModuleRef(ngModule, parentInjector) {
21671
+ return new NgModuleRef(ngModule, parentInjector !== null && parentInjector !== void 0 ? parentInjector : null);
21672
+ }
21673
+ class NgModuleRef extends NgModuleRef$1 {
21674
+ constructor(ngModuleType, _parent) {
21675
+ super();
21676
+ this._parent = _parent;
21677
+ // tslint:disable-next-line:require-internal-with-underscore
21678
+ this._bootstrapComponents = [];
21679
+ this.injector = this;
21680
+ this.destroyCbs = [];
21681
+ // When bootstrapping a module we have a dependency graph that looks like this:
21682
+ // ApplicationRef -> ComponentFactoryResolver -> NgModuleRef. The problem is that if the
21683
+ // module being resolved tries to inject the ComponentFactoryResolver, it'll create a
21684
+ // circular dependency which will result in a runtime error, because the injector doesn't
21685
+ // exist yet. We work around the issue by creating the ComponentFactoryResolver ourselves
21686
+ // and providing it, rather than letting the injector resolve it.
21687
+ this.componentFactoryResolver = new ComponentFactoryResolver(this);
21688
+ const ngModuleDef = getNgModuleDef(ngModuleType);
21689
+ ngDevMode &&
21690
+ assertDefined(ngModuleDef, `NgModule '${stringify(ngModuleType)}' is not a subtype of 'NgModuleType'.`);
21691
+ this._bootstrapComponents = maybeUnwrapFn(ngModuleDef.bootstrap);
21692
+ this._r3Injector = createInjectorWithoutInjectorInstances(ngModuleType, _parent, [
21693
+ { provide: NgModuleRef$1, useValue: this }, {
21694
+ provide: ComponentFactoryResolver$1,
21695
+ useValue: this.componentFactoryResolver
21696
+ }
21697
+ ], stringify(ngModuleType), new Set(['environment']));
21698
+ // We need to resolve the injector types separately from the injector creation, because
21699
+ // the module might be trying to use this ref in its constructor for DI which will cause a
21700
+ // circular error that will eventually error out, because the injector isn't created yet.
21701
+ this._r3Injector.resolveInjectorInitializers();
21702
+ this.instance = this.get(ngModuleType);
21703
+ }
21704
+ get(token, notFoundValue = Injector.THROW_IF_NOT_FOUND, injectFlags = InjectFlags.Default) {
21705
+ if (token === Injector || token === NgModuleRef$1 || token === INJECTOR) {
21706
+ return this;
21707
+ }
21708
+ return this._r3Injector.get(token, notFoundValue, injectFlags);
21709
+ }
21710
+ destroy() {
21711
+ ngDevMode && assertDefined(this.destroyCbs, 'NgModule already destroyed');
21712
+ const injector = this._r3Injector;
21713
+ !injector.destroyed && injector.destroy();
21714
+ this.destroyCbs.forEach(fn => fn());
21715
+ this.destroyCbs = null;
21716
+ }
21717
+ onDestroy(callback) {
21718
+ ngDevMode && assertDefined(this.destroyCbs, 'NgModule already destroyed');
21719
+ this.destroyCbs.push(callback);
21720
+ }
21721
+ }
21722
+ class NgModuleFactory extends NgModuleFactory$1 {
21723
+ constructor(moduleType) {
21724
+ super();
21725
+ this.moduleType = moduleType;
21726
+ }
21727
+ create(parentInjector) {
21728
+ return new NgModuleRef(this.moduleType, parentInjector);
21729
+ }
21730
+ }
21731
+ class EnvironmentNgModuleRefAdapter extends NgModuleRef$1 {
21732
+ constructor(providers, parent, source) {
21733
+ super();
21734
+ this.componentFactoryResolver = new ComponentFactoryResolver(this);
21735
+ this.instance = null;
21736
+ const injector = new R3Injector([
21737
+ ...providers,
21738
+ { provide: NgModuleRef$1, useValue: this },
21739
+ { provide: ComponentFactoryResolver$1, useValue: this.componentFactoryResolver },
21740
+ ], parent || getNullInjector(), source, new Set(['environment']));
21741
+ this.injector = injector;
21742
+ injector.resolveInjectorInitializers();
21743
+ }
21744
+ destroy() {
21745
+ this.injector.destroy();
21746
+ }
21747
+ onDestroy(callback) {
21748
+ this.injector.onDestroy(callback);
21749
+ }
21750
+ }
21751
+ /**
21752
+ * Create a new environment injector.
21753
+ *
21754
+ * @publicApi
21755
+ * @developerPreview
21756
+ */
21757
+ function createEnvironmentInjector(providers, parent = null, debugName = null) {
21758
+ const adapter = new EnvironmentNgModuleRefAdapter(providers, parent, debugName);
21759
+ return adapter.injector;
21760
+ }
21761
+
21762
+ /**
21763
+ * @license
21764
+ * Copyright Google LLC All Rights Reserved.
21765
+ *
21766
+ * Use of this source code is governed by an MIT-style license that can be
21767
+ * found in the LICENSE file at https://angular.io/license
21768
+ */
21769
+ /**
21770
+ * A service used by the framework to create instances of standalone injectors. Those injectors are
21771
+ * created on demand in case of dynamic component instantiation and contain ambient providers
21772
+ * collected from the imports graph rooted at a given standalone component.
21773
+ */
21774
+ class StandaloneService {
21775
+ constructor(_injector) {
21776
+ this._injector = _injector;
21777
+ this.cachedInjectors = new Map();
21778
+ }
21779
+ getOrCreateStandaloneInjector(componentDef) {
21780
+ if (!componentDef.standalone) {
21781
+ return null;
21782
+ }
21783
+ if (!this.cachedInjectors.has(componentDef.id)) {
21784
+ const providers = internalImportProvidersFrom(false, componentDef.type);
21785
+ const standaloneInjector = providers.length > 0 ?
21786
+ createEnvironmentInjector([providers], this._injector, `Standalone[${componentDef.type.name}]`) :
21787
+ null;
21788
+ this.cachedInjectors.set(componentDef.id, standaloneInjector);
21789
+ }
21790
+ return this.cachedInjectors.get(componentDef.id);
21791
+ }
21792
+ ngOnDestroy() {
21793
+ try {
21794
+ for (const injector of this.cachedInjectors.values()) {
21795
+ if (injector !== null) {
21796
+ injector.destroy();
21797
+ }
21798
+ }
21799
+ }
21800
+ finally {
21801
+ this.cachedInjectors.clear();
21802
+ }
21803
+ }
21804
+ }
21805
+ /** @nocollapse */
21806
+ StandaloneService.ɵprov = ɵɵdefineInjectable({
21807
+ token: StandaloneService,
21808
+ providedIn: 'environment',
21809
+ factory: () => new StandaloneService(ɵɵinject(EnvironmentInjector)),
21810
+ });
21811
+ /**
21812
+ * A feature that acts as a setup code for the {@link StandaloneService}.
21813
+ *
21814
+ * The most important responsaibility of this feature is to expose the "getStandaloneInjector"
21815
+ * function (an entry points to a standalone injector creation) on a component definition object. We
21816
+ * go through the features infrastructure to make sure that the standalone injector creation logic
21817
+ * is tree-shakable and not included in applications that don't use standalone components.
21818
+ *
21819
+ * @codeGenApi
21820
+ */
21821
+ function ɵɵStandaloneFeature(definition) {
21822
+ definition.getStandaloneInjector = (parentInjector) => {
21823
+ return parentInjector.get(StandaloneService).getOrCreateStandaloneInjector(definition);
21824
+ };
21825
+ }
21826
+
21827
+ /**
21828
+ * @license
21829
+ * Copyright Google LLC All Rights Reserved.
21830
+ *
21831
+ * Use of this source code is governed by an MIT-style license that can be
21832
+ * found in the LICENSE file at https://angular.io/license
21833
+ */
21834
+ /**
21835
+ * Retrieves the component instance associated with a given DOM element.
21836
+ *
21837
+ * @usageNotes
21838
+ * Given the following DOM structure:
21839
+ *
21840
+ * ```html
21841
+ * <app-root>
21842
+ * <div>
21843
+ * <child-comp></child-comp>
21844
+ * </div>
21845
+ * </app-root>
21846
+ * ```
21847
+ *
21848
+ * Calling `getComponent` on `<child-comp>` will return the instance of `ChildComponent`
21849
+ * associated with this DOM element.
21850
+ *
21851
+ * Calling the function on `<app-root>` will return the `MyApp` instance.
21852
+ *
21853
+ *
21854
+ * @param element DOM element from which the component should be retrieved.
21855
+ * @returns Component instance associated with the element or `null` if there
21856
+ * is no component associated with it.
21857
+ *
21858
+ * @publicApi
21859
+ * @globalApi ng
21860
+ */
21861
+ function getComponent(element) {
21862
+ ngDevMode && assertDomElement(element);
21863
+ const context = getLContext(element);
21864
+ if (context === null)
21865
+ return null;
21866
+ if (context.component === undefined) {
21867
+ const lView = context.lView;
21868
+ if (lView === null) {
21869
+ return null;
22181
21870
  }
21871
+ context.component = getComponentAtNodeIndex(context.nodeIndex, lView);
22182
21872
  }
22183
- return array;
21873
+ return context.component;
22184
21874
  }
22185
- function getNamespace(elementName) {
22186
- const name = elementName.toLowerCase();
22187
- return name === 'svg' ? SVG_NAMESPACE : (name === 'math' ? MATH_ML_NAMESPACE : null);
21875
+ /**
21876
+ * If inside an embedded view (e.g. `*ngIf` or `*ngFor`), retrieves the context of the embedded
21877
+ * view that the element is part of. Otherwise retrieves the instance of the component whose view
21878
+ * owns the element (in this case, the result is the same as calling `getOwningComponent`).
21879
+ *
21880
+ * @param element Element for which to get the surrounding component instance.
21881
+ * @returns Instance of the component that is around the element or null if the element isn't
21882
+ * inside any component.
21883
+ *
21884
+ * @publicApi
21885
+ * @globalApi ng
21886
+ */
21887
+ function getContext(element) {
21888
+ assertDomElement(element);
21889
+ const context = getLContext(element);
21890
+ const lView = context ? context.lView : null;
21891
+ return lView === null ? null : lView[CONTEXT];
22188
21892
  }
22189
21893
  /**
22190
- * Injector that looks up a value using a specific injector, before falling back to the module
22191
- * injector. Used primarily when creating components or embedded views dynamically.
21894
+ * Retrieves the component instance whose view contains the DOM element.
21895
+ *
21896
+ * For example, if `<child-comp>` is used in the template of `<app-comp>`
21897
+ * (i.e. a `ViewChild` of `<app-comp>`), calling `getOwningComponent` on `<child-comp>`
21898
+ * would return `<app-comp>`.
21899
+ *
21900
+ * @param elementOrDir DOM element, component or directive instance
21901
+ * for which to retrieve the root components.
21902
+ * @returns Component instance whose view owns the DOM element or null if the element is not
21903
+ * part of a component view.
21904
+ *
21905
+ * @publicApi
21906
+ * @globalApi ng
22192
21907
  */
22193
- class ChainedInjector {
22194
- constructor(injector, parentInjector) {
22195
- this.injector = injector;
22196
- this.parentInjector = parentInjector;
22197
- }
22198
- get(token, notFoundValue, flags) {
22199
- const value = this.injector.get(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, flags);
22200
- if (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR ||
22201
- notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) {
22202
- // Return the value from the root element injector when
22203
- // - it provides it
22204
- // (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)
22205
- // - the module injector should not be checked
22206
- // (notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)
22207
- return value;
22208
- }
22209
- return this.parentInjector.get(token, notFoundValue, flags);
21908
+ function getOwningComponent(elementOrDir) {
21909
+ const context = getLContext(elementOrDir);
21910
+ let lView = context ? context.lView : null;
21911
+ if (lView === null)
21912
+ return null;
21913
+ let parent;
21914
+ while (lView[TVIEW].type === 2 /* TViewType.Embedded */ && (parent = getLViewParent(lView))) {
21915
+ lView = parent;
22210
21916
  }
21917
+ return lView[FLAGS] & 256 /* LViewFlags.IsRoot */ ? null : lView[CONTEXT];
22211
21918
  }
22212
21919
  /**
22213
- * Render3 implementation of {@link viewEngine_ComponentFactory}.
21920
+ * Retrieves all root components associated with a DOM element, directive or component instance.
21921
+ * Root components are those which have been bootstrapped by Angular.
21922
+ *
21923
+ * @param elementOrDir DOM element, component or directive instance
21924
+ * for which to retrieve the root components.
21925
+ * @returns Root components associated with the target object.
21926
+ *
21927
+ * @publicApi
21928
+ * @globalApi ng
22214
21929
  */
22215
- class ComponentFactory extends ComponentFactory$1 {
22216
- /**
22217
- * @param componentDef The component definition.
22218
- * @param ngModule The NgModuleRef to which the factory is bound.
22219
- */
22220
- constructor(componentDef, ngModule) {
22221
- super();
22222
- this.componentDef = componentDef;
22223
- this.ngModule = ngModule;
22224
- this.componentType = componentDef.type;
22225
- this.selector = stringifyCSSSelectorList(componentDef.selectors);
22226
- this.ngContentSelectors =
22227
- componentDef.ngContentSelectors ? componentDef.ngContentSelectors : [];
22228
- this.isBoundToModule = !!ngModule;
22229
- }
22230
- get inputs() {
22231
- return toRefArray(this.componentDef.inputs);
22232
- }
22233
- get outputs() {
22234
- return toRefArray(this.componentDef.outputs);
22235
- }
22236
- create(injector, projectableNodes, rootSelectorOrNode, environmentInjector) {
22237
- environmentInjector = environmentInjector || this.ngModule;
22238
- let realEnvironmentInjector = environmentInjector instanceof EnvironmentInjector ?
22239
- environmentInjector :
22240
- environmentInjector === null || environmentInjector === void 0 ? void 0 : environmentInjector.injector;
22241
- if (realEnvironmentInjector && this.componentDef.getStandaloneInjector !== null) {
22242
- realEnvironmentInjector = this.componentDef.getStandaloneInjector(realEnvironmentInjector) ||
22243
- realEnvironmentInjector;
22244
- }
22245
- const rootViewInjector = realEnvironmentInjector ? new ChainedInjector(injector, realEnvironmentInjector) : injector;
22246
- const rendererFactory = rootViewInjector.get(RendererFactory2, domRendererFactory3);
22247
- const sanitizer = rootViewInjector.get(Sanitizer, null);
22248
- const hostRenderer = rendererFactory.createRenderer(null, this.componentDef);
22249
- // Determine a tag name used for creating host elements when this component is created
22250
- // dynamically. Default to 'div' if this component did not specify any tag name in its selector.
22251
- const elementName = this.componentDef.selectors[0][0] || 'div';
22252
- const hostRNode = rootSelectorOrNode ?
22253
- locateHostElement(hostRenderer, rootSelectorOrNode, this.componentDef.encapsulation) :
22254
- createElementNode(rendererFactory.createRenderer(null, this.componentDef), elementName, getNamespace(elementName));
22255
- const rootFlags = this.componentDef.onPush ? 32 /* LViewFlags.Dirty */ | 256 /* LViewFlags.IsRoot */ :
22256
- 16 /* LViewFlags.CheckAlways */ | 256 /* LViewFlags.IsRoot */;
22257
- const rootContext = createRootContext();
22258
- // Create the root view. Uses empty TView and ContentTemplate.
22259
- const rootTView = createTView(0 /* TViewType.Root */, null, null, 1, 0, null, null, null, null, null);
22260
- const rootLView = createLView(null, rootTView, rootContext, rootFlags, null, null, rendererFactory, hostRenderer, sanitizer, rootViewInjector, null);
22261
- // rootView is the parent when bootstrapping
22262
- // TODO(misko): it looks like we are entering view here but we don't really need to as
22263
- // `renderView` does that. However as the code is written it is needed because
22264
- // `createRootComponentView` and `createRootComponent` both read global state. Fixing those
22265
- // issues would allow us to drop this.
22266
- enterView(rootLView);
22267
- let component;
22268
- let tElementNode;
22269
- try {
22270
- const componentView = createRootComponentView(hostRNode, this.componentDef, rootLView, rendererFactory, hostRenderer);
22271
- if (hostRNode) {
22272
- if (rootSelectorOrNode) {
22273
- setUpAttributes(hostRenderer, hostRNode, ['ng-version', VERSION.full]);
22274
- }
22275
- else {
22276
- // If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
22277
- // is not defined), also apply attributes and classes extracted from component selector.
22278
- // Extract attributes and classes from the first selector only to match VE behavior.
22279
- const { attrs, classes } = extractAttrsAndClassesFromSelector(this.componentDef.selectors[0]);
22280
- if (attrs) {
22281
- setUpAttributes(hostRenderer, hostRNode, attrs);
22282
- }
22283
- if (classes && classes.length > 0) {
22284
- writeDirectClass(hostRenderer, hostRNode, classes.join(' '));
22285
- }
22286
- }
22287
- }
22288
- tElementNode = getTNode(rootTView, HEADER_OFFSET);
22289
- if (projectableNodes !== undefined) {
22290
- const projection = tElementNode.projection = [];
22291
- for (let i = 0; i < this.ngContentSelectors.length; i++) {
22292
- const nodesforSlot = projectableNodes[i];
22293
- // Projectable nodes can be passed as array of arrays or an array of iterables (ngUpgrade
22294
- // case). Here we do normalize passed data structure to be an array of arrays to avoid
22295
- // complex checks down the line.
22296
- // We also normalize the length of the passed in projectable nodes (to match the number of
22297
- // <ng-container> slots defined by a component).
22298
- projection.push(nodesforSlot != null ? Array.from(nodesforSlot) : null);
22299
- }
22300
- }
22301
- // TODO: should LifecycleHooksFeature and other host features be generated by the compiler and
22302
- // executed here?
22303
- // Angular 5 reference: https://stackblitz.com/edit/lifecycle-hooks-vcref
22304
- component = createRootComponent(componentView, this.componentDef, rootLView, rootContext, [LifecycleHooksFeature]);
22305
- renderView(rootTView, rootLView, null);
22306
- }
22307
- finally {
22308
- leaveView();
21930
+ function getRootComponents(elementOrDir) {
21931
+ const lView = readPatchedLView(elementOrDir);
21932
+ return lView !== null ? [...getRootContext(lView).components] : [];
21933
+ }
21934
+ /**
21935
+ * Retrieves an `Injector` associated with an element, component or directive instance.
21936
+ *
21937
+ * @param elementOrDir DOM element, component or directive instance for which to
21938
+ * retrieve the injector.
21939
+ * @returns Injector associated with the element, component or directive instance.
21940
+ *
21941
+ * @publicApi
21942
+ * @globalApi ng
21943
+ */
21944
+ function getInjector(elementOrDir) {
21945
+ const context = getLContext(elementOrDir);
21946
+ const lView = context ? context.lView : null;
21947
+ if (lView === null)
21948
+ return Injector.NULL;
21949
+ const tNode = lView[TVIEW].data[context.nodeIndex];
21950
+ return new NodeInjector(tNode, lView);
21951
+ }
21952
+ /**
21953
+ * Retrieve a set of injection tokens at a given DOM node.
21954
+ *
21955
+ * @param element Element for which the injection tokens should be retrieved.
21956
+ */
21957
+ function getInjectionTokens(element) {
21958
+ const context = getLContext(element);
21959
+ const lView = context ? context.lView : null;
21960
+ if (lView === null)
21961
+ return [];
21962
+ const tView = lView[TVIEW];
21963
+ const tNode = tView.data[context.nodeIndex];
21964
+ const providerTokens = [];
21965
+ const startIndex = tNode.providerIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;
21966
+ const endIndex = tNode.directiveEnd;
21967
+ for (let i = startIndex; i < endIndex; i++) {
21968
+ let value = tView.data[i];
21969
+ if (isDirectiveDefHack(value)) {
21970
+ // The fact that we sometimes store Type and sometimes DirectiveDef in this location is a
21971
+ // design flaw. We should always store same type so that we can be monomorphic. The issue
21972
+ // is that for Components/Directives we store the def instead the type. The correct behavior
21973
+ // is that we should always be storing injectable type in this location.
21974
+ value = value.type;
22309
21975
  }
22310
- return new ComponentRef(this.componentType, component, createElementRef(tElementNode, rootLView), rootLView, tElementNode);
21976
+ providerTokens.push(value);
22311
21977
  }
21978
+ return providerTokens;
22312
21979
  }
22313
- const componentFactoryResolver = new ComponentFactoryResolver();
22314
21980
  /**
22315
- * Creates a ComponentFactoryResolver and stores it on the injector. Or, if the
22316
- * ComponentFactoryResolver
22317
- * already exists, retrieves the existing ComponentFactoryResolver.
21981
+ * Retrieves directive instances associated with a given DOM node. Does not include
21982
+ * component instances.
22318
21983
  *
22319
- * @returns The ComponentFactoryResolver instance to use
21984
+ * @usageNotes
21985
+ * Given the following DOM structure:
21986
+ *
21987
+ * ```html
21988
+ * <app-root>
21989
+ * <button my-button></button>
21990
+ * <my-comp></my-comp>
21991
+ * </app-root>
21992
+ * ```
21993
+ *
21994
+ * Calling `getDirectives` on `<button>` will return an array with an instance of the `MyButton`
21995
+ * directive that is associated with the DOM node.
21996
+ *
21997
+ * Calling `getDirectives` on `<my-comp>` will return an empty array.
21998
+ *
21999
+ * @param node DOM node for which to get the directives.
22000
+ * @returns Array of directives associated with the node.
22001
+ *
22002
+ * @publicApi
22003
+ * @globalApi ng
22320
22004
  */
22321
- function injectComponentFactoryResolver() {
22322
- return componentFactoryResolver;
22005
+ function getDirectives(node) {
22006
+ // Skip text nodes because we can't have directives associated with them.
22007
+ if (node instanceof Text) {
22008
+ return [];
22009
+ }
22010
+ const context = getLContext(node);
22011
+ const lView = context ? context.lView : null;
22012
+ if (lView === null) {
22013
+ return [];
22014
+ }
22015
+ const tView = lView[TVIEW];
22016
+ const nodeIndex = context.nodeIndex;
22017
+ if (!(tView === null || tView === void 0 ? void 0 : tView.data[nodeIndex])) {
22018
+ return [];
22019
+ }
22020
+ if (context.directives === undefined) {
22021
+ context.directives = getDirectivesAtNodeIndex(nodeIndex, lView, false);
22022
+ }
22023
+ // The `directives` in this case are a named array called `LComponentView`. Clone the
22024
+ // result so we don't expose an internal data structure in the user's console.
22025
+ return context.directives === null ? [] : [...context.directives];
22323
22026
  }
22324
22027
  /**
22325
- * Represents an instance of a Component created via a {@link ComponentFactory}.
22028
+ * Returns the debug (partial) metadata for a particular directive or component instance.
22029
+ * The function accepts an instance of a directive or component and returns the corresponding
22030
+ * metadata.
22326
22031
  *
22327
- * `ComponentRef` provides access to the Component Instance as well other objects related to this
22328
- * Component Instance and allows you to destroy the Component Instance via the {@link #destroy}
22329
- * method.
22032
+ * @param directiveOrComponentInstance Instance of a directive or component
22033
+ * @returns metadata of the passed directive or component
22330
22034
  *
22035
+ * @publicApi
22036
+ * @globalApi ng
22331
22037
  */
22332
- class ComponentRef extends ComponentRef$1 {
22333
- constructor(componentType, instance, location, _rootLView, _tNode) {
22334
- super();
22335
- this.location = location;
22336
- this._rootLView = _rootLView;
22337
- this._tNode = _tNode;
22338
- this.instance = instance;
22339
- this.hostView = this.changeDetectorRef = new RootViewRef(_rootLView);
22340
- this.componentType = componentType;
22341
- }
22342
- get injector() {
22343
- return new NodeInjector(this._tNode, this._rootLView);
22038
+ function getDirectiveMetadata$1(directiveOrComponentInstance) {
22039
+ const { constructor } = directiveOrComponentInstance;
22040
+ if (!constructor) {
22041
+ throw new Error('Unable to find the instance constructor');
22344
22042
  }
22345
- destroy() {
22346
- this.hostView.destroy();
22043
+ // In case a component inherits from a directive, we may have component and directive metadata
22044
+ // To ensure we don't get the metadata of the directive, we want to call `getComponentDef` first.
22045
+ const componentDef = getComponentDef(constructor);
22046
+ if (componentDef) {
22047
+ return {
22048
+ inputs: componentDef.inputs,
22049
+ outputs: componentDef.outputs,
22050
+ encapsulation: componentDef.encapsulation,
22051
+ changeDetection: componentDef.onPush ? ChangeDetectionStrategy.OnPush :
22052
+ ChangeDetectionStrategy.Default
22053
+ };
22347
22054
  }
22348
- onDestroy(callback) {
22349
- this.hostView.onDestroy(callback);
22055
+ const directiveDef = getDirectiveDef(constructor);
22056
+ if (directiveDef) {
22057
+ return { inputs: directiveDef.inputs, outputs: directiveDef.outputs };
22350
22058
  }
22059
+ return null;
22351
22060
  }
22352
-
22353
22061
  /**
22354
- * @license
22355
- * Copyright Google LLC All Rights Reserved.
22062
+ * Retrieve map of local references.
22356
22063
  *
22357
- * Use of this source code is governed by an MIT-style license that can be
22358
- * found in the LICENSE file at https://angular.io/license
22064
+ * The references are retrieved as a map of local reference name to element or directive instance.
22065
+ *
22066
+ * @param target DOM element, component or directive instance for which to retrieve
22067
+ * the local references.
22359
22068
  */
22069
+ function getLocalRefs(target) {
22070
+ const context = getLContext(target);
22071
+ if (context === null)
22072
+ return {};
22073
+ if (context.localRefs === undefined) {
22074
+ const lView = context.lView;
22075
+ if (lView === null) {
22076
+ return {};
22077
+ }
22078
+ context.localRefs = discoverLocalRefs(lView, context.nodeIndex);
22079
+ }
22080
+ return context.localRefs || {};
22081
+ }
22360
22082
  /**
22361
- * Returns a new NgModuleRef instance based on the NgModule class and parent injector provided.
22362
- * @param ngModule NgModule class.
22363
- * @param parentInjector Optional injector instance to use as a parent for the module injector. If
22364
- * not provided, `NullInjector` will be used instead.
22083
+ * Retrieves the host element of a component or directive instance.
22084
+ * The host element is the DOM element that matched the selector of the directive.
22085
+ *
22086
+ * @param componentOrDirective Component or directive instance for which the host
22087
+ * element should be retrieved.
22088
+ * @returns Host element of the target.
22089
+ *
22365
22090
  * @publicApi
22091
+ * @globalApi ng
22366
22092
  */
22367
- function createNgModuleRef(ngModule, parentInjector) {
22368
- return new NgModuleRef(ngModule, parentInjector !== null && parentInjector !== void 0 ? parentInjector : null);
22093
+ function getHostElement(componentOrDirective) {
22094
+ return getLContext(componentOrDirective).native;
22369
22095
  }
22370
- class NgModuleRef extends NgModuleRef$1 {
22371
- constructor(ngModuleType, _parent) {
22372
- super();
22373
- this._parent = _parent;
22374
- // tslint:disable-next-line:require-internal-with-underscore
22375
- this._bootstrapComponents = [];
22376
- this.injector = this;
22377
- this.destroyCbs = [];
22378
- // When bootstrapping a module we have a dependency graph that looks like this:
22379
- // ApplicationRef -> ComponentFactoryResolver -> NgModuleRef. The problem is that if the
22380
- // module being resolved tries to inject the ComponentFactoryResolver, it'll create a
22381
- // circular dependency which will result in a runtime error, because the injector doesn't
22382
- // exist yet. We work around the issue by creating the ComponentFactoryResolver ourselves
22383
- // and providing it, rather than letting the injector resolve it.
22384
- this.componentFactoryResolver = new ComponentFactoryResolver(this);
22385
- const ngModuleDef = getNgModuleDef(ngModuleType);
22386
- ngDevMode &&
22387
- assertDefined(ngModuleDef, `NgModule '${stringify(ngModuleType)}' is not a subtype of 'NgModuleType'.`);
22388
- this._bootstrapComponents = maybeUnwrapFn(ngModuleDef.bootstrap);
22389
- this._r3Injector = createInjectorWithoutInjectorInstances(ngModuleType, _parent, [
22390
- { provide: NgModuleRef$1, useValue: this }, {
22391
- provide: ComponentFactoryResolver$1,
22392
- useValue: this.componentFactoryResolver
22096
+ /**
22097
+ * Retrieves the rendered text for a given component.
22098
+ *
22099
+ * This function retrieves the host element of a component and
22100
+ * and then returns the `textContent` for that element. This implies
22101
+ * that the text returned will include re-projected content of
22102
+ * the component as well.
22103
+ *
22104
+ * @param component The component to return the content text for.
22105
+ */
22106
+ function getRenderedText(component) {
22107
+ const hostElement = getHostElement(component);
22108
+ return hostElement.textContent || '';
22109
+ }
22110
+ /**
22111
+ * Retrieves a list of event listeners associated with a DOM element. The list does include host
22112
+ * listeners, but it does not include event listeners defined outside of the Angular context
22113
+ * (e.g. through `addEventListener`).
22114
+ *
22115
+ * @usageNotes
22116
+ * Given the following DOM structure:
22117
+ *
22118
+ * ```html
22119
+ * <app-root>
22120
+ * <div (click)="doSomething()"></div>
22121
+ * </app-root>
22122
+ * ```
22123
+ *
22124
+ * Calling `getListeners` on `<div>` will return an object that looks as follows:
22125
+ *
22126
+ * ```ts
22127
+ * {
22128
+ * name: 'click',
22129
+ * element: <div>,
22130
+ * callback: () => doSomething(),
22131
+ * useCapture: false
22132
+ * }
22133
+ * ```
22134
+ *
22135
+ * @param element Element for which the DOM listeners should be retrieved.
22136
+ * @returns Array of event listeners on the DOM element.
22137
+ *
22138
+ * @publicApi
22139
+ * @globalApi ng
22140
+ */
22141
+ function getListeners(element) {
22142
+ ngDevMode && assertDomElement(element);
22143
+ const lContext = getLContext(element);
22144
+ const lView = lContext === null ? null : lContext.lView;
22145
+ if (lView === null)
22146
+ return [];
22147
+ const tView = lView[TVIEW];
22148
+ const lCleanup = lView[CLEANUP];
22149
+ const tCleanup = tView.cleanup;
22150
+ const listeners = [];
22151
+ if (tCleanup && lCleanup) {
22152
+ for (let i = 0; i < tCleanup.length;) {
22153
+ const firstParam = tCleanup[i++];
22154
+ const secondParam = tCleanup[i++];
22155
+ if (typeof firstParam === 'string') {
22156
+ const name = firstParam;
22157
+ const listenerElement = unwrapRNode(lView[secondParam]);
22158
+ const callback = lCleanup[tCleanup[i++]];
22159
+ const useCaptureOrIndx = tCleanup[i++];
22160
+ // if useCaptureOrIndx is boolean then report it as is.
22161
+ // if useCaptureOrIndx is positive number then it in unsubscribe method
22162
+ // if useCaptureOrIndx is negative number then it is a Subscription
22163
+ const type = (typeof useCaptureOrIndx === 'boolean' || useCaptureOrIndx >= 0) ? 'dom' : 'output';
22164
+ const useCapture = typeof useCaptureOrIndx === 'boolean' ? useCaptureOrIndx : false;
22165
+ if (element == listenerElement) {
22166
+ listeners.push({ element, name, callback, useCapture, type });
22167
+ }
22393
22168
  }
22394
- ], stringify(ngModuleType), new Set(['environment']));
22395
- // We need to resolve the injector types separately from the injector creation, because
22396
- // the module might be trying to use this ref in its constructor for DI which will cause a
22397
- // circular error that will eventually error out, because the injector isn't created yet.
22398
- this._r3Injector.resolveInjectorInitializers();
22399
- this.instance = this.get(ngModuleType);
22400
- }
22401
- get(token, notFoundValue = Injector.THROW_IF_NOT_FOUND, injectFlags = InjectFlags.Default) {
22402
- if (token === Injector || token === NgModuleRef$1 || token === INJECTOR) {
22403
- return this;
22404
22169
  }
22405
- return this._r3Injector.get(token, notFoundValue, injectFlags);
22406
- }
22407
- destroy() {
22408
- ngDevMode && assertDefined(this.destroyCbs, 'NgModule already destroyed');
22409
- const injector = this._r3Injector;
22410
- !injector.destroyed && injector.destroy();
22411
- this.destroyCbs.forEach(fn => fn());
22412
- this.destroyCbs = null;
22413
- }
22414
- onDestroy(callback) {
22415
- ngDevMode && assertDefined(this.destroyCbs, 'NgModule already destroyed');
22416
- this.destroyCbs.push(callback);
22417
- }
22418
- }
22419
- class NgModuleFactory extends NgModuleFactory$1 {
22420
- constructor(moduleType) {
22421
- super();
22422
- this.moduleType = moduleType;
22423
- }
22424
- create(parentInjector) {
22425
- return new NgModuleRef(this.moduleType, parentInjector);
22426
22170
  }
22171
+ listeners.sort(sortListeners);
22172
+ return listeners;
22427
22173
  }
22428
- class EnvironmentNgModuleRefAdapter extends NgModuleRef$1 {
22429
- constructor(providers, parent, source) {
22430
- super();
22431
- this.componentFactoryResolver = new ComponentFactoryResolver(this);
22432
- this.instance = null;
22433
- const injector = new R3Injector([
22434
- ...providers,
22435
- { provide: NgModuleRef$1, useValue: this },
22436
- { provide: ComponentFactoryResolver$1, useValue: this.componentFactoryResolver },
22437
- ], parent || getNullInjector(), source, new Set(['environment']));
22438
- this.injector = injector;
22439
- injector.resolveInjectorInitializers();
22440
- }
22441
- destroy() {
22442
- this.injector.destroy();
22443
- }
22444
- onDestroy(callback) {
22445
- this.injector.onDestroy(callback);
22446
- }
22174
+ function sortListeners(a, b) {
22175
+ if (a.name == b.name)
22176
+ return 0;
22177
+ return a.name < b.name ? -1 : 1;
22447
22178
  }
22448
22179
  /**
22449
- * Create a new environment injector.
22180
+ * This function should not exist because it is megamorphic and only mostly correct.
22450
22181
  *
22451
- * @publicApi
22452
- * @developerPreview
22182
+ * See call site for more info.
22453
22183
  */
22454
- function createEnvironmentInjector(providers, parent = null, debugName = null) {
22455
- const adapter = new EnvironmentNgModuleRefAdapter(providers, parent, debugName);
22456
- return adapter.injector;
22184
+ function isDirectiveDefHack(obj) {
22185
+ return obj.type !== undefined && obj.template !== undefined && obj.declaredInputs !== undefined;
22457
22186
  }
22458
-
22459
22187
  /**
22460
- * @license
22461
- * Copyright Google LLC All Rights Reserved.
22188
+ * Returns the attached `DebugNode` instance for an element in the DOM.
22462
22189
  *
22463
- * Use of this source code is governed by an MIT-style license that can be
22464
- * found in the LICENSE file at https://angular.io/license
22465
- */
22466
- /**
22467
- * A service used by the framework to create instances of standalone injectors. Those injectors are
22468
- * created on demand in case of dynamic component instantiation and contain ambient providers
22469
- * collected from the imports graph rooted at a given standalone component.
22190
+ * @param element DOM element which is owned by an existing component's view.
22470
22191
  */
22471
- class StandaloneService {
22472
- constructor(_injector) {
22473
- this._injector = _injector;
22474
- this.cachedInjectors = new Map();
22192
+ function getDebugNode$1(element) {
22193
+ if (ngDevMode && !(element instanceof Node)) {
22194
+ throw new Error('Expecting instance of DOM Element');
22475
22195
  }
22476
- getOrCreateStandaloneInjector(componentDef) {
22477
- if (!componentDef.standalone) {
22478
- return null;
22479
- }
22480
- if (!this.cachedInjectors.has(componentDef.id)) {
22481
- const providers = internalImportProvidersFrom(false, componentDef.type);
22482
- const standaloneInjector = providers.length > 0 ?
22483
- createEnvironmentInjector([providers], this._injector, `Standalone[${componentDef.type.name}]`) :
22484
- null;
22485
- this.cachedInjectors.set(componentDef.id, standaloneInjector);
22486
- }
22487
- return this.cachedInjectors.get(componentDef.id);
22196
+ const lContext = getLContext(element);
22197
+ const lView = lContext ? lContext.lView : null;
22198
+ if (lView === null) {
22199
+ return null;
22488
22200
  }
22489
- ngOnDestroy() {
22490
- try {
22491
- for (const injector of this.cachedInjectors.values()) {
22492
- if (injector !== null) {
22493
- injector.destroy();
22494
- }
22495
- }
22496
- }
22497
- finally {
22498
- this.cachedInjectors.clear();
22499
- }
22201
+ const nodeIndex = lContext.nodeIndex;
22202
+ if (nodeIndex !== -1) {
22203
+ const valueInLView = lView[nodeIndex];
22204
+ // this means that value in the lView is a component with its own
22205
+ // data. In this situation the TNode is not accessed at the same spot.
22206
+ const tNode = isLView(valueInLView) ? valueInLView[T_HOST] : getTNode(lView[TVIEW], nodeIndex);
22207
+ ngDevMode &&
22208
+ assertEqual(tNode.index, nodeIndex, 'Expecting that TNode at index is same as index');
22209
+ return buildDebugNode(tNode, lView);
22500
22210
  }
22211
+ return null;
22501
22212
  }
22502
- /** @nocollapse */
22503
- StandaloneService.ɵprov = ɵɵdefineInjectable({
22504
- token: StandaloneService,
22505
- providedIn: 'environment',
22506
- factory: () => new StandaloneService(ɵɵinject(EnvironmentInjector)),
22507
- });
22508
22213
  /**
22509
- * A feature that acts as a setup code for the {@link StandaloneService}.
22214
+ * Retrieve the component `LView` from component/element.
22510
22215
  *
22511
- * The most important responsaibility of this feature is to expose the "getStandaloneInjector"
22512
- * function (an entry points to a standalone injector creation) on a component definition object. We
22513
- * go through the features infrastructure to make sure that the standalone injector creation logic
22514
- * is tree-shakable and not included in applications that don't use standalone components.
22216
+ * NOTE: `LView` is a private and should not be leaked outside.
22217
+ * Don't export this method to `ng.*` on window.
22515
22218
  *
22516
- * @codeGenApi
22219
+ * @param target DOM element or component instance for which to retrieve the LView.
22517
22220
  */
22518
- function ɵɵStandaloneFeature(definition) {
22519
- definition.getStandaloneInjector = (parentInjector) => {
22520
- return parentInjector.get(StandaloneService).getOrCreateStandaloneInjector(definition);
22521
- };
22221
+ function getComponentLView(target) {
22222
+ const lContext = getLContext(target);
22223
+ const nodeIndx = lContext.nodeIndex;
22224
+ const lView = lContext.lView;
22225
+ ngDevMode && assertLView(lView);
22226
+ const componentLView = lView[nodeIndx];
22227
+ ngDevMode && assertLView(componentLView);
22228
+ return componentLView;
22229
+ }
22230
+ /** Asserts that a value is a DOM Element. */
22231
+ function assertDomElement(value) {
22232
+ if (typeof Element !== 'undefined' && !(value instanceof Element)) {
22233
+ throw new Error('Expecting instance of DOM Element');
22234
+ }
22522
22235
  }
22523
22236
 
22524
22237
  /**
@@ -23739,7 +23452,7 @@ const unusedValueExportToPlacateAjd = 1;
23739
23452
  * Use of this source code is governed by an MIT-style license that can be
23740
23453
  * found in the LICENSE file at https://angular.io/license
23741
23454
  */
23742
- const unusedValueToPlacateAjd = unusedValueExportToPlacateAjd$1 + unusedValueExportToPlacateAjd$5 + unusedValueExportToPlacateAjd$4 + unusedValueExportToPlacateAjd;
23455
+ const unusedValueToPlacateAjd = unusedValueExportToPlacateAjd$1 + unusedValueExportToPlacateAjd$6 + unusedValueExportToPlacateAjd$5 + unusedValueExportToPlacateAjd;
23743
23456
  class LQuery_ {
23744
23457
  constructor(queryList) {
23745
23458
  this.queryList = queryList;
@@ -26161,6 +25874,99 @@ const COMPILER_OPTIONS = new InjectionToken('compilerOptions');
26161
25874
  class CompilerFactory {
26162
25875
  }
26163
25876
 
25877
+ /**
25878
+ * @license
25879
+ * Copyright Google LLC All Rights Reserved.
25880
+ *
25881
+ * Use of this source code is governed by an MIT-style license that can be
25882
+ * found in the LICENSE file at https://angular.io/license
25883
+ */
25884
+ /**
25885
+ * Marks a component for check (in case of OnPush components) and synchronously
25886
+ * performs change detection on the application this component belongs to.
25887
+ *
25888
+ * @param component Component to {@link ChangeDetectorRef#markForCheck mark for check}.
25889
+ *
25890
+ * @publicApi
25891
+ * @globalApi ng
25892
+ */
25893
+ function applyChanges(component) {
25894
+ markDirty(component);
25895
+ getRootComponents(component).forEach(rootComponent => detectChanges(rootComponent));
25896
+ }
25897
+
25898
+ /**
25899
+ * @license
25900
+ * Copyright Google LLC All Rights Reserved.
25901
+ *
25902
+ * Use of this source code is governed by an MIT-style license that can be
25903
+ * found in the LICENSE file at https://angular.io/license
25904
+ */
25905
+ /**
25906
+ * This file introduces series of globally accessible debug tools
25907
+ * to allow for the Angular debugging story to function.
25908
+ *
25909
+ * To see this in action run the following command:
25910
+ *
25911
+ * bazel run //packages/core/test/bundling/todo:devserver
25912
+ *
25913
+ * Then load `localhost:5432` and start using the console tools.
25914
+ */
25915
+ /**
25916
+ * This value reflects the property on the window where the dev
25917
+ * tools are patched (window.ng).
25918
+ * */
25919
+ const GLOBAL_PUBLISH_EXPANDO_KEY = 'ng';
25920
+ let _published = false;
25921
+ /**
25922
+ * Publishes a collection of default debug tools onto`window.ng`.
25923
+ *
25924
+ * These functions are available globally when Angular is in development
25925
+ * mode and are automatically stripped away from prod mode is on.
25926
+ */
25927
+ function publishDefaultGlobalUtils$1() {
25928
+ if (!_published) {
25929
+ _published = true;
25930
+ /**
25931
+ * Warning: this function is *INTERNAL* and should not be relied upon in application's code.
25932
+ * The contract of the function might be changed in any release and/or the function can be
25933
+ * removed completely.
25934
+ */
25935
+ publishGlobalUtil('ɵsetProfiler', setProfiler);
25936
+ publishGlobalUtil('getDirectiveMetadata', getDirectiveMetadata$1);
25937
+ publishGlobalUtil('getComponent', getComponent);
25938
+ publishGlobalUtil('getContext', getContext);
25939
+ publishGlobalUtil('getListeners', getListeners);
25940
+ publishGlobalUtil('getOwningComponent', getOwningComponent);
25941
+ publishGlobalUtil('getHostElement', getHostElement);
25942
+ publishGlobalUtil('getInjector', getInjector);
25943
+ publishGlobalUtil('getRootComponents', getRootComponents);
25944
+ publishGlobalUtil('getDirectives', getDirectives);
25945
+ publishGlobalUtil('applyChanges', applyChanges);
25946
+ }
25947
+ }
25948
+ /**
25949
+ * Publishes the given function to `window.ng` so that it can be
25950
+ * used from the browser console when an application is not in production.
25951
+ */
25952
+ function publishGlobalUtil(name, fn) {
25953
+ if (typeof COMPILED === 'undefined' || !COMPILED) {
25954
+ // Note: we can't export `ng` when using closure enhanced optimization as:
25955
+ // - closure declares globals itself for minified names, which sometimes clobber our `ng` global
25956
+ // - we can't declare a closure extern as the namespace `ng` is already used within Google
25957
+ // for typings for AngularJS (via `goog.provide('ng....')`).
25958
+ const w = _global;
25959
+ ngDevMode && assertDefined(fn, 'function not defined');
25960
+ if (w) {
25961
+ let container = w[GLOBAL_PUBLISH_EXPANDO_KEY];
25962
+ if (!container) {
25963
+ container = w[GLOBAL_PUBLISH_EXPANDO_KEY] = {};
25964
+ }
25965
+ container[name] = fn;
25966
+ }
25967
+ }
25968
+ }
25969
+
26164
25970
  /**
26165
25971
  * @license
26166
25972
  * Copyright Google LLC All Rights Reserved.
@@ -28077,7 +27883,7 @@ class DebugNode {
28077
27883
  get componentInstance() {
28078
27884
  const nativeElement = this.nativeNode;
28079
27885
  return nativeElement &&
28080
- (getComponent$1(nativeElement) || getOwningComponent(nativeElement));
27886
+ (getComponent(nativeElement) || getOwningComponent(nativeElement));
28081
27887
  }
28082
27888
  /**
28083
27889
  * An object that provides parent context for this element. Often an ancestor component instance
@@ -28088,7 +27894,7 @@ class DebugNode {
28088
27894
  * of heroes"`.
28089
27895
  */
28090
27896
  get context() {
28091
- return getComponent$1(this.nativeNode) || getContext(this.nativeNode);
27897
+ return getComponent(this.nativeNode) || getContext(this.nativeNode);
28092
27898
  }
28093
27899
  /**
28094
27900
  * The callbacks attached to the component's @Output properties and/or the element's event
@@ -28428,8 +28234,7 @@ function _queryNodeChildren(tNode, lView, predicate, matches, elementsOnly, root
28428
28234
  // Renderer2, however that's not the case in Ivy. This approach is being used because:
28429
28235
  // 1. Matching the ViewEngine behavior would mean potentially introducing a depedency
28430
28236
  // from `Renderer2` to Ivy which could bring Ivy code into ViewEngine.
28431
- // 2. We would have to make `Renderer3` "know" about debug nodes.
28432
- // 3. It allows us to capture nodes that were inserted directly via the DOM.
28237
+ // 2. It allows us to capture nodes that were inserted directly via the DOM.
28433
28238
  nativeNode && _queryNativeNodeDescendants(nativeNode, predicate, matches, elementsOnly);
28434
28239
  }
28435
28240
  // In all cases, if a dynamic container exists for this node, each view inside it has to be