@mcp-b/web-components 0.2.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/LICENSE +21 -0
- package/README.md +49 -0
- package/dist/accordion-B1Q3kuP_.d.ts +373 -0
- package/dist/accordion-item-DvPfhpm8.js +307 -0
- package/dist/accordion-item-bPRIahNn.d.ts +63 -0
- package/dist/accordion-zDr-Br4V.js +483 -0
- package/dist/action-bar-CYsjmhwP.d.ts +29 -0
- package/dist/action-bar-CjN_UcnP.js +56 -0
- package/dist/alert-dialog-4CnO3Nb5.d.ts +60 -0
- package/dist/alert-dialog-D25Oi_TS.js +126 -0
- package/dist/avatar-Bje_KpZo.d.ts +141 -0
- package/dist/avatar-CRP0kW3x.js +224 -0
- package/dist/badge-Ct95U4UO.js +301 -0
- package/dist/badge-D1DNQrWn.d.ts +106 -0
- package/dist/breadcrumb-BxZ-nQE5.d.ts +365 -0
- package/dist/breadcrumb-item-BC454oQe.d.ts +59 -0
- package/dist/breadcrumb-item-P5pdq_gE.js +151 -0
- package/dist/breadcrumb-uURhiqWJ.js +384 -0
- package/dist/button-5k_aL_gD.js +802 -0
- package/dist/button-BQofnUt4.d.ts +354 -0
- package/dist/button-group-BydvJTQy.js +197 -0
- package/dist/button-group-COodHeuB.d.ts +155 -0
- package/dist/callout-B8zTf8Go.js +188 -0
- package/dist/callout-DFwPao36.d.ts +103 -0
- package/dist/card-BYDzdMAU.d.ts +177 -0
- package/dist/card-DIg1-X2G.js +332 -0
- package/dist/carousel-Bktu7wrD.js +843 -0
- package/dist/carousel-DQITCtEY.d.ts +423 -0
- package/dist/carousel-item-B5-X31Ha.js +79 -0
- package/dist/carousel-item-BB3jL2tk.d.ts +34 -0
- package/dist/cdn/loader.js +530 -0
- package/dist/checkbox-D6r7PVPj.js +641 -0
- package/dist/checkbox-DoFcDEKB.d.ts +354 -0
- package/dist/checkbox-group-CLvNAO_F.js +201 -0
- package/dist/checkbox-group-Cnh8rAn4.d.ts +152 -0
- package/dist/color-input-Bky89xg_.d.ts +470 -0
- package/dist/color-input-DPIxi9wR.js +894 -0
- package/dist/color-picker-adwOmtRl.js +1240 -0
- package/dist/color-picker-wQw8bPsq.d.ts +360 -0
- package/dist/combobox-B6al50UG.js +1693 -0
- package/dist/combobox-item-D2H1CMxC.d.ts +714 -0
- package/dist/combobox-item-yM6tDrGG.js +225 -0
- package/dist/comparison-B1-nMwmp.d.ts +134 -0
- package/dist/comparison-CyqKrCN-.js +435 -0
- package/dist/components/accordion/accordion.d.ts +2 -0
- package/dist/components/accordion/accordion.js +2 -0
- package/dist/components/accordion-item/accordion-item.d.ts +2 -0
- package/dist/components/accordion-item/accordion-item.js +2 -0
- package/dist/components/action-bar/action-bar.d.ts +2 -0
- package/dist/components/action-bar/action-bar.js +2 -0
- package/dist/components/alert-dialog/alert-dialog.d.ts +2 -0
- package/dist/components/alert-dialog/alert-dialog.js +2 -0
- package/dist/components/avatar/avatar.d.ts +2 -0
- package/dist/components/avatar/avatar.js +2 -0
- package/dist/components/badge/badge.d.ts +2 -0
- package/dist/components/badge/badge.js +2 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +2 -0
- package/dist/components/breadcrumb/breadcrumb.js +2 -0
- package/dist/components/breadcrumb-item/breadcrumb-item.d.ts +2 -0
- package/dist/components/breadcrumb-item/breadcrumb-item.js +2 -0
- package/dist/components/button/button.d.ts +2 -0
- package/dist/components/button/button.js +2 -0
- package/dist/components/button-group/button-group.d.ts +2 -0
- package/dist/components/button-group/button-group.js +2 -0
- package/dist/components/callout/callout.d.ts +2 -0
- package/dist/components/callout/callout.js +2 -0
- package/dist/components/card/card.d.ts +2 -0
- package/dist/components/card/card.js +2 -0
- package/dist/components/carousel/carousel.d.ts +2 -0
- package/dist/components/carousel/carousel.js +2 -0
- package/dist/components/carousel-item/carousel-item.d.ts +2 -0
- package/dist/components/carousel-item/carousel-item.js +2 -0
- package/dist/components/checkbox/checkbox.d.ts +2 -0
- package/dist/components/checkbox/checkbox.js +2 -0
- package/dist/components/checkbox-group/checkbox-group.d.ts +2 -0
- package/dist/components/checkbox-group/checkbox-group.js +2 -0
- package/dist/components/color-input/color-input.d.ts +2 -0
- package/dist/components/color-input/color-input.js +2 -0
- package/dist/components/color-picker/color-picker.d.ts +2 -0
- package/dist/components/color-picker/color-picker.js +2 -0
- package/dist/components/combobox/combobox.d.ts +2 -0
- package/dist/components/combobox/combobox.js +2 -0
- package/dist/components/combobox-item/combobox-item.d.ts +2 -0
- package/dist/components/combobox-item/combobox-item.js +2 -0
- package/dist/components/comparison/comparison.d.ts +2 -0
- package/dist/components/comparison/comparison.js +2 -0
- package/dist/components/copy/copy.d.ts +2 -0
- package/dist/components/copy/copy.js +291 -0
- package/dist/components/data-table/data-table.d.ts +2 -0
- package/dist/components/data-table/data-table.js +2 -0
- package/dist/components/date/date.d.ts +2 -0
- package/dist/components/date/date.js +2 -0
- package/dist/components/dialog/dialog.d.ts +2 -0
- package/dist/components/dialog/dialog.js +2 -0
- package/dist/components/divider/divider.d.ts +2 -0
- package/dist/components/divider/divider.js +2 -0
- package/dist/components/dropdown/dropdown.d.ts +2 -0
- package/dist/components/dropdown/dropdown.js +2 -0
- package/dist/components/dropdown-item/dropdown-item.d.ts +2 -0
- package/dist/components/dropdown-item/dropdown-item.js +2 -0
- package/dist/components/empty-result/empty-result.d.ts +2 -0
- package/dist/components/empty-result/empty-result.js +2 -0
- package/dist/components/empty-state/empty-state.d.ts +2 -0
- package/dist/components/empty-state/empty-state.js +2 -0
- package/dist/components/expander/expander.d.ts +2 -0
- package/dist/components/expander/expander.js +2 -0
- package/dist/components/field/field.d.ts +2 -0
- package/dist/components/field/field.js +2 -0
- package/dist/components/file-input/file-input.d.ts +2 -0
- package/dist/components/file-input/file-input.js +2 -0
- package/dist/components/filter-bar/filter-bar.d.ts +2 -0
- package/dist/components/filter-bar/filter-bar.js +2 -0
- package/dist/components/form-section/form-section.d.ts +2 -0
- package/dist/components/form-section/form-section.js +2 -0
- package/dist/components/icon/icon.d.ts +2 -0
- package/dist/components/icon/icon.js +2 -0
- package/dist/components/include/include.d.ts +2 -0
- package/dist/components/include/include.js +2 -0
- package/dist/components/index.d.ts +85 -0
- package/dist/components/index.js +86 -0
- package/dist/components/infinite-scroller/infinite-scroller.d.ts +2 -0
- package/dist/components/infinite-scroller/infinite-scroller.js +2 -0
- package/dist/components/intersection-observer/intersection-observer.d.ts +2 -0
- package/dist/components/intersection-observer/intersection-observer.js +2 -0
- package/dist/components/listbox/listbox.d.ts +2 -0
- package/dist/components/listbox/listbox.js +2 -0
- package/dist/components/listbox-item/listbox-item.d.ts +2 -0
- package/dist/components/listbox-item/listbox-item.js +2 -0
- package/dist/components/lorem-ipsum/lorem-ipsum.d.ts +2 -0
- package/dist/components/lorem-ipsum/lorem-ipsum.js +2 -0
- package/dist/components/meter/meter.d.ts +2 -0
- package/dist/components/meter/meter.js +2 -0
- package/dist/components/metric/metric.d.ts +2 -0
- package/dist/components/metric/metric.js +2 -0
- package/dist/components/metric-grid/metric-grid.d.ts +2 -0
- package/dist/components/metric-grid/metric-grid.js +2 -0
- package/dist/components/mutation-observer/mutation-observer.d.ts +2 -0
- package/dist/components/mutation-observer/mutation-observer.js +2 -0
- package/dist/components/navicon/navicon.d.ts +2 -0
- package/dist/components/navicon/navicon.js +2 -0
- package/dist/components/number/number.d.ts +2 -0
- package/dist/components/number/number.js +2 -0
- package/dist/components/number-field/number-field.d.ts +2 -0
- package/dist/components/number-field/number-field.js +2 -0
- package/dist/components/pagination/pagination.d.ts +2 -0
- package/dist/components/pagination/pagination.js +2 -0
- package/dist/components/popover/popover.d.ts +2 -0
- package/dist/components/popover/popover.js +2 -0
- package/dist/components/preview-card/preview-card.d.ts +2 -0
- package/dist/components/preview-card/preview-card.js +2 -0
- package/dist/components/progress/progress.d.ts +2 -0
- package/dist/components/progress/progress.js +2 -0
- package/dist/components/radio/radio.d.ts +2 -0
- package/dist/components/radio/radio.js +2 -0
- package/dist/components/radio-item/radio-item.d.ts +2 -0
- package/dist/components/radio-item/radio-item.js +2 -0
- package/dist/components/random-content/random-content.d.ts +2 -0
- package/dist/components/random-content/random-content.js +2 -0
- package/dist/components/rating/rating.d.ts +2 -0
- package/dist/components/rating/rating.js +2 -0
- package/dist/components/resize-observer/resize-observer.d.ts +2 -0
- package/dist/components/resize-observer/resize-observer.js +2 -0
- package/dist/components/scroll-area/scroll-area.d.ts +2 -0
- package/dist/components/scroll-area/scroll-area.js +2 -0
- package/dist/components/scroller/scroller.d.ts +2 -0
- package/dist/components/scroller/scroller.js +2 -0
- package/dist/components/search-list/search-list.d.ts +2 -0
- package/dist/components/search-list/search-list.js +2 -0
- package/dist/components/select/select.d.ts +2 -0
- package/dist/components/select/select.js +2 -0
- package/dist/components/selection-summary/selection-summary.d.ts +2 -0
- package/dist/components/selection-summary/selection-summary.js +2 -0
- package/dist/components/share/share.d.ts +2 -0
- package/dist/components/share/share.js +2 -0
- package/dist/components/slide-activator/slide-activator.d.ts +2 -0
- package/dist/components/slide-activator/slide-activator.js +2 -0
- package/dist/components/slider/slider.d.ts +2 -0
- package/dist/components/slider/slider.js +2 -0
- package/dist/components/sparkline/sparkline.d.ts +2 -0
- package/dist/components/sparkline/sparkline.js +2 -0
- package/dist/components/spinner/spinner.d.ts +2 -0
- package/dist/components/spinner/spinner.js +2 -0
- package/dist/components/splitter/splitter.d.ts +2 -0
- package/dist/components/splitter/splitter.js +2 -0
- package/dist/components/switch/switch.d.ts +2 -0
- package/dist/components/switch/switch.js +2 -0
- package/dist/components/tab/tab.d.ts +2 -0
- package/dist/components/tab/tab.js +2 -0
- package/dist/components/tab-list/tab-list.d.ts +2 -0
- package/dist/components/tab-list/tab-list.js +2 -0
- package/dist/components/tab-panel/tab-panel.d.ts +2 -0
- package/dist/components/tab-panel/tab-panel.js +2 -0
- package/dist/components/text-area/text-area.d.ts +2 -0
- package/dist/components/text-area/text-area.js +2 -0
- package/dist/components/text-field/text-field.d.ts +2 -0
- package/dist/components/text-field/text-field.js +2 -0
- package/dist/components/text-mask/text-mask.d.ts +2 -0
- package/dist/components/text-mask/text-mask.js +2 -0
- package/dist/components/timed-content/timed-content.d.ts +2 -0
- package/dist/components/timed-content/timed-content.js +2 -0
- package/dist/components/toast/toast.d.ts +2 -0
- package/dist/components/toast/toast.js +2 -0
- package/dist/components/toast-item/toast-item.d.ts +2 -0
- package/dist/components/toast-item/toast-item.js +2 -0
- package/dist/components/toggle-icon/toggle-icon.d.ts +2 -0
- package/dist/components/toggle-icon/toggle-icon.js +2 -0
- package/dist/components/toggle-tag/toggle-tag.d.ts +2 -0
- package/dist/components/toggle-tag/toggle-tag.js +2 -0
- package/dist/components/toolbar/toolbar.d.ts +2 -0
- package/dist/components/toolbar/toolbar.js +2 -0
- package/dist/components/tooltip/tooltip.d.ts +2 -0
- package/dist/components/tooltip/tooltip.js +2 -0
- package/dist/components/transition-group/transition-group.d.ts +2 -0
- package/dist/components/transition-group/transition-group.js +2 -0
- package/dist/components/zoomable-frame/zoomable-frame.d.ts +2 -0
- package/dist/components/zoomable-frame/zoomable-frame.js +2 -0
- package/dist/copy-CvC9vaGw.d.ts +206 -0
- package/dist/copy.styles-DWGvGNTP.js +100 -0
- package/dist/data-table-CITa8DSn.js +247 -0
- package/dist/data-table-DL5RhE0d.d.ts +89 -0
- package/dist/date-CJPmOdi9.js +146 -0
- package/dist/date-DtaTBM71.d.ts +142 -0
- package/dist/decorate-DcF3lt7P.js +9 -0
- package/dist/dialog-Cx46HMaZ.js +983 -0
- package/dist/dialog-N-v0woIy.d.ts +414 -0
- package/dist/divider-9vNsfHW8.js +169 -0
- package/dist/divider-DWuAxcXv.d.ts +79 -0
- package/dist/docs/custom-elements.json +29301 -0
- package/dist/dropdown-BXSKpVX9.js +1123 -0
- package/dist/dropdown-Bo00Vlr5.d.ts +537 -0
- package/dist/dropdown-item-_lIs-Tfd.d.ts +111 -0
- package/dist/dropdown-item-i77cRuN6.js +504 -0
- package/dist/empty-result-B2ln1yFL.js +65 -0
- package/dist/empty-result-B54x_Ab2.d.ts +31 -0
- package/dist/empty-state-BLWjtKUo.js +186 -0
- package/dist/empty-state-SGKjpwp3.d.ts +117 -0
- package/dist/expander-BUev0BmM.d.ts +174 -0
- package/dist/expander-Bwvxj6Oa.js +342 -0
- package/dist/field-BEyS909F.js +163 -0
- package/dist/field-ITx0jVw-.d.ts +69 -0
- package/dist/file-input-BEumLJjg.js +841 -0
- package/dist/file-input-D2D6YC0B.d.ts +378 -0
- package/dist/filter-bar-Bj2QzEn9.d.ts +35 -0
- package/dist/filter-bar-Dcs67aXo.js +66 -0
- package/dist/form-section-BchPetkj.js +83 -0
- package/dist/form-section-xFBTBULQ.d.ts +34 -0
- package/dist/icon-BPVkNsY4.js +165 -0
- package/dist/icon-Ci9CPZJV.d.ts +72 -0
- package/dist/icon-library-D_if7p2h.d.ts +2 -0
- package/dist/include-CQHVVtNs.d.ts +103 -0
- package/dist/include-qNUh_6kT.js +155 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.js +92 -0
- package/dist/infinite-scroller-BmmtnWNt.js +285 -0
- package/dist/infinite-scroller-CuUEAlB9.d.ts +174 -0
- package/dist/intersection-observer-B6TciOAQ.js +503 -0
- package/dist/intersection-observer-B7nmP7Zz.d.ts +418 -0
- package/dist/listbox-C3XXRWGX.js +1257 -0
- package/dist/listbox-DD4ujIJe.d.ts +682 -0
- package/dist/listbox-item-CwD9s3VY.js +135 -0
- package/dist/listbox-item-DQEJWp4Z.d.ts +53 -0
- package/dist/localize-322EtXNX.d.ts +66 -0
- package/dist/lorem-ipsum-B2x3V-v8.js +198 -0
- package/dist/lorem-ipsum-CR82CSuJ.d.ts +130 -0
- package/dist/meter-BC7uaJWf.d.ts +73 -0
- package/dist/meter-BIDyjwFp.js +155 -0
- package/dist/metric-CjlLq_VA.d.ts +36 -0
- package/dist/metric-DbuOcDp_.js +86 -0
- package/dist/metric-grid-C2Pb0Zl3.js +37 -0
- package/dist/metric-grid-C5Xbb1_0.d.ts +27 -0
- package/dist/mutation-observer-BmrZ-GER.d.ts +326 -0
- package/dist/mutation-observer-DS8EBuOp.js +388 -0
- package/dist/navicon-Dic5Qjzb.d.ts +159 -0
- package/dist/navicon-_yMHY27-.js +486 -0
- package/dist/number-BNtNXNF3.js +162 -0
- package/dist/number-BwbnErlB.d.ts +143 -0
- package/dist/number-field-BQHB7UYo.js +726 -0
- package/dist/number-field-odk4lKXM.d.ts +422 -0
- package/dist/pagination-6z2qcf3U.d.ts +322 -0
- package/dist/pagination-DuKPuzdb.js +679 -0
- package/dist/popover-D0sxTU6o.d.ts +259 -0
- package/dist/popover-DJBrJ0za.js +556 -0
- package/dist/preview-card-C7H1FPfd.js +287 -0
- package/dist/preview-card-DitOCZTD.d.ts +86 -0
- package/dist/progress-Db0_axHQ.d.ts +181 -0
- package/dist/progress-DzVk260j.js +494 -0
- package/dist/radio-BtDG9xJM.js +658 -0
- package/dist/radio-CieMa4zU.d.ts +460 -0
- package/dist/radio-item-DIrUStAX.js +264 -0
- package/dist/radio-item-Xq2U3cMu.d.ts +69 -0
- package/dist/random-content-BhSeJFKz.d.ts +380 -0
- package/dist/random-content-BwiirXdG.js +450 -0
- package/dist/rating-4xNsWumY.d.ts +369 -0
- package/dist/rating-C1BcJDIO.js +722 -0
- package/dist/resize-observer-BseSbVWP.d.ts +187 -0
- package/dist/resize-observer-DcrLhddo.js +236 -0
- package/dist/scroll-area-COc1857S.js +127 -0
- package/dist/scroll-area-CVYDf5qY.d.ts +61 -0
- package/dist/scroller-LYgBVyfY.js +590 -0
- package/dist/scroller-bB2rGs7b.d.ts +374 -0
- package/dist/search-list-Clmrg8EV.js +884 -0
- package/dist/search-list-n0GYO7rh.d.ts +777 -0
- package/dist/select-CkZK2jJn.d.ts +506 -0
- package/dist/select-DLIaRnA4.js +690 -0
- package/dist/selection-summary-BVnNJ8Lw.js +48 -0
- package/dist/selection-summary-DmFkGyZI.d.ts +34 -0
- package/dist/share-DPlqP2dc.d.ts +162 -0
- package/dist/share-bsgXZCl7.js +250 -0
- package/dist/sigvelo.d.ts +5 -0
- package/dist/sigvelo.js +5 -0
- package/dist/sigvelo.loader.d.ts +3 -0
- package/dist/sigvelo.loader.js +102 -0
- package/dist/slide-activator-D7bBz69E.d.ts +429 -0
- package/dist/slide-activator-DlxQt9R9.js +798 -0
- package/dist/slider-B0FVsV1o.d.ts +921 -0
- package/dist/slider-B90Il7x3.js +1744 -0
- package/dist/sparkline-CcpTaJ_Z.js +358 -0
- package/dist/sparkline-DlCIt81-.d.ts +235 -0
- package/dist/spinner-C04Dmc0H.js +188 -0
- package/dist/spinner-CZ19x_dC.d.ts +99 -0
- package/dist/splitter-DBDJAzsp.d.ts +325 -0
- package/dist/splitter-MnD4In9H.js +638 -0
- package/dist/switch-CPaEKbog.js +581 -0
- package/dist/switch-Cief9M59.d.ts +248 -0
- package/dist/tab-BcqYGsuW.d.ts +44 -0
- package/dist/tab-C-FtuNmh.js +102 -0
- package/dist/tab-list-B_Ye_Oj9.js +691 -0
- package/dist/tab-list-DDvS8qHr.d.ts +450 -0
- package/dist/tab-panel-BaBl6eep.js +60 -0
- package/dist/tab-panel-BzSJlSfd.d.ts +38 -0
- package/dist/text-area-B_mjCE9W.d.ts +327 -0
- package/dist/text-area-Czixaz-_.js +556 -0
- package/dist/text-field-BClWMp6q.d.ts +424 -0
- package/dist/text-field-inpJfp0A.js +687 -0
- package/dist/text-mask-CNKVKSFp.d.ts +336 -0
- package/dist/text-mask-DDEurj90.js +370 -0
- package/dist/themes/sigvelo.css +10 -0
- package/dist/themes/utilities.css +9 -0
- package/dist/timed-content-D2mGFamc.d.ts +181 -0
- package/dist/timed-content-pvEP4l5V.js +226 -0
- package/dist/toast-BnZaIg6Z.js +636 -0
- package/dist/toast-cEBVK9NQ.d.ts +487 -0
- package/dist/toast-item-BPpJT6vD.d.ts +159 -0
- package/dist/toast-item-IS8IFUEg.js +372 -0
- package/dist/toggle-icon-4oLDeEt4.js +752 -0
- package/dist/toggle-icon-DlwMMWZL.d.ts +359 -0
- package/dist/toggle-tag-1sfTFJtg.js +434 -0
- package/dist/toggle-tag-IVvMGT4R.d.ts +245 -0
- package/dist/toolbar-CABq0ZL1.d.ts +122 -0
- package/dist/toolbar-CEZ0-F-X.js +196 -0
- package/dist/tooltip-DbyoPFNe.js +521 -0
- package/dist/tooltip-ahFthek8.d.ts +192 -0
- package/dist/transition-group-3hnAnwSd.js +801 -0
- package/dist/transition-group-DD_CjSNC.d.ts +608 -0
- package/dist/translations/en.d.ts +6 -0
- package/dist/translations/en.js +75 -0
- package/dist/translations/es.d.ts +6 -0
- package/dist/translations/es.js +75 -0
- package/dist/types/custom-element-jsx.d.ts +13723 -0
- package/dist/utilities/icon-library.d.ts +3 -0
- package/dist/utilities/icon-library.js +93 -0
- package/dist/utilities/localize.d.ts +2 -0
- package/dist/utilities/localize.js +6 -0
- package/dist/zoomable-frame-Cldvj5sE.js +398 -0
- package/dist/zoomable-frame-r6S6587z.d.ts +162 -0
- package/package.json +83 -0
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
import { t as __decorate } from "./decorate-DcF3lt7P.js";
|
|
2
|
+
import { css, html } from "lit";
|
|
3
|
+
import { property } from "lit/decorators.js";
|
|
4
|
+
import hostStyles from "@mcp-b/wc-support/styles/host.styles";
|
|
5
|
+
import { SigveloElement } from "@mcp-b/wc-support/base/sigvelo-element";
|
|
6
|
+
//#region src/components/random-content/random-content.styles.ts
|
|
7
|
+
var random_content_styles_default = css`
|
|
8
|
+
:host {
|
|
9
|
+
display: contents;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
::slotted(*:not([data-visible])) {
|
|
13
|
+
display: none !important;
|
|
14
|
+
}
|
|
15
|
+
`;
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/components/random-content/random-content.ts
|
|
18
|
+
/**
|
|
19
|
+
* <sigvelo-random-content>
|
|
20
|
+
*
|
|
21
|
+
* @summary Randomly displays one or more elements from a list.
|
|
22
|
+
* @tag sigvelo-random-content
|
|
23
|
+
* @documentation https://design-system.sigvelo.com/docs/components/random-content
|
|
24
|
+
* @status stable
|
|
25
|
+
* @since 1.0
|
|
26
|
+
*
|
|
27
|
+
* @slot - A pool of items that will be randomly displayed. Each item _must_ be a direct descendant of the host element.
|
|
28
|
+
*
|
|
29
|
+
* @example Default
|
|
30
|
+
* Perfect for showcasing rotating testimonials, featured products, helpful tips, or inspirational quotes, keeping content fresh and engaging without overwhelming users or repeating the same material.
|
|
31
|
+
*
|
|
32
|
+
* ```html
|
|
33
|
+
* <sigvelo-random-content unique style="display: flex; flex-direction: column; gap: 1rem;" id="random__overview">
|
|
34
|
+
* <sigvelo-card class="quote">
|
|
35
|
+
* <sigvelo-avatar image="https://images.unsplash.com/photo-1672487209629-4d52e0c043d0?q=80&w=256&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"></sigvelo-avatar>
|
|
36
|
+
* <div>
|
|
37
|
+
* "The new scratching post is perfect! I sharpen my claws on it every morning."
|
|
38
|
+
* <cite>– Meowy McGee</cite>
|
|
39
|
+
* </div>
|
|
40
|
+
* </sigvelo-card>
|
|
41
|
+
* <sigvelo-card class="quote">
|
|
42
|
+
* <sigvelo-avatar image="https://images.unsplash.com/photo-1529778873920-4da4926a72c2?q=80&w=256&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"></sigvelo-avatar>
|
|
43
|
+
* <div>
|
|
44
|
+
* "Those catnip toys make me go absolutely bonkers!
|
|
45
|
+
* <cite>– Princess Mittens</cite>
|
|
46
|
+
* </div>
|
|
47
|
+
* </sigvelo-card>
|
|
48
|
+
* <sigvelo-card class="quote">
|
|
49
|
+
* <sigvelo-avatar image="https://images.unsplash.com/photo-1569591159212-b02ea8a9f239?q=80&w=256&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"></sigvelo-avatar>
|
|
50
|
+
* <div>
|
|
51
|
+
* "Finally, a food that meets my refined palate."
|
|
52
|
+
* <cite>– Sir Fluffington</cite>
|
|
53
|
+
* </div>
|
|
54
|
+
* </sigvelo-card>
|
|
55
|
+
* <sigvelo-card class="quote">
|
|
56
|
+
* <sigvelo-avatar image="https://images.unsplash.com/photo-1735820474275-dd0ff4f28d71?q=80&w=256&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"></sigvelo-avatar>
|
|
57
|
+
* <div>
|
|
58
|
+
* "The automatic feeder ensures my 3 AM breakfast is always on time.
|
|
59
|
+
* <cite>– Shadow</cite>
|
|
60
|
+
* </div>
|
|
61
|
+
* </sigvelo-card>
|
|
62
|
+
* <sigvelo-card class="quote">
|
|
63
|
+
* <sigvelo-avatar image="https://images.unsplash.com/photo-1504384558400-c1347a7bd18f?q=80&w=256&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"></sigvelo-avatar>
|
|
64
|
+
* <div>
|
|
65
|
+
* "One day I'll catch that red dot, mark my words."
|
|
66
|
+
* <cite>– Captain Paws</cite>
|
|
67
|
+
* </div>
|
|
68
|
+
* </sigvelo-card>
|
|
69
|
+
* <sigvelo-card class="quote">
|
|
70
|
+
* <sigvelo-avatar image="https://images.unsplash.com/photo-1472491235688-bdc81a63246e?q=80&w=256&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"></sigvelo-avatar>
|
|
71
|
+
* <div>
|
|
72
|
+
* "I've been sleeping 20 hours a day instead of my usual 18!"
|
|
73
|
+
* <cite>– Luna Belle</cite>
|
|
74
|
+
* </div>
|
|
75
|
+
* </sigvelo-card>
|
|
76
|
+
* <sigvelo-card class="quote">
|
|
77
|
+
* <sigvelo-avatar image="https://images.unsplash.com/photo-1574158622682-e40e69881006?q=80&w=256&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"></sigvelo-avatar>
|
|
78
|
+
* <div>
|
|
79
|
+
* "I no longer need to demand fresh water from the tap every hour."
|
|
80
|
+
* <cite>– Duchess Whiskertons</cite>
|
|
81
|
+
* </div>
|
|
82
|
+
* </sigvelo-card>
|
|
83
|
+
* <sigvelo-card class="quote">
|
|
84
|
+
* <sigvelo-avatar image="https://images.unsplash.com/photo-1615497001839-b0a0eac3274c?q=80&w=256&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"></sigvelo-avatar>
|
|
85
|
+
* <div>
|
|
86
|
+
* "I survey my kingdom from the top of the fridge daily."
|
|
87
|
+
* <cite>– King Mewington III</cite>
|
|
88
|
+
* </div>
|
|
89
|
+
* </sigvelo-card>
|
|
90
|
+
* </sigvelo-random-content>
|
|
91
|
+
*
|
|
92
|
+
* <sigvelo-button>Randomize</sigvelo-button>
|
|
93
|
+
*
|
|
94
|
+
* <script>
|
|
95
|
+
* const randomContent = document.getElementById('random__overview');
|
|
96
|
+
* const button = randomContent.nextElementSibling;
|
|
97
|
+
*
|
|
98
|
+
* button.addEventListener('click', () => {
|
|
99
|
+
* randomContent.randomize();
|
|
100
|
+
* });
|
|
101
|
+
* <\/script>
|
|
102
|
+
*
|
|
103
|
+
* <style>
|
|
104
|
+
* #random__overview {
|
|
105
|
+
* max-width: 420px;
|
|
106
|
+
* margin-block-end: 1.5rem;
|
|
107
|
+
*
|
|
108
|
+
* sigvelo-card::part(body) {
|
|
109
|
+
* display: flex;
|
|
110
|
+
* flex-direction: row;
|
|
111
|
+
* gap: 1rem;
|
|
112
|
+
* align-items: center;
|
|
113
|
+
* font-size: 0.9375em;
|
|
114
|
+
* }
|
|
115
|
+
*
|
|
116
|
+
* .quote {
|
|
117
|
+
* sigvelo-avatar {
|
|
118
|
+
* --size: 5rem;
|
|
119
|
+
* flex-shrink: 0;
|
|
120
|
+
* }
|
|
121
|
+
*
|
|
122
|
+
* > div {
|
|
123
|
+
* flex: 1;
|
|
124
|
+
* display: flex;
|
|
125
|
+
* flex-direction: column;
|
|
126
|
+
* justify-content: center;
|
|
127
|
+
* }
|
|
128
|
+
*
|
|
129
|
+
* cite {
|
|
130
|
+
* display: block;
|
|
131
|
+
* text-align: right;
|
|
132
|
+
* font-size: 0.875rem;
|
|
133
|
+
* color: #666;
|
|
134
|
+
* margin-top: 0.5rem;
|
|
135
|
+
* }
|
|
136
|
+
* }
|
|
137
|
+
* }
|
|
138
|
+
* </style>
|
|
139
|
+
* ```
|
|
140
|
+
*
|
|
141
|
+
* @example Providing content
|
|
142
|
+
* You can provide virtually any type of HTML element, as long as they are _direct descendants_. Simply slot the elements into the host as shown below.
|
|
143
|
+
*
|
|
144
|
+
* The host element uses `display: contents` by default, which allows parent styles to pass through to the child elements, essentially making the host element "invisible" from a layout perspective.
|
|
145
|
+
*
|
|
146
|
+
* ```html
|
|
147
|
+
* <sigvelo-random-content>
|
|
148
|
+
* <div class="box">A</div>
|
|
149
|
+
* <div class="box">B</div>
|
|
150
|
+
* <div class="box">C</div>
|
|
151
|
+
* <div class="box">D</div>
|
|
152
|
+
* </sigvelo-random-content>
|
|
153
|
+
* ```
|
|
154
|
+
*
|
|
155
|
+
* @example Setting the number of items
|
|
156
|
+
* Use the `items` attribute to display multiple random items at once. This is useful for showing a rotating selection of content like featured products or testimonials.
|
|
157
|
+
*
|
|
158
|
+
* ```html
|
|
159
|
+
* <div id="random__items">
|
|
160
|
+
* <sigvelo-random-content items="2">
|
|
161
|
+
* <div class="box">1</div>
|
|
162
|
+
* <div class="box">2</div>
|
|
163
|
+
* <div class="box">3</div>
|
|
164
|
+
* <div class="box">4</div>
|
|
165
|
+
* <div class="box">5</div>
|
|
166
|
+
* <div class="box">6</div>
|
|
167
|
+
* <div class="box">7</div>
|
|
168
|
+
* <div class="box">8</div>
|
|
169
|
+
* <div class="box">9</div>
|
|
170
|
+
* <div class="box">10</div>
|
|
171
|
+
* </sigvelo-random-content>
|
|
172
|
+
*
|
|
173
|
+
* <sigvelo-slider label="Items" value="2" min="1" max="5" with-markers with-tooltip></sigvelo-slider>
|
|
174
|
+
* </div>
|
|
175
|
+
*
|
|
176
|
+
* <script>
|
|
177
|
+
* const container = document.getElementById('random__items');
|
|
178
|
+
* const randomContent = container.querySelector('sigvelo-random-content');
|
|
179
|
+
* const slider = container.querySelector('sigvelo-slider');
|
|
180
|
+
*
|
|
181
|
+
* slider.addEventListener('input', () => {
|
|
182
|
+
* randomContent.items = slider.value;
|
|
183
|
+
* });
|
|
184
|
+
* <\/script>
|
|
185
|
+
*
|
|
186
|
+
* <style>
|
|
187
|
+
* #random__items {
|
|
188
|
+
* sigvelo-random-content {
|
|
189
|
+
* display: flex;
|
|
190
|
+
* flex-wrap: wrap;
|
|
191
|
+
* gap: 1rem;
|
|
192
|
+
* margin-block-end: 1.5rem;
|
|
193
|
+
* }
|
|
194
|
+
*
|
|
195
|
+
* .box {
|
|
196
|
+
* width: 100px;
|
|
197
|
+
* height: 100px;
|
|
198
|
+
* background-color: var(--sigvelo-color-primary-bg);
|
|
199
|
+
* border-radius: var(--sigvelo-radius-md);
|
|
200
|
+
* color: var(--sigvelo-color-neutral-text-on-bg);
|
|
201
|
+
* font-size: 1.5rem;
|
|
202
|
+
* font-weight: var(--sigvelo-font-weight-semibold);
|
|
203
|
+
* display: flex;
|
|
204
|
+
* align-items: center;
|
|
205
|
+
* justify-content: center;
|
|
206
|
+
* }
|
|
207
|
+
* }
|
|
208
|
+
* </style>
|
|
209
|
+
* ```
|
|
210
|
+
*
|
|
211
|
+
* @example Styling the container
|
|
212
|
+
* The component uses `display: contents` by default, but you can override this behavior and use a flex or grid layout if you prefer.
|
|
213
|
+
*
|
|
214
|
+
* ```html
|
|
215
|
+
* <sigvelo-random-content items="4" id="random__styling">
|
|
216
|
+
* <img
|
|
217
|
+
* src="https://images.unsplash.com/photo-1628612380382-e6204e135307?q=80&w=500&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
218
|
+
* alt="An orange kitten meows while perched on a stone wall"
|
|
219
|
+
* >
|
|
220
|
+
* <img
|
|
221
|
+
* src="https://images.unsplash.com/photo-1595252849939-1ec8070a354a?q=80&w=500&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
222
|
+
* alt="A multicolored cat walking through the grass stops to look at the camera"
|
|
223
|
+
* >
|
|
224
|
+
* <img
|
|
225
|
+
* src="https://images.unsplash.com/photo-1583399704033-3db671c65f5c?q=80&w=500&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
226
|
+
* alt="A white fluffy kitten lays comfortably on the arm of a chair"
|
|
227
|
+
* >
|
|
228
|
+
* <img
|
|
229
|
+
* src="https://images.unsplash.com/photo-1625060241508-22488e1e9264?q=80&w=500&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
230
|
+
* alt="A gray tabby lays in a bed and looks out past the camera"
|
|
231
|
+
* >
|
|
232
|
+
* <img
|
|
233
|
+
* src="https://images.unsplash.com/photo-1692901573513-41cda579d689?q=80&w=500&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
234
|
+
* alt="A black and white kitten lays on its bed and looks at the camera"
|
|
235
|
+
* >
|
|
236
|
+
* <img
|
|
237
|
+
* src="https://images.unsplash.com/photo-1622273414093-27fd902ac078?q=80&w=500&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
238
|
+
* alt="A young gray tabby lays on the steps and yawns"
|
|
239
|
+
* >
|
|
240
|
+
* <img
|
|
241
|
+
* src="https://images.unsplash.com/photo-1504384558400-c1347a7bd18f?q=80&w=500&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
242
|
+
* alt="A gray cat lays in the light of a window at night"
|
|
243
|
+
* >
|
|
244
|
+
* <img
|
|
245
|
+
* src="https://images.unsplash.com/photo-1472491235688-bdc81a63246e?q=80&w=500&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
246
|
+
* alt="A Himalayan cat with bright blue eyes smells the air"
|
|
247
|
+
* >
|
|
248
|
+
* <img
|
|
249
|
+
* src="https://images.unsplash.com/photo-1574158622682-e40e69881006?q=80&w=500&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
250
|
+
* alt="A tabby looks into the distance on a blue sky backdrop"
|
|
251
|
+
* >
|
|
252
|
+
* <img
|
|
253
|
+
* src="https://images.unsplash.com/photo-1615497001839-b0a0eac3274c?q=80&w=500&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
254
|
+
* alt="An orange and white cat lays in a wicker basket"
|
|
255
|
+
* >
|
|
256
|
+
* </sigvelo-random-content>
|
|
257
|
+
*
|
|
258
|
+
* <style>
|
|
259
|
+
* #random__styling {
|
|
260
|
+
* display: grid;
|
|
261
|
+
* grid-template-columns: repeat(2, 1fr);
|
|
262
|
+
* gap: 1rem;
|
|
263
|
+
*
|
|
264
|
+
* img {
|
|
265
|
+
* width: 100%;
|
|
266
|
+
* height: 200px;
|
|
267
|
+
* object-fit: cover;
|
|
268
|
+
* }
|
|
269
|
+
* }
|
|
270
|
+
* </style>
|
|
271
|
+
* ```
|
|
272
|
+
*
|
|
273
|
+
* You can render random content inline by setting `display: inline`.
|
|
274
|
+
*
|
|
275
|
+
* ```html
|
|
276
|
+
* <div id="random__inline">
|
|
277
|
+
* I'm just a
|
|
278
|
+
* <sigvelo-random-content style="display: inline;" unique>
|
|
279
|
+
* <span>cat</span>
|
|
280
|
+
* <span>kitten</span>
|
|
281
|
+
* <span>fluffy beast</span>
|
|
282
|
+
* <span>purr machine</span>
|
|
283
|
+
* </sigvelo-random-content>
|
|
284
|
+
* on a mission!
|
|
285
|
+
* <br><br>
|
|
286
|
+
* <sigvelo-button>Randomize</sigvelo-button>
|
|
287
|
+
* </div>
|
|
288
|
+
*
|
|
289
|
+
* <script>
|
|
290
|
+
* const container = document.getElementById('random__inline');
|
|
291
|
+
* const randomContent = container.querySelector('sigvelo-random-content');
|
|
292
|
+
* const button = container.querySelector('sigvelo-button');
|
|
293
|
+
*
|
|
294
|
+
* button.addEventListener('click', () => {
|
|
295
|
+
* randomContent.randomize();
|
|
296
|
+
* });
|
|
297
|
+
* <\/script>
|
|
298
|
+
*
|
|
299
|
+
* <style>
|
|
300
|
+
* #random__inline {
|
|
301
|
+
* display: inline;
|
|
302
|
+
* }
|
|
303
|
+
* </style>
|
|
304
|
+
* ```
|
|
305
|
+
*
|
|
306
|
+
* @example Showing items in sequence
|
|
307
|
+
* You can set the `mode` attribute to `sequence` to display items in order rather than randomly. Each time you call `randomize()`, the component advances to the next set of items in the sequence.
|
|
308
|
+
*
|
|
309
|
+
* ```html
|
|
310
|
+
* <div id="random__sequential">
|
|
311
|
+
* <sigvelo-random-content mode="sequence" items="2">
|
|
312
|
+
* <div class="box">1</div>
|
|
313
|
+
* <div class="box">2</div>
|
|
314
|
+
* <div class="box">3</div>
|
|
315
|
+
* <div class="box">4</div>
|
|
316
|
+
* <div class="box">5</div>
|
|
317
|
+
* <div class="box">6</div>
|
|
318
|
+
* <div class="box">7</div>
|
|
319
|
+
* <div class="box">8</div>
|
|
320
|
+
* <div class="box">9</div>
|
|
321
|
+
* </sigvelo-random-content>
|
|
322
|
+
*
|
|
323
|
+
* <sigvelo-button>Next Set</sigvelo-button>
|
|
324
|
+
* </div>
|
|
325
|
+
*
|
|
326
|
+
* <script>
|
|
327
|
+
* const container = document.getElementById('random__sequential');
|
|
328
|
+
* const randomContent = container.querySelector('sigvelo-random-content');
|
|
329
|
+
* const button = container.querySelector('sigvelo-button');
|
|
330
|
+
*
|
|
331
|
+
* button.addEventListener('click', () => {
|
|
332
|
+
* randomContent.randomize();
|
|
333
|
+
* });
|
|
334
|
+
* <\/script>
|
|
335
|
+
*
|
|
336
|
+
* <style>
|
|
337
|
+
* #random__sequential {
|
|
338
|
+
* sigvelo-random-content {
|
|
339
|
+
* display: flex;
|
|
340
|
+
* flex-direction: row;
|
|
341
|
+
* gap: 1rem;
|
|
342
|
+
* margin-block-end: 1.5rem;
|
|
343
|
+
* }
|
|
344
|
+
*
|
|
345
|
+
* .box {
|
|
346
|
+
* width: 100px;
|
|
347
|
+
* height: 100px;
|
|
348
|
+
* background-color: var(--sigvelo-color-primary-bg);
|
|
349
|
+
* border-radius: var(--sigvelo-radius-md);
|
|
350
|
+
* color: var(--sigvelo-color-neutral-text-on-bg);
|
|
351
|
+
* font-size: 1.5rem;
|
|
352
|
+
* font-weight: var(--sigvelo-font-weight-semibold);
|
|
353
|
+
* display: flex;
|
|
354
|
+
* align-items: center;
|
|
355
|
+
* justify-content: center;
|
|
356
|
+
* }
|
|
357
|
+
* }
|
|
358
|
+
* </style>
|
|
359
|
+
* ```
|
|
360
|
+
*/
|
|
361
|
+
var SigveloRandomContent = class extends SigveloElement {
|
|
362
|
+
constructor(..._args) {
|
|
363
|
+
super(..._args);
|
|
364
|
+
this.currentIndices = /* @__PURE__ */ new Set();
|
|
365
|
+
this.sequencePosition = 0;
|
|
366
|
+
this.items = 1;
|
|
367
|
+
this.mode = "unique";
|
|
368
|
+
}
|
|
369
|
+
static {
|
|
370
|
+
this.styles = [hostStyles, random_content_styles_default];
|
|
371
|
+
}
|
|
372
|
+
firstUpdated() {
|
|
373
|
+
this.applySelection();
|
|
374
|
+
}
|
|
375
|
+
updated(changedProperties) {
|
|
376
|
+
if (changedProperties.has("items") || changedProperties.has("mode")) {
|
|
377
|
+
if (changedProperties.has("mode") && this.mode === "sequence") this.sequencePosition = 0;
|
|
378
|
+
this.applySelection();
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
/** Applies selection based on the mode and items properties. */
|
|
382
|
+
applySelection(isManualRandomize = false) {
|
|
383
|
+
const children = this.shadowRoot?.querySelector("slot")?.assignedElements({ flatten: true }) || [];
|
|
384
|
+
if (!children.length) return;
|
|
385
|
+
const itemsToShow = Math.min(this.items, children.length);
|
|
386
|
+
let selected;
|
|
387
|
+
switch (this.mode) {
|
|
388
|
+
case "sequence":
|
|
389
|
+
selected = this.getSequenceIndices(children.length, itemsToShow, isManualRandomize);
|
|
390
|
+
break;
|
|
391
|
+
case "unique":
|
|
392
|
+
selected = this.getUniqueRandomIndices(children.length, itemsToShow, isManualRandomize ? this.currentIndices : void 0);
|
|
393
|
+
break;
|
|
394
|
+
case "random":
|
|
395
|
+
selected = this.getRandomIndices(children.length, itemsToShow);
|
|
396
|
+
break;
|
|
397
|
+
default: selected = this.getUniqueRandomIndices(children.length, itemsToShow);
|
|
398
|
+
}
|
|
399
|
+
this.currentIndices = selected;
|
|
400
|
+
children.forEach((el, i) => {
|
|
401
|
+
if (selected.has(i)) el.setAttribute("data-visible", "");
|
|
402
|
+
else el.removeAttribute("data-visible");
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
/** Gets truly random indices with possible duplicates from previous selection. */
|
|
406
|
+
getRandomIndices(childCount, itemsToShow) {
|
|
407
|
+
if (itemsToShow >= childCount) return new Set(Array.from({ length: childCount }, (_, i) => i));
|
|
408
|
+
const indices = /* @__PURE__ */ new Set();
|
|
409
|
+
const availableIndices = Array.from({ length: childCount }, (_, i) => i);
|
|
410
|
+
for (let i = 0; i < itemsToShow; i++) {
|
|
411
|
+
const j = Math.floor(Math.random() * (availableIndices.length - i)) + i;
|
|
412
|
+
[availableIndices[i], availableIndices[j]] = [availableIndices[j], availableIndices[i]];
|
|
413
|
+
}
|
|
414
|
+
availableIndices.slice(0, itemsToShow).forEach((i) => indices.add(i));
|
|
415
|
+
return indices;
|
|
416
|
+
}
|
|
417
|
+
/** Gets sequence indices, advancing position on manual randomize. */
|
|
418
|
+
getSequenceIndices(childCount, itemsToShow, advance) {
|
|
419
|
+
if (advance) this.sequencePosition = (this.sequencePosition + itemsToShow) % childCount;
|
|
420
|
+
const indices = /* @__PURE__ */ new Set();
|
|
421
|
+
for (let i = 0; i < itemsToShow; i++) indices.add((this.sequencePosition + i) % childCount);
|
|
422
|
+
return indices;
|
|
423
|
+
}
|
|
424
|
+
/** Gets unique random indices, avoiding excluded indices if possible. */
|
|
425
|
+
getUniqueRandomIndices(childCount, itemsToShow, excludeIndices) {
|
|
426
|
+
if (itemsToShow >= childCount) return new Set(Array.from({ length: childCount }, (_, i) => i));
|
|
427
|
+
let availableIndices = Array.from({ length: childCount }, (_, i) => i);
|
|
428
|
+
if (excludeIndices && excludeIndices.size > 0) {
|
|
429
|
+
const filtered = availableIndices.filter((i) => !excludeIndices.has(i));
|
|
430
|
+
if (filtered.length >= itemsToShow) availableIndices = filtered;
|
|
431
|
+
}
|
|
432
|
+
for (let i = 0; i < itemsToShow; i++) {
|
|
433
|
+
const j = Math.floor(Math.random() * (availableIndices.length - i)) + i;
|
|
434
|
+
[availableIndices[i], availableIndices[j]] = [availableIndices[j], availableIndices[i]];
|
|
435
|
+
}
|
|
436
|
+
return new Set(availableIndices.slice(0, itemsToShow));
|
|
437
|
+
}
|
|
438
|
+
/** Rotates the visible item(s) based on the selected mode. */
|
|
439
|
+
randomize() {
|
|
440
|
+
this.applySelection(true);
|
|
441
|
+
}
|
|
442
|
+
render() {
|
|
443
|
+
return html` <slot></slot> `;
|
|
444
|
+
}
|
|
445
|
+
};
|
|
446
|
+
__decorate([property({ type: Number })], SigveloRandomContent.prototype, "items", void 0);
|
|
447
|
+
__decorate([property({ type: String })], SigveloRandomContent.prototype, "mode", void 0);
|
|
448
|
+
customElements.define("sigvelo-random-content", SigveloRandomContent);
|
|
449
|
+
//#endregion
|
|
450
|
+
export { SigveloRandomContent as t };
|