├── .eslintignore
├── .eslintrc
├── .github
└── workflows
│ └── playwright.yml
├── .gitignore
├── .hygen.js
├── .hygen
└── new
│ └── component
│ ├── component.tsx.ejs.t
│ ├── index.js
│ ├── index.tsx.ejs.t
│ ├── styles.scss.ejs.t
│ └── test.js.ejs.t
├── .nvmrc
├── .prettierignore
├── .prettierrc.json
├── .unimportedrc.json
├── LICENSE.md
├── README.md
├── _examples
├── gapminder_js
│ ├── gapminder.json
│ └── id
└── gapminder_testing
│ ├── config.jsonp
│ ├── displays
│ ├── Life_expectancy
│ │ ├── displayInfo.jsonp
│ │ ├── metaData.js
│ │ └── panels
│ │ │ ├── html_panel
│ │ │ ├── Afghanistan.html
│ │ │ ├── Albania.html
│ │ │ ├── Algeria.html
│ │ │ ├── Angola.html
│ │ │ ├── Argentina.html
│ │ │ ├── Australia.html
│ │ │ ├── Austria.html
│ │ │ ├── Bahrain.html
│ │ │ ├── Bangladesh.html
│ │ │ ├── Belgium.html
│ │ │ ├── Benin.html
│ │ │ ├── Bolivia.html
│ │ │ ├── Bosnia_and_Herzegovina.html
│ │ │ ├── Botswana.html
│ │ │ ├── Brazil.html
│ │ │ ├── Bulgaria.html
│ │ │ ├── Burkina_Faso.html
│ │ │ ├── Burundi.html
│ │ │ ├── Cambodia.html
│ │ │ ├── Cameroon.html
│ │ │ ├── Canada.html
│ │ │ ├── Central_African_Republic.html
│ │ │ ├── Chad.html
│ │ │ ├── Chile.html
│ │ │ ├── China.html
│ │ │ ├── Colombia.html
│ │ │ ├── Comoros.html
│ │ │ ├── Congo__Dem__Rep_.html
│ │ │ ├── Congo__Rep_.html
│ │ │ ├── Costa_Rica.html
│ │ │ ├── Cote_d_Ivoire.html
│ │ │ ├── Croatia.html
│ │ │ ├── Cuba.html
│ │ │ ├── Czech_Republic.html
│ │ │ ├── Denmark.html
│ │ │ ├── Djibouti.html
│ │ │ ├── Dominican_Republic.html
│ │ │ ├── Ecuador.html
│ │ │ ├── Egypt.html
│ │ │ ├── El_Salvador.html
│ │ │ ├── Equatorial_Guinea.html
│ │ │ ├── Eritrea.html
│ │ │ ├── Ethiopia.html
│ │ │ ├── Finland.html
│ │ │ ├── France.html
│ │ │ ├── Gabon.html
│ │ │ ├── Gambia.html
│ │ │ ├── Germany.html
│ │ │ ├── Ghana.html
│ │ │ ├── Greece.html
│ │ │ ├── Guatemala.html
│ │ │ ├── Guinea.html
│ │ │ ├── Guinea_Bissau.html
│ │ │ ├── Haiti.html
│ │ │ ├── Honduras.html
│ │ │ ├── Hong_Kong__China.html
│ │ │ ├── Hungary.html
│ │ │ ├── Iceland.html
│ │ │ ├── India.html
│ │ │ ├── Indonesia.html
│ │ │ ├── Iran.html
│ │ │ ├── Iraq.html
│ │ │ ├── Ireland.html
│ │ │ ├── Israel.html
│ │ │ ├── Italy.html
│ │ │ ├── Jamaica.html
│ │ │ ├── Japan.html
│ │ │ ├── Jordan.html
│ │ │ ├── Kenya.html
│ │ │ ├── Korea__Dem__Rep_.html
│ │ │ ├── Korea__Rep_.html
│ │ │ ├── Kuwait.html
│ │ │ ├── Lebanon.html
│ │ │ ├── Lesotho.html
│ │ │ ├── Liberia.html
│ │ │ ├── Libya.html
│ │ │ ├── Madagascar.html
│ │ │ ├── Malawi.html
│ │ │ ├── Malaysia.html
│ │ │ ├── Mali.html
│ │ │ ├── Mauritania.html
│ │ │ ├── Mauritius.html
│ │ │ ├── Mexico.html
│ │ │ ├── Mongolia.html
│ │ │ ├── Montenegro.html
│ │ │ ├── Morocco.html
│ │ │ ├── Mozambique.html
│ │ │ ├── Myanmar.html
│ │ │ ├── Namibia.html
│ │ │ ├── Nepal.html
│ │ │ ├── Netherlands.html
│ │ │ ├── New_Zealand.html
│ │ │ ├── Nicaragua.html
│ │ │ ├── Niger.html
│ │ │ ├── Nigeria.html
│ │ │ ├── Norway.html
│ │ │ ├── Oman.html
│ │ │ ├── Pakistan.html
│ │ │ ├── Panama.html
│ │ │ ├── Paraguay.html
│ │ │ ├── Peru.html
│ │ │ ├── Philippines.html
│ │ │ ├── Poland.html
│ │ │ ├── Portugal.html
│ │ │ ├── Puerto_Rico.html
│ │ │ ├── Reunion.html
│ │ │ ├── Romania.html
│ │ │ ├── Rwanda.html
│ │ │ ├── Sao_Tome_and_Principe.html
│ │ │ ├── Saudi_Arabia.html
│ │ │ ├── Senegal.html
│ │ │ ├── Serbia.html
│ │ │ ├── Sierra_Leone.html
│ │ │ ├── Singapore.html
│ │ │ ├── Slovak_Republic.html
│ │ │ ├── Slovenia.html
│ │ │ ├── Somalia.html
│ │ │ ├── South_Africa.html
│ │ │ ├── Spain.html
│ │ │ ├── Sri_Lanka.html
│ │ │ ├── Sudan.html
│ │ │ ├── Swaziland.html
│ │ │ ├── Sweden.html
│ │ │ ├── Switzerland.html
│ │ │ ├── Syria.html
│ │ │ ├── Taiwan.html
│ │ │ ├── Tanzania.html
│ │ │ ├── Thailand.html
│ │ │ ├── Togo.html
│ │ │ ├── Trinidad_and_Tobago.html
│ │ │ ├── Tunisia.html
│ │ │ ├── Turkey.html
│ │ │ ├── Uganda.html
│ │ │ ├── United_Kingdom.html
│ │ │ ├── United_States.html
│ │ │ ├── Uruguay.html
│ │ │ ├── Venezuela.html
│ │ │ ├── Vietnam.html
│ │ │ ├── West_Bank_and_Gaza.html
│ │ │ ├── Yemen__Rep_.html
│ │ │ ├── Zambia.html
│ │ │ └── Zimbabwe.html
│ │ │ └── lexp_time
│ │ │ ├── Afghanistan_Asia.svg
│ │ │ ├── Albania_Europe.svg
│ │ │ ├── Algeria_Africa.svg
│ │ │ ├── Angola_Africa.svg
│ │ │ ├── Argentina_Americas.svg
│ │ │ ├── Australia_Oceania.svg
│ │ │ ├── Austria_Europe.svg
│ │ │ ├── Bahrain_Asia.svg
│ │ │ ├── Bangladesh_Asia.svg
│ │ │ ├── Belgium_Europe.svg
│ │ │ ├── Benin_Africa.svg
│ │ │ ├── Bolivia_Americas.svg
│ │ │ ├── Bosnia_and_Herzegovina_Europe.svg
│ │ │ ├── Botswana_Africa.svg
│ │ │ ├── Brazil_Americas.svg
│ │ │ ├── Bulgaria_Europe.svg
│ │ │ ├── Burkina_Faso_Africa.svg
│ │ │ ├── Burundi_Africa.svg
│ │ │ ├── Cambodia_Asia.svg
│ │ │ ├── Cameroon_Africa.svg
│ │ │ ├── Canada_Americas.svg
│ │ │ ├── Central_African_Republic_Africa.svg
│ │ │ ├── Chad_Africa.svg
│ │ │ ├── Chile_Americas.svg
│ │ │ ├── China_Asia.svg
│ │ │ ├── Colombia_Americas.svg
│ │ │ ├── Comoros_Africa.svg
│ │ │ ├── Congo__Dem__Rep__Africa.svg
│ │ │ ├── Congo__Rep__Africa.svg
│ │ │ ├── Costa_Rica_Americas.svg
│ │ │ ├── Cote_d_Ivoire_Africa.svg
│ │ │ ├── Croatia_Europe.svg
│ │ │ ├── Cuba_Americas.svg
│ │ │ ├── Czech_Republic_Europe.svg
│ │ │ ├── Denmark_Europe.svg
│ │ │ ├── Djibouti_Africa.svg
│ │ │ ├── Dominican_Republic_Americas.svg
│ │ │ ├── Ecuador_Americas.svg
│ │ │ ├── Egypt_Africa.svg
│ │ │ ├── El_Salvador_Americas.svg
│ │ │ ├── Equatorial_Guinea_Africa.svg
│ │ │ ├── Eritrea_Africa.svg
│ │ │ ├── Ethiopia_Africa.svg
│ │ │ ├── Finland_Europe.svg
│ │ │ ├── France_Europe.svg
│ │ │ ├── Gabon_Africa.svg
│ │ │ ├── Gambia_Africa.svg
│ │ │ ├── Germany_Europe.svg
│ │ │ ├── Ghana_Africa.svg
│ │ │ ├── Greece_Europe.svg
│ │ │ ├── Guatemala_Americas.svg
│ │ │ ├── Guinea_Africa.svg
│ │ │ ├── Guinea_Bissau_Africa.svg
│ │ │ ├── Haiti_Americas.svg
│ │ │ ├── Honduras_Americas.svg
│ │ │ ├── Hong_Kong__China_Asia.svg
│ │ │ ├── Hungary_Europe.svg
│ │ │ ├── Iceland_Europe.svg
│ │ │ ├── India_Asia.svg
│ │ │ ├── Indonesia_Asia.svg
│ │ │ ├── Iran_Asia.svg
│ │ │ ├── Iraq_Asia.svg
│ │ │ ├── Ireland_Europe.svg
│ │ │ ├── Israel_Asia.svg
│ │ │ ├── Italy_Europe.svg
│ │ │ ├── Jamaica_Americas.svg
│ │ │ ├── Japan_Asia.svg
│ │ │ ├── Jordan_Asia.svg
│ │ │ ├── Kenya_Africa.svg
│ │ │ ├── Korea__Dem__Rep__Asia.svg
│ │ │ ├── Korea__Rep__Asia.svg
│ │ │ ├── Kuwait_Asia.svg
│ │ │ ├── Lebanon_Asia.svg
│ │ │ ├── Lesotho_Africa.svg
│ │ │ ├── Liberia_Africa.svg
│ │ │ ├── Libya_Africa.svg
│ │ │ ├── Madagascar_Africa.svg
│ │ │ ├── Malawi_Africa.svg
│ │ │ ├── Malaysia_Asia.svg
│ │ │ ├── Mali_Africa.svg
│ │ │ ├── Mauritania_Africa.svg
│ │ │ ├── Mauritius_Africa.svg
│ │ │ ├── Mexico_Americas.svg
│ │ │ ├── Mongolia_Asia.svg
│ │ │ ├── Montenegro_Europe.svg
│ │ │ ├── Morocco_Africa.svg
│ │ │ ├── Mozambique_Africa.svg
│ │ │ ├── Myanmar_Asia.svg
│ │ │ ├── Namibia_Africa.svg
│ │ │ ├── Nepal_Asia.svg
│ │ │ ├── Netherlands_Europe.svg
│ │ │ ├── New_Zealand_Oceania.svg
│ │ │ ├── Nicaragua_Americas.svg
│ │ │ ├── Niger_Africa.svg
│ │ │ ├── Nigeria_Africa.svg
│ │ │ ├── Norway_Europe.svg
│ │ │ ├── Oman_Asia.svg
│ │ │ ├── Pakistan_Asia.svg
│ │ │ ├── Panama_Americas.svg
│ │ │ ├── Paraguay_Americas.svg
│ │ │ ├── Peru_Americas.svg
│ │ │ ├── Philippines_Asia.svg
│ │ │ ├── Poland_Europe.svg
│ │ │ ├── Portugal_Europe.svg
│ │ │ ├── Puerto_Rico_Americas.svg
│ │ │ ├── Reunion_Africa.svg
│ │ │ ├── Romania_Europe.svg
│ │ │ ├── Rwanda_Africa.svg
│ │ │ ├── Sao_Tome_and_Principe_Africa.svg
│ │ │ ├── Saudi_Arabia_Asia.svg
│ │ │ ├── Senegal_Africa.svg
│ │ │ ├── Serbia_Europe.svg
│ │ │ ├── Sierra_Leone_Africa.svg
│ │ │ ├── Singapore_Asia.svg
│ │ │ ├── Slovak_Republic_Europe.svg
│ │ │ ├── Slovenia_Europe.svg
│ │ │ ├── Somalia_Africa.svg
│ │ │ ├── South_Africa_Africa.svg
│ │ │ ├── Spain_Europe.svg
│ │ │ ├── Sri_Lanka_Asia.svg
│ │ │ ├── Sudan_Africa.svg
│ │ │ ├── Swaziland_Africa.svg
│ │ │ ├── Sweden_Europe.svg
│ │ │ ├── Switzerland_Europe.svg
│ │ │ ├── Syria_Asia.svg
│ │ │ ├── Taiwan_Asia.svg
│ │ │ ├── Tanzania_Africa.svg
│ │ │ ├── Thailand_Asia.svg
│ │ │ ├── Togo_Africa.svg
│ │ │ ├── Trinidad_and_Tobago_Americas.svg
│ │ │ ├── Tunisia_Africa.svg
│ │ │ ├── Turkey_Europe.svg
│ │ │ ├── Uganda_Africa.svg
│ │ │ ├── United_Kingdom_Europe.svg
│ │ │ ├── United_States_Americas.svg
│ │ │ ├── Uruguay_Americas.svg
│ │ │ ├── Venezuela_Americas.svg
│ │ │ ├── Vietnam_Asia.svg
│ │ │ ├── West_Bank_and_Gaza_Asia.svg
│ │ │ ├── Yemen__Rep__Asia.svg
│ │ │ ├── Zambia_Africa.svg
│ │ │ └── Zimbabwe_Africa.svg
│ ├── Life_expectancy_by_continent
│ │ ├── displayInfo.jsonp
│ │ ├── metaData.js
│ │ └── panels
│ │ │ └── lexp_time
│ │ │ ├── Africa.png
│ │ │ ├── Africa.svg
│ │ │ ├── Americas.png
│ │ │ ├── Americas.svg
│ │ │ ├── Asia.png
│ │ │ ├── Asia.svg
│ │ │ ├── Europe.png
│ │ │ ├── Europe.svg
│ │ │ ├── Oceania.png
│ │ │ └── Oceania.svg
│ ├── displayList.jsonp
│ └── libs
│ │ └── mustachewidget
│ │ ├── htmlwidgets-1.6.4
│ │ └── htmlwidgets.js
│ │ ├── mustache-4.2.0
│ │ └── mustache.min.js
│ │ └── mustachewidget-binding-0.0.0.9000
│ │ └── mustachewidget.js
│ ├── id
│ └── index.html
├── cors.js
├── deploy.sh
├── index.html
├── package-lock.json
├── package.json
├── playwright.config.ts
├── public
├── favicon.ico
├── index.html
├── manifest.json
└── mockServiceWorker.js
├── src
├── App.tsx
├── CrossfilterClient.ts
├── DataClient.ts
├── TrelliscopeApp.tsx
├── assets
│ └── styles
│ │ ├── main.css
│ │ └── variables.scss
├── classManipulation.ts
├── components
│ ├── AddViewModal
│ │ ├── AddViewModal.module.scss
│ │ ├── AddViewModal.tsx
│ │ └── index.ts
│ ├── CatHistogram
│ │ ├── CatHistogram.module.scss
│ │ ├── CatHistogram.tsx
│ │ ├── CatHistogramBar.tsx
│ │ └── index.ts
│ ├── Chip
│ │ ├── Chip.module.scss
│ │ ├── Chip.tsx
│ │ └── index.ts
│ ├── ColumnSelector
│ │ ├── ColumnSelector.module.scss
│ │ ├── ColumnSelector.tsx
│ │ └── index.ts
│ ├── ComposeEmail
│ │ ├── ComposeEmail.module.scss
│ │ ├── ComposeEmail.tsx
│ │ └── index.ts
│ ├── ConfirmationModal
│ │ ├── ConfirmationModal.module.scss
│ │ ├── ConfirmationModal.tsx
│ │ └── index.ts
│ ├── Content
│ │ ├── Content.module.scss
│ │ ├── Content.tsx
│ │ └── index.ts
│ ├── ContentContainer
│ │ ├── ContentContainer.module.scss
│ │ ├── ContentContainer.tsx
│ │ └── index.ts
│ ├── ContentHeader
│ │ ├── ContentHeader.module.scss
│ │ ├── ContentHeader.tsx
│ │ └── index.ts
│ ├── Credits
│ │ ├── Credits.module.scss
│ │ ├── Credits.tsx
│ │ └── index.ts
│ ├── DataProvider
│ │ └── index.tsx
│ ├── DataTable
│ │ ├── DataTable.module.scss
│ │ ├── DataTable.tsx
│ │ └── index.ts
│ ├── DisplayInfo
│ │ ├── DisplayInfo.module.scss
│ │ ├── DisplayInfo.tsx
│ │ └── index.ts
│ ├── DisplaySelect
│ │ ├── DisplaySelect.module.scss
│ │ ├── DisplaySelect.tsx
│ │ └── index.ts
│ ├── DownloadCsv
│ │ ├── DownloadCsv.module.scss
│ │ ├── DownloadCsv.tsx
│ │ └── index.ts
│ ├── Ellipsis
│ │ ├── Ellipsis.module.scss
│ │ ├── Ellipsis.tsx
│ │ └── index.ts
│ ├── ErrorSnack
│ │ ├── ErrorSnack.module.scss
│ │ ├── ErrorSnack.tsx
│ │ └── index.ts
│ ├── ErrorWrapper
│ │ ├── ErrorWrapper.module.scss
│ │ ├── ErrorWrapper.tsx
│ │ └── index.ts
│ ├── ExportInputDialog
│ │ ├── ExportInputDialog.module.scss
│ │ ├── ExportInputDialog.tsx
│ │ └── index.ts
│ ├── ExportViewsModal
│ │ ├── ExportViewsModal.module.scss
│ │ ├── ExportViewsModal.tsx
│ │ └── index.ts
│ ├── FilterCat
│ │ ├── FilterCat.module.scss
│ │ ├── FilterCat.tsx
│ │ └── index.ts
│ ├── FilterDateRange
│ │ ├── FilterDateRange.module.scss
│ │ ├── FilterDateRange.tsx
│ │ └── index.ts
│ ├── FilterDateTimeRange
│ │ ├── FilterDateTimeRange.module.scss
│ │ ├── FilterDateTimeRange.tsx
│ │ └── index.ts
│ ├── FilterInput
│ │ ├── FilterInput.module.scss
│ │ ├── FilterInput.tsx
│ │ └── index.ts
│ ├── FilterNum
│ │ ├── FilterNum.module.scss
│ │ ├── FilterNum.tsx
│ │ └── index.ts
│ ├── Filters
│ │ ├── Filters.module.scss
│ │ ├── Filters.tsx
│ │ └── index.ts
│ ├── FormattedNumber
│ │ ├── FormattedNumber.test.js
│ │ ├── FormattedNumber.tsx
│ │ └── index.ts
│ ├── FullscreenButton
│ │ ├── FullscreenButton.module.scss
│ │ ├── FullscreenButton.tsx
│ │ └── index.ts
│ ├── Header
│ │ ├── Header.module.scss
│ │ ├── Header.tsx
│ │ └── index.ts
│ ├── HelpInfo
│ │ ├── HelpInfo.module.scss
│ │ ├── HelpInfo.test.js
│ │ ├── HelpInfo.tsx
│ │ └── index.ts
│ ├── HowToUse
│ │ ├── HowToUse.module.scss
│ │ ├── HowToUse.tsx
│ │ └── index.ts
│ ├── ImportViewsModal
│ │ ├── ImportViewsModal.module.scss
│ │ ├── ImportViewsModal.tsx
│ │ └── index.ts
│ ├── Labels
│ │ ├── Labels.module.scss
│ │ ├── Labels.tsx
│ │ └── index.ts
│ ├── LayoutSelector
│ │ ├── LayoutSelector.module.scss
│ │ ├── LayoutSelector.tsx
│ │ └── index.ts
│ ├── NumHistogram
│ │ ├── NumHistogram.module.scss
│ │ ├── NumHistogram.tsx
│ │ ├── NumHistogramAxis.tsx
│ │ ├── NumHistogramBar.tsx
│ │ ├── NumHistogramBrush.tsx
│ │ └── index.ts
│ ├── Pagination
│ │ ├── Pagination.module.scss
│ │ ├── Pagination.tsx
│ │ └── index.ts
│ ├── Panel
│ │ ├── Panel.module.scss
│ │ ├── Panel.test.js
│ │ ├── Panel.tsx
│ │ ├── PanelGraphic.tsx
│ │ ├── PanelGraphicWrapper.tsx
│ │ └── index.ts
│ ├── PanelDialog
│ │ ├── PanelDialog.module.scss
│ │ ├── PanelDialog.tsx
│ │ └── index.ts
│ ├── PanelInputs
│ │ ├── PanelInputCheckbox.tsx
│ │ ├── PanelInputMultiSelect.tsx
│ │ ├── PanelInputRadios.tsx
│ │ ├── PanelInputSelect.tsx
│ │ ├── PanelInputText.tsx
│ │ ├── PanelInputs.module.scss
│ │ └── index.ts
│ ├── PanelLabels
│ │ ├── PanelLabels.module.scss
│ │ ├── PanelLabels.tsx
│ │ ├── PanelLabelsCell.tsx
│ │ └── index.ts
│ ├── PanelPicker
│ │ ├── PanelPicker.module.scss
│ │ ├── PanelPicker.tsx
│ │ └── index.ts
│ ├── PanelZoomLabels
│ │ ├── PanelZoomLabels.module.scss
│ │ ├── PanelZoomLabels.tsx
│ │ ├── PanelZoomLabelsCell.tsx
│ │ ├── PanelZoomLabelsCellContent.tsx
│ │ └── index.ts
│ ├── Share
│ │ ├── Share.module.scss
│ │ ├── Share.tsx
│ │ └── index.ts
│ ├── Shortcuts
│ │ ├── Shortcuts.module.scss
│ │ ├── Shortcuts.tsx
│ │ └── index.ts
│ ├── Sidebar
│ │ ├── Sidebar.module.scss
│ │ ├── Sidebar.tsx
│ │ └── index.ts
│ ├── Sort
│ │ ├── Sort.module.scss
│ │ ├── Sort.tsx
│ │ └── index.ts
│ ├── Tour
│ │ ├── Tour.module.scss
│ │ ├── Tour.tsx
│ │ └── index.ts
│ ├── UserInfo
│ │ ├── UserInfo.module.scss
│ │ ├── UserInfo.tsx
│ │ └── index.ts
│ ├── VariableSelector
│ │ ├── VariableSelector.module.scss
│ │ ├── VariableSelector.tsx
│ │ └── index.ts
│ └── Views
│ │ ├── Views.module.scss
│ │ ├── Views.tsx
│ │ └── index.ts
├── constants.ts
├── getCustomProperties.tsx
├── index.tsx
├── inputUtils.ts
├── jsApi.ts
├── middleware
│ ├── callbackMiddleware.ts
│ └── hash.ts
├── palette.ts
├── reducers
│ └── index.ts
├── selectors
│ ├── app.ts
│ ├── hash.ts
│ ├── index.ts
│ ├── ui.ts
│ └── useMetaInfo.ts
├── setupTests.js
├── slices
│ ├── appSlice.ts
│ ├── cogDataMutableSlice.ts
│ ├── configAPI.ts
│ ├── configSlice.ts
│ ├── displayInfoAPI.ts
│ ├── displayListAPI.ts
│ ├── filterSlice.ts
│ ├── htmlAPI.ts
│ ├── labelsSlice.ts
│ ├── layoutSlice.ts
│ ├── metaDataAPI.ts
│ ├── relDispPositionsSlice.ts
│ ├── selectedDisplaySlice.ts
│ ├── selectedRelDispsSlice.ts
│ ├── sortSlice.ts
│ └── uiSlice.ts
├── store.ts
├── test-utils.js
├── test
│ ├── __mockData__
│ │ ├── mockFunctions.js
│ │ ├── restHandlers.js
│ │ ├── server.js
│ │ └── worker.js
│ ├── appError.spec.js
│ ├── appHeader.spec.js
│ ├── appLoad.spec.js
│ └── multipleDisplays.spec.js
├── trelliscopeAppFunc.tsx
├── types
│ ├── browser-jsonp.d.ts
│ ├── configs.d.ts
│ ├── global.d.ts
│ ├── types.d.ts
│ └── typesOld.d.ts
└── utils.ts
├── tests
├── columns.spec.ts
├── filters.spec.ts
├── header.spec.ts
├── labels.spec.ts
├── layoutselection.spec.ts
├── pagination.spec.ts
├── paneldialog.spec.ts
├── sorting.spec.ts
├── table.spec.ts
└── views.spec.ts
├── tsconfig.json
├── vite-env.d.ts
├── vite.config.ts
└── vite.lib.config.ts
/.eslintignore:
--------------------------------------------------------------------------------
1 | /.pnp
2 | .pnp.js
3 |
4 | # testing
5 | /coverage
6 |
7 | # production
8 | /build
9 |
10 | # misc
11 | .DS_Store
12 | .env.local
13 | .env.development.local
14 | .env.test.local
15 | .env.production.local
16 |
17 | npm-debug.log*
18 | yarn-debug.log*
19 | yarn-error.log*
20 |
21 | dist
22 | _ignore
23 | public/_test/
24 | *.code-workspace
25 | .history
--------------------------------------------------------------------------------
/.github/workflows/playwright.yml:
--------------------------------------------------------------------------------
1 | name: Playwright Tests
2 | on:
3 | push:
4 | branches: [ main, master, develop ]
5 | pull_request:
6 | branches: [ main, master, develop ]
7 | jobs:
8 | test:
9 | timeout-minutes: 60
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v3
13 | - uses: actions/setup-node@v3
14 | with:
15 | node-version: 20
16 | - name: Install dependencies
17 | run: npm ci
18 | - name: Install Playwright Browsers
19 | run: npx playwright install --with-deps
20 | - name: Run Playwright tests
21 | run: npx playwright test --project=chromium
22 | - uses: actions/upload-artifact@v3
23 | if: always()
24 | with:
25 | name: playwright-report
26 | path: playwright-report/
27 | retention-days: 30
28 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # production
12 | /build
13 |
14 | # misc
15 | .DS_Store
16 | .env
17 | .env.local
18 | .env.development.local
19 | .env.test.local
20 | .env.production.local
21 | _examples/*
22 | !_examples/gapminder_testing/*
23 | !_examples/gapminder_js/gapminder.json
24 |
25 | npm-debug.log*
26 | yarn-debug.log*
27 | yarn-error.log*
28 |
29 | dist
30 | _ignore
31 | public/_test/
32 | public/info.html
33 | *.code-workspace
34 | .history
35 | /test-results/
36 | /playwright-report/
37 | /playwright/.cache/
38 | /test-results/
39 | /playwright-report/
40 | /blob-report/
41 | /playwright/.cache/
42 |
--------------------------------------------------------------------------------
/.hygen.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | templates: `${__dirname}/.hygen`,
3 | };
4 |
--------------------------------------------------------------------------------
/.hygen/new/component/component.tsx.ejs.t:
--------------------------------------------------------------------------------
1 | ---
2 | to: src/components/<%= name %>/<%= name %>.tsx
3 | ---
4 | import React from 'react';
5 | import ErrorWrapper from '../ErrorWrapper';
6 | import styles from './<%= name %>.module.scss';
7 |
8 | interface <%= name %>Props {};
9 |
10 | const <%= name %>: React.FC<<%= name %>Props> = () => {
11 | return (
12 |