@internetarchive/elements 1.1.3-l10n-demo.0 → 1.1.3-webdev-8840.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -34
- package/dist/src/elements/ia-button/ia-button.d.ts.map +1 -1
- package/dist/src/elements/ia-button/ia-button.js +2 -2
- package/dist/src/elements/ia-button/ia-button.js.map +1 -1
- package/dist/src/elements/ia-combo-box/ia-combo-box.d.ts.map +1 -1
- package/dist/src/elements/ia-combo-box/ia-combo-box.js +2 -3
- package/dist/src/elements/ia-combo-box/ia-combo-box.js.map +1 -1
- package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.d.ts +2 -2
- package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.d.ts.map +1 -1
- package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.js +5 -4
- package/dist/src/elements/ia-dropdown-search-bar/ia-dropdown-search-bar.js.map +1 -1
- package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.d.ts +4 -4
- package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.d.ts.map +1 -1
- package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.js +8 -5
- package/dist/src/elements/ia-expandable-search-bar/ia-expandable-search-bar.js.map +1 -1
- package/dist/src/elements/ia-image-viewer/ia-image-viewer.d.ts.map +1 -1
- package/dist/src/elements/ia-image-viewer/ia-image-viewer.js +2 -3
- package/dist/src/elements/ia-image-viewer/ia-image-viewer.js.map +1 -1
- package/dist/src/elements/ia-image-viewer/ia-imgview-controls.d.ts.map +1 -1
- package/dist/src/elements/ia-image-viewer/ia-imgview-controls.js +2 -3
- package/dist/src/elements/ia-image-viewer/ia-imgview-controls.js.map +1 -1
- package/dist/src/elements/ia-image-viewer/ia-imgview-slide.d.ts.map +1 -1
- package/dist/src/elements/ia-image-viewer/ia-imgview-slide.js +2 -3
- package/dist/src/elements/ia-image-viewer/ia-imgview-slide.js.map +1 -1
- package/dist/src/elements/ia-otp-form/ia-otp-form.d.ts.map +1 -1
- package/dist/src/elements/ia-otp-form/ia-otp-form.js +2 -3
- package/dist/src/elements/ia-otp-form/ia-otp-form.js.map +1 -1
- package/dist/src/elements/ia-playback-controls/ia-playback-controls.d.ts.map +1 -1
- package/dist/src/elements/ia-playback-controls/ia-playback-controls.js +2 -3
- package/dist/src/elements/ia-playback-controls/ia-playback-controls.js.map +1 -1
- package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts +0 -2
- package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts.map +1 -1
- package/dist/src/elements/ia-radio-player/ia-radio-player.js +3 -9
- package/dist/src/elements/ia-radio-player/ia-radio-player.js.map +1 -1
- package/dist/src/elements/ia-radio-player/ia-search-results-switcher.d.ts.map +1 -1
- package/dist/src/elements/ia-radio-player/ia-search-results-switcher.js +2 -3
- package/dist/src/elements/ia-radio-player/ia-search-results-switcher.js.map +1 -1
- package/dist/src/elements/ia-reviews/assets/delete-icon.svg +8 -0
- package/dist/src/elements/ia-reviews/assets/star-basic.svg +6 -0
- package/dist/src/elements/ia-reviews/assets/star-selected.svg +8 -0
- package/dist/src/elements/ia-reviews/assets/star-unselected.svg +8 -0
- package/dist/src/elements/ia-reviews/ia-review-form.d.ts +99 -0
- package/dist/src/elements/ia-reviews/ia-review-form.d.ts.map +1 -0
- package/dist/src/elements/ia-reviews/ia-review-form.js +646 -0
- package/dist/src/elements/ia-reviews/ia-review-form.js.map +1 -0
- package/dist/src/elements/ia-reviews/ia-review.d.ts +50 -0
- package/dist/src/elements/ia-reviews/ia-review.d.ts.map +1 -0
- package/dist/src/elements/ia-reviews/ia-review.js +337 -0
- package/dist/src/elements/ia-reviews/ia-review.js.map +1 -0
- package/dist/src/elements/ia-reviews/ia-reviews.d.ts +68 -0
- package/dist/src/elements/ia-reviews/ia-reviews.d.ts.map +1 -0
- package/dist/src/elements/ia-reviews/ia-reviews.js +353 -0
- package/dist/src/elements/ia-reviews/ia-reviews.js.map +1 -0
- package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.d.ts +23 -0
- package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.d.ts.map +1 -0
- package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.js +37 -0
- package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.js.map +1 -0
- package/dist/src/elements/ia-reviews/mocks/mock-review-service.d.ts +12 -0
- package/dist/src/elements/ia-reviews/mocks/mock-review-service.d.ts.map +1 -0
- package/dist/src/elements/ia-reviews/mocks/mock-review-service.js +19 -0
- package/dist/src/elements/ia-reviews/mocks/mock-review-service.js.map +1 -0
- package/dist/src/elements/ia-reviews/models.d.ts +38 -0
- package/dist/src/elements/ia-reviews/models.d.ts.map +1 -0
- package/dist/src/elements/ia-reviews/models.js +2 -0
- package/dist/src/elements/ia-reviews/models.js.map +1 -0
- package/dist/src/elements/ia-reviews/review-service.d.ts +53 -0
- package/dist/src/elements/ia-reviews/review-service.d.ts.map +1 -0
- package/dist/src/elements/ia-reviews/review-service.js +97 -0
- package/dist/src/elements/ia-reviews/review-service.js.map +1 -0
- package/dist/src/elements/ia-reviews/utils/collapse-space.d.ts +13 -0
- package/dist/src/elements/ia-reviews/utils/collapse-space.d.ts.map +1 -0
- package/dist/src/elements/ia-reviews/utils/collapse-space.js +19 -0
- package/dist/src/elements/ia-reviews/utils/collapse-space.js.map +1 -0
- package/dist/src/elements/ia-reviews/utils/friendly-truncate.d.ts +14 -0
- package/dist/src/elements/ia-reviews/utils/friendly-truncate.d.ts.map +1 -0
- package/dist/src/elements/ia-reviews/utils/friendly-truncate.js +65 -0
- package/dist/src/elements/ia-reviews/utils/friendly-truncate.js.map +1 -0
- package/dist/src/elements/ia-reviews/utils/link-urls-in-text.d.ts +9 -0
- package/dist/src/elements/ia-reviews/utils/link-urls-in-text.d.ts.map +1 -0
- package/dist/src/elements/ia-reviews/utils/link-urls-in-text.js +40 -0
- package/dist/src/elements/ia-reviews/utils/link-urls-in-text.js.map +1 -0
- package/dist/src/elements/ia-reviews/utils/sanitize-review-body.d.ts +9 -0
- package/dist/src/elements/ia-reviews/utils/sanitize-review-body.d.ts.map +1 -0
- package/dist/src/elements/ia-reviews/utils/sanitize-review-body.js +29 -0
- package/dist/src/elements/ia-reviews/utils/sanitize-review-body.js.map +1 -0
- package/dist/src/elements/ia-reviews/utils/truncate-screenname.d.ts +13 -0
- package/dist/src/elements/ia-reviews/utils/truncate-screenname.d.ts.map +1 -0
- package/dist/src/elements/ia-reviews/utils/truncate-screenname.js +19 -0
- package/dist/src/elements/ia-reviews/utils/truncate-screenname.js.map +1 -0
- package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.d.ts +2 -2
- package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.d.ts.map +1 -1
- package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.js +5 -4
- package/dist/src/elements/ia-scrubber-bar/ia-scrubber-bar.js.map +1 -1
- package/dist/src/elements/ia-status-indicator/ia-status-indicator.d.ts +3 -3
- package/dist/src/elements/ia-status-indicator/ia-status-indicator.d.ts.map +1 -1
- package/dist/src/elements/ia-status-indicator/ia-status-indicator.js +12 -7
- package/dist/src/elements/ia-status-indicator/ia-status-indicator.js.map +1 -1
- package/dist/src/elements/ia-transcript-view/ia-transcript-entry.d.ts.map +1 -1
- package/dist/src/elements/ia-transcript-view/ia-transcript-entry.js +0 -4
- package/dist/src/elements/ia-transcript-view/ia-transcript-entry.js.map +1 -1
- package/dist/src/elements/ia-transcript-view/ia-transcript-view.d.ts.map +1 -1
- package/dist/src/elements/ia-transcript-view/ia-transcript-view.js +2 -3
- package/dist/src/elements/ia-transcript-view/ia-transcript-view.js.map +1 -1
- package/dist/src/elements/index.d.ts +5 -55
- package/dist/src/elements/index.d.ts.map +1 -1
- package/dist/src/elements/index.js +5 -55
- package/dist/src/elements/index.js.map +1 -1
- package/package.json +11 -38
- package/dist/src/elements/ia-donation-form/analytics.d.ts +0 -12
- package/dist/src/elements/ia-donation-form/analytics.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/analytics.js +0 -2
- package/dist/src/elements/ia-donation-form/analytics.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.d.ts +0 -79
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.js +0 -2
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager.d.ts +0 -73
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager.js +0 -126
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/hosting-environment.d.ts +0 -10
- package/dist/src/elements/ia-donation-form/braintree/hosting-environment.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/hosting-environment.js +0 -9
- package/dist/src/elements/ia-donation-form/braintree/hosting-environment.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-clients.d.ts +0 -47
- package/dist/src/elements/ia-donation-form/braintree/payment-clients.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-clients.js +0 -104
- package/dist/src/elements/ia-donation-form/braintree/payment-clients.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.d.ts +0 -11
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.js +0 -2
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts +0 -20
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.js +0 -2
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.d.ts +0 -21
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.js +0 -83
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.d.ts +0 -11
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.js +0 -13
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.d.ts +0 -27
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.js +0 -67
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.d.ts +0 -18
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.js +0 -2
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.d.ts +0 -41
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.js +0 -95
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.d.ts +0 -14
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.js +0 -9
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.d.ts +0 -40
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.js +0 -58
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.d.ts +0 -8
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.js +0 -2
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.d.ts +0 -19
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.js +0 -45
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.d.ts +0 -57
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.js +0 -44
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.d.ts +0 -14
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.js +0 -2
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.d.ts +0 -27
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.js +0 -44
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.d.ts +0 -8
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.js +0 -2
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.d.ts +0 -40
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.js +0 -65
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.d.ts +0 -25
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.js +0 -42
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.d.ts +0 -18
- package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.js +0 -2
- package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.js.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers.d.ts +0 -42
- package/dist/src/elements/ia-donation-form/braintree/payment-providers.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/braintree/payment-providers.js +0 -99
- package/dist/src/elements/ia-donation-form/braintree/payment-providers.js.map +0 -1
- package/dist/src/elements/ia-donation-form/currency-validator.d.ts +0 -16
- package/dist/src/elements/ia-donation-form/currency-validator.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/currency-validator.js +0 -37
- package/dist/src/elements/ia-donation-form/currency-validator.js.map +0 -1
- package/dist/src/elements/ia-donation-form/donation-form-error.d.ts +0 -5
- package/dist/src/elements/ia-donation-form/donation-form-error.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/donation-form-error.js +0 -8
- package/dist/src/elements/ia-donation-form/donation-form-error.js.map +0 -1
- package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.d.ts +0 -118
- package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.js +0 -194
- package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.js.map +0 -1
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.d.ts +0 -24
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.js +0 -70
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.js.map +0 -1
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.d.ts +0 -44
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.js +0 -110
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.js.map +0 -1
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.d.ts +0 -24
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.js +0 -74
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.js.map +0 -1
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.d.ts +0 -47
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.js +0 -204
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.js.map +0 -1
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.d.ts +0 -30
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.js +0 -77
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.js.map +0 -1
- package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.d.ts +0 -80
- package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.js +0 -72
- package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.js.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.d.ts +0 -2
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.js +0 -2
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.js.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.d.ts +0 -3
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.js +0 -254
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.js.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.d.ts +0 -70
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.js +0 -497
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.js.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.d.ts +0 -26
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.js +0 -163
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.js.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.d.ts +0 -118
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.js +0 -772
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.js.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.d.ts +0 -31
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.js +0 -93
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.js.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.d.ts +0 -33
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.js +0 -378
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.js.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.d.ts +0 -21
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.js +0 -182
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-section.js.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.d.ts +0 -11
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.js +0 -60
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.js.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.d.ts +0 -10
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.js +0 -76
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.js.map +0 -1
- package/dist/src/elements/ia-donation-form/ia-donation-form-controller.d.ts +0 -114
- package/dist/src/elements/ia-donation-form/ia-donation-form-controller.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/ia-donation-form-controller.js +0 -586
- package/dist/src/elements/ia-donation-form/ia-donation-form-controller.js.map +0 -1
- package/dist/src/elements/ia-donation-form/ia-donation-form.d.ts +0 -94
- package/dist/src/elements/ia-donation-form/ia-donation-form.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/ia-donation-form.js +0 -516
- package/dist/src/elements/ia-donation-form/ia-donation-form.js.map +0 -1
- package/dist/src/elements/ia-donation-form/icons/apple-pay.svg +0 -22
- package/dist/src/elements/ia-donation-form/icons/calendar.svg +0 -15
- package/dist/src/elements/ia-donation-form/icons/credit-card.svg +0 -15
- package/dist/src/elements/ia-donation-form/icons/email.svg +0 -3
- package/dist/src/elements/ia-donation-form/icons/google-pay.svg +0 -38
- package/dist/src/elements/ia-donation-form/icons/locale-pin.svg +0 -7
- package/dist/src/elements/ia-donation-form/icons/lock.svg +0 -6
- package/dist/src/elements/ia-donation-form/icons/paypal.svg +0 -39
- package/dist/src/elements/ia-donation-form/icons/user.svg +0 -6
- package/dist/src/elements/ia-donation-form/icons/venmo.svg +0 -9
- package/dist/src/elements/ia-donation-form/icons.d.ts +0 -12
- package/dist/src/elements/ia-donation-form/icons.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/icons.js +0 -33
- package/dist/src/elements/ia-donation-form/icons.js.map +0 -1
- package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.d.ts +0 -27
- package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.js +0 -196
- package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.js.map +0 -1
- package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.d.ts +0 -7
- package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.js +0 -64
- package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.js.map +0 -1
- package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.d.ts +0 -28
- package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.js +0 -314
- package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.js.map +0 -1
- package/dist/src/elements/ia-donation-form/models/donation-payment-info.d.ts +0 -34
- package/dist/src/elements/ia-donation-form/models/donation-payment-info.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/models/donation-payment-info.js +0 -54
- package/dist/src/elements/ia-donation-form/models/donation-payment-info.js.map +0 -1
- package/dist/src/elements/ia-donation-form/models/donation-request.d.ts +0 -62
- package/dist/src/elements/ia-donation-form/models/donation-request.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/models/donation-request.js +0 -35
- package/dist/src/elements/ia-donation-form/models/donation-request.js.map +0 -1
- package/dist/src/elements/ia-donation-form/models/donation-response.d.ts +0 -67
- package/dist/src/elements/ia-donation-form/models/donation-response.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/models/donation-response.js +0 -57
- package/dist/src/elements/ia-donation-form/models/donation-response.js.map +0 -1
- package/dist/src/elements/ia-donation-form/models/donation-type.d.ts +0 -8
- package/dist/src/elements/ia-donation-form/models/donation-type.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/models/donation-type.js +0 -7
- package/dist/src/elements/ia-donation-form/models/donation-type.js.map +0 -1
- package/dist/src/elements/ia-donation-form/models/donor-contact-info.d.ts +0 -38
- package/dist/src/elements/ia-donation-form/models/donor-contact-info.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/models/donor-contact-info.js +0 -27
- package/dist/src/elements/ia-donation-form/models/donor-contact-info.js.map +0 -1
- package/dist/src/elements/ia-donation-form/models/payment-provider.d.ts +0 -10
- package/dist/src/elements/ia-donation-form/models/payment-provider.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/models/payment-provider.js +0 -9
- package/dist/src/elements/ia-donation-form/models/payment-provider.js.map +0 -1
- package/dist/src/elements/ia-donation-form/recaptcha-manager.d.ts +0 -36
- package/dist/src/elements/ia-donation-form/recaptcha-manager.d.ts.map +0 -1
- package/dist/src/elements/ia-donation-form/recaptcha-manager.js +0 -76
- package/dist/src/elements/ia-donation-form/recaptcha-manager.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-audio.js +0 -28
- package/dist/src/elements/ia-topnav/assets/img/icon-audio.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-close.js +0 -20
- package/dist/src/elements/ia-topnav/assets/img/icon-close.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js +0 -19
- package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-donate.js +0 -18
- package/dist/src/elements/ia-topnav/assets/img/icon-donate.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js +0 -19
- package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js +0 -30
- package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-images.js +0 -19
- package/dist/src/elements/ia-topnav/assets/img/icon-images.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-search.js +0 -19
- package/dist/src/elements/ia-topnav/assets/img/icon-search.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-software.js +0 -18
- package/dist/src/elements/ia-topnav/assets/img/icon-software.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-texts.js +0 -18
- package/dist/src/elements/ia-topnav/assets/img/icon-texts.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js +0 -18
- package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-upload.js +0 -21
- package/dist/src/elements/ia-topnav/assets/img/icon-upload.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-user.js +0 -19
- package/dist/src/elements/ia-topnav/assets/img/icon-user.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-video.js +0 -19
- package/dist/src/elements/ia-topnav/assets/img/icon-video.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon-web.js +0 -19
- package/dist/src/elements/ia-topnav/assets/img/icon-web.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon.d.ts +0 -6
- package/dist/src/elements/ia-topnav/assets/img/icon.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icon.js +0 -17
- package/dist/src/elements/ia-topnav/assets/img/icon.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icons.d.ts +0 -19
- package/dist/src/elements/ia-topnav/assets/img/icons.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/icons.js +0 -33
- package/dist/src/elements/ia-topnav/assets/img/icons.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js +0 -21
- package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts +0 -3
- package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js +0 -13
- package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js.map +0 -1
- package/dist/src/elements/ia-topnav/data/menus.d.ts +0 -17
- package/dist/src/elements/ia-topnav/data/menus.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/data/menus.js +0 -756
- package/dist/src/elements/ia-topnav/data/menus.js.map +0 -1
- package/dist/src/elements/ia-topnav/dropdown-menu.d.ts +0 -21
- package/dist/src/elements/ia-topnav/dropdown-menu.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/dropdown-menu.js +0 -309
- package/dist/src/elements/ia-topnav/dropdown-menu.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts +0 -11
- package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js +0 -89
- package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts +0 -6
- package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js +0 -47
- package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts +0 -20
- package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-login-button.js +0 -183
- package/dist/src/elements/ia-topnav/ia-topnav-login-button.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts +0 -31
- package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-media-button.js +0 -287
- package/dist/src/elements/ia-topnav/ia-topnav-media-button.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts +0 -21
- package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js +0 -214
- package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts +0 -16
- package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js +0 -221
- package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts +0 -20
- package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js +0 -285
- package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts +0 -12
- package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js +0 -65
- package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts +0 -53
- package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js +0 -653
- package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts +0 -12
- package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js +0 -128
- package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts +0 -4
- package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js +0 -10
- package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts +0 -7
- package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js +0 -39
- package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts +0 -21
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js +0 -278
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts +0 -20
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js +0 -131
- package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav.d.ts +0 -88
- package/dist/src/elements/ia-topnav/ia-topnav.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/ia-topnav.js +0 -443
- package/dist/src/elements/ia-topnav/ia-topnav.js.map +0 -1
- package/dist/src/elements/ia-topnav/lib/helpers.d.ts +0 -13
- package/dist/src/elements/ia-topnav/lib/helpers.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/lib/helpers.js +0 -24
- package/dist/src/elements/ia-topnav/lib/helpers.js.map +0 -1
- package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts +0 -46
- package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js +0 -136
- package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js.map +0 -1
- package/dist/src/elements/ia-topnav/models.d.ts +0 -65
- package/dist/src/elements/ia-topnav/models.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/models.js +0 -10
- package/dist/src/elements/ia-topnav/models.js.map +0 -1
- package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts +0 -2
- package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/subnav-list-styles.js +0 -49
- package/dist/src/elements/ia-topnav/subnav-list-styles.js.map +0 -1
- package/dist/src/elements/ia-topnav/tracked-element.d.ts +0 -6
- package/dist/src/elements/ia-topnav/tracked-element.d.ts.map +0 -1
- package/dist/src/elements/ia-topnav/tracked-element.js +0 -29
- package/dist/src/elements/ia-topnav/tracked-element.js.map +0 -1
- package/dist/src/locales/es.d.ts +0 -215
- package/dist/src/locales/es.d.ts.map +0 -1
- package/dist/src/locales/es.js +0 -247
- package/dist/src/locales/es.js.map +0 -1
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { msg } from '@lit/localize';
|
|
2
|
+
import { IaFetchHandler } from '@internetarchive/fetch-handler';
|
|
3
|
+
/** The endpoints the legacy details page serves */
|
|
4
|
+
const LEGACY_SUBMIT_PATH = '/write-review.php';
|
|
5
|
+
const LEGACY_DELETE_PATH = '/edit-reviews.php';
|
|
6
|
+
/**
|
|
7
|
+
* Talks to the archive.org review endpoints.
|
|
8
|
+
*
|
|
9
|
+
* The CSRF token is left to the fetch handler: both operations opt into its automatic
|
|
10
|
+
* `X-CSRF-Token` header, which resolves the token per request.
|
|
11
|
+
*/
|
|
12
|
+
export class ReviewService {
|
|
13
|
+
constructor(options) {
|
|
14
|
+
this.fetchHandler = options?.fetchHandler ?? new IaFetchHandler();
|
|
15
|
+
this.baseHost = options?.baseHost ?? 'https://archive.org';
|
|
16
|
+
this.submitPath = options?.submitPath ?? LEGACY_SUBMIT_PATH;
|
|
17
|
+
this.deletePath = options?.deletePath ?? LEGACY_DELETE_PATH;
|
|
18
|
+
this.deleteMethod = options?.deleteMethod ?? 'POST';
|
|
19
|
+
}
|
|
20
|
+
/** @inheritdoc */
|
|
21
|
+
async submitReview(submission) {
|
|
22
|
+
const body = new URLSearchParams();
|
|
23
|
+
body.append('identifier', submission.identifier);
|
|
24
|
+
body.append('field_reviewtitle', submission.title);
|
|
25
|
+
body.append('field_reviewbody', submission.body);
|
|
26
|
+
body.append('field_stars', submission.stars ?? '0');
|
|
27
|
+
if (submission.recaptchaToken) {
|
|
28
|
+
body.append('g-recaptcha-response', submission.recaptchaToken);
|
|
29
|
+
}
|
|
30
|
+
// tells write-review.php the post came from the form rather than a direct visit
|
|
31
|
+
body.append('submitter', 'review-form');
|
|
32
|
+
return this.request(`${this.baseHost}${this.submitPath}`, {
|
|
33
|
+
method: 'POST',
|
|
34
|
+
body,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/** @inheritdoc */
|
|
38
|
+
async deleteReview(deletion) {
|
|
39
|
+
// Screennames can contain spaces and ampersands, so the parameters are
|
|
40
|
+
// encoded rather than interpolated straight into the query string.
|
|
41
|
+
const params = new URLSearchParams();
|
|
42
|
+
params.append('identifier', deletion.identifier);
|
|
43
|
+
params.append('deleteReviewer', deletion.reviewer);
|
|
44
|
+
if (deletion.reviewerItemname) {
|
|
45
|
+
params.append('deleteReviewerItemname', deletion.reviewerItemname);
|
|
46
|
+
}
|
|
47
|
+
const url = `${this.baseHost}${this.deletePath}?${params.toString()}`;
|
|
48
|
+
return this.request(url, { method: this.deleteMethod });
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Sends a credentialed request and reads the `{ success, error }` result out of it.
|
|
52
|
+
*/
|
|
53
|
+
async request(url, init) {
|
|
54
|
+
try {
|
|
55
|
+
const response = await this.fetchHandler.fetch(url, {
|
|
56
|
+
requestInit: {
|
|
57
|
+
method: init.method,
|
|
58
|
+
body: init.body,
|
|
59
|
+
credentials: 'include',
|
|
60
|
+
},
|
|
61
|
+
includeCsrfToken: true,
|
|
62
|
+
});
|
|
63
|
+
return await this.parseResult(response);
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
console.error('Review request failed', e);
|
|
67
|
+
return { success: false, error: this.genericError };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Reads a result out of a response.
|
|
72
|
+
*
|
|
73
|
+
* The status decides the outcome, so a rejected request can't read as a success. fetch
|
|
74
|
+
* resolves on a 4xx or 5xx, so that check can't be left to the catch. A JSON body supplies
|
|
75
|
+
* the patron-facing message; the legacy delete endpoint answers with an HTML page instead,
|
|
76
|
+
* and there the status is all there is to go on.
|
|
77
|
+
*/
|
|
78
|
+
async parseResult(response) {
|
|
79
|
+
let payload;
|
|
80
|
+
try {
|
|
81
|
+
payload = (await response.json());
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
payload = undefined;
|
|
85
|
+
}
|
|
86
|
+
if (!response.ok) {
|
|
87
|
+
return { success: false, error: payload?.error ?? this.genericError };
|
|
88
|
+
}
|
|
89
|
+
if (!payload || payload.success)
|
|
90
|
+
return { success: true };
|
|
91
|
+
return { success: false, error: payload.error ?? this.genericError };
|
|
92
|
+
}
|
|
93
|
+
get genericError() {
|
|
94
|
+
return msg('Sorry, something went wrong. Please try again later.');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=review-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-service.js","sourceRoot":"","sources":["../../../../src/elements/ia-reviews/review-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { msg } from '@lit/localize';\nimport { IaFetchHandler } from '@internetarchive/fetch-handler';\nimport type { FetchHandlerInterface } from '@internetarchive/fetch-handler';\n\nimport type {\n ReviewDeletion,\n ReviewServiceInterface,\n ReviewServiceResult,\n ReviewSubmission,\n} from './models';\n\nexport type ReviewServiceOptions = {\n /**\n * Handles retries and the CSRF token.\n *\n * Writing and deleting need a handler built with a `getCsrfToken` source, since that is what\n * supplies the `X-CSRF-Token` header these endpoints require. The token resolves per request,\n * so it doesn't have to be known when the service is constructed.\n */\n fetchHandler?: FetchHandlerInterface;\n\n /** Origin for the endpoints. Empty string keeps requests same-origin. */\n baseHost?: string;\n\n /** Path a review submission POSTs to */\n submitPath?: string;\n\n /** Path a review deletion goes to */\n deletePath?: string;\n\n /** Verb the delete endpoint expects */\n deleteMethod?: 'POST' | 'DELETE';\n};\n\n/** The endpoints the legacy details page serves */\nconst LEGACY_SUBMIT_PATH = '/write-review.php';\nconst LEGACY_DELETE_PATH = '/edit-reviews.php';\n\n/**\n * Talks to the archive.org review endpoints.\n *\n * The CSRF token is left to the fetch handler: both operations opt into its automatic\n * `X-CSRF-Token` header, which resolves the token per request.\n */\nexport class ReviewService implements ReviewServiceInterface {\n private fetchHandler: FetchHandlerInterface;\n\n private baseHost: string;\n\n private submitPath: string;\n\n private deletePath: string;\n\n private deleteMethod: 'POST' | 'DELETE';\n\n constructor(options?: ReviewServiceOptions) {\n this.fetchHandler = options?.fetchHandler ?? new IaFetchHandler();\n this.baseHost = options?.baseHost ?? 'https://archive.org';\n this.submitPath = options?.submitPath ?? LEGACY_SUBMIT_PATH;\n this.deletePath = options?.deletePath ?? LEGACY_DELETE_PATH;\n this.deleteMethod = options?.deleteMethod ?? 'POST';\n }\n\n /** @inheritdoc */\n async submitReview(\n submission: ReviewSubmission,\n ): Promise<ReviewServiceResult> {\n const body = new URLSearchParams();\n body.append('identifier', submission.identifier);\n body.append('field_reviewtitle', submission.title);\n body.append('field_reviewbody', submission.body);\n body.append('field_stars', submission.stars ?? '0');\n\n if (submission.recaptchaToken) {\n body.append('g-recaptcha-response', submission.recaptchaToken);\n }\n\n // tells write-review.php the post came from the form rather than a direct visit\n body.append('submitter', 'review-form');\n\n return this.request(`${this.baseHost}${this.submitPath}`, {\n method: 'POST',\n body,\n });\n }\n\n /** @inheritdoc */\n async deleteReview(deletion: ReviewDeletion): Promise<ReviewServiceResult> {\n // Screennames can contain spaces and ampersands, so the parameters are\n // encoded rather than interpolated straight into the query string.\n const params = new URLSearchParams();\n params.append('identifier', deletion.identifier);\n params.append('deleteReviewer', deletion.reviewer);\n if (deletion.reviewerItemname) {\n params.append('deleteReviewerItemname', deletion.reviewerItemname);\n }\n\n const url = `${this.baseHost}${this.deletePath}?${params.toString()}`;\n\n return this.request(url, { method: this.deleteMethod });\n }\n\n /**\n * Sends a credentialed request and reads the `{ success, error }` result out of it.\n */\n private async request(\n url: string,\n init: { method: string; body?: BodyInit },\n ): Promise<ReviewServiceResult> {\n try {\n const response = await this.fetchHandler.fetch(url, {\n requestInit: {\n method: init.method,\n body: init.body,\n credentials: 'include',\n },\n includeCsrfToken: true,\n });\n\n return await this.parseResult(response);\n } catch (e) {\n console.error('Review request failed', e);\n return { success: false, error: this.genericError };\n }\n }\n\n /**\n * Reads a result out of a response.\n *\n * The status decides the outcome, so a rejected request can't read as a success. fetch\n * resolves on a 4xx or 5xx, so that check can't be left to the catch. A JSON body supplies\n * the patron-facing message; the legacy delete endpoint answers with an HTML page instead,\n * and there the status is all there is to go on.\n */\n private async parseResult(response: Response): Promise<ReviewServiceResult> {\n let payload: ReviewServiceResult | undefined;\n try {\n payload = (await response.json()) as ReviewServiceResult;\n } catch {\n payload = undefined;\n }\n\n if (!response.ok) {\n return { success: false, error: payload?.error ?? this.genericError };\n }\n\n if (!payload || payload.success) return { success: true };\n\n return { success: false, error: payload.error ?? this.genericError };\n }\n\n private get genericError(): string {\n return msg('Sorry, something went wrong. Please try again later.');\n }\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trims the string, collapses runs of spaces and tabs down to one space, and
|
|
3
|
+
* turns runs of newlines and existing `<br>` tags into a single `<br />`.
|
|
4
|
+
*
|
|
5
|
+
* The whitespace patterns list only real whitespace. A pipe written into a
|
|
6
|
+
* character class here would be treated as whitespace too, and quietly
|
|
7
|
+
* disappear from any review body containing one.
|
|
8
|
+
*
|
|
9
|
+
* @param {string} str The string to transform
|
|
10
|
+
* @returns {string} The string with space collapsed
|
|
11
|
+
*/
|
|
12
|
+
export default function collapseSpace(str: string): string;
|
|
13
|
+
//# sourceMappingURL=collapse-space.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collapse-space.d.ts","sourceRoot":"","sources":["../../../../../src/elements/ia-reviews/utils/collapse-space.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMzD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trims the string, collapses runs of spaces and tabs down to one space, and
|
|
3
|
+
* turns runs of newlines and existing `<br>` tags into a single `<br />`.
|
|
4
|
+
*
|
|
5
|
+
* The whitespace patterns list only real whitespace. A pipe written into a
|
|
6
|
+
* character class here would be treated as whitespace too, and quietly
|
|
7
|
+
* disappear from any review body containing one.
|
|
8
|
+
*
|
|
9
|
+
* @param {string} str The string to transform
|
|
10
|
+
* @returns {string} The string with space collapsed
|
|
11
|
+
*/
|
|
12
|
+
export default function collapseSpace(str) {
|
|
13
|
+
return str
|
|
14
|
+
.trim()
|
|
15
|
+
.replace(/[ \t]+/g, ' ')
|
|
16
|
+
.replace(/(?:\r?\n)+/g, '<br />')
|
|
17
|
+
.replace(/(<br[^>]*>(<\/br>)?)+/g, '<br />');
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=collapse-space.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collapse-space.js","sourceRoot":"","sources":["../../../../../src/elements/ia-reviews/utils/collapse-space.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,GAAW;IAC/C,OAAO,GAAG;SACP,IAAI,EAAE;SACN,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC;SAChC,OAAO,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC","sourcesContent":["/**\n * Trims the string, collapses runs of spaces and tabs down to one space, and\n * turns runs of newlines and existing `<br>` tags into a single `<br />`.\n *\n * The whitespace patterns list only real whitespace. A pipe written into a\n * character class here would be treated as whitespace too, and quietly\n * disappear from any review body containing one.\n *\n * @param {string} str The string to transform\n * @returns {string} The string with space collapsed\n */\nexport default function collapseSpace(str: string): string {\n return str\n .trim()\n .replace(/[ \\t]+/g, ' ')\n .replace(/(?:\\r?\\n)+/g, '<br />')\n .replace(/(<br[^>]*>(<\\/br>)?)+/g, '<br />');\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Truncates a string, given the original string and a max length.
|
|
3
|
+
* Continues up to 20 chars after the limit to find the last space,
|
|
4
|
+
* if possible.
|
|
5
|
+
*
|
|
6
|
+
* Avoids breaking up anchor tags.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} str The original string
|
|
9
|
+
* @param {number} maxLength The max length to truncate to
|
|
10
|
+
* @param {boolean} useSpaceTruncation Whether to truncate at the last space
|
|
11
|
+
* @returns {string} The truncated field
|
|
12
|
+
*/
|
|
13
|
+
export default function friendlyTruncate(str: string, maxLength?: number, useSpaceTruncation?: boolean): string;
|
|
14
|
+
//# sourceMappingURL=friendly-truncate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"friendly-truncate.d.ts","sourceRoot":"","sources":["../../../../../src/elements/ia-reviews/utils/friendly-truncate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,MAAY,EACvB,kBAAkB,GAAE,OAAc,GACjC,MAAM,CAoBR"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Truncates a string, given the original string and a max length.
|
|
3
|
+
* Continues up to 20 chars after the limit to find the last space,
|
|
4
|
+
* if possible.
|
|
5
|
+
*
|
|
6
|
+
* Avoids breaking up anchor tags.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} str The original string
|
|
9
|
+
* @param {number} maxLength The max length to truncate to
|
|
10
|
+
* @param {boolean} useSpaceTruncation Whether to truncate at the last space
|
|
11
|
+
* @returns {string} The truncated field
|
|
12
|
+
*/
|
|
13
|
+
export default function friendlyTruncate(str, maxLength = 100, useSpaceTruncation = true) {
|
|
14
|
+
if (str.length < maxLength)
|
|
15
|
+
return str;
|
|
16
|
+
let cutoffPoint = maxLength;
|
|
17
|
+
if (useSpaceTruncation) {
|
|
18
|
+
const lastSpace = str.indexOf(' ', maxLength);
|
|
19
|
+
const safeDistanceFromMax = lastSpace - maxLength <= 20;
|
|
20
|
+
// No need to truncate if the safe last space is at the end of the string
|
|
21
|
+
if (safeDistanceFromMax && lastSpace === str.length - 1) {
|
|
22
|
+
return str;
|
|
23
|
+
}
|
|
24
|
+
if (lastSpace !== -1 && safeDistanceFromMax) {
|
|
25
|
+
cutoffPoint = lastSpace;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return truncateTagSafe(str, cutoffPoint, maxLength);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Utility function to prevent truncation in the middle of
|
|
32
|
+
* an anchor tag.
|
|
33
|
+
*
|
|
34
|
+
* @param {string} str The string to truncate
|
|
35
|
+
* @param {number} cutoffPoint The index currently selsected for truncation
|
|
36
|
+
* @param {number} maxLength The max length for the string
|
|
37
|
+
* @returns {string} The string, truncated either earlier or later to preserve anchor tags
|
|
38
|
+
*/
|
|
39
|
+
function truncateTagSafe(str, cutoffPoint, maxLength) {
|
|
40
|
+
let truncatedString = str.slice(0, cutoffPoint);
|
|
41
|
+
const openingAnchorTags = truncatedString.match(/<a/gi);
|
|
42
|
+
if (openingAnchorTags) {
|
|
43
|
+
const closingAnchorTags = truncatedString.match(/<\/a/gi);
|
|
44
|
+
if (!closingAnchorTags ||
|
|
45
|
+
closingAnchorTags.length < openingAnchorTags.length) {
|
|
46
|
+
const firstClosingTag = str.indexOf('</a>', cutoffPoint);
|
|
47
|
+
const safeDistanceFromMax = firstClosingTag - maxLength <= 20;
|
|
48
|
+
// No need to truncate if closing tag is at the end of the string
|
|
49
|
+
if (safeDistanceFromMax && str.length === firstClosingTag + 4) {
|
|
50
|
+
return str;
|
|
51
|
+
}
|
|
52
|
+
// Truncate at end of first closing tag if possible
|
|
53
|
+
if (firstClosingTag !== -1 && safeDistanceFromMax) {
|
|
54
|
+
truncatedString = str.slice(0, firstClosingTag + 4);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
// Otherwise, truncate before last opening tag
|
|
58
|
+
const lastOpeningTag = truncatedString.lastIndexOf('<a');
|
|
59
|
+
truncatedString = str.slice(0, lastOpeningTag);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return truncatedString.concat('...');
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=friendly-truncate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"friendly-truncate.js","sourceRoot":"","sources":["../../../../../src/elements/ia-reviews/utils/friendly-truncate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,GAAW,EACX,YAAoB,GAAG,EACvB,qBAA8B,IAAI;IAElC,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS;QAAE,OAAO,GAAG,CAAC;IAEvC,IAAI,WAAW,GAAG,SAAS,CAAC;IAE5B,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9C,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;QAExD,yEAAyE;QACzE,IAAI,mBAAmB,IAAI,SAAS,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC;YAC5C,WAAW,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,eAAe,CACtB,GAAW,EACX,WAAmB,EACnB,SAAiB;IAEjB,IAAI,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAEhD,MAAM,iBAAiB,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,iBAAiB,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE1D,IACE,CAAC,iBAAiB;YAClB,iBAAiB,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAM,EACnD,CAAC;YACD,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACzD,MAAM,mBAAmB,GAAG,eAAe,GAAG,SAAS,IAAI,EAAE,CAAC;YAE9D,iEAAiE;YACjE,IAAI,mBAAmB,IAAI,GAAG,CAAC,MAAM,KAAK,eAAe,GAAG,CAAC,EAAE,CAAC;gBAC9D,OAAO,GAAG,CAAC;YACb,CAAC;YAED,mDAAmD;YACnD,IAAI,eAAe,KAAK,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC;gBAClD,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,8CAA8C;gBAC9C,MAAM,cAAc,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACzD,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC","sourcesContent":["/**\n * Truncates a string, given the original string and a max length.\n * Continues up to 20 chars after the limit to find the last space,\n * if possible.\n *\n * Avoids breaking up anchor tags.\n *\n * @param {string} str The original string\n * @param {number} maxLength The max length to truncate to\n * @param {boolean} useSpaceTruncation Whether to truncate at the last space\n * @returns {string} The truncated field\n */\nexport default function friendlyTruncate(\n str: string,\n maxLength: number = 100,\n useSpaceTruncation: boolean = true,\n): string {\n if (str.length < maxLength) return str;\n\n let cutoffPoint = maxLength;\n\n if (useSpaceTruncation) {\n const lastSpace = str.indexOf(' ', maxLength);\n const safeDistanceFromMax = lastSpace - maxLength <= 20;\n\n // No need to truncate if the safe last space is at the end of the string\n if (safeDistanceFromMax && lastSpace === str.length - 1) {\n return str;\n }\n\n if (lastSpace !== -1 && safeDistanceFromMax) {\n cutoffPoint = lastSpace;\n }\n }\n\n return truncateTagSafe(str, cutoffPoint, maxLength);\n}\n\n/**\n * Utility function to prevent truncation in the middle of\n * an anchor tag.\n *\n * @param {string} str The string to truncate\n * @param {number} cutoffPoint The index currently selsected for truncation\n * @param {number} maxLength The max length for the string\n * @returns {string} The string, truncated either earlier or later to preserve anchor tags\n */\nfunction truncateTagSafe(\n str: string,\n cutoffPoint: number,\n maxLength: number,\n): string {\n let truncatedString = str.slice(0, cutoffPoint);\n\n const openingAnchorTags = truncatedString.match(/<a/gi);\n if (openingAnchorTags) {\n const closingAnchorTags = truncatedString.match(/<\\/a/gi);\n\n if (\n !closingAnchorTags ||\n closingAnchorTags.length < openingAnchorTags.length\n ) {\n const firstClosingTag = str.indexOf('</a>', cutoffPoint);\n const safeDistanceFromMax = firstClosingTag - maxLength <= 20;\n\n // No need to truncate if closing tag is at the end of the string\n if (safeDistanceFromMax && str.length === firstClosingTag + 4) {\n return str;\n }\n\n // Truncate at end of first closing tag if possible\n if (firstClosingTag !== -1 && safeDistanceFromMax) {\n truncatedString = str.slice(0, firstClosingTag + 4);\n } else {\n // Otherwise, truncate before last opening tag\n const lastOpeningTag = truncatedString.lastIndexOf('<a');\n truncatedString = str.slice(0, lastOpeningTag);\n }\n }\n }\n\n return truncatedString.concat('...');\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transforms any links in text into live clickable anchor tags.
|
|
3
|
+
* Adds rel="ugc nofollow" to each for spam mitigation.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} text The text to be linked
|
|
6
|
+
* @returns {string} The text with live links added
|
|
7
|
+
*/
|
|
8
|
+
export default function linkUrlsInText(text: string): string;
|
|
9
|
+
//# sourceMappingURL=link-urls-in-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-urls-in-text.d.ts","sourceRoot":"","sources":["../../../../../src/elements/ia-reviews/utils/link-urls-in-text.ts"],"names":[],"mappings":"AAkBA;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuB3D"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This is not designed to capture all valid URLs but simply the most common ones.
|
|
3
|
+
* Highlights:
|
|
4
|
+
* - Optional "http://" or "https://"
|
|
5
|
+
* - Capital letter only captured if at beginning of hostname, to avoid false positives when
|
|
6
|
+
* people omit spaces e.g. "It's great.Right?"
|
|
7
|
+
* - Unlimited hostname parts, separated by periods
|
|
8
|
+
* - Any number of subdirectories/paths
|
|
9
|
+
* - Optional querystring parameters
|
|
10
|
+
* - Optional anchor
|
|
11
|
+
*
|
|
12
|
+
* Quotes and angle brackets terminate a match. The match is interpolated into
|
|
13
|
+
* an anchor tag that gets rendered as raw HTML, so a quote inside one would
|
|
14
|
+
* close the href and let the rest of the text become attributes.
|
|
15
|
+
*/
|
|
16
|
+
const URL_REGEXP = /(http(s)?)?(:\/\/)?([a-zA-Z][-a-z0-9]*(\.[-a-z0-9]+)+(\/[^\s?#<>"']*)*(\?[^\s#<>"']*)?(#[^\s<>"']*)?)/;
|
|
17
|
+
/**
|
|
18
|
+
* Transforms any links in text into live clickable anchor tags.
|
|
19
|
+
* Adds rel="ugc nofollow" to each for spam mitigation.
|
|
20
|
+
*
|
|
21
|
+
* @param {string} text The text to be linked
|
|
22
|
+
* @returns {string} The text with live links added
|
|
23
|
+
*/
|
|
24
|
+
export default function linkUrlsInText(text) {
|
|
25
|
+
// Protect existing links by ignoring them in search. Keep this pattern free of
|
|
26
|
+
// lookbehind assertions: Safari below 16.4 treats one as a syntax error and
|
|
27
|
+
// fails to load the module at all.
|
|
28
|
+
const textWithExistingLinksPreserved = text.replace(/href="([^"]+)"/, (_match, url) => `href="${url.replace('.', '__DOT__')}"`);
|
|
29
|
+
// Add live links
|
|
30
|
+
const textWithLiveLinks = textWithExistingLinksPreserved.replace(URL_REGEXP, (match) => {
|
|
31
|
+
const url = match.match(/^(https|http)/) ? match : `https://${match}`;
|
|
32
|
+
// The attribute value is escaped as well as the pattern being quote-free,
|
|
33
|
+
// so the href stays a single attribute whatever the match contains.
|
|
34
|
+
const href = url.replace(/"/g, '"');
|
|
35
|
+
return `<a href="${href}" rel="ugc nofollow" target="_blank">${match}</a>`;
|
|
36
|
+
});
|
|
37
|
+
// Restore existing links
|
|
38
|
+
return textWithLiveLinks.replace('__DOT__', '.');
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=link-urls-in-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-urls-in-text.js","sourceRoot":"","sources":["../../../../../src/elements/ia-reviews/utils/link-urls-in-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,GACd,uGAAuG,CAAC;AAE1G;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,IAAY;IACjD,+EAA+E;IAC/E,4EAA4E;IAC5E,mCAAmC;IACnC,MAAM,8BAA8B,GAAG,IAAI,CAAC,OAAO,CACjD,gBAAgB,EAChB,CAAC,MAAM,EAAE,GAAW,EAAE,EAAE,CAAC,SAAS,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CACjE,CAAC;IAEF,iBAAiB;IACjB,MAAM,iBAAiB,GAAG,8BAA8B,CAAC,OAAO,CAC9D,UAAU,EACV,CAAC,KAAK,EAAE,EAAE;QACR,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,KAAK,EAAE,CAAC;QACtE,0EAA0E;QAC1E,oEAAoE;QACpE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACzC,OAAO,YAAY,IAAI,wCAAwC,KAAK,MAAM,CAAC;IAC7E,CAAC,CACF,CAAC;IAEF,yBAAyB;IACzB,OAAO,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACnD,CAAC","sourcesContent":["/**\n * This is not designed to capture all valid URLs but simply the most common ones.\n * Highlights:\n * - Optional \"http://\" or \"https://\"\n * - Capital letter only captured if at beginning of hostname, to avoid false positives when\n * people omit spaces e.g. \"It's great.Right?\"\n * - Unlimited hostname parts, separated by periods\n * - Any number of subdirectories/paths\n * - Optional querystring parameters\n * - Optional anchor\n *\n * Quotes and angle brackets terminate a match. The match is interpolated into\n * an anchor tag that gets rendered as raw HTML, so a quote inside one would\n * close the href and let the rest of the text become attributes.\n */\nconst URL_REGEXP =\n /(http(s)?)?(:\\/\\/)?([a-zA-Z][-a-z0-9]*(\\.[-a-z0-9]+)+(\\/[^\\s?#<>\"']*)*(\\?[^\\s#<>\"']*)?(#[^\\s<>\"']*)?)/;\n\n/**\n * Transforms any links in text into live clickable anchor tags.\n * Adds rel=\"ugc nofollow\" to each for spam mitigation.\n *\n * @param {string} text The text to be linked\n * @returns {string} The text with live links added\n */\nexport default function linkUrlsInText(text: string): string {\n // Protect existing links by ignoring them in search. Keep this pattern free of\n // lookbehind assertions: Safari below 16.4 treats one as a syntax error and\n // fails to load the module at all.\n const textWithExistingLinksPreserved = text.replace(\n /href=\"([^\"]+)\"/,\n (_match, url: string) => `href=\"${url.replace('.', '__DOT__')}\"`,\n );\n\n // Add live links\n const textWithLiveLinks = textWithExistingLinksPreserved.replace(\n URL_REGEXP,\n (match) => {\n const url = match.match(/^(https|http)/) ? match : `https://${match}`;\n // The attribute value is escaped as well as the pattern being quote-free,\n // so the href stays a single attribute whatever the match contains.\n const href = url.replace(/\"/g, '"');\n return `<a href=\"${href}\" rel=\"ugc nofollow\" target=\"_blank\">${match}</a>`;\n },\n );\n\n // Restore existing links\n return textWithLiveLinks.replace('__DOT__', '.');\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Uses DOMpurify to sanitize a given review body.
|
|
3
|
+
* Currently only allows a tags.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} reviewBody The review to be sanitized
|
|
6
|
+
* @returns {string} The sanitized review
|
|
7
|
+
*/
|
|
8
|
+
export default function sanitizeReviewBody(reviewBody: string): string;
|
|
9
|
+
//# sourceMappingURL=sanitize-review-body.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-review-body.d.ts","sourceRoot":"","sources":["../../../../../src/elements/ia-reviews/utils/sanitize-review-body.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAUrE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import DOMPurify from 'dompurify';
|
|
2
|
+
const ALLOWED_TAGS = ['a'];
|
|
3
|
+
/**
|
|
4
|
+
* Uses DOMpurify to sanitize a given review body.
|
|
5
|
+
* Currently only allows a tags.
|
|
6
|
+
*
|
|
7
|
+
* @param {string} reviewBody The review to be sanitized
|
|
8
|
+
* @returns {string} The sanitized review
|
|
9
|
+
*/
|
|
10
|
+
export default function sanitizeReviewBody(reviewBody) {
|
|
11
|
+
// DOMPurify is a shared singleton, so the hook is added around this one call
|
|
12
|
+
// and taken off again. Leaving it registered would stack up another copy per
|
|
13
|
+
// review and force these attributes onto every other caller's anchors too.
|
|
14
|
+
DOMPurify.addHook('afterSanitizeAttributes', forceExternalLinkAttributes);
|
|
15
|
+
try {
|
|
16
|
+
return DOMPurify.sanitize(reviewBody, { ALLOWED_TAGS: ALLOWED_TAGS });
|
|
17
|
+
}
|
|
18
|
+
finally {
|
|
19
|
+
DOMPurify.removeHook('afterSanitizeAttributes');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/** Marks links as untrusted user content and opens them away from the page. */
|
|
23
|
+
function forceExternalLinkAttributes(node) {
|
|
24
|
+
if (node.nodeName.toLowerCase() !== 'a')
|
|
25
|
+
return;
|
|
26
|
+
node.setAttribute('rel', 'ugc nofollow');
|
|
27
|
+
node.setAttribute('target', '_blank');
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=sanitize-review-body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-review-body.js","sourceRoot":"","sources":["../../../../../src/elements/ia-reviews/utils/sanitize-review-body.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC;AAE3B;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,UAAkB;IAC3D,6EAA6E;IAC7E,6EAA6E;IAC7E,2EAA2E;IAC3E,SAAS,CAAC,OAAO,CAAC,yBAAyB,EAAE,2BAA2B,CAAC,CAAC;IAC1E,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;IACxE,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,SAAS,2BAA2B,CAAC,IAAU;IAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG;QAAE,OAAO;IAC/C,IAAgB,CAAC,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACrD,IAAgB,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC","sourcesContent":["import DOMPurify from 'dompurify';\n\nconst ALLOWED_TAGS = ['a'];\n\n/**\n * Uses DOMpurify to sanitize a given review body.\n * Currently only allows a tags.\n *\n * @param {string} reviewBody The review to be sanitized\n * @returns {string} The sanitized review\n */\nexport default function sanitizeReviewBody(reviewBody: string): string {\n // DOMPurify is a shared singleton, so the hook is added around this one call\n // and taken off again. Leaving it registered would stack up another copy per\n // review and force these attributes onto every other caller's anchors too.\n DOMPurify.addHook('afterSanitizeAttributes', forceExternalLinkAttributes);\n try {\n return DOMPurify.sanitize(reviewBody, { ALLOWED_TAGS: ALLOWED_TAGS });\n } finally {\n DOMPurify.removeHook('afterSanitizeAttributes');\n }\n}\n\n/** Marks links as untrusted user content and opens them away from the page. */\nfunction forceExternalLinkAttributes(node: Node): void {\n if (node.nodeName.toLowerCase() !== 'a') return;\n (node as Element).setAttribute('rel', 'ugc nofollow');\n (node as Element).setAttribute('target', '_blank');\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { HTMLTemplateResult } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* Truncates screenname as needed to ensure we only display the correct
|
|
4
|
+
* number of chars throughout site. Must be kept in sync with screenname
|
|
5
|
+
* limit in Account.inc.
|
|
6
|
+
*
|
|
7
|
+
* Adds a title tooltip with full screenname if truncated.
|
|
8
|
+
*
|
|
9
|
+
* @param {string} screenname Screenname to be truncated
|
|
10
|
+
* @returns {HTMLTemplateResult} String or HTML to be displayed
|
|
11
|
+
*/
|
|
12
|
+
export declare function truncateScreenname(screenname?: string): HTMLTemplateResult | string;
|
|
13
|
+
//# sourceMappingURL=truncate-screenname.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truncate-screenname.d.ts","sourceRoot":"","sources":["../../../../../src/elements/ia-reviews/utils/truncate-screenname.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAE/C;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,GAAE,MAAW,GACtB,kBAAkB,GAAG,MAAM,CAQ7B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* Truncates screenname as needed to ensure we only display the correct
|
|
4
|
+
* number of chars throughout site. Must be kept in sync with screenname
|
|
5
|
+
* limit in Account.inc.
|
|
6
|
+
*
|
|
7
|
+
* Adds a title tooltip with full screenname if truncated.
|
|
8
|
+
*
|
|
9
|
+
* @param {string} screenname Screenname to be truncated
|
|
10
|
+
* @returns {HTMLTemplateResult} String or HTML to be displayed
|
|
11
|
+
*/
|
|
12
|
+
export function truncateScreenname(screenname = '') {
|
|
13
|
+
const SCREENNAME_MAX_LENGTH = 40;
|
|
14
|
+
if (screenname.length <= SCREENNAME_MAX_LENGTH)
|
|
15
|
+
return screenname;
|
|
16
|
+
const truncatedScreenname = screenname.substring(0, SCREENNAME_MAX_LENGTH) + '...';
|
|
17
|
+
return html `<span title="${screenname}">${truncatedScreenname}</span>`;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=truncate-screenname.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truncate-screenname.js","sourceRoot":"","sources":["../../../../../src/elements/ia-reviews/utils/truncate-screenname.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAsB,MAAM,KAAK,CAAC;AAE/C;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,aAAqB,EAAE;IAEvB,MAAM,qBAAqB,GAAG,EAAE,CAAC;IAEjC,IAAI,UAAU,CAAC,MAAM,IAAI,qBAAqB;QAAE,OAAO,UAAU,CAAC;IAElE,MAAM,mBAAmB,GACvB,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,qBAAqB,CAAC,GAAG,KAAK,CAAC;IACzD,OAAO,IAAI,CAAA,gBAAgB,UAAU,KAAK,mBAAmB,SAAS,CAAC;AACzE,CAAC","sourcesContent":["import { html, HTMLTemplateResult } from 'lit';\n\n/**\n * Truncates screenname as needed to ensure we only display the correct\n * number of chars throughout site. Must be kept in sync with screenname\n * limit in Account.inc.\n *\n * Adds a title tooltip with full screenname if truncated.\n *\n * @param {string} screenname Screenname to be truncated\n * @returns {HTMLTemplateResult} String or HTML to be displayed\n */\nexport function truncateScreenname(\n screenname: string = '',\n): HTMLTemplateResult | string {\n const SCREENNAME_MAX_LENGTH = 40;\n\n if (screenname.length <= SCREENNAME_MAX_LENGTH) return screenname;\n\n const truncatedScreenname =\n screenname.substring(0, SCREENNAME_MAX_LENGTH) + '...';\n return html`<span title=\"${screenname}\">${truncatedScreenname}</span>`;\n}\n"]}
|
|
@@ -17,8 +17,8 @@ export declare class IAScrubberBar extends LitElement {
|
|
|
17
17
|
sectionMarkerPercentages: number[];
|
|
18
18
|
/** Whether the markers either side of the playhead point towards it */
|
|
19
19
|
expandSectionMarkers: boolean;
|
|
20
|
-
/** The accessible name for the slider
|
|
21
|
-
label
|
|
20
|
+
/** The accessible name for the slider */
|
|
21
|
+
label: string;
|
|
22
22
|
/**
|
|
23
23
|
* The position actually shown.
|
|
24
24
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ia-scrubber-bar.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-scrubber-bar/ia-scrubber-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAOb,OAAO,qBAAqB,CAAC;AAuC7B;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"ia-scrubber-bar.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-scrubber-bar/ia-scrubber-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAOb,OAAO,qBAAqB,CAAC;AAuC7B;;;GAGG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,2CAA2C;IACf,KAAK,SAAK;IAEtC,iDAAiD;IACrB,GAAG,SAAK;IAEpC,kDAAkD;IACtB,GAAG,SAAO;IAEtC,2CAA2C;IACf,IAAI,SAAO;IAEvC,oEAAoE;IACzC,wBAAwB,EAAE,MAAM,EAAE,CAAM;IAEnE,uEAAuE;IAC1C,oBAAoB,UAAS;IAE1D,yCAAyC;IACb,KAAK,SAA4B;IAE7D;;;;;;OAMG;IACM,OAAO,CAAC,YAAY,CAAK;IAElC,OAAO,CAAC,iBAAiB,CAAS;IAElC,+DAA+D;IAC/D,IAAI,UAAU,IAAI,MAAM,CAKvB;IAED,MAAM,IAAI,cAAc;IA0CxB,OAAO,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAMhD;;;;;OAKG;IACH,OAAO,KAAK,kBAAkB,GAS7B;IAED;;;;;;OAMG;IACH,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,kBAAkB;IAK1B;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,WAAW;IAMnB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAMlB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAKxB,MAAM,KAAK,MAAM,IAAI,cAAc,CAiKlC;CACF"}
|
|
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
|
|
|
2
2
|
import { css, html, LitElement, } from 'lit';
|
|
3
3
|
import { property, state } from 'lit/decorators.js';
|
|
4
4
|
import { customElement } from '../../util/custom-element.js';
|
|
5
|
-
import {
|
|
5
|
+
import { msg } from '@lit/localize';
|
|
6
6
|
import { SectionMarkerMode } from './models.js';
|
|
7
7
|
import './ia-section-marker.js';
|
|
8
8
|
/**
|
|
@@ -48,6 +48,8 @@ let IAScrubberBar = class IAScrubberBar extends LitElement {
|
|
|
48
48
|
this.sectionMarkerPercentages = [];
|
|
49
49
|
/** Whether the markers either side of the playhead point towards it */
|
|
50
50
|
this.expandSectionMarkers = false;
|
|
51
|
+
/** The accessible name for the slider */
|
|
52
|
+
this.label = msg('Playback position');
|
|
51
53
|
/**
|
|
52
54
|
* The position actually shown.
|
|
53
55
|
*
|
|
@@ -84,7 +86,7 @@ let IAScrubberBar = class IAScrubberBar extends LitElement {
|
|
|
84
86
|
<input
|
|
85
87
|
id="slider"
|
|
86
88
|
type="range"
|
|
87
|
-
aria-label=${this.label
|
|
89
|
+
aria-label=${this.label}
|
|
88
90
|
min=${this.min}
|
|
89
91
|
max=${this.max}
|
|
90
92
|
step=${this.step}
|
|
@@ -380,8 +382,7 @@ __decorate([
|
|
|
380
382
|
state()
|
|
381
383
|
], IAScrubberBar.prototype, "currentValue", void 0);
|
|
382
384
|
IAScrubberBar = __decorate([
|
|
383
|
-
customElement('ia-scrubber-bar')
|
|
384
|
-
localized()
|
|
385
|
+
customElement('ia-scrubber-bar')
|
|
385
386
|
], IAScrubberBar);
|
|
386
387
|
export { IAScrubberBar };
|
|
387
388
|
//# sourceMappingURL=ia-scrubber-bar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ia-scrubber-bar.js","sourceRoot":"","sources":["../../../../src/elements/ia-scrubber-bar/ia-scrubber-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n css,\n html,\n LitElement,\n type CSSResultGroup,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { localized, msg } from '@lit/localize';\n\nimport { SectionMarkerMode } from './models';\n\nimport './ia-section-marker';\n\n/**\n * Event names emitted by this component\n */\nconst Events = {\n ValueChange: 'valuechange',\n UserInteractionStarted: 'userInteractionStarted',\n UserInteractionEnded: 'userInteractionEnded',\n};\n\n/**\n * The keys that move a range input.\n *\n * Only these count as scrubbing. Tab in particular must not, since it takes\n * focus away and its keyup lands on whatever it moved to, never here.\n */\nconst VALUE_KEYS = new Set([\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n]);\n\n/**\n * The section boundaries either side of the playhead.\n *\n * `undefined` where there is no boundary on that side, which is the case at\n * the very start and the very end of the track.\n */\ninterface SurroundingMarkers {\n lower?: number;\n upper?: number;\n}\n\n/**\n * A range slider styled as a playback scrubber, with optional section markers\n * laid over the track.\n */\n@customElement('ia-scrubber-bar')\n@localized()\nexport class IAScrubberBar extends LitElement {\n /** The current position along the track */\n @property({ type: Number }) value = 0;\n\n /** The lowest position the scrubber can reach */\n @property({ type: Number }) min = 0;\n\n /** The highest position the scrubber can reach */\n @property({ type: Number }) max = 100;\n\n /** How finely the scrubber can be moved */\n @property({ type: Number }) step = 0.1;\n\n /** Where to draw section boundaries, as percentages of the track */\n @property({ type: Array }) sectionMarkerPercentages: number[] = [];\n\n /** Whether the markers either side of the playhead point towards it */\n @property({ type: Boolean }) expandSectionMarkers = false;\n\n /** The accessible name for the slider. Defaults to \"Playback position\". */\n @property({ type: String }) label?: string;\n\n /**\n * The position actually shown.\n *\n * `value` is driven from outside by whatever is playing the audio, but while\n * the listener is scrubbing their position wins. Keeping the two apart is\n * what stops playback updates fighting the drag.\n */\n @state() private currentValue = 0;\n\n private userIsInteracting = false;\n\n /** How far along the track the playhead is, as a percentage */\n get percentage(): number {\n const range = this.max - this.min;\n if (range === 0) return 0;\n\n return ((this.currentValue - this.min) / range) * 100;\n }\n\n render(): TemplateResult {\n const surrounding = this.surroundingMarkers;\n\n return html`\n <div class=\"container\" style=\"--fill-percent--: ${this.percentage}%\">\n <div class=\"color-fill\"></div>\n\n <div class=\"marker-container\">\n ${this.sectionMarkerPercentages.map(\n (markerPercent) => html`\n <ia-section-marker\n data-location=${markerPercent}\n style=\"left: ${markerPercent}%\"\n .markerMode=${this.markerModeFor(markerPercent, surrounding)}\n ></ia-section-marker>\n `,\n )}\n </div>\n\n <input\n id=\"slider\"\n type=\"range\"\n aria-label=${this.label ?? msg('Playback position')}\n min=${this.min}\n max=${this.max}\n step=${this.step}\n .value=${String(this.currentValue)}\n @mousedown=${this.interactionStarted}\n @mouseup=${this.interactionEnded}\n @touchstart=${this.interactionStarted}\n @touchend=${this.interactionEnded}\n @touchcancel=${this.interactionEnded}\n @keydown=${this.handleKeyDown}\n @keyup=${this.handleKeyUp}\n @blur=${this.handleBlur}\n @input=${this.handleSlide}\n @change=${this.handleSlide}\n />\n </div>\n `;\n }\n\n updated(changedProperties: PropertyValues): void {\n if (this.userIsInteracting || !changedProperties.has('value')) return;\n\n this.currentValue = this.value;\n }\n\n /**\n * The section boundaries immediately below and above the playhead.\n *\n * Returns nothing when the markers aren't meant to react to the playhead, so\n * every marker falls back to its resting state.\n */\n private get surroundingMarkers(): SurroundingMarkers {\n if (!this.expandSectionMarkers) return {};\n\n const sorted = this.sortedMarkers;\n\n return {\n lower: sorted.filter((percent) => percent <= this.currentValue).pop(),\n upper: sorted.find((percent) => percent > this.currentValue),\n };\n }\n\n /**\n * The marker percentages in ascending numeric order.\n *\n * Sorted on a copy with an explicit comparator: the default `sort()` orders\n * lexicographically, which puts 100 before 9, and it sorts in place, which\n * would reorder the caller's own array.\n */\n private get sortedMarkers(): number[] {\n return [...this.sectionMarkerPercentages].sort((a, b) => a - b);\n }\n\n private markerModeFor(\n markerPercent: number,\n surrounding: SurroundingMarkers,\n ): SectionMarkerMode {\n if (markerPercent === surrounding.upper) return SectionMarkerMode.left;\n if (markerPercent === surrounding.lower) return SectionMarkerMode.right;\n\n return SectionMarkerMode.neither;\n }\n\n private handleSlide(e: Event): void {\n this.currentValue = parseFloat((e.target as HTMLInputElement).value);\n\n this.dispatchEvent(\n new CustomEvent<{ value: number }>(Events.ValueChange, {\n detail: { value: this.currentValue },\n }),\n );\n }\n\n private interactionStarted(): void {\n this.userIsInteracting = true;\n this.dispatchEvent(new Event(Events.UserInteractionStarted));\n }\n\n /**\n * Starts an interaction when the slider is scrubbed from the keyboard.\n *\n * Without this, arrowing along the bar sets the value but leaves\n * `userIsInteracting` false, so the next playback tick snaps the thumb back\n * to the playhead mid-scrub.\n *\n * Guarded against the auto-repeat that holding a key produces, which would\n * otherwise emit a fresh `userInteractionStarted` on every repeat.\n */\n private handleKeyDown(e: KeyboardEvent): void {\n if (!VALUE_KEYS.has(e.key) || this.userIsInteracting) return;\n\n this.interactionStarted();\n }\n\n private handleKeyUp(e: KeyboardEvent): void {\n if (!VALUE_KEYS.has(e.key)) return;\n\n this.interactionEnded();\n }\n\n /**\n * Releases an interaction that focus left behind.\n *\n * A keyup can go missing, e.g. focus moves while the key is still down, and\n * an interaction left latched on would ignore playback updates for good.\n */\n private handleBlur(): void {\n if (!this.userIsInteracting) return;\n\n this.interactionEnded();\n }\n\n /**\n * Ends the interaction.\n *\n * Bound to `touchcancel` as well as `touchend`, because a touch the system\n * takes over never delivers `touchend`, and an interaction left latched on\n * would ignore playback updates from then on.\n */\n private interactionEnded(): void {\n this.userIsInteracting = false;\n this.dispatchEvent(new Event(Events.UserInteractionEnded));\n }\n\n static get styles(): CSSResultGroup {\n return css`\n :host {\n --scrubber-bar-height--: var(--ia-theme-scrubber-bar-height, 20px);\n --scrubber-marker-inset--: var(--ia-theme-scrubber-marker-inset, 10px);\n\n --scrubber-thumb-color--: var(--ia-theme-scrubber-thumb-color, #fff);\n --scrubber-thumb-diameter--: var(\n --ia-theme-scrubber-thumb-diameter,\n 20px\n );\n --scrubber-thumb-border--: var(\n --ia-theme-scrubber-thumb-border,\n 1px solid #000\n );\n --scrubber-thumb-border-radius--: var(\n --ia-theme-scrubber-thumb-border-radius,\n 50%\n );\n /*\n Centres the thumb on the track. The thumb is content-box, so its\n border adds 1px above and below the diameter, hence the extra -1px.\n Comes out at -6px for the default track and thumb sizes.\n */\n --scrubber-thumb-top-margin--: var(\n --ia-theme-scrubber-thumb-top-margin,\n calc(\n (\n var(--scrubber-track-height--) - var(\n --scrubber-thumb-diameter--\n )\n ) /\n 2 - 1px\n )\n );\n\n --scrubber-track-height--: var(--ia-theme-scrubber-track-height, 10px);\n --scrubber-track-border--: var(\n --ia-theme-scrubber-track-border,\n 1px solid #fff\n );\n --scrubber-track-border-radius--: var(\n --ia-theme-scrubber-track-border-radius,\n 5px\n );\n --scrubber-track-color--: var(\n --ia-theme-scrubber-track-color,\n rgba(0, 0, 0, 0.1)\n );\n --scrubber-track-fill-color--: var(\n --ia-theme-scrubber-track-fill-color,\n #3272b6\n );\n\n /*\n How far off the bottom the track sits. The fill and the section\n markers both line up against this, so they follow the track when its\n height is themed. Comes out at 7px for the default sizes.\n */\n --scrubber-track-offset--: calc(\n (var(--scrubber-bar-height--) - var(--scrubber-track-height--)) / 2 +\n 2px\n );\n }\n\n .container {\n position: relative;\n height: var(--scrubber-bar-height--);\n }\n\n /*\n The fill is a plain element rather than a track pseudo-element, so the\n played portion is just a hard gradient stop driven by a custom property.\n */\n .color-fill {\n height: var(--scrubber-track-height--);\n border-radius: 1em;\n position: absolute;\n bottom: var(--scrubber-track-offset--);\n left: 2px;\n right: -2px;\n background: linear-gradient(\n to right,\n var(--scrubber-track-fill-color--) 0%,\n var(--scrubber-track-fill-color--) var(--fill-percent--),\n var(--scrubber-track-color--) var(--fill-percent--),\n var(--scrubber-track-color--) 100%\n );\n }\n\n .marker-container {\n position: absolute;\n left: var(--scrubber-marker-inset--);\n right: var(--scrubber-marker-inset--);\n height: 100%;\n }\n\n ia-section-marker {\n position: absolute;\n width: 2rem;\n height: var(--scrubber-track-height--);\n bottom: var(--scrubber-track-offset--);\n /*\n The left offset puts the marker where it belongs, but the divider runs\n down the middle of the marker, so it shifts back by half its own width\n to line the divider up with that point.\n */\n transform: translateX(-50%);\n }\n\n input[type='range'] {\n -webkit-appearance: none;\n appearance: none;\n height: var(--scrubber-bar-height--);\n padding: 0;\n width: 100%;\n background: none;\n outline: none;\n position: absolute;\n bottom: 0;\n }\n\n input[type='range']::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n box-sizing: content-box;\n margin-top: var(--scrubber-thumb-top-margin--);\n background-color: var(--scrubber-thumb-color--);\n height: var(--scrubber-thumb-diameter--);\n width: var(--scrubber-thumb-diameter--);\n border-radius: var(--scrubber-thumb-border-radius--);\n border: var(--scrubber-thumb-border--);\n cursor: pointer;\n }\n\n input[type='range']::-moz-range-thumb {\n background-color: var(--scrubber-thumb-color--);\n height: var(--scrubber-thumb-diameter--);\n width: var(--scrubber-thumb-diameter--);\n border-radius: var(--scrubber-thumb-border-radius--);\n border: var(--scrubber-thumb-border--);\n cursor: pointer;\n }\n\n input[type='range']::-webkit-slider-runnable-track {\n border: var(--scrubber-track-border--);\n height: var(--scrubber-track-height--);\n border-radius: var(--scrubber-track-border-radius--);\n }\n\n input[type='range']::-moz-range-track {\n border: var(--scrubber-track-border--);\n height: var(--scrubber-track-height--);\n border-radius: var(--scrubber-track-border-radius--);\n }\n\n input[type='range']::-moz-range-progress {\n height: var(--scrubber-track-height--);\n border-radius: var(--scrubber-track-border-radius--);\n }\n `;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ia-scrubber-bar.js","sourceRoot":"","sources":["../../../../src/elements/ia-scrubber-bar/ia-scrubber-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n css,\n html,\n LitElement,\n type CSSResultGroup,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { msg } from '@lit/localize';\n\nimport { SectionMarkerMode } from './models';\n\nimport './ia-section-marker';\n\n/**\n * Event names emitted by this component\n */\nconst Events = {\n ValueChange: 'valuechange',\n UserInteractionStarted: 'userInteractionStarted',\n UserInteractionEnded: 'userInteractionEnded',\n};\n\n/**\n * The keys that move a range input.\n *\n * Only these count as scrubbing. Tab in particular must not, since it takes\n * focus away and its keyup lands on whatever it moved to, never here.\n */\nconst VALUE_KEYS = new Set([\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n]);\n\n/**\n * The section boundaries either side of the playhead.\n *\n * `undefined` where there is no boundary on that side, which is the case at\n * the very start and the very end of the track.\n */\ninterface SurroundingMarkers {\n lower?: number;\n upper?: number;\n}\n\n/**\n * A range slider styled as a playback scrubber, with optional section markers\n * laid over the track.\n */\n@customElement('ia-scrubber-bar')\nexport class IAScrubberBar extends LitElement {\n /** The current position along the track */\n @property({ type: Number }) value = 0;\n\n /** The lowest position the scrubber can reach */\n @property({ type: Number }) min = 0;\n\n /** The highest position the scrubber can reach */\n @property({ type: Number }) max = 100;\n\n /** How finely the scrubber can be moved */\n @property({ type: Number }) step = 0.1;\n\n /** Where to draw section boundaries, as percentages of the track */\n @property({ type: Array }) sectionMarkerPercentages: number[] = [];\n\n /** Whether the markers either side of the playhead point towards it */\n @property({ type: Boolean }) expandSectionMarkers = false;\n\n /** The accessible name for the slider */\n @property({ type: String }) label = msg('Playback position');\n\n /**\n * The position actually shown.\n *\n * `value` is driven from outside by whatever is playing the audio, but while\n * the listener is scrubbing their position wins. Keeping the two apart is\n * what stops playback updates fighting the drag.\n */\n @state() private currentValue = 0;\n\n private userIsInteracting = false;\n\n /** How far along the track the playhead is, as a percentage */\n get percentage(): number {\n const range = this.max - this.min;\n if (range === 0) return 0;\n\n return ((this.currentValue - this.min) / range) * 100;\n }\n\n render(): TemplateResult {\n const surrounding = this.surroundingMarkers;\n\n return html`\n <div class=\"container\" style=\"--fill-percent--: ${this.percentage}%\">\n <div class=\"color-fill\"></div>\n\n <div class=\"marker-container\">\n ${this.sectionMarkerPercentages.map(\n (markerPercent) => html`\n <ia-section-marker\n data-location=${markerPercent}\n style=\"left: ${markerPercent}%\"\n .markerMode=${this.markerModeFor(markerPercent, surrounding)}\n ></ia-section-marker>\n `,\n )}\n </div>\n\n <input\n id=\"slider\"\n type=\"range\"\n aria-label=${this.label}\n min=${this.min}\n max=${this.max}\n step=${this.step}\n .value=${String(this.currentValue)}\n @mousedown=${this.interactionStarted}\n @mouseup=${this.interactionEnded}\n @touchstart=${this.interactionStarted}\n @touchend=${this.interactionEnded}\n @touchcancel=${this.interactionEnded}\n @keydown=${this.handleKeyDown}\n @keyup=${this.handleKeyUp}\n @blur=${this.handleBlur}\n @input=${this.handleSlide}\n @change=${this.handleSlide}\n />\n </div>\n `;\n }\n\n updated(changedProperties: PropertyValues): void {\n if (this.userIsInteracting || !changedProperties.has('value')) return;\n\n this.currentValue = this.value;\n }\n\n /**\n * The section boundaries immediately below and above the playhead.\n *\n * Returns nothing when the markers aren't meant to react to the playhead, so\n * every marker falls back to its resting state.\n */\n private get surroundingMarkers(): SurroundingMarkers {\n if (!this.expandSectionMarkers) return {};\n\n const sorted = this.sortedMarkers;\n\n return {\n lower: sorted.filter((percent) => percent <= this.currentValue).pop(),\n upper: sorted.find((percent) => percent > this.currentValue),\n };\n }\n\n /**\n * The marker percentages in ascending numeric order.\n *\n * Sorted on a copy with an explicit comparator: the default `sort()` orders\n * lexicographically, which puts 100 before 9, and it sorts in place, which\n * would reorder the caller's own array.\n */\n private get sortedMarkers(): number[] {\n return [...this.sectionMarkerPercentages].sort((a, b) => a - b);\n }\n\n private markerModeFor(\n markerPercent: number,\n surrounding: SurroundingMarkers,\n ): SectionMarkerMode {\n if (markerPercent === surrounding.upper) return SectionMarkerMode.left;\n if (markerPercent === surrounding.lower) return SectionMarkerMode.right;\n\n return SectionMarkerMode.neither;\n }\n\n private handleSlide(e: Event): void {\n this.currentValue = parseFloat((e.target as HTMLInputElement).value);\n\n this.dispatchEvent(\n new CustomEvent<{ value: number }>(Events.ValueChange, {\n detail: { value: this.currentValue },\n }),\n );\n }\n\n private interactionStarted(): void {\n this.userIsInteracting = true;\n this.dispatchEvent(new Event(Events.UserInteractionStarted));\n }\n\n /**\n * Starts an interaction when the slider is scrubbed from the keyboard.\n *\n * Without this, arrowing along the bar sets the value but leaves\n * `userIsInteracting` false, so the next playback tick snaps the thumb back\n * to the playhead mid-scrub.\n *\n * Guarded against the auto-repeat that holding a key produces, which would\n * otherwise emit a fresh `userInteractionStarted` on every repeat.\n */\n private handleKeyDown(e: KeyboardEvent): void {\n if (!VALUE_KEYS.has(e.key) || this.userIsInteracting) return;\n\n this.interactionStarted();\n }\n\n private handleKeyUp(e: KeyboardEvent): void {\n if (!VALUE_KEYS.has(e.key)) return;\n\n this.interactionEnded();\n }\n\n /**\n * Releases an interaction that focus left behind.\n *\n * A keyup can go missing, e.g. focus moves while the key is still down, and\n * an interaction left latched on would ignore playback updates for good.\n */\n private handleBlur(): void {\n if (!this.userIsInteracting) return;\n\n this.interactionEnded();\n }\n\n /**\n * Ends the interaction.\n *\n * Bound to `touchcancel` as well as `touchend`, because a touch the system\n * takes over never delivers `touchend`, and an interaction left latched on\n * would ignore playback updates from then on.\n */\n private interactionEnded(): void {\n this.userIsInteracting = false;\n this.dispatchEvent(new Event(Events.UserInteractionEnded));\n }\n\n static get styles(): CSSResultGroup {\n return css`\n :host {\n --scrubber-bar-height--: var(--ia-theme-scrubber-bar-height, 20px);\n --scrubber-marker-inset--: var(--ia-theme-scrubber-marker-inset, 10px);\n\n --scrubber-thumb-color--: var(--ia-theme-scrubber-thumb-color, #fff);\n --scrubber-thumb-diameter--: var(\n --ia-theme-scrubber-thumb-diameter,\n 20px\n );\n --scrubber-thumb-border--: var(\n --ia-theme-scrubber-thumb-border,\n 1px solid #000\n );\n --scrubber-thumb-border-radius--: var(\n --ia-theme-scrubber-thumb-border-radius,\n 50%\n );\n /*\n Centres the thumb on the track. The thumb is content-box, so its\n border adds 1px above and below the diameter, hence the extra -1px.\n Comes out at -6px for the default track and thumb sizes.\n */\n --scrubber-thumb-top-margin--: var(\n --ia-theme-scrubber-thumb-top-margin,\n calc(\n (\n var(--scrubber-track-height--) - var(\n --scrubber-thumb-diameter--\n )\n ) /\n 2 - 1px\n )\n );\n\n --scrubber-track-height--: var(--ia-theme-scrubber-track-height, 10px);\n --scrubber-track-border--: var(\n --ia-theme-scrubber-track-border,\n 1px solid #fff\n );\n --scrubber-track-border-radius--: var(\n --ia-theme-scrubber-track-border-radius,\n 5px\n );\n --scrubber-track-color--: var(\n --ia-theme-scrubber-track-color,\n rgba(0, 0, 0, 0.1)\n );\n --scrubber-track-fill-color--: var(\n --ia-theme-scrubber-track-fill-color,\n #3272b6\n );\n\n /*\n How far off the bottom the track sits. The fill and the section\n markers both line up against this, so they follow the track when its\n height is themed. Comes out at 7px for the default sizes.\n */\n --scrubber-track-offset--: calc(\n (var(--scrubber-bar-height--) - var(--scrubber-track-height--)) / 2 +\n 2px\n );\n }\n\n .container {\n position: relative;\n height: var(--scrubber-bar-height--);\n }\n\n /*\n The fill is a plain element rather than a track pseudo-element, so the\n played portion is just a hard gradient stop driven by a custom property.\n */\n .color-fill {\n height: var(--scrubber-track-height--);\n border-radius: 1em;\n position: absolute;\n bottom: var(--scrubber-track-offset--);\n left: 2px;\n right: -2px;\n background: linear-gradient(\n to right,\n var(--scrubber-track-fill-color--) 0%,\n var(--scrubber-track-fill-color--) var(--fill-percent--),\n var(--scrubber-track-color--) var(--fill-percent--),\n var(--scrubber-track-color--) 100%\n );\n }\n\n .marker-container {\n position: absolute;\n left: var(--scrubber-marker-inset--);\n right: var(--scrubber-marker-inset--);\n height: 100%;\n }\n\n ia-section-marker {\n position: absolute;\n width: 2rem;\n height: var(--scrubber-track-height--);\n bottom: var(--scrubber-track-offset--);\n /*\n The left offset puts the marker where it belongs, but the divider runs\n down the middle of the marker, so it shifts back by half its own width\n to line the divider up with that point.\n */\n transform: translateX(-50%);\n }\n\n input[type='range'] {\n -webkit-appearance: none;\n appearance: none;\n height: var(--scrubber-bar-height--);\n padding: 0;\n width: 100%;\n background: none;\n outline: none;\n position: absolute;\n bottom: 0;\n }\n\n input[type='range']::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n box-sizing: content-box;\n margin-top: var(--scrubber-thumb-top-margin--);\n background-color: var(--scrubber-thumb-color--);\n height: var(--scrubber-thumb-diameter--);\n width: var(--scrubber-thumb-diameter--);\n border-radius: var(--scrubber-thumb-border-radius--);\n border: var(--scrubber-thumb-border--);\n cursor: pointer;\n }\n\n input[type='range']::-moz-range-thumb {\n background-color: var(--scrubber-thumb-color--);\n height: var(--scrubber-thumb-diameter--);\n width: var(--scrubber-thumb-diameter--);\n border-radius: var(--scrubber-thumb-border-radius--);\n border: var(--scrubber-thumb-border--);\n cursor: pointer;\n }\n\n input[type='range']::-webkit-slider-runnable-track {\n border: var(--scrubber-track-border--);\n height: var(--scrubber-track-height--);\n border-radius: var(--scrubber-track-border-radius--);\n }\n\n input[type='range']::-moz-range-track {\n border: var(--scrubber-track-border--);\n height: var(--scrubber-track-height--);\n border-radius: var(--scrubber-track-border-radius--);\n }\n\n input[type='range']::-moz-range-progress {\n height: var(--scrubber-track-height--);\n border-radius: var(--scrubber-track-border-radius--);\n }\n `;\n }\n}\n"]}
|
|
@@ -16,9 +16,9 @@ export type MediaTypeIcon = 'audio' | 'collection' | 'etree' | 'images' | 'searc
|
|
|
16
16
|
* 4. three animated dots (the default)
|
|
17
17
|
*/
|
|
18
18
|
export declare class IAStatusIndicator extends LitElement {
|
|
19
|
-
loadingTitle
|
|
20
|
-
successTitle
|
|
21
|
-
errorTitle
|
|
19
|
+
loadingTitle: string;
|
|
20
|
+
successTitle: string;
|
|
21
|
+
errorTitle: string;
|
|
22
22
|
mode: LoadingStatus;
|
|
23
23
|
mediatype?: MediaTypeIcon;
|
|
24
24
|
hideDots: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ia-status-indicator.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-status-indicator/ia-status-indicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAEd,UAAU,EAIV,cAAc,EACf,MAAM,KAAK,CAAC;AAoBb,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtE;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,YAAY,GACZ,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,IAAI,GACJ,OAAO,GACP,KAAK,CAAC;AAeV;;;;;;;;GAQG;AACH,
|
|
1
|
+
{"version":3,"file":"ia-status-indicator.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-status-indicator/ia-status-indicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAEd,UAAU,EAIV,cAAc,EACf,MAAM,KAAK,CAAC;AAoBb,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtE;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,YAAY,GACZ,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,IAAI,GACJ,OAAO,GACP,KAAK,CAAC;AAeV;;;;;;;;GAQG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAEnB,YAAY,SAAqB;IAGjC,YAAY,SAAkB;IAG9B,UAAU,SAAgB;IAG1B,IAAI,EAAE,aAAa,CAAa;IAGhC,SAAS,CAAC,EAAE,aAAa,CAAC;IAGzB,QAAQ,UAAS;IAGrC,OAAO,CAAC,cAAc,CAAS;IAExC,MAAM,IAAI,cAAc;IASxB;;;OAGG;IACH,OAAO,KAAK,mBAAmB,GAE9B;IAED;;;;;OAKG;IACH,OAAO,KAAK,gBAAgB,GAG3B;IAED,6EAA6E;IAC7E,OAAO,KAAK,aAAa,GAExB;IAED;;;;;;OAMG;IACH,OAAO,KAAK,wBAAwB,GAYnC;IAED,oEAAoE;IACpE,OAAO,KAAK,aAAa,GA4BxB;IAED,8DAA8D;IAC9D,OAAO,KAAK,WAAW,GAoBtB;IAED;;;OAGG;IACH,OAAO,KAAK,qBAAqB,GAKhC;IAED,OAAO,CAAC,oBAAoB;IAK5B,wCAAwC;IACxC,OAAO,KAAK,wBAAwB,GAyBnC;IAED,gCAAgC;IAChC,OAAO,KAAK,sBAAsB,GAkBjC;IAED,MAAM,KAAK,MAAM,IAAI,cAAc,CA4HlC;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
|