@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.
- package/dist/cjs/{button.factory-0de98db0.js → button.factory-70a142d1.js} +2 -2
- package/dist/cjs/{camera-helpers-b017bf7d.js → camera-helpers-2492c44a.js} +3 -3
- package/dist/cjs/{chat-helpers-70680c7d.js → chat-helpers-98866a04.js} +2 -2
- package/dist/cjs/{common-helpers-03171bbd.js → common-helpers-cdca5902.js} +2 -2
- package/dist/cjs/design-system.cjs.js +1 -1
- package/dist/cjs/{draggable-dots-helpers-0c6d1f7d.js → draggable-dots-helpers-e9e28b93.js} +2 -2
- package/dist/cjs/{draggable-tags-helpers-fd708301.js → draggable-tags-helpers-f2405f71.js} +2 -2
- package/dist/cjs/{entities-helpers-298d2620.js → entities-helpers-225c42d5.js} +3 -3
- package/dist/cjs/{filters-helpers-b30b3ea7.js → filters-helpers-c869c436.js} +3 -3
- package/dist/cjs/{form-choice-helpers-3812b8ab.js → form-choice-helpers-f9a06b33.js} +5 -5
- package/dist/cjs/{form-helpers-c6beec00.js → form-helpers-5d960eec.js} +3 -3
- package/dist/cjs/{form-input-helpers-425be3ea.js → form-input-helpers-84107b90.js} +4 -4
- package/dist/cjs/{form-text-area-helpers-a3ad0e64.js → form-text-area-helpers-8990c355.js} +2 -2
- package/dist/cjs/{grid-renderers-8a8c04eb.js → grid-renderers-05b2f69d.js} +7 -7
- package/dist/cjs/{incentive-helpers-e5263f62.js → incentive-helpers-2d829892.js} +3 -3
- package/dist/cjs/{index-4cc48ba6.js → index-3fe8871a.js} +1 -1
- package/dist/cjs/{index-8f48ac42.js → index-486eab7b.js} +13 -0
- package/dist/cjs/{index-e3d346bc.js → index-5fbb1164.js} +2 -2
- package/dist/cjs/index-666aa0e3.js +4 -0
- package/dist/cjs/index-6db7954e.js +4 -0
- package/dist/cjs/{index-4bb469be.js → index-af133077.js} +1 -1
- package/dist/cjs/{index-7bb35a50.js → index-e1579e58.js} +1 -1
- package/dist/cjs/{index-f833fae9.js → index-ee4856bc.js} +3 -3
- package/dist/cjs/{index-153c8e28.js → index-f846c933.js} +3 -3
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{localForage-8e1af981.js → localForage-da7fc314.js} +2 -2
- package/dist/cjs/{map-helpers-5cc34278.js → map-helpers-2de0c5ec.js} +2 -2
- package/dist/cjs/{mission-locked-banner-f9b8ea67.js → mission-locked-banner-c0aa7aa3.js} +2 -2
- package/dist/cjs/{missions-helpers-078bef28.js → missions-helpers-d86ef2b5.js} +4 -4
- package/dist/cjs/{modal-animations-ac198cd2.js → modal-animations-a301d389.js} +2 -2
- package/dist/cjs/{operation-helpers-9fdb8e12.js → operation-helpers-448cd435.js} +2 -2
- package/dist/cjs/{overlays-3336db5b.js → overlays-9322ea2a.js} +3 -3
- package/dist/cjs/{overlays-1e1d13ed.js → overlays-cb3d5f1a.js} +2 -2
- package/dist/cjs/{swiper-85a04eb4.js → swiper-c54338a8.js} +6 -6
- package/dist/cjs/{theme-0c4353c2.js → theme-c9c7eb03.js} +2 -2
- package/dist/cjs/{tippy.esm-967e43c8.js → tippy.esm-c65d2e50.js} +1 -1
- package/dist/cjs/{video-player-helpers-00c01bb5.js → video-player-helpers-95fabf21.js} +4 -4
- package/dist/cjs/{web-ce104380.js → web-4bde2cb3.js} +2 -2
- package/dist/cjs/{web-ad37c884.js → web-a8532a83.js} +2 -2
- package/dist/cjs/{web-8687e392.js → web-db546270.js} +4 -4
- package/dist/cjs/{web-ab21612e.js → web-e1770a24.js} +2 -2
- package/dist/cjs/yoo-about.cjs.entry.js +3 -3
- package/dist/cjs/yoo-accordion.cjs.entry.js +8 -8
- package/dist/cjs/yoo-action-sheet-controller.cjs.entry.js +4 -4
- package/dist/cjs/yoo-action-sheet.cjs.entry.js +6 -6
- package/dist/cjs/yoo-ag-grid.cjs.entry.js +8 -8
- package/dist/cjs/yoo-alert.cjs.entry.js +6 -6
- package/dist/cjs/yoo-amap.cjs.entry.js +5 -5
- package/dist/cjs/yoo-announcement-heading.cjs.entry.js +16 -7
- package/dist/cjs/yoo-app.cjs.entry.js +3 -3
- package/dist/cjs/yoo-audio-player.cjs.entry.js +4 -4
- package/dist/cjs/yoo-audio-recorder-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-avatar.cjs.entry.js +3 -3
- package/dist/cjs/yoo-avatars.cjs.entry.js +3 -3
- package/dist/cjs/yoo-background.cjs.entry.js +4 -4
- package/dist/cjs/yoo-banner.cjs.entry.js +4 -4
- package/dist/cjs/yoo-barcode-dialog.cjs.entry.js +3 -3
- package/dist/cjs/yoo-battle-count-down.cjs.entry.js +4 -4
- package/dist/cjs/yoo-battle-result.cjs.entry.js +3 -3
- package/dist/cjs/yoo-battle-user-stats.cjs.entry.js +4 -4
- package/dist/cjs/yoo-breadcrumbs.cjs.entry.js +3 -3
- package/dist/cjs/yoo-button.cjs.entry.js +4 -4
- package/dist/cjs/yoo-calendar.cjs.entry.js +3 -3
- package/dist/cjs/yoo-camera-preview-dialog.cjs.entry.js +6 -6
- package/dist/cjs/yoo-card-battle-result.cjs.entry.js +3 -3
- package/dist/cjs/yoo-card-battle.cjs.entry.js +3 -3
- package/dist/cjs/yoo-card-calendar.cjs.entry.js +4 -4
- package/dist/cjs/yoo-card-campaign.cjs.entry.js +4 -4
- package/dist/cjs/yoo-card-cell.cjs.entry.js +4 -4
- package/dist/cjs/yoo-card-chat.cjs.entry.js +3 -3
- package/dist/cjs/yoo-card-course-row-compact.cjs.entry.js +3 -3
- package/dist/cjs/yoo-card-course-row.cjs.entry.js +5 -5
- package/dist/cjs/yoo-card-course.cjs.entry.js +3 -3
- package/dist/cjs/yoo-card-feed-row.cjs.entry.js +3 -3
- package/dist/cjs/yoo-card-feed.cjs.entry.js +7 -7
- package/dist/cjs/yoo-card-file.cjs.entry.js +3 -3
- package/dist/cjs/yoo-card-image.cjs.entry.js +3 -3
- package/dist/cjs/yoo-card-inbox.cjs.entry.js +3 -3
- package/dist/cjs/yoo-card-incentive-rank.cjs.entry.js +3 -3
- package/dist/cjs/yoo-card-incentive.cjs.entry.js +5 -5
- package/dist/cjs/yoo-card-kanban.cjs.entry.js +4 -4
- package/dist/cjs/yoo-card-lesson.cjs.entry.js +4 -4
- package/dist/cjs/yoo-card-list-collapsible.cjs.entry.js +4 -4
- package/dist/cjs/yoo-card-list-color.cjs.entry.js +3 -3
- package/dist/cjs/yoo-card-list-simple.cjs.entry.js +4 -4
- package/dist/cjs/yoo-card-list.cjs.entry.js +4 -4
- package/dist/cjs/yoo-card-location.cjs.entry.js +3 -3
- package/dist/cjs/yoo-card-media.cjs.entry.js +4 -4
- package/dist/cjs/yoo-card-menu.cjs.entry.js +4 -4
- package/dist/cjs/yoo-card-notification.cjs.entry.js +3 -3
- package/dist/cjs/yoo-card-plan.cjs.entry.js +4 -4
- package/dist/cjs/yoo-card-progress.cjs.entry.js +3 -3
- package/dist/cjs/yoo-card-recommendation.cjs.entry.js +4 -4
- package/dist/cjs/yoo-card-sticky.cjs.entry.js +4 -4
- package/dist/cjs/yoo-card-video.cjs.entry.js +3 -3
- package/dist/cjs/yoo-chart.cjs.entry.js +3 -3
- package/dist/cjs/yoo-chat-message-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-chat-message-preview.cjs.entry.js +3 -3
- package/dist/cjs/yoo-chat-message.cjs.entry.js +5 -5
- package/dist/cjs/yoo-chat.cjs.entry.js +7 -7
- package/dist/cjs/yoo-collapsible.cjs.entry.js +3 -3
- package/dist/cjs/yoo-color-selector.cjs.entry.js +3 -3
- package/dist/cjs/yoo-community-detail.cjs.entry.js +4 -4
- package/dist/cjs/yoo-context-menu-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-context-menu.cjs.entry.js +4 -4
- package/dist/cjs/yoo-copyright.cjs.entry.js +3 -3
- package/dist/cjs/yoo-count-down.cjs.entry.js +4 -4
- package/dist/cjs/yoo-course-info-card.cjs.entry.js +3 -3
- package/dist/cjs/yoo-course-summary.cjs.entry.js +4 -4
- package/dist/cjs/yoo-dashboard-detail.cjs.entry.js +3 -3
- package/dist/cjs/yoo-date.cjs.entry.js +3 -3
- package/dist/cjs/yoo-detail-bar.cjs.entry.js +4 -4
- package/dist/cjs/yoo-device-list.cjs.entry.js +3 -3
- package/dist/cjs/yoo-device.cjs.entry.js +3 -3
- package/dist/cjs/yoo-draw-flow.cjs.entry.js +39 -21
- package/dist/cjs/yoo-empty-state.cjs.entry.js +1 -1
- package/dist/cjs/yoo-entity-query-builder.cjs.entry.js +4 -4
- package/dist/cjs/yoo-entity-search-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-entity-search-filters.cjs.entry.js +5 -5
- package/dist/cjs/yoo-entity-search-recent.cjs.entry.js +3 -3
- package/dist/cjs/yoo-entity-search-sorts.cjs.entry.js +4 -4
- package/dist/cjs/yoo-entity-search-tags.cjs.entry.js +4 -4
- package/dist/cjs/yoo-entity-search.cjs.entry.js +4 -4
- package/dist/cjs/yoo-entity.cjs.entry.js +11 -11
- package/dist/cjs/yoo-feed-detail.cjs.entry.js +6 -6
- package/dist/cjs/yoo-flag.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-audience.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-autocomplete-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-autocomplete.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-barcode-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-barcode.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-calendar-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-capture-map-dialog.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-capture-tag-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-capture-view-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-capture-webcam-dialog.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-capture.cjs.entry.js +7 -7
- package/dist/cjs/yoo-form-carousel.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-catalog-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-catalog.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-categorize-words.cjs.entry.js +7 -7
- package/dist/cjs/yoo-form-checkbox.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-checklist.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-choice-button.cjs.entry.js +7 -7
- package/dist/cjs/yoo-form-choice-card.cjs.entry.js +7 -7
- package/dist/cjs/yoo-form-choice-chat.cjs.entry.js +7 -7
- package/dist/cjs/yoo-form-choice-image.cjs.entry.js +7 -7
- package/dist/cjs/yoo-form-choice-radio.cjs.entry.js +7 -7
- package/dist/cjs/yoo-form-color-field.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-color-picker.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-conditions.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-connect.cjs.entry.js +6 -6
- package/dist/cjs/yoo-form-creator-block-expandable.cjs.entry.js +6 -6
- package/dist/cjs/yoo-form-creator-block-simple.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-creator-condition-block.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-creator-field-selector.cjs.entry.js +10 -6
- package/dist/cjs/yoo-form-creator-header.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-creator-live-preview.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-creator-overlay.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-creator-page-card-list.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-creator-page-card.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-creator-score-expandable.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-creator-scoring-card-list.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-creator-scoring-card.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-creator-scoring-quick-setup.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-creator-translate-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-creator-translate.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-creator-workflow-side-selection.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-creator-workflow-step.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-creator.cjs.entry.js +7 -7
- package/dist/cjs/yoo-form-date-time.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-daterange.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-document-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-document.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-dynamic-dialog.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-dynamic.cjs.entry.js +7 -7
- package/dist/cjs/yoo-form-emailreport.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-entity-value-pairs.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-explanation.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-feed-preview.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-feedback.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-filter-date.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-filter-number.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-filter-text.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-filter.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-footer.cjs.entry.js +6 -6
- package/dist/cjs/yoo-form-formula.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-hotzones-creator.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-hotzones.cjs.entry.js +7 -7
- package/dist/cjs/yoo-form-iframe-dialog.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-image-collection.cjs.entry.js +6 -6
- package/dist/cjs/yoo-form-image-tagging-creator.cjs.entry.js +6 -6
- package/dist/cjs/yoo-form-image-tagging.cjs.entry.js +9 -9
- package/dist/cjs/yoo-form-incentive-participants.cjs.entry.js +1 -1
- package/dist/cjs/yoo-form-incentive-targets.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-input-comments.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-input-container.cjs.entry.js +6 -6
- package/dist/cjs/yoo-form-input.cjs.entry.js +9 -9
- package/dist/cjs/yoo-form-json.cjs.entry.js +6 -6
- package/dist/cjs/yoo-form-location.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-missing-word.cjs.entry.js +7 -7
- package/dist/cjs/yoo-form-missionfield.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-multi-input.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-number-picker-dialog.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-number-picker.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-opening-hours.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-permissions.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-phone-number.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-plan-assign.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-plan.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-pricecheck.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-product-batch.cjs.entry.js +6 -6
- package/dist/cjs/yoo-form-products-sales.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-progress-indicator.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-qrcode.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-query-builder.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-range.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-ranking.cjs.entry.js +6 -6
- package/dist/cjs/yoo-form-recap-step.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-recurrence-delay.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-recurrence-preview.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-recurrence.cjs.entry.js +3 -3
- package/dist/cjs/yoo-form-reorder.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-scorm.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-shopping.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-signature-pad-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-signature-pad.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-sorts.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-star-rating.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-stripe-card.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-swipe-cards.cjs.entry.js +6 -6
- package/dist/cjs/yoo-form-table.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-task.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-text-area.cjs.entry.js +6 -6
- package/dist/cjs/yoo-form-text-editor.cjs.entry.js +7 -7
- package/dist/cjs/yoo-form-time.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-timeslots.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-todo-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-form-todo-list-dialog.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-todo-list-task.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-todo-list.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-todo-single.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-todo.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-toggle.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-uploader.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-videoplayer.cjs.entry.js +5 -5
- package/dist/cjs/yoo-form-wiki.cjs.entry.js +5 -5
- package/dist/cjs/yoo-grid-calendar.cjs.entry.js +6 -6
- package/dist/cjs/yoo-grid.cjs.entry.js +14 -14
- package/dist/cjs/yoo-gridstack.cjs.entry.js +4 -4
- package/dist/cjs/yoo-header.cjs.entry.js +4 -4
- package/dist/cjs/yoo-healthscore-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-healthscore.cjs.entry.js +3 -3
- package/dist/cjs/yoo-image-cropper-dialog.cjs.entry.js +3 -3
- package/dist/cjs/yoo-img.cjs.entry.js +5 -5
- package/dist/cjs/yoo-incentive-detail.cjs.entry.js +5 -5
- package/dist/cjs/yoo-input-bar.cjs.entry.js +1755 -1950
- package/dist/cjs/yoo-ion-alert-controller.cjs.entry.js +4 -4
- package/dist/cjs/yoo-ion-content.cjs.entry.js +3 -3
- package/dist/cjs/yoo-ion-footer.cjs.entry.js +4 -4
- package/dist/cjs/yoo-ion-infinite-scroll-content.cjs.entry.js +3 -3
- package/dist/cjs/yoo-ion-infinite-scroll.cjs.entry.js +3 -3
- package/dist/cjs/yoo-ion-item-divider.cjs.entry.js +5 -5
- package/dist/cjs/yoo-ion-item-options.cjs.entry.js +4 -4
- package/dist/cjs/yoo-ion-item-sliding.cjs.entry.js +5 -5
- package/dist/cjs/yoo-ion-item.cjs.entry.js +5 -5
- package/dist/cjs/yoo-ion-list.cjs.entry.js +4 -4
- package/dist/cjs/yoo-ion-modal-controller.cjs.entry.js +4 -4
- package/dist/cjs/yoo-ion-modal.cjs.entry.js +9 -9
- package/dist/cjs/yoo-ion-refresher.cjs.entry.js +4 -4
- package/dist/cjs/yoo-ion-scroll.cjs.entry.js +4 -4
- package/dist/cjs/yoo-ion-slide.cjs.entry.js +4 -4
- package/dist/cjs/{yoo-ion-slides-0c6323bf.js → yoo-ion-slides-d17a56d8.js} +25 -22
- package/dist/cjs/yoo-ion-slides.cjs.entry.js +6 -6
- package/dist/cjs/yoo-ion-toast-controller.cjs.entry.js +4 -4
- package/dist/cjs/yoo-kanban.cjs.entry.js +4 -4
- package/dist/cjs/yoo-kpi-card.cjs.entry.js +3 -3
- package/dist/cjs/yoo-kpi-container.cjs.entry.js +4 -4
- package/dist/cjs/yoo-kpi-external.cjs.entry.js +3 -3
- package/dist/cjs/yoo-kpi.cjs.entry.js +3 -3
- package/dist/cjs/yoo-layout-sections.cjs.entry.js +3 -3
- package/dist/cjs/yoo-layout-tabs.cjs.entry.js +3 -3
- package/dist/cjs/yoo-layout-two-columns.cjs.entry.js +3 -3
- package/dist/cjs/yoo-lesson-detail-card.cjs.entry.js +3 -3
- package/dist/cjs/yoo-lesson-detail.cjs.entry.js +4 -4
- package/dist/cjs/yoo-lesson-heading.cjs.entry.js +4 -4
- package/dist/cjs/yoo-lesson-highscores.cjs.entry.js +3 -3
- package/dist/cjs/yoo-lesson-question-result.cjs.entry.js +3 -3
- package/dist/cjs/yoo-line-state.cjs.entry.js +1 -1
- package/dist/cjs/yoo-links-menu.cjs.entry.js +3 -3
- package/dist/cjs/yoo-links-preview.cjs.entry.js +5 -5
- package/dist/cjs/yoo-loader.cjs.entry.js +3 -3
- package/dist/cjs/yoo-location-info.cjs.entry.js +3 -3
- package/dist/cjs/yoo-location-map.cjs.entry.js +4 -4
- package/dist/cjs/yoo-login.cjs.entry.js +3 -3
- package/dist/cjs/yoo-lottie.cjs.entry.js +3 -3
- package/dist/cjs/yoo-map-gl.cjs.entry.js +4 -4
- package/dist/cjs/yoo-map-js.cjs.entry.js +5 -5
- package/dist/cjs/yoo-map-legend.cjs.entry.js +5 -5
- package/dist/cjs/yoo-map.cjs.entry.js +4 -4
- package/dist/cjs/yoo-markdown.cjs.entry.js +5 -5
- package/dist/cjs/yoo-memo-list-dialog.cjs.entry.js +3 -3
- package/dist/cjs/yoo-memo-list.cjs.entry.js +3 -3
- package/dist/cjs/yoo-mention-tag.cjs.entry.js +3 -3
- package/dist/cjs/yoo-mission-details.cjs.entry.js +5 -5
- package/dist/cjs/yoo-mission-heading.cjs.entry.js +7 -7
- package/dist/cjs/yoo-mission-score.cjs.entry.js +3 -3
- package/dist/cjs/yoo-mission-todo.cjs.entry.js +4 -4
- package/dist/cjs/yoo-mobile-tabbar-more.cjs.entry.js +3 -3
- package/dist/cjs/yoo-mobile-tabbar.cjs.entry.js +4 -4
- package/dist/cjs/yoo-modal.cjs.entry.js +4 -4
- package/dist/cjs/yoo-navbar.cjs.entry.js +4 -4
- package/dist/cjs/yoo-numbers-display.cjs.entry.js +4 -4
- package/dist/cjs/yoo-photo-editor.cjs.entry.js +8 -8
- package/dist/cjs/yoo-pivot-table.cjs.entry.js +8 -8
- package/dist/cjs/yoo-podium.cjs.entry.js +3 -3
- package/dist/cjs/yoo-profile-list.cjs.entry.js +3 -3
- package/dist/cjs/yoo-profile-summary.cjs.entry.js +4 -4
- package/dist/cjs/yoo-progress-bar.cjs.entry.js +3 -3
- package/dist/cjs/yoo-progress-loader.cjs.entry.js +3 -3
- package/dist/cjs/yoo-progress-recap.cjs.entry.js +3 -3
- package/dist/cjs/yoo-property-card.cjs.entry.js +4 -4
- package/dist/cjs/yoo-range.cjs.entry.js +5 -5
- package/dist/cjs/yoo-rating.cjs.entry.js +3 -3
- package/dist/cjs/yoo-reset-password.cjs.entry.js +3 -3
- package/dist/cjs/yoo-result-dialog.cjs.entry.js +4 -4
- package/dist/cjs/yoo-reveal.cjs.entry.js +3 -3
- package/dist/cjs/yoo-salesai-formula.cjs.entry.js +3 -3
- package/dist/cjs/yoo-scandit.cjs.entry.js +4 -4
- package/dist/cjs/yoo-scratch-card-creator.cjs.entry.js +3 -3
- package/dist/cjs/yoo-scratch-card.cjs.entry.js +5 -5
- package/dist/cjs/yoo-section-list.cjs.entry.js +3 -3
- package/dist/cjs/yoo-segmented-control.cjs.entry.js +3 -3
- package/dist/cjs/yoo-side-menu-tree.cjs.entry.js +3 -3
- package/dist/cjs/yoo-side-menu.cjs.entry.js +5 -4
- package/dist/cjs/yoo-slides-media.cjs.entry.js +6 -6
- package/dist/cjs/yoo-start-meeting-popup.cjs.entry.js +4 -4
- package/dist/cjs/yoo-tabs.cjs.entry.js +3 -3
- package/dist/cjs/yoo-text-sequence.cjs.entry.js +4 -4
- package/dist/cjs/yoo-text.cjs.entry.js +4 -4
- package/dist/cjs/yoo-toast.cjs.entry.js +5 -5
- package/dist/cjs/yoo-tooltip.cjs.entry.js +6 -6
- package/dist/cjs/yoo-truncate.cjs.entry.js +4 -4
- package/dist/cjs/yoo-truncated-line.cjs.entry.js +3 -3
- package/dist/cjs/yoo-user-detail.cjs.entry.js +3 -3
- package/dist/cjs/yoo-user-profile.cjs.entry.js +5 -5
- package/dist/cjs/yoo-user-wizard.cjs.entry.js +4 -4
- package/dist/cjs/yoo-videoplayer-core.cjs.entry.js +4 -4
- package/dist/cjs/yoo-videoplayer-dailymotion.cjs.entry.js +5 -5
- package/dist/cjs/yoo-videoplayer-videojs.cjs.entry.js +6 -6
- package/dist/cjs/yoo-videoplayer-vimeo.cjs.entry.js +5 -5
- package/dist/cjs/yoo-videoplayer-youtube.cjs.entry.js +5 -5
- package/dist/cjs/yoo-virtual-item.cjs.entry.js +3 -3
- package/dist/cjs/yoo-virtual-scroll.cjs.entry.js +4 -4
- package/dist/cjs/yoo-waitlist-location-result.cjs.entry.js +3 -3
- package/dist/cjs/yoo-waitlist-location-start.cjs.entry.js +3 -3
- package/dist/cjs/yoo-walkthrough.cjs.entry.js +3 -3
- package/dist/cjs/yoo-web-menu.cjs.entry.js +4 -4
- package/dist/cjs/yoo-webcam.cjs.entry.js +3 -3
- package/dist/cjs/yoo-welcome-banner.cjs.entry.js +4 -4
- package/dist/cjs/yoo-widget-chart.cjs.entry.js +3 -3
- package/dist/cjs/yoo-widget-small-size.cjs.entry.js +3 -3
- package/dist/cjs/yoo-widget-tab.cjs.entry.js +3 -3
- package/dist/cjs/yoo-widget-tile.cjs.entry.js +3 -3
- package/dist/cjs/yoo-workflow-state-dialog.cjs.entry.js +3 -3
- package/dist/cjs/yoo-workflow-state.cjs.entry.js +3 -3
- package/dist/cjs/yoo-workflow.cjs.entry.js +6 -6
- package/dist/cjs/yoo-zebra.cjs.entry.js +3 -3
- package/dist/cjs/yoo-zoom.cjs.entry.js +3 -3
- package/dist/collection/components/2.molecules/accordion/accordion.js +2 -1
- package/dist/collection/components/2.molecules/modal/modal.js +3 -2
- package/dist/collection/components/2.molecules/scroll-to-button/scroll-to-button.js +1 -1
- package/dist/collection/components/2.molecules/slide/slide.css +2 -2
- package/dist/collection/components/2.molecules/slides/slides.css +2 -2
- package/dist/collection/components/entities/card-placeholder/card-placeholder.js +1 -1
- package/dist/collection/components/entities/entity/entity.js +1 -1
- package/dist/collection/components/form/form-autocomplete/form-autocomplete.js +2 -2
- package/dist/collection/components/form/form-autocomplete-dialog/form-autocomplete-dialog.js +1 -1
- package/dist/collection/components/form/form-entity-value-pairs/form-entity-value-pairs.js +1 -1
- package/dist/collection/components/form/form-table/form-table.js +1 -1
- package/dist/collection/components/form-creator/form-creator-block-expandable/form-creator-block-expandable.css +58 -61
- package/dist/collection/components/form-creator/form-creator-block-simple/form-creator-block-simple.css +6 -9
- package/dist/collection/components/form-creator/form-creator-condition-block/form-creator-condition-block.css +6 -9
- package/dist/collection/components/form-creator/form-creator-field-selector/form-creator-field-selector.js +43 -2
- package/dist/collection/components/form-creator/form-creator-score-expandable/form-creator-score-expandable.css +40 -34
- package/dist/collection/components/grid/grid/grid.js +1 -1
- package/dist/collection/components/grid/grid-calendar/grid-calendar.js +1 -1
- package/dist/collection/components/grid/kanban/kanban.js +1 -1
- package/dist/collection/feature-communicate/feed/card-feed/default/card-feed.js +1 -1
- package/dist/collection/feature-operate/mission/announcement-heading/announcement-heading.css +19 -4
- package/dist/collection/feature-operate/mission/announcement-heading/announcement-heading.js +14 -1
- package/dist/collection/feature-operate/mission/helpers/missions-helpers.js +2 -2
- package/dist/collection/feature-operate/mission/mission-heading/mission-heading.css +3 -3
- package/dist/collection/feature-platform/admin/draw-flow/draw-flow.css +155 -76
- package/dist/collection/feature-platform/admin/draw-flow/draw-flow.js +79 -31
- package/dist/collection/feature-platform/app/app/app.js +1 -1
- package/dist/collection/feature-platform/menu/side-menu/side-menu.js +2 -1
- package/dist/design-system/{button.factory-548f00ff.js → button.factory-ce9f5896.js} +2 -2
- package/dist/design-system/{camera-helpers-b16f47f2.js → camera-helpers-e374d2a7.js} +3 -3
- package/dist/{esm/chat-helpers-e8a3a6e2.js → design-system/chat-helpers-e72f7f94.js} +2 -2
- package/dist/{esm/common-helpers-641f84cf.js → design-system/common-helpers-7572b8db.js} +2 -2
- package/dist/design-system/design-system.esm.js +1 -1
- package/dist/design-system/{draggable-dots-helpers-79bf1f7a.js → draggable-dots-helpers-94a9e4dd.js} +2 -2
- package/dist/{esm/draggable-tags-helpers-c1097a8c.js → design-system/draggable-tags-helpers-a2d4d574.js} +2 -2
- package/dist/{esm/entities-helpers-2a80a41c.js → design-system/entities-helpers-a9eca0ab.js} +3 -3
- package/dist/design-system/{filters-helpers-3305ff76.js → filters-helpers-7fdfdc59.js} +3 -3
- package/dist/design-system/{form-choice-helpers-49666400.js → form-choice-helpers-a860db21.js} +5 -5
- package/dist/{esm/form-helpers-4ff88a48.js → design-system/form-helpers-db554989.js} +3 -3
- package/dist/{esm/form-input-helpers-7ecb9d6b.js → design-system/form-input-helpers-fcc6367d.js} +4 -4
- package/dist/design-system/{form-text-area-helpers-f1a0044f.js → form-text-area-helpers-7e0482b0.js} +2 -2
- package/dist/design-system/{grid-renderers-15a38038.js → grid-renderers-e277f1e5.js} +7 -7
- package/dist/{esm/incentive-helpers-9b9177ec.js → design-system/incentive-helpers-cd9067be.js} +3 -3
- package/dist/{esm/index-181fe32c.js → design-system/index-01b59ca9.js} +3 -3
- package/dist/{esm/index-77dfdf51.js → design-system/index-0364dfe5.js} +1 -1
- package/dist/{esm/index-1c9c7197.js → design-system/index-2e4cfd24.js} +3 -3
- package/dist/design-system/{index-51fc9b51.js → index-40df0cc2.js} +2 -2
- package/dist/{esm/index-673b1a64.js → design-system/index-572f0595.js} +1 -1
- package/dist/design-system/{index-c79e2959.js → index-76818c72.js} +13 -1
- package/dist/design-system/index-830cded5.js +1 -0
- package/dist/design-system/index-85ea6716.js +1 -0
- package/dist/{esm/index-4495b427.js → design-system/index-bfa34b4f.js} +1 -1
- package/dist/{esm/localForage-1804a51c.js → design-system/localForage-555cba17.js} +2 -2
- package/dist/{esm/map-helpers-6ffcb9df.js → design-system/map-helpers-e1d37c2a.js} +2 -2
- package/dist/design-system/{mission-locked-banner-9be5e25c.js → mission-locked-banner-3a9216cc.js} +2 -2
- package/dist/design-system/{missions-helpers-f4a522bb.js → missions-helpers-cc964ca1.js} +4 -4
- package/dist/design-system/{modal-animations-89e5badf.js → modal-animations-7da0af0b.js} +2 -2
- package/dist/{esm/operation-helpers-888900f4.js → design-system/operation-helpers-55154d6d.js} +2 -2
- package/dist/design-system/{overlays-8ed6c5e4.js → overlays-8db3bed4.js} +3 -3
- package/dist/{esm/overlays-e3cdcf07.js → design-system/overlays-c2a9d2bf.js} +2 -2
- package/dist/design-system/swiper-cf1b8880.js +12 -0
- package/dist/{esm/theme-e481c7a9.js → design-system/theme-d5c48d1b.js} +2 -2
- package/dist/{esm/tippy.esm-0dbfaeec.js → design-system/tippy.esm-4ea96ba2.js} +1 -1
- package/dist/design-system/{video-player-helpers-ce9c661b.js → video-player-helpers-36fabc6d.js} +4 -4
- package/dist/{esm/web-3dd9ef35.js → design-system/web-093990a5.js} +2 -2
- package/dist/{esm/web-9ecc48b4.js → design-system/web-0daf06e2.js} +4 -4
- package/dist/{esm/web-4475031c.js → design-system/web-9cff6eb3.js} +2 -2
- package/dist/{esm/web-ce74eca3.js → design-system/web-cdbaa3d1.js} +2 -2
- package/dist/design-system/yoo-about.entry.js +3 -3
- package/dist/design-system/yoo-accordion.entry.js +8 -8
- package/dist/design-system/yoo-action-sheet-controller.entry.js +4 -4
- package/dist/design-system/yoo-action-sheet.entry.js +6 -6
- package/dist/design-system/yoo-ag-grid.entry.js +8 -8
- package/dist/design-system/yoo-alert.entry.js +6 -6
- package/dist/design-system/yoo-amap.entry.js +5 -5
- package/dist/design-system/yoo-announcement-heading.entry.js +16 -7
- package/dist/design-system/yoo-app.entry.js +3 -3
- package/dist/design-system/yoo-audio-player.entry.js +4 -4
- package/dist/design-system/yoo-audio-recorder-dialog.entry.js +4 -4
- package/dist/design-system/yoo-avatar.entry.js +3 -3
- package/dist/design-system/yoo-avatars.entry.js +3 -3
- package/dist/design-system/yoo-background.entry.js +4 -4
- package/dist/design-system/yoo-banner.entry.js +4 -4
- package/dist/design-system/yoo-barcode-dialog.entry.js +3 -3
- package/dist/design-system/yoo-battle-count-down.entry.js +4 -4
- package/dist/design-system/yoo-battle-result.entry.js +3 -3
- package/dist/design-system/yoo-battle-user-stats.entry.js +4 -4
- package/dist/design-system/yoo-breadcrumbs.entry.js +3 -3
- package/dist/design-system/yoo-button.entry.js +4 -4
- package/dist/design-system/yoo-calendar.entry.js +3 -3
- package/dist/design-system/yoo-camera-preview-dialog.entry.js +6 -6
- package/dist/design-system/yoo-card-battle-result.entry.js +3 -3
- package/dist/design-system/yoo-card-battle.entry.js +3 -3
- package/dist/design-system/yoo-card-calendar.entry.js +4 -4
- package/dist/design-system/yoo-card-campaign.entry.js +4 -4
- package/dist/design-system/yoo-card-cell.entry.js +4 -4
- package/dist/design-system/yoo-card-chat.entry.js +3 -3
- package/dist/design-system/yoo-card-course-row-compact.entry.js +3 -3
- package/dist/design-system/yoo-card-course-row.entry.js +5 -5
- package/dist/design-system/yoo-card-course.entry.js +3 -3
- package/dist/design-system/yoo-card-feed-row.entry.js +3 -3
- package/dist/design-system/yoo-card-feed.entry.js +7 -7
- package/dist/design-system/yoo-card-file.entry.js +3 -3
- package/dist/design-system/yoo-card-image.entry.js +3 -3
- package/dist/design-system/yoo-card-inbox.entry.js +3 -3
- package/dist/design-system/yoo-card-incentive-rank.entry.js +3 -3
- package/dist/design-system/yoo-card-incentive.entry.js +5 -5
- package/dist/design-system/yoo-card-kanban.entry.js +4 -4
- package/dist/design-system/yoo-card-lesson.entry.js +4 -4
- package/dist/design-system/yoo-card-list-collapsible.entry.js +4 -4
- package/dist/design-system/yoo-card-list-color.entry.js +3 -3
- package/dist/design-system/yoo-card-list-simple.entry.js +4 -4
- package/dist/design-system/yoo-card-list.entry.js +4 -4
- package/dist/design-system/yoo-card-location.entry.js +3 -3
- package/dist/design-system/yoo-card-media.entry.js +4 -4
- package/dist/design-system/yoo-card-menu.entry.js +4 -4
- package/dist/design-system/yoo-card-notification.entry.js +3 -3
- package/dist/design-system/yoo-card-plan.entry.js +4 -4
- package/dist/design-system/yoo-card-progress.entry.js +3 -3
- package/dist/design-system/yoo-card-recommendation.entry.js +4 -4
- package/dist/design-system/yoo-card-sticky.entry.js +4 -4
- package/dist/design-system/yoo-card-video.entry.js +3 -3
- package/dist/design-system/yoo-chart.entry.js +3 -3
- package/dist/design-system/yoo-chat-message-dialog.entry.js +4 -4
- package/dist/design-system/yoo-chat-message-preview.entry.js +3 -3
- package/dist/design-system/yoo-chat-message.entry.js +5 -5
- package/dist/design-system/yoo-chat.entry.js +7 -7
- package/dist/design-system/yoo-collapsible.entry.js +3 -3
- package/dist/design-system/yoo-color-selector.entry.js +3 -3
- package/dist/design-system/yoo-community-detail.entry.js +4 -4
- package/dist/design-system/yoo-context-menu-dialog.entry.js +4 -4
- package/dist/design-system/yoo-context-menu.entry.js +4 -4
- package/dist/design-system/yoo-copyright.entry.js +3 -3
- package/dist/design-system/yoo-count-down.entry.js +4 -4
- package/dist/design-system/yoo-course-info-card.entry.js +3 -3
- package/dist/design-system/yoo-course-summary.entry.js +4 -4
- package/dist/design-system/yoo-dashboard-detail.entry.js +3 -3
- package/dist/design-system/yoo-date.entry.js +3 -3
- package/dist/design-system/yoo-detail-bar.entry.js +4 -4
- package/dist/design-system/yoo-device-list.entry.js +3 -3
- package/dist/design-system/yoo-device.entry.js +3 -3
- package/dist/design-system/yoo-draw-flow.entry.js +39 -21
- package/dist/design-system/yoo-empty-state.entry.js +1 -1
- package/dist/design-system/yoo-entity-query-builder.entry.js +4 -4
- package/dist/design-system/yoo-entity-search-dialog.entry.js +4 -4
- package/dist/design-system/yoo-entity-search-filters.entry.js +5 -5
- package/dist/design-system/yoo-entity-search-recent.entry.js +3 -3
- package/dist/design-system/yoo-entity-search-sorts.entry.js +4 -4
- package/dist/design-system/yoo-entity-search-tags.entry.js +4 -4
- package/dist/design-system/yoo-entity-search.entry.js +4 -4
- package/dist/design-system/yoo-entity.entry.js +11 -11
- package/dist/design-system/yoo-feed-detail.entry.js +6 -6
- package/dist/design-system/yoo-flag.entry.js +3 -3
- package/dist/design-system/yoo-form-audience.entry.js +5 -5
- package/dist/design-system/yoo-form-autocomplete-dialog.entry.js +4 -4
- package/dist/design-system/yoo-form-autocomplete.entry.js +5 -5
- package/dist/design-system/yoo-form-barcode-dialog.entry.js +4 -4
- package/dist/design-system/yoo-form-barcode.entry.js +5 -5
- package/dist/design-system/yoo-form-calendar-dialog.entry.js +4 -4
- package/dist/design-system/yoo-form-capture-map-dialog.entry.js +3 -3
- package/dist/design-system/yoo-form-capture-tag-dialog.entry.js +4 -4
- package/dist/design-system/yoo-form-capture-view-dialog.entry.js +4 -4
- package/dist/design-system/yoo-form-capture-webcam-dialog.entry.js +5 -5
- package/dist/design-system/yoo-form-capture.entry.js +7 -7
- package/dist/design-system/yoo-form-carousel.entry.js +4 -4
- package/dist/design-system/yoo-form-catalog-dialog.entry.js +4 -4
- package/dist/design-system/yoo-form-catalog.entry.js +5 -5
- package/dist/design-system/yoo-form-categorize-words.entry.js +7 -7
- package/dist/design-system/yoo-form-checkbox.entry.js +5 -5
- package/dist/design-system/yoo-form-checklist.entry.js +5 -5
- package/dist/design-system/yoo-form-choice-button.entry.js +7 -7
- package/dist/design-system/yoo-form-choice-card.entry.js +7 -7
- package/dist/design-system/yoo-form-choice-chat.entry.js +7 -7
- package/dist/design-system/yoo-form-choice-image.entry.js +7 -7
- package/dist/design-system/yoo-form-choice-radio.entry.js +7 -7
- package/dist/design-system/yoo-form-color-field.entry.js +5 -5
- package/dist/design-system/yoo-form-color-picker.entry.js +3 -3
- package/dist/design-system/yoo-form-conditions.entry.js +3 -3
- package/dist/design-system/yoo-form-connect.entry.js +6 -6
- package/dist/design-system/yoo-form-creator-block-expandable.entry.js +6 -6
- package/dist/design-system/yoo-form-creator-block-simple.entry.js +5 -5
- package/dist/design-system/yoo-form-creator-condition-block.entry.js +5 -5
- package/dist/design-system/yoo-form-creator-field-selector.entry.js +10 -6
- package/dist/design-system/yoo-form-creator-header.entry.js +4 -4
- package/dist/design-system/yoo-form-creator-live-preview.entry.js +4 -4
- package/dist/design-system/yoo-form-creator-overlay.entry.js +3 -3
- package/dist/design-system/yoo-form-creator-page-card-list.entry.js +4 -4
- package/dist/design-system/yoo-form-creator-page-card.entry.js +4 -4
- package/dist/design-system/yoo-form-creator-score-expandable.entry.js +5 -5
- package/dist/design-system/yoo-form-creator-scoring-card-list.entry.js +3 -3
- package/dist/design-system/yoo-form-creator-scoring-card.entry.js +3 -3
- package/dist/design-system/yoo-form-creator-scoring-quick-setup.entry.js +3 -3
- package/dist/design-system/yoo-form-creator-translate-dialog.entry.js +4 -4
- package/dist/design-system/yoo-form-creator-translate.entry.js +4 -4
- package/dist/design-system/yoo-form-creator-workflow-side-selection.entry.js +5 -5
- package/dist/design-system/yoo-form-creator-workflow-step.entry.js +4 -4
- package/dist/design-system/yoo-form-creator.entry.js +7 -7
- package/dist/design-system/yoo-form-date-time.entry.js +5 -5
- package/dist/design-system/yoo-form-daterange.entry.js +5 -5
- package/dist/design-system/yoo-form-document-dialog.entry.js +4 -4
- package/dist/design-system/yoo-form-document.entry.js +5 -5
- package/dist/design-system/yoo-form-dynamic-dialog.entry.js +5 -5
- package/dist/design-system/yoo-form-dynamic.entry.js +7 -7
- package/dist/design-system/yoo-form-emailreport.entry.js +5 -5
- package/dist/design-system/yoo-form-entity-value-pairs.entry.js +3 -3
- package/dist/design-system/yoo-form-explanation.entry.js +3 -3
- package/dist/design-system/yoo-form-feed-preview.entry.js +5 -5
- package/dist/design-system/yoo-form-feedback.entry.js +5 -5
- package/dist/design-system/yoo-form-filter-date.entry.js +3 -3
- package/dist/design-system/yoo-form-filter-number.entry.js +3 -3
- package/dist/design-system/yoo-form-filter-text.entry.js +3 -3
- package/dist/design-system/yoo-form-filter.entry.js +4 -4
- package/dist/design-system/yoo-form-footer.entry.js +6 -6
- package/dist/design-system/yoo-form-formula.entry.js +5 -5
- package/dist/design-system/yoo-form-hotzones-creator.entry.js +3 -3
- package/dist/design-system/yoo-form-hotzones.entry.js +7 -7
- package/dist/design-system/yoo-form-iframe-dialog.entry.js +3 -3
- package/dist/design-system/yoo-form-image-collection.entry.js +6 -6
- package/dist/design-system/yoo-form-image-tagging-creator.entry.js +6 -6
- package/dist/design-system/yoo-form-image-tagging.entry.js +9 -9
- package/dist/design-system/yoo-form-incentive-participants.entry.js +1 -1
- package/dist/design-system/yoo-form-incentive-targets.entry.js +5 -5
- package/dist/design-system/yoo-form-input-comments.entry.js +3 -3
- package/dist/design-system/yoo-form-input-container.entry.js +6 -6
- package/dist/design-system/yoo-form-input.entry.js +9 -9
- package/dist/design-system/yoo-form-json.entry.js +6 -6
- package/dist/design-system/yoo-form-location.entry.js +5 -5
- package/dist/design-system/yoo-form-missing-word.entry.js +7 -7
- package/dist/design-system/yoo-form-missionfield.entry.js +5 -5
- package/dist/design-system/yoo-form-multi-input.entry.js +5 -5
- package/dist/design-system/yoo-form-number-picker-dialog.entry.js +3 -3
- package/dist/design-system/yoo-form-number-picker.entry.js +3 -3
- package/dist/design-system/yoo-form-opening-hours.entry.js +3 -3
- package/dist/design-system/yoo-form-permissions.entry.js +4 -4
- package/dist/design-system/yoo-form-phone-number.entry.js +3 -3
- package/dist/design-system/yoo-form-plan-assign.entry.js +5 -5
- package/dist/design-system/yoo-form-plan.entry.js +5 -5
- package/dist/design-system/yoo-form-pricecheck.entry.js +5 -5
- package/dist/design-system/yoo-form-product-batch.entry.js +6 -6
- package/dist/design-system/yoo-form-products-sales.entry.js +5 -5
- package/dist/design-system/yoo-form-progress-indicator.entry.js +4 -4
- package/dist/design-system/yoo-form-qrcode.entry.js +5 -5
- package/dist/design-system/yoo-form-query-builder.entry.js +5 -5
- package/dist/design-system/yoo-form-range.entry.js +5 -5
- package/dist/design-system/yoo-form-ranking.entry.js +6 -6
- package/dist/design-system/yoo-form-recap-step.entry.js +3 -3
- package/dist/design-system/yoo-form-recurrence-delay.entry.js +3 -3
- package/dist/design-system/yoo-form-recurrence-preview.entry.js +4 -4
- package/dist/design-system/yoo-form-recurrence.entry.js +3 -3
- package/dist/design-system/yoo-form-reorder.entry.js +5 -5
- package/dist/design-system/yoo-form-scorm.entry.js +5 -5
- package/dist/design-system/yoo-form-shopping.entry.js +5 -5
- package/dist/design-system/yoo-form-signature-pad-dialog.entry.js +4 -4
- package/dist/design-system/yoo-form-signature-pad.entry.js +5 -5
- package/dist/design-system/yoo-form-sorts.entry.js +5 -5
- package/dist/design-system/yoo-form-star-rating.entry.js +5 -5
- package/dist/design-system/yoo-form-stripe-card.entry.js +5 -5
- package/dist/design-system/yoo-form-swipe-cards.entry.js +6 -6
- package/dist/design-system/yoo-form-table.entry.js +5 -5
- package/dist/design-system/yoo-form-task.entry.js +5 -5
- package/dist/design-system/yoo-form-text-area.entry.js +6 -6
- package/dist/design-system/yoo-form-text-editor.entry.js +7 -7
- package/dist/design-system/yoo-form-time.entry.js +5 -5
- package/dist/design-system/yoo-form-timeslots.entry.js +5 -5
- package/dist/design-system/yoo-form-todo-dialog.entry.js +4 -4
- package/dist/design-system/yoo-form-todo-list-dialog.entry.js +5 -5
- package/dist/design-system/yoo-form-todo-list-task.entry.js +5 -5
- package/dist/design-system/yoo-form-todo-list.entry.js +5 -5
- package/dist/design-system/yoo-form-todo-single.entry.js +5 -5
- package/dist/design-system/yoo-form-todo.entry.js +5 -5
- package/dist/design-system/yoo-form-toggle.entry.js +5 -5
- package/dist/design-system/yoo-form-uploader.entry.js +5 -5
- package/dist/design-system/yoo-form-videoplayer.entry.js +5 -5
- package/dist/design-system/yoo-form-wiki.entry.js +5 -5
- package/dist/design-system/yoo-grid-calendar.entry.js +6 -6
- package/dist/design-system/yoo-grid.entry.js +14 -14
- package/dist/design-system/yoo-gridstack.entry.js +4 -4
- package/dist/design-system/yoo-header.entry.js +4 -4
- package/dist/design-system/yoo-healthscore-dialog.entry.js +4 -4
- package/dist/design-system/yoo-healthscore.entry.js +3 -3
- package/dist/design-system/yoo-image-cropper-dialog.entry.js +3 -3
- package/dist/design-system/yoo-img.entry.js +5 -5
- package/dist/design-system/yoo-incentive-detail.entry.js +5 -5
- package/dist/design-system/yoo-input-bar.entry.js +1755 -1950
- package/dist/design-system/yoo-ion-alert-controller.entry.js +4 -4
- package/dist/design-system/yoo-ion-content.entry.js +3 -3
- package/dist/design-system/yoo-ion-footer.entry.js +4 -4
- package/dist/design-system/yoo-ion-infinite-scroll-content.entry.js +3 -3
- package/dist/design-system/yoo-ion-infinite-scroll.entry.js +3 -3
- package/dist/design-system/yoo-ion-item-divider.entry.js +5 -5
- package/dist/design-system/yoo-ion-item-options.entry.js +4 -4
- package/dist/design-system/yoo-ion-item-sliding.entry.js +5 -5
- package/dist/design-system/yoo-ion-item.entry.js +5 -5
- package/dist/design-system/yoo-ion-list.entry.js +4 -4
- package/dist/design-system/yoo-ion-modal-controller.entry.js +4 -4
- package/dist/design-system/yoo-ion-modal.entry.js +9 -9
- package/dist/design-system/yoo-ion-refresher.entry.js +4 -4
- package/dist/design-system/yoo-ion-scroll.entry.js +4 -4
- package/dist/design-system/yoo-ion-slide.entry.js +4 -4
- package/dist/{esm/yoo-ion-slides-21356ade.js → design-system/yoo-ion-slides-027b1bbf.js} +25 -22
- package/dist/design-system/yoo-ion-slides.entry.js +6 -6
- package/dist/design-system/yoo-ion-toast-controller.entry.js +4 -4
- package/dist/design-system/yoo-kanban.entry.js +4 -4
- package/dist/design-system/yoo-kpi-card.entry.js +3 -3
- package/dist/design-system/yoo-kpi-container.entry.js +4 -4
- package/dist/design-system/yoo-kpi-external.entry.js +3 -3
- package/dist/design-system/yoo-kpi.entry.js +3 -3
- package/dist/design-system/yoo-layout-sections.entry.js +3 -3
- package/dist/design-system/yoo-layout-tabs.entry.js +3 -3
- package/dist/design-system/yoo-layout-two-columns.entry.js +3 -3
- package/dist/design-system/yoo-lesson-detail-card.entry.js +3 -3
- package/dist/design-system/yoo-lesson-detail.entry.js +4 -4
- package/dist/design-system/yoo-lesson-heading.entry.js +4 -4
- package/dist/design-system/yoo-lesson-highscores.entry.js +3 -3
- package/dist/design-system/yoo-lesson-question-result.entry.js +3 -3
- package/dist/design-system/yoo-line-state.entry.js +1 -1
- package/dist/design-system/yoo-links-menu.entry.js +3 -3
- package/dist/design-system/yoo-links-preview.entry.js +5 -5
- package/dist/design-system/yoo-loader.entry.js +3 -3
- package/dist/design-system/yoo-location-info.entry.js +3 -3
- package/dist/design-system/yoo-location-map.entry.js +4 -4
- package/dist/design-system/yoo-login.entry.js +3 -3
- package/dist/design-system/yoo-lottie.entry.js +3 -3
- package/dist/design-system/yoo-map-gl.entry.js +4 -4
- package/dist/design-system/yoo-map-js.entry.js +5 -5
- package/dist/design-system/yoo-map-legend.entry.js +5 -5
- package/dist/design-system/yoo-map.entry.js +4 -4
- package/dist/design-system/yoo-markdown.entry.js +5 -5
- package/dist/design-system/yoo-memo-list-dialog.entry.js +3 -3
- package/dist/design-system/yoo-memo-list.entry.js +3 -3
- package/dist/design-system/yoo-mention-tag.entry.js +3 -3
- package/dist/design-system/yoo-mission-details.entry.js +5 -5
- package/dist/design-system/yoo-mission-heading.entry.js +7 -7
- package/dist/design-system/yoo-mission-score.entry.js +3 -3
- package/dist/design-system/yoo-mission-todo.entry.js +4 -4
- package/dist/design-system/yoo-mobile-tabbar-more.entry.js +3 -3
- package/dist/design-system/yoo-mobile-tabbar.entry.js +4 -4
- package/dist/design-system/yoo-modal.entry.js +4 -4
- package/dist/design-system/yoo-navbar.entry.js +4 -4
- package/dist/design-system/yoo-numbers-display.entry.js +4 -4
- package/dist/design-system/yoo-photo-editor.entry.js +8 -8
- package/dist/design-system/yoo-pivot-table.entry.js +8 -8
- package/dist/design-system/yoo-podium.entry.js +3 -3
- package/dist/design-system/yoo-profile-list.entry.js +3 -3
- package/dist/design-system/yoo-profile-summary.entry.js +4 -4
- package/dist/design-system/yoo-progress-bar.entry.js +3 -3
- package/dist/design-system/yoo-progress-loader.entry.js +3 -3
- package/dist/design-system/yoo-progress-recap.entry.js +3 -3
- package/dist/design-system/yoo-property-card.entry.js +4 -4
- package/dist/design-system/yoo-range.entry.js +5 -5
- package/dist/design-system/yoo-rating.entry.js +3 -3
- package/dist/design-system/yoo-reset-password.entry.js +3 -3
- package/dist/design-system/yoo-result-dialog.entry.js +4 -4
- package/dist/design-system/yoo-reveal.entry.js +3 -3
- package/dist/design-system/yoo-salesai-formula.entry.js +3 -3
- package/dist/design-system/yoo-scandit.entry.js +4 -4
- package/dist/design-system/yoo-scratch-card-creator.entry.js +3 -3
- package/dist/design-system/yoo-scratch-card.entry.js +5 -5
- package/dist/design-system/yoo-section-list.entry.js +3 -3
- package/dist/design-system/yoo-segmented-control.entry.js +3 -3
- package/dist/design-system/yoo-side-menu-tree.entry.js +3 -3
- package/dist/design-system/yoo-side-menu.entry.js +5 -4
- package/dist/design-system/yoo-slides-media.entry.js +6 -6
- package/dist/design-system/yoo-start-meeting-popup.entry.js +4 -4
- package/dist/design-system/yoo-tabs.entry.js +3 -3
- package/dist/design-system/yoo-text-sequence.entry.js +4 -4
- package/dist/design-system/yoo-text.entry.js +4 -4
- package/dist/design-system/yoo-toast.entry.js +5 -5
- package/dist/design-system/yoo-tooltip.entry.js +6 -6
- package/dist/design-system/yoo-truncate.entry.js +4 -4
- package/dist/design-system/yoo-truncated-line.entry.js +3 -3
- package/dist/design-system/yoo-user-detail.entry.js +3 -3
- package/dist/design-system/yoo-user-profile.entry.js +5 -5
- package/dist/design-system/yoo-user-wizard.entry.js +4 -4
- package/dist/design-system/yoo-videoplayer-core.entry.js +4 -4
- package/dist/design-system/yoo-videoplayer-dailymotion.entry.js +5 -5
- package/dist/design-system/yoo-videoplayer-videojs.entry.js +6 -6
- package/dist/design-system/yoo-videoplayer-vimeo.entry.js +5 -5
- package/dist/design-system/yoo-videoplayer-youtube.entry.js +5 -5
- package/dist/design-system/yoo-virtual-item.entry.js +3 -3
- package/dist/design-system/yoo-virtual-scroll.entry.js +4 -4
- package/dist/design-system/yoo-waitlist-location-result.entry.js +3 -3
- package/dist/design-system/yoo-waitlist-location-start.entry.js +3 -3
- package/dist/design-system/yoo-walkthrough.entry.js +3 -3
- package/dist/design-system/yoo-web-menu.entry.js +4 -4
- package/dist/design-system/yoo-webcam.entry.js +3 -3
- package/dist/design-system/yoo-welcome-banner.entry.js +4 -4
- package/dist/design-system/yoo-widget-chart.entry.js +3 -3
- package/dist/design-system/yoo-widget-small-size.entry.js +3 -3
- package/dist/design-system/yoo-widget-tab.entry.js +3 -3
- package/dist/design-system/yoo-widget-tile.entry.js +3 -3
- package/dist/design-system/yoo-workflow-state-dialog.entry.js +3 -3
- package/dist/design-system/yoo-workflow-state.entry.js +3 -3
- package/dist/design-system/yoo-workflow.entry.js +6 -6
- package/dist/design-system/yoo-zebra.entry.js +3 -3
- package/dist/design-system/yoo-zoom.entry.js +3 -3
- package/dist/esm/{button.factory-548f00ff.js → button.factory-ce9f5896.js} +2 -2
- package/dist/esm/{camera-helpers-b16f47f2.js → camera-helpers-e374d2a7.js} +3 -3
- package/dist/{design-system/chat-helpers-e8a3a6e2.js → esm/chat-helpers-e72f7f94.js} +2 -2
- package/dist/{design-system/common-helpers-641f84cf.js → esm/common-helpers-7572b8db.js} +2 -2
- package/dist/esm/design-system.js +1 -1
- package/dist/esm/{draggable-dots-helpers-79bf1f7a.js → draggable-dots-helpers-94a9e4dd.js} +2 -2
- package/dist/{design-system/draggable-tags-helpers-c1097a8c.js → esm/draggable-tags-helpers-a2d4d574.js} +2 -2
- package/dist/{design-system/entities-helpers-2a80a41c.js → esm/entities-helpers-a9eca0ab.js} +3 -3
- package/dist/esm/{filters-helpers-3305ff76.js → filters-helpers-7fdfdc59.js} +3 -3
- package/dist/esm/{form-choice-helpers-49666400.js → form-choice-helpers-a860db21.js} +5 -5
- package/dist/{design-system/form-helpers-4ff88a48.js → esm/form-helpers-db554989.js} +3 -3
- package/dist/{design-system/form-input-helpers-7ecb9d6b.js → esm/form-input-helpers-fcc6367d.js} +4 -4
- package/dist/esm/{form-text-area-helpers-f1a0044f.js → form-text-area-helpers-7e0482b0.js} +2 -2
- package/dist/esm/{grid-renderers-15a38038.js → grid-renderers-e277f1e5.js} +7 -7
- package/dist/{design-system/incentive-helpers-9b9177ec.js → esm/incentive-helpers-cd9067be.js} +3 -3
- package/dist/{design-system/index-181fe32c.js → esm/index-01b59ca9.js} +3 -3
- package/dist/{design-system/index-77dfdf51.js → esm/index-0364dfe5.js} +1 -1
- package/dist/{design-system/index-1c9c7197.js → esm/index-2e4cfd24.js} +3 -3
- package/dist/esm/{index-51fc9b51.js → index-40df0cc2.js} +2 -2
- package/dist/{design-system/index-673b1a64.js → esm/index-572f0595.js} +1 -1
- package/dist/esm/{index-c79e2959.js → index-76818c72.js} +13 -1
- package/dist/esm/index-830cded5.js +1 -0
- package/dist/esm/index-85ea6716.js +1 -0
- package/dist/{design-system/index-4495b427.js → esm/index-bfa34b4f.js} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/{design-system/localForage-1804a51c.js → esm/localForage-555cba17.js} +2 -2
- package/dist/{design-system/map-helpers-6ffcb9df.js → esm/map-helpers-e1d37c2a.js} +2 -2
- package/dist/esm/{mission-locked-banner-9be5e25c.js → mission-locked-banner-3a9216cc.js} +2 -2
- package/dist/esm/{missions-helpers-f4a522bb.js → missions-helpers-cc964ca1.js} +4 -4
- package/dist/esm/{modal-animations-89e5badf.js → modal-animations-7da0af0b.js} +2 -2
- package/dist/{design-system/operation-helpers-888900f4.js → esm/operation-helpers-55154d6d.js} +2 -2
- package/dist/esm/{overlays-8ed6c5e4.js → overlays-8db3bed4.js} +3 -3
- package/dist/{design-system/overlays-e3cdcf07.js → esm/overlays-c2a9d2bf.js} +2 -2
- package/dist/esm/swiper-cf1b8880.js +12 -0
- package/dist/{design-system/theme-e481c7a9.js → esm/theme-d5c48d1b.js} +2 -2
- package/dist/{design-system/tippy.esm-0dbfaeec.js → esm/tippy.esm-4ea96ba2.js} +1 -1
- package/dist/esm/{video-player-helpers-ce9c661b.js → video-player-helpers-36fabc6d.js} +4 -4
- package/dist/{design-system/web-3dd9ef35.js → esm/web-093990a5.js} +2 -2
- package/dist/{design-system/web-9ecc48b4.js → esm/web-0daf06e2.js} +4 -4
- package/dist/{design-system/web-4475031c.js → esm/web-9cff6eb3.js} +2 -2
- package/dist/{design-system/web-ce74eca3.js → esm/web-cdbaa3d1.js} +2 -2
- package/dist/esm/yoo-about.entry.js +3 -3
- package/dist/esm/yoo-accordion.entry.js +8 -8
- package/dist/esm/yoo-action-sheet-controller.entry.js +4 -4
- package/dist/esm/yoo-action-sheet.entry.js +6 -6
- package/dist/esm/yoo-ag-grid.entry.js +8 -8
- package/dist/esm/yoo-alert.entry.js +6 -6
- package/dist/esm/yoo-amap.entry.js +5 -5
- package/dist/esm/yoo-announcement-heading.entry.js +16 -7
- package/dist/esm/yoo-app.entry.js +3 -3
- package/dist/esm/yoo-audio-player.entry.js +4 -4
- package/dist/esm/yoo-audio-recorder-dialog.entry.js +4 -4
- package/dist/esm/yoo-avatar.entry.js +3 -3
- package/dist/esm/yoo-avatars.entry.js +3 -3
- package/dist/esm/yoo-background.entry.js +4 -4
- package/dist/esm/yoo-banner.entry.js +4 -4
- package/dist/esm/yoo-barcode-dialog.entry.js +3 -3
- package/dist/esm/yoo-battle-count-down.entry.js +4 -4
- package/dist/esm/yoo-battle-result.entry.js +3 -3
- package/dist/esm/yoo-battle-user-stats.entry.js +4 -4
- package/dist/esm/yoo-breadcrumbs.entry.js +3 -3
- package/dist/esm/yoo-button.entry.js +4 -4
- package/dist/esm/yoo-calendar.entry.js +3 -3
- package/dist/esm/yoo-camera-preview-dialog.entry.js +6 -6
- package/dist/esm/yoo-card-battle-result.entry.js +3 -3
- package/dist/esm/yoo-card-battle.entry.js +3 -3
- package/dist/esm/yoo-card-calendar.entry.js +4 -4
- package/dist/esm/yoo-card-campaign.entry.js +4 -4
- package/dist/esm/yoo-card-cell.entry.js +4 -4
- package/dist/esm/yoo-card-chat.entry.js +3 -3
- package/dist/esm/yoo-card-course-row-compact.entry.js +3 -3
- package/dist/esm/yoo-card-course-row.entry.js +5 -5
- package/dist/esm/yoo-card-course.entry.js +3 -3
- package/dist/esm/yoo-card-feed-row.entry.js +3 -3
- package/dist/esm/yoo-card-feed.entry.js +7 -7
- package/dist/esm/yoo-card-file.entry.js +3 -3
- package/dist/esm/yoo-card-image.entry.js +3 -3
- package/dist/esm/yoo-card-inbox.entry.js +3 -3
- package/dist/esm/yoo-card-incentive-rank.entry.js +3 -3
- package/dist/esm/yoo-card-incentive.entry.js +5 -5
- package/dist/esm/yoo-card-kanban.entry.js +4 -4
- package/dist/esm/yoo-card-lesson.entry.js +4 -4
- package/dist/esm/yoo-card-list-collapsible.entry.js +4 -4
- package/dist/esm/yoo-card-list-color.entry.js +3 -3
- package/dist/esm/yoo-card-list-simple.entry.js +4 -4
- package/dist/esm/yoo-card-list.entry.js +4 -4
- package/dist/esm/yoo-card-location.entry.js +3 -3
- package/dist/esm/yoo-card-media.entry.js +4 -4
- package/dist/esm/yoo-card-menu.entry.js +4 -4
- package/dist/esm/yoo-card-notification.entry.js +3 -3
- package/dist/esm/yoo-card-plan.entry.js +4 -4
- package/dist/esm/yoo-card-progress.entry.js +3 -3
- package/dist/esm/yoo-card-recommendation.entry.js +4 -4
- package/dist/esm/yoo-card-sticky.entry.js +4 -4
- package/dist/esm/yoo-card-video.entry.js +3 -3
- package/dist/esm/yoo-chart.entry.js +3 -3
- package/dist/esm/yoo-chat-message-dialog.entry.js +4 -4
- package/dist/esm/yoo-chat-message-preview.entry.js +3 -3
- package/dist/esm/yoo-chat-message.entry.js +5 -5
- package/dist/esm/yoo-chat.entry.js +7 -7
- package/dist/esm/yoo-collapsible.entry.js +3 -3
- package/dist/esm/yoo-color-selector.entry.js +3 -3
- package/dist/esm/yoo-community-detail.entry.js +4 -4
- package/dist/esm/yoo-context-menu-dialog.entry.js +4 -4
- package/dist/esm/yoo-context-menu.entry.js +4 -4
- package/dist/esm/yoo-copyright.entry.js +3 -3
- package/dist/esm/yoo-count-down.entry.js +4 -4
- package/dist/esm/yoo-course-info-card.entry.js +3 -3
- package/dist/esm/yoo-course-summary.entry.js +4 -4
- package/dist/esm/yoo-dashboard-detail.entry.js +3 -3
- package/dist/esm/yoo-date.entry.js +3 -3
- package/dist/esm/yoo-detail-bar.entry.js +4 -4
- package/dist/esm/yoo-device-list.entry.js +3 -3
- package/dist/esm/yoo-device.entry.js +3 -3
- package/dist/esm/yoo-draw-flow.entry.js +39 -21
- package/dist/esm/yoo-empty-state.entry.js +1 -1
- package/dist/esm/yoo-entity-query-builder.entry.js +4 -4
- package/dist/esm/yoo-entity-search-dialog.entry.js +4 -4
- package/dist/esm/yoo-entity-search-filters.entry.js +5 -5
- package/dist/esm/yoo-entity-search-recent.entry.js +3 -3
- package/dist/esm/yoo-entity-search-sorts.entry.js +4 -4
- package/dist/esm/yoo-entity-search-tags.entry.js +4 -4
- package/dist/esm/yoo-entity-search.entry.js +4 -4
- package/dist/esm/yoo-entity.entry.js +11 -11
- package/dist/esm/yoo-feed-detail.entry.js +6 -6
- package/dist/esm/yoo-flag.entry.js +3 -3
- package/dist/esm/yoo-form-audience.entry.js +5 -5
- package/dist/esm/yoo-form-autocomplete-dialog.entry.js +4 -4
- package/dist/esm/yoo-form-autocomplete.entry.js +5 -5
- package/dist/esm/yoo-form-barcode-dialog.entry.js +4 -4
- package/dist/esm/yoo-form-barcode.entry.js +5 -5
- package/dist/esm/yoo-form-calendar-dialog.entry.js +4 -4
- package/dist/esm/yoo-form-capture-map-dialog.entry.js +3 -3
- package/dist/esm/yoo-form-capture-tag-dialog.entry.js +4 -4
- package/dist/esm/yoo-form-capture-view-dialog.entry.js +4 -4
- package/dist/esm/yoo-form-capture-webcam-dialog.entry.js +5 -5
- package/dist/esm/yoo-form-capture.entry.js +7 -7
- package/dist/esm/yoo-form-carousel.entry.js +4 -4
- package/dist/esm/yoo-form-catalog-dialog.entry.js +4 -4
- package/dist/esm/yoo-form-catalog.entry.js +5 -5
- package/dist/esm/yoo-form-categorize-words.entry.js +7 -7
- package/dist/esm/yoo-form-checkbox.entry.js +5 -5
- package/dist/esm/yoo-form-checklist.entry.js +5 -5
- package/dist/esm/yoo-form-choice-button.entry.js +7 -7
- package/dist/esm/yoo-form-choice-card.entry.js +7 -7
- package/dist/esm/yoo-form-choice-chat.entry.js +7 -7
- package/dist/esm/yoo-form-choice-image.entry.js +7 -7
- package/dist/esm/yoo-form-choice-radio.entry.js +7 -7
- package/dist/esm/yoo-form-color-field.entry.js +5 -5
- package/dist/esm/yoo-form-color-picker.entry.js +3 -3
- package/dist/esm/yoo-form-conditions.entry.js +3 -3
- package/dist/esm/yoo-form-connect.entry.js +6 -6
- package/dist/esm/yoo-form-creator-block-expandable.entry.js +6 -6
- package/dist/esm/yoo-form-creator-block-simple.entry.js +5 -5
- package/dist/esm/yoo-form-creator-condition-block.entry.js +5 -5
- package/dist/esm/yoo-form-creator-field-selector.entry.js +10 -6
- package/dist/esm/yoo-form-creator-header.entry.js +4 -4
- package/dist/esm/yoo-form-creator-live-preview.entry.js +4 -4
- package/dist/esm/yoo-form-creator-overlay.entry.js +3 -3
- package/dist/esm/yoo-form-creator-page-card-list.entry.js +4 -4
- package/dist/esm/yoo-form-creator-page-card.entry.js +4 -4
- package/dist/esm/yoo-form-creator-score-expandable.entry.js +5 -5
- package/dist/esm/yoo-form-creator-scoring-card-list.entry.js +3 -3
- package/dist/esm/yoo-form-creator-scoring-card.entry.js +3 -3
- package/dist/esm/yoo-form-creator-scoring-quick-setup.entry.js +3 -3
- package/dist/esm/yoo-form-creator-translate-dialog.entry.js +4 -4
- package/dist/esm/yoo-form-creator-translate.entry.js +4 -4
- package/dist/esm/yoo-form-creator-workflow-side-selection.entry.js +5 -5
- package/dist/esm/yoo-form-creator-workflow-step.entry.js +4 -4
- package/dist/esm/yoo-form-creator.entry.js +7 -7
- package/dist/esm/yoo-form-date-time.entry.js +5 -5
- package/dist/esm/yoo-form-daterange.entry.js +5 -5
- package/dist/esm/yoo-form-document-dialog.entry.js +4 -4
- package/dist/esm/yoo-form-document.entry.js +5 -5
- package/dist/esm/yoo-form-dynamic-dialog.entry.js +5 -5
- package/dist/esm/yoo-form-dynamic.entry.js +7 -7
- package/dist/esm/yoo-form-emailreport.entry.js +5 -5
- package/dist/esm/yoo-form-entity-value-pairs.entry.js +3 -3
- package/dist/esm/yoo-form-explanation.entry.js +3 -3
- package/dist/esm/yoo-form-feed-preview.entry.js +5 -5
- package/dist/esm/yoo-form-feedback.entry.js +5 -5
- package/dist/esm/yoo-form-filter-date.entry.js +3 -3
- package/dist/esm/yoo-form-filter-number.entry.js +3 -3
- package/dist/esm/yoo-form-filter-text.entry.js +3 -3
- package/dist/esm/yoo-form-filter.entry.js +4 -4
- package/dist/esm/yoo-form-footer.entry.js +6 -6
- package/dist/esm/yoo-form-formula.entry.js +5 -5
- package/dist/esm/yoo-form-hotzones-creator.entry.js +3 -3
- package/dist/esm/yoo-form-hotzones.entry.js +7 -7
- package/dist/esm/yoo-form-iframe-dialog.entry.js +3 -3
- package/dist/esm/yoo-form-image-collection.entry.js +6 -6
- package/dist/esm/yoo-form-image-tagging-creator.entry.js +6 -6
- package/dist/esm/yoo-form-image-tagging.entry.js +9 -9
- package/dist/esm/yoo-form-incentive-participants.entry.js +1 -1
- package/dist/esm/yoo-form-incentive-targets.entry.js +5 -5
- package/dist/esm/yoo-form-input-comments.entry.js +3 -3
- package/dist/esm/yoo-form-input-container.entry.js +6 -6
- package/dist/esm/yoo-form-input.entry.js +9 -9
- package/dist/esm/yoo-form-json.entry.js +6 -6
- package/dist/esm/yoo-form-location.entry.js +5 -5
- package/dist/esm/yoo-form-missing-word.entry.js +7 -7
- package/dist/esm/yoo-form-missionfield.entry.js +5 -5
- package/dist/esm/yoo-form-multi-input.entry.js +5 -5
- package/dist/esm/yoo-form-number-picker-dialog.entry.js +3 -3
- package/dist/esm/yoo-form-number-picker.entry.js +3 -3
- package/dist/esm/yoo-form-opening-hours.entry.js +3 -3
- package/dist/esm/yoo-form-permissions.entry.js +4 -4
- package/dist/esm/yoo-form-phone-number.entry.js +3 -3
- package/dist/esm/yoo-form-plan-assign.entry.js +5 -5
- package/dist/esm/yoo-form-plan.entry.js +5 -5
- package/dist/esm/yoo-form-pricecheck.entry.js +5 -5
- package/dist/esm/yoo-form-product-batch.entry.js +6 -6
- package/dist/esm/yoo-form-products-sales.entry.js +5 -5
- package/dist/esm/yoo-form-progress-indicator.entry.js +4 -4
- package/dist/esm/yoo-form-qrcode.entry.js +5 -5
- package/dist/esm/yoo-form-query-builder.entry.js +5 -5
- package/dist/esm/yoo-form-range.entry.js +5 -5
- package/dist/esm/yoo-form-ranking.entry.js +6 -6
- package/dist/esm/yoo-form-recap-step.entry.js +3 -3
- package/dist/esm/yoo-form-recurrence-delay.entry.js +3 -3
- package/dist/esm/yoo-form-recurrence-preview.entry.js +4 -4
- package/dist/esm/yoo-form-recurrence.entry.js +3 -3
- package/dist/esm/yoo-form-reorder.entry.js +5 -5
- package/dist/esm/yoo-form-scorm.entry.js +5 -5
- package/dist/esm/yoo-form-shopping.entry.js +5 -5
- package/dist/esm/yoo-form-signature-pad-dialog.entry.js +4 -4
- package/dist/esm/yoo-form-signature-pad.entry.js +5 -5
- package/dist/esm/yoo-form-sorts.entry.js +5 -5
- package/dist/esm/yoo-form-star-rating.entry.js +5 -5
- package/dist/esm/yoo-form-stripe-card.entry.js +5 -5
- package/dist/esm/yoo-form-swipe-cards.entry.js +6 -6
- package/dist/esm/yoo-form-table.entry.js +5 -5
- package/dist/esm/yoo-form-task.entry.js +5 -5
- package/dist/esm/yoo-form-text-area.entry.js +6 -6
- package/dist/esm/yoo-form-text-editor.entry.js +7 -7
- package/dist/esm/yoo-form-time.entry.js +5 -5
- package/dist/esm/yoo-form-timeslots.entry.js +5 -5
- package/dist/esm/yoo-form-todo-dialog.entry.js +4 -4
- package/dist/esm/yoo-form-todo-list-dialog.entry.js +5 -5
- package/dist/esm/yoo-form-todo-list-task.entry.js +5 -5
- package/dist/esm/yoo-form-todo-list.entry.js +5 -5
- package/dist/esm/yoo-form-todo-single.entry.js +5 -5
- package/dist/esm/yoo-form-todo.entry.js +5 -5
- package/dist/esm/yoo-form-toggle.entry.js +5 -5
- package/dist/esm/yoo-form-uploader.entry.js +5 -5
- package/dist/esm/yoo-form-videoplayer.entry.js +5 -5
- package/dist/esm/yoo-form-wiki.entry.js +5 -5
- package/dist/esm/yoo-grid-calendar.entry.js +6 -6
- package/dist/esm/yoo-grid.entry.js +14 -14
- package/dist/esm/yoo-gridstack.entry.js +4 -4
- package/dist/esm/yoo-header.entry.js +4 -4
- package/dist/esm/yoo-healthscore-dialog.entry.js +4 -4
- package/dist/esm/yoo-healthscore.entry.js +3 -3
- package/dist/esm/yoo-image-cropper-dialog.entry.js +3 -3
- package/dist/esm/yoo-img.entry.js +5 -5
- package/dist/esm/yoo-incentive-detail.entry.js +5 -5
- package/dist/esm/yoo-input-bar.entry.js +1755 -1950
- package/dist/esm/yoo-ion-alert-controller.entry.js +4 -4
- package/dist/esm/yoo-ion-content.entry.js +3 -3
- package/dist/esm/yoo-ion-footer.entry.js +4 -4
- package/dist/esm/yoo-ion-infinite-scroll-content.entry.js +3 -3
- package/dist/esm/yoo-ion-infinite-scroll.entry.js +3 -3
- package/dist/esm/yoo-ion-item-divider.entry.js +5 -5
- package/dist/esm/yoo-ion-item-options.entry.js +4 -4
- package/dist/esm/yoo-ion-item-sliding.entry.js +5 -5
- package/dist/esm/yoo-ion-item.entry.js +5 -5
- package/dist/esm/yoo-ion-list.entry.js +4 -4
- package/dist/esm/yoo-ion-modal-controller.entry.js +4 -4
- package/dist/esm/yoo-ion-modal.entry.js +9 -9
- package/dist/esm/yoo-ion-refresher.entry.js +4 -4
- package/dist/esm/yoo-ion-scroll.entry.js +4 -4
- package/dist/esm/yoo-ion-slide.entry.js +4 -4
- package/dist/{design-system/yoo-ion-slides-21356ade.js → esm/yoo-ion-slides-027b1bbf.js} +25 -22
- package/dist/esm/yoo-ion-slides.entry.js +6 -6
- package/dist/esm/yoo-ion-toast-controller.entry.js +4 -4
- package/dist/esm/yoo-kanban.entry.js +4 -4
- package/dist/esm/yoo-kpi-card.entry.js +3 -3
- package/dist/esm/yoo-kpi-container.entry.js +4 -4
- package/dist/esm/yoo-kpi-external.entry.js +3 -3
- package/dist/esm/yoo-kpi.entry.js +3 -3
- package/dist/esm/yoo-layout-sections.entry.js +3 -3
- package/dist/esm/yoo-layout-tabs.entry.js +3 -3
- package/dist/esm/yoo-layout-two-columns.entry.js +3 -3
- package/dist/esm/yoo-lesson-detail-card.entry.js +3 -3
- package/dist/esm/yoo-lesson-detail.entry.js +4 -4
- package/dist/esm/yoo-lesson-heading.entry.js +4 -4
- package/dist/esm/yoo-lesson-highscores.entry.js +3 -3
- package/dist/esm/yoo-lesson-question-result.entry.js +3 -3
- package/dist/esm/yoo-line-state.entry.js +1 -1
- package/dist/esm/yoo-links-menu.entry.js +3 -3
- package/dist/esm/yoo-links-preview.entry.js +5 -5
- package/dist/esm/yoo-loader.entry.js +3 -3
- package/dist/esm/yoo-location-info.entry.js +3 -3
- package/dist/esm/yoo-location-map.entry.js +4 -4
- package/dist/esm/yoo-login.entry.js +3 -3
- package/dist/esm/yoo-lottie.entry.js +3 -3
- package/dist/esm/yoo-map-gl.entry.js +4 -4
- package/dist/esm/yoo-map-js.entry.js +5 -5
- package/dist/esm/yoo-map-legend.entry.js +5 -5
- package/dist/esm/yoo-map.entry.js +4 -4
- package/dist/esm/yoo-markdown.entry.js +5 -5
- package/dist/esm/yoo-memo-list-dialog.entry.js +3 -3
- package/dist/esm/yoo-memo-list.entry.js +3 -3
- package/dist/esm/yoo-mention-tag.entry.js +3 -3
- package/dist/esm/yoo-mission-details.entry.js +5 -5
- package/dist/esm/yoo-mission-heading.entry.js +7 -7
- package/dist/esm/yoo-mission-score.entry.js +3 -3
- package/dist/esm/yoo-mission-todo.entry.js +4 -4
- package/dist/esm/yoo-mobile-tabbar-more.entry.js +3 -3
- package/dist/esm/yoo-mobile-tabbar.entry.js +4 -4
- package/dist/esm/yoo-modal.entry.js +4 -4
- package/dist/esm/yoo-navbar.entry.js +4 -4
- package/dist/esm/yoo-numbers-display.entry.js +4 -4
- package/dist/esm/yoo-photo-editor.entry.js +8 -8
- package/dist/esm/yoo-pivot-table.entry.js +8 -8
- package/dist/esm/yoo-podium.entry.js +3 -3
- package/dist/esm/yoo-profile-list.entry.js +3 -3
- package/dist/esm/yoo-profile-summary.entry.js +4 -4
- package/dist/esm/yoo-progress-bar.entry.js +3 -3
- package/dist/esm/yoo-progress-loader.entry.js +3 -3
- package/dist/esm/yoo-progress-recap.entry.js +3 -3
- package/dist/esm/yoo-property-card.entry.js +4 -4
- package/dist/esm/yoo-range.entry.js +5 -5
- package/dist/esm/yoo-rating.entry.js +3 -3
- package/dist/esm/yoo-reset-password.entry.js +3 -3
- package/dist/esm/yoo-result-dialog.entry.js +4 -4
- package/dist/esm/yoo-reveal.entry.js +3 -3
- package/dist/esm/yoo-salesai-formula.entry.js +3 -3
- package/dist/esm/yoo-scandit.entry.js +4 -4
- package/dist/esm/yoo-scratch-card-creator.entry.js +3 -3
- package/dist/esm/yoo-scratch-card.entry.js +5 -5
- package/dist/esm/yoo-section-list.entry.js +3 -3
- package/dist/esm/yoo-segmented-control.entry.js +3 -3
- package/dist/esm/yoo-side-menu-tree.entry.js +3 -3
- package/dist/esm/yoo-side-menu.entry.js +5 -4
- package/dist/esm/yoo-slides-media.entry.js +6 -6
- package/dist/esm/yoo-start-meeting-popup.entry.js +4 -4
- package/dist/esm/yoo-tabs.entry.js +3 -3
- package/dist/esm/yoo-text-sequence.entry.js +4 -4
- package/dist/esm/yoo-text.entry.js +4 -4
- package/dist/esm/yoo-toast.entry.js +5 -5
- package/dist/esm/yoo-tooltip.entry.js +6 -6
- package/dist/esm/yoo-truncate.entry.js +4 -4
- package/dist/esm/yoo-truncated-line.entry.js +3 -3
- package/dist/esm/yoo-user-detail.entry.js +3 -3
- package/dist/esm/yoo-user-profile.entry.js +5 -5
- package/dist/esm/yoo-user-wizard.entry.js +4 -4
- package/dist/esm/yoo-videoplayer-core.entry.js +4 -4
- package/dist/esm/yoo-videoplayer-dailymotion.entry.js +5 -5
- package/dist/esm/yoo-videoplayer-videojs.entry.js +6 -6
- package/dist/esm/yoo-videoplayer-vimeo.entry.js +5 -5
- package/dist/esm/yoo-videoplayer-youtube.entry.js +5 -5
- package/dist/esm/yoo-virtual-item.entry.js +3 -3
- package/dist/esm/yoo-virtual-scroll.entry.js +4 -4
- package/dist/esm/yoo-waitlist-location-result.entry.js +3 -3
- package/dist/esm/yoo-waitlist-location-start.entry.js +3 -3
- package/dist/esm/yoo-walkthrough.entry.js +3 -3
- package/dist/esm/yoo-web-menu.entry.js +4 -4
- package/dist/esm/yoo-webcam.entry.js +3 -3
- package/dist/esm/yoo-welcome-banner.entry.js +4 -4
- package/dist/esm/yoo-widget-chart.entry.js +3 -3
- package/dist/esm/yoo-widget-small-size.entry.js +3 -3
- package/dist/esm/yoo-widget-tab.entry.js +3 -3
- package/dist/esm/yoo-widget-tile.entry.js +3 -3
- package/dist/esm/yoo-workflow-state-dialog.entry.js +3 -3
- package/dist/esm/yoo-workflow-state.entry.js +3 -3
- package/dist/esm/yoo-workflow.entry.js +6 -6
- package/dist/esm/yoo-zebra.entry.js +3 -3
- package/dist/esm/yoo-zoom.entry.js +3 -3
- package/dist/types/components/2.molecules/accordion/types/index.d.ts +2 -0
- package/dist/types/components/form-creator/form-creator-field-selector/form-creator-field-selector.d.ts +5 -0
- package/dist/types/components.d.ts +12 -6
- package/dist/types/feature-operate/mission/announcement-heading/announcement-heading.d.ts +1 -0
- package/dist/types/feature-platform/admin/draw-flow/draw-flow.d.ts +11 -6
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/package.json +1 -1
- package/dist/cjs/index-5c167de6.js +0 -4
- package/dist/cjs/index-afea1559.js +0 -4
- package/dist/design-system/index-38d4fe1e.js +0 -1
- package/dist/design-system/index-fe99ca0c.js +0 -1
- package/dist/design-system/swiper-90a4231e.js +0 -12
- package/dist/esm/index-38d4fe1e.js +0 -1
- package/dist/esm/index-fe99ca0c.js +0 -1
- 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-
|
|
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-
|
|
4
|
-
import { R as MessageInput, M as MessageType, U as IFileUploadAcceptMode } from './index-
|
|
5
|
-
import './index-
|
|
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-
|
|
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.
|
|
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$
|
|
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$
|
|
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
|
-
|
|
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
|
-
|
|
2892
|
-
renderer.setProperty(native, attrName, attrVal);
|
|
2893
|
-
}
|
|
2796
|
+
renderer.setProperty(native, attrName, attrVal);
|
|
2894
2797
|
}
|
|
2895
2798
|
else {
|
|
2896
|
-
|
|
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$
|
|
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
|
|
7210
|
-
renderer.createTextNode(value);
|
|
7175
|
+
return renderer.createText(value);
|
|
7211
7176
|
}
|
|
7212
7177
|
function updateTextNode(renderer, rNode, value) {
|
|
7213
7178
|
ngDevMode && ngDevMode.rendererSetText++;
|
|
7214
|
-
|
|
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
|
-
|
|
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 (
|
|
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 */
|
|
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
|
|
7675
|
-
* This is a utility function that can be used when native nodes were determined
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
8126
|
-
|
|
8127
|
-
|
|
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
|
|
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$
|
|
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
|
|
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
|
-
|
|
12120
|
-
|
|
12121
|
-
|
|
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
|
-
|
|
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
|
-
|
|
12379
|
-
element.removeAttribute(attrName);
|
|
12262
|
+
renderer.removeAttribute(element, attrName);
|
|
12380
12263
|
}
|
|
12381
12264
|
else {
|
|
12382
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
*
|
|
13195
|
+
* Creates the root component view and the root component node.
|
|
13322
13196
|
*
|
|
13323
|
-
*
|
|
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
|
-
* @
|
|
13204
|
+
* @returns Component view created
|
|
13326
13205
|
*/
|
|
13327
|
-
function
|
|
13328
|
-
const
|
|
13329
|
-
|
|
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
|
-
*
|
|
13333
|
-
*
|
|
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
|
|
13341
|
-
|
|
13342
|
-
|
|
13343
|
-
|
|
13344
|
-
|
|
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
|
|
13282
|
+
* Used to enable lifecycle hooks on the root component.
|
|
13348
13283
|
*
|
|
13349
|
-
*
|
|
13350
|
-
*
|
|
13351
|
-
*
|
|
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
|
-
*
|
|
13354
|
-
*
|
|
13355
|
-
*
|
|
13356
|
-
*
|
|
13288
|
+
* Example:
|
|
13289
|
+
*
|
|
13290
|
+
* ```
|
|
13291
|
+
* renderComponent(AppComponent, {hostFeatures: [LifecycleHooksFeature]});
|
|
13292
|
+
* ```
|
|
13357
13293
|
*/
|
|
13358
|
-
function
|
|
13359
|
-
const
|
|
13360
|
-
|
|
13361
|
-
|
|
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
|
-
*
|
|
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
|
-
* @
|
|
13396
|
-
* @globalApi ng
|
|
13333
|
+
* @codeGenApi
|
|
13397
13334
|
*/
|
|
13398
|
-
function
|
|
13399
|
-
|
|
13400
|
-
|
|
13401
|
-
|
|
13402
|
-
|
|
13403
|
-
|
|
13404
|
-
|
|
13405
|
-
|
|
13406
|
-
|
|
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
|
-
|
|
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
|
-
|
|
13406
|
+
mergeHostAttrsAcrossInheritance(inheritanceChain);
|
|
13411
13407
|
}
|
|
13412
13408
|
/**
|
|
13413
|
-
*
|
|
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
|
-
* @
|
|
13422
|
-
*
|
|
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
|
|
13425
|
-
|
|
13426
|
-
|
|
13427
|
-
|
|
13428
|
-
|
|
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
|
-
|
|
13432
|
-
|
|
13433
|
-
|
|
13434
|
-
|
|
13435
|
-
|
|
13436
|
-
|
|
13437
|
-
|
|
13438
|
-
|
|
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
|
-
|
|
13458
|
-
|
|
13459
|
-
|
|
13460
|
-
|
|
13461
|
-
|
|
13462
|
-
|
|
13463
|
-
|
|
13464
|
-
|
|
13465
|
-
|
|
13466
|
-
|
|
13467
|
-
|
|
13468
|
-
|
|
13469
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
13479
|
-
*
|
|
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
|
-
*
|
|
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
|
-
|
|
13495
|
-
|
|
13496
|
-
|
|
13497
|
-
|
|
13498
|
-
|
|
13499
|
-
|
|
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
|
-
*
|
|
13519
|
-
*
|
|
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
|
-
*
|
|
13525
|
-
*
|
|
13526
|
-
|
|
13527
|
-
|
|
13528
|
-
|
|
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
|
-
*
|
|
13532
|
-
*
|
|
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
|
-
*
|
|
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
|
|
13537
|
-
*
|
|
13526
|
+
* @param definition The definition of a child class which inherits from a parent class with its
|
|
13527
|
+
* own definition.
|
|
13538
13528
|
*
|
|
13539
|
-
* @
|
|
13540
|
-
* @globalApi ng
|
|
13529
|
+
* @codeGenApi
|
|
13541
13530
|
*/
|
|
13542
|
-
function
|
|
13543
|
-
|
|
13544
|
-
|
|
13545
|
-
|
|
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
|
-
|
|
13548
|
-
|
|
13549
|
-
|
|
13550
|
-
return [];
|
|
13538
|
+
else {
|
|
13539
|
+
// Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.
|
|
13540
|
+
superDef = superType.ɵdir;
|
|
13551
13541
|
}
|
|
13552
|
-
|
|
13553
|
-
const
|
|
13554
|
-
|
|
13555
|
-
|
|
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 (
|
|
13558
|
-
|
|
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
|
-
*
|
|
13566
|
-
*
|
|
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
|
-
*
|
|
13573
|
-
*
|
|
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
|
-
|
|
13576
|
-
|
|
13577
|
-
if (!
|
|
13578
|
-
|
|
13579
|
-
|
|
13580
|
-
|
|
13581
|
-
|
|
13582
|
-
|
|
13583
|
-
|
|
13584
|
-
|
|
13585
|
-
|
|
13586
|
-
|
|
13587
|
-
|
|
13588
|
-
|
|
13589
|
-
|
|
13590
|
-
|
|
13591
|
-
|
|
13592
|
-
|
|
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
|
|
13582
|
+
return _symbolIterator;
|
|
13597
13583
|
}
|
|
13584
|
+
|
|
13598
13585
|
/**
|
|
13599
|
-
*
|
|
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
|
-
*
|
|
13604
|
-
*
|
|
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
|
|
13607
|
-
|
|
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
|
-
|
|
13635
|
-
|
|
13636
|
-
|
|
13637
|
-
|
|
13638
|
-
|
|
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
|
-
|
|
13649
|
-
|
|
13650
|
-
|
|
13651
|
-
|
|
13652
|
-
|
|
13653
|
-
|
|
13654
|
-
|
|
13655
|
-
|
|
13656
|
-
|
|
13657
|
-
|
|
13658
|
-
|
|
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
|
-
|
|
13726
|
-
|
|
13727
|
-
|
|
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
|
-
|
|
13739
|
-
|
|
13740
|
-
|
|
13741
|
-
|
|
13742
|
-
|
|
13743
|
-
|
|
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
|
-
|
|
13768
|
-
function
|
|
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
|
-
|
|
13783
|
-
|
|
13784
|
-
|
|
13785
|
-
|
|
13786
|
-
|
|
13787
|
-
|
|
13788
|
-
|
|
13789
|
-
|
|
13790
|
-
|
|
13791
|
-
|
|
13792
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
13822
|
-
*
|
|
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
|
|
13825
|
-
|
|
13826
|
-
|
|
13827
|
-
|
|
13828
|
-
|
|
13829
|
-
|
|
13830
|
-
|
|
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
|
-
|
|
13847
|
-
|
|
13848
|
-
|
|
13849
|
-
|
|
13850
|
-
|
|
13851
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
13882
|
-
*
|
|
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
|
-
*
|
|
13885
|
-
*
|
|
13886
|
-
*
|
|
13887
|
-
*
|
|
13888
|
-
*
|
|
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
|
-
* @
|
|
13891
|
-
* @param options Optional parameters which control bootstrapping
|
|
13752
|
+
* @codeGenApi
|
|
13892
13753
|
*/
|
|
13893
|
-
function
|
|
13894
|
-
|
|
13895
|
-
|
|
13896
|
-
|
|
13897
|
-
|
|
13898
|
-
|
|
13899
|
-
|
|
13900
|
-
|
|
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
|
|
13763
|
+
return ɵɵattribute;
|
|
13930
13764
|
}
|
|
13765
|
+
|
|
13931
13766
|
/**
|
|
13932
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
13978
|
-
*
|
|
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
|
|
13981
|
-
|
|
13982
|
-
|
|
13983
|
-
|
|
13984
|
-
|
|
13985
|
-
|
|
13986
|
-
|
|
13987
|
-
|
|
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
|
-
|
|
13992
|
-
|
|
13993
|
-
|
|
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
|
-
|
|
13999
|
-
|
|
14000
|
-
|
|
14001
|
-
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
14032
|
-
const
|
|
14033
|
-
|
|
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
|
-
*
|
|
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
|
|
14053
|
-
|
|
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
|
-
*
|
|
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
|
|
14064
|
-
|
|
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
|
-
*
|
|
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
|
|
14073
|
-
|
|
14074
|
-
|
|
14075
|
-
|
|
14076
|
-
|
|
14077
|
-
|
|
14078
|
-
|
|
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
|
-
*
|
|
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
|
|
14153
|
-
|
|
14154
|
-
let
|
|
14155
|
-
|
|
14156
|
-
|
|
14157
|
-
|
|
14158
|
-
|
|
14159
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
14222
|
-
* parent to child classes by the `ɵɵCopyDefinitionFeature`.
|
|
13873
|
+
* Creates an interpolation binding with 7 expressions.
|
|
14223
13874
|
*/
|
|
14224
|
-
|
|
14225
|
-
|
|
14226
|
-
|
|
14227
|
-
|
|
14228
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
14238
|
-
|
|
14239
|
-
|
|
14240
|
-
|
|
14241
|
-
|
|
14242
|
-
|
|
14243
|
-
|
|
14244
|
-
|
|
14245
|
-
|
|
14246
|
-
|
|
14247
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
14264
|
-
*
|
|
13905
|
+
* ```html
|
|
13906
|
+
* <div attr.title="prefix{{v0}}suffix"></div>
|
|
13907
|
+
* ```
|
|
14265
13908
|
*
|
|
14266
|
-
*
|
|
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
|
-
*
|
|
14298
|
-
*
|
|
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
|
-
|
|
14301
|
-
|
|
14302
|
-
|
|
14303
|
-
|
|
14304
|
-
|
|
14305
|
-
|
|
14306
|
-
|
|
14307
|
-
|
|
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
|
|
13932
|
+
return ɵɵattributeInterpolate1;
|
|
14320
13933
|
}
|
|
14321
|
-
|
|
14322
13934
|
/**
|
|
14323
|
-
* @license
|
|
14324
|
-
* Copyright Google LLC All Rights Reserved.
|
|
14325
13935
|
*
|
|
14326
|
-
*
|
|
14327
|
-
*
|
|
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
|
|
14330
|
-
|
|
14331
|
-
|
|
14332
|
-
|
|
14333
|
-
|
|
14334
|
-
|
|
14335
|
-
|
|
14336
|
-
|
|
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
|
-
*
|
|
14376
|
-
*
|
|
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
|
|
14379
|
-
const
|
|
14380
|
-
const
|
|
14381
|
-
if (
|
|
14382
|
-
|
|
14383
|
-
|
|
14384
|
-
|
|
14385
|
-
|
|
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
|
-
*
|
|
14401
|
-
*
|
|
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
|
-
|
|
14404
|
-
|
|
14405
|
-
|
|
14406
|
-
|
|
14407
|
-
|
|
14408
|
-
|
|
14409
|
-
|
|
14410
|
-
|
|
14411
|
-
|
|
14412
|
-
|
|
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
|
-
*
|
|
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
|
|
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
|
-
* ɵɵ
|
|
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 ɵɵ
|
|
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 =
|
|
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() -
|
|
14093
|
+
storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 5, prefix, i0, i1, i2, i3, suffix);
|
|
14668
14094
|
}
|
|
14669
|
-
return ɵɵ
|
|
14095
|
+
return ɵɵattributeInterpolate5;
|
|
14670
14096
|
}
|
|
14671
14097
|
/**
|
|
14672
14098
|
*
|
|
14673
|
-
* Update an interpolated attribute on an element with
|
|
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
|
|
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
|
-
* ɵɵ
|
|
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
|
-
|
|
15566
|
-
|
|
15567
|
-
|
|
15568
|
-
|
|
15569
|
-
|
|
15570
|
-
|
|
15571
|
-
|
|
15572
|
-
|
|
15573
|
-
|
|
15574
|
-
|
|
15575
|
-
|
|
15576
|
-
|
|
15577
|
-
|
|
15578
|
-
|
|
15579
|
-
|
|
15580
|
-
|
|
15581
|
-
|
|
15582
|
-
|
|
15583
|
-
|
|
15584
|
-
|
|
15585
|
-
|
|
15586
|
-
|
|
15587
|
-
|
|
15588
|
-
|
|
15589
|
-
|
|
15590
|
-
|
|
15591
|
-
|
|
15592
|
-
|
|
15593
|
-
|
|
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,
|
|
15606
|
-
|
|
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,
|
|
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
|
|
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.
|
|
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
|
|
21873
|
+
return context.component;
|
|
22184
21874
|
}
|
|
22185
|
-
|
|
22186
|
-
|
|
22187
|
-
|
|
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
|
-
*
|
|
22191
|
-
*
|
|
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
|
-
|
|
22194
|
-
|
|
22195
|
-
|
|
22196
|
-
|
|
22197
|
-
|
|
22198
|
-
|
|
22199
|
-
|
|
22200
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
22216
|
-
|
|
22217
|
-
|
|
22218
|
-
|
|
22219
|
-
|
|
22220
|
-
|
|
22221
|
-
|
|
22222
|
-
|
|
22223
|
-
|
|
22224
|
-
|
|
22225
|
-
|
|
22226
|
-
|
|
22227
|
-
|
|
22228
|
-
|
|
22229
|
-
|
|
22230
|
-
|
|
22231
|
-
|
|
22232
|
-
|
|
22233
|
-
|
|
22234
|
-
|
|
22235
|
-
|
|
22236
|
-
|
|
22237
|
-
|
|
22238
|
-
|
|
22239
|
-
|
|
22240
|
-
|
|
22241
|
-
|
|
22242
|
-
|
|
22243
|
-
|
|
22244
|
-
|
|
22245
|
-
|
|
22246
|
-
|
|
22247
|
-
|
|
22248
|
-
|
|
22249
|
-
|
|
22250
|
-
|
|
22251
|
-
|
|
22252
|
-
|
|
22253
|
-
|
|
22254
|
-
|
|
22255
|
-
|
|
22256
|
-
|
|
22257
|
-
|
|
22258
|
-
|
|
22259
|
-
|
|
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
|
-
|
|
21976
|
+
providerTokens.push(value);
|
|
22311
21977
|
}
|
|
21978
|
+
return providerTokens;
|
|
22312
21979
|
}
|
|
22313
|
-
const componentFactoryResolver = new ComponentFactoryResolver();
|
|
22314
21980
|
/**
|
|
22315
|
-
*
|
|
22316
|
-
*
|
|
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
|
-
* @
|
|
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
|
|
22322
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
22328
|
-
*
|
|
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
|
-
|
|
22333
|
-
|
|
22334
|
-
|
|
22335
|
-
|
|
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
|
-
|
|
22346
|
-
|
|
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
|
-
|
|
22349
|
-
|
|
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
|
-
*
|
|
22355
|
-
* Copyright Google LLC All Rights Reserved.
|
|
22062
|
+
* Retrieve map of local references.
|
|
22356
22063
|
*
|
|
22357
|
-
*
|
|
22358
|
-
*
|
|
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
|
-
*
|
|
22362
|
-
*
|
|
22363
|
-
*
|
|
22364
|
-
*
|
|
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
|
|
22368
|
-
return
|
|
22093
|
+
function getHostElement(componentOrDirective) {
|
|
22094
|
+
return getLContext(componentOrDirective).native;
|
|
22369
22095
|
}
|
|
22370
|
-
|
|
22371
|
-
|
|
22372
|
-
|
|
22373
|
-
|
|
22374
|
-
|
|
22375
|
-
|
|
22376
|
-
|
|
22377
|
-
|
|
22378
|
-
|
|
22379
|
-
|
|
22380
|
-
|
|
22381
|
-
|
|
22382
|
-
|
|
22383
|
-
|
|
22384
|
-
|
|
22385
|
-
|
|
22386
|
-
|
|
22387
|
-
|
|
22388
|
-
|
|
22389
|
-
|
|
22390
|
-
|
|
22391
|
-
|
|
22392
|
-
|
|
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
|
-
|
|
22429
|
-
|
|
22430
|
-
|
|
22431
|
-
|
|
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
|
-
*
|
|
22180
|
+
* This function should not exist because it is megamorphic and only mostly correct.
|
|
22450
22181
|
*
|
|
22451
|
-
*
|
|
22452
|
-
* @developerPreview
|
|
22182
|
+
* See call site for more info.
|
|
22453
22183
|
*/
|
|
22454
|
-
function
|
|
22455
|
-
|
|
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
|
-
*
|
|
22461
|
-
* Copyright Google LLC All Rights Reserved.
|
|
22188
|
+
* Returns the attached `DebugNode` instance for an element in the DOM.
|
|
22462
22189
|
*
|
|
22463
|
-
*
|
|
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
|
-
|
|
22472
|
-
|
|
22473
|
-
|
|
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
|
-
|
|
22477
|
-
|
|
22478
|
-
|
|
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
|
-
|
|
22490
|
-
|
|
22491
|
-
|
|
22492
|
-
|
|
22493
|
-
|
|
22494
|
-
|
|
22495
|
-
|
|
22496
|
-
|
|
22497
|
-
|
|
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
|
-
*
|
|
22214
|
+
* Retrieve the component `LView` from component/element.
|
|
22510
22215
|
*
|
|
22511
|
-
*
|
|
22512
|
-
*
|
|
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
|
-
* @
|
|
22219
|
+
* @param target DOM element or component instance for which to retrieve the LView.
|
|
22517
22220
|
*/
|
|
22518
|
-
function
|
|
22519
|
-
|
|
22520
|
-
|
|
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$
|
|
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
|
|
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
|
|
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.
|
|
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
|