{"id":24539836,"url":"https://github.com/unplatform-io/instantsearch-itemsjs-adapter","last_synced_at":"2025-04-15T06:26:10.619Z","repository":{"id":45286075,"uuid":"416232973","full_name":"unplatform-io/instantsearch-itemsjs-adapter","owner":"unplatform-io","description":"An adapter to use ItemsJs based client-side search with an Algolia Instantsearch front-end.","archived":false,"fork":false,"pushed_at":"2022-03-09T13:05:11.000Z","size":738,"stargazers_count":23,"open_issues_count":3,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-12T01:47:37.882Z","etag":null,"topics":["client-side","instantsearch","itemsjs","site-search","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unplatform-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-10-12T07:38:58.000Z","updated_at":"2024-08-23T10:48:11.000Z","dependencies_parsed_at":"2022-09-07T12:02:29.501Z","dependency_job_id":null,"html_url":"https://github.com/unplatform-io/instantsearch-itemsjs-adapter","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unplatform-io%2Finstantsearch-itemsjs-adapter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unplatform-io%2Finstantsearch-itemsjs-adapter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unplatform-io%2Finstantsearch-itemsjs-adapter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unplatform-io%2Finstantsearch-itemsjs-adapter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unplatform-io","download_url":"https://codeload.github.com/unplatform-io/instantsearch-itemsjs-adapter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235152328,"owners_count":18944168,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client-side","instantsearch","itemsjs","site-search","typescript"],"created_at":"2025-01-22T17:16:30.929Z","updated_at":"2025-01-22T17:16:31.664Z","avatar_url":"https://github.com/unplatform-io.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/unplatform-io/instantsearch-itemsjs-adapter/blob/main/logo-orange.svg\" alt=\"Instantsearch-ItemsJS-adapter\" width=\"200\" height=\"200\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eInstantsearch-ItemsJS-adapter\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/unplatform-io/instantsearch-itemsjs-adapter/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-informational\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/unplatform-io/instantsearch-itemsjs-adapter/actions\"\u003e\u003cimg src=\"https://github.com/unplatform-io/instantsearch-itemsjs-adapter/actions/workflows/main.yml/badge.svg\" alt=\"main\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003eThis library is an adapter that connects the search engine \u003ca href=\"https://github.com/itemsapi/itemsjs\" target\"_blank\"\u003eItemsJS\u003c/a\u003e with the opensource tool \u003ca href=\"https://github.com/algolia/instantsearch.js/\" target\"_blank\"\u003eInstantsearch\u003c/a\u003e (powered by \u003ca href=\"https://www.algolia.com/)\" target\"_blank\"\u003eAlgolia\u003c/a\u003e) that lets you quickly build a search interface in your front-end application.\u003c/p\u003e\n\n## Table of Content\n\n🔧 [Installation](#installation)\u003cbr/\u003e\n✏️ [Usage](#usage)\u003cbr/\u003e\n👀 [Demo](#demo)\u003cbr/\u003e\n📜 [Features](#features)\u003cbr/\u003e\n🤝 [Contribute](#contribute)\u003cbr/\u003e\n\n## Installation\nUse  `npm` to install `itemsjs-instantsearch-adapter`.\n```\nnpm install instantsearch-itemsjs-adapter\n```\n\nInstantsearch-ItemsJS-adapter does not create any UI component by itself.  \nTo be able to create a search interface, you'll need to  [install  `Instantsearch`](https://www.algolia.com/doc/guides/building-search-ui/installation/js/) as well.\n\n## Usage\n\n```js\nimport { createIndex, getSearchClient } from  \"instantsearch-itemsjs-adapter\";\n\nconst data = [{ \"id\":1,\"title\": \"Iphone 7\", \"category\":\"Apple\",\"price\":109.95 },\n{\"id\":1,\"title\": \"Samsung notce 10\",\"category\":\"Samsung\",\"price\":109.95 }]\n\nconst  options = {\n\tsearchableFields: [\"title\"],\n\tquery:  \"\",\n\taggregations: {\n\t\tcategory: {\n\t\t\ttitle:  \"category\",\n\t\t\tsize:  10,\n\t\t\tconjunction:  false,\n\t\t},\n\t\tprice: {\n\t\t\tshow_facet_stats: true\n\t\t},\n\t},\n\tsortings: {\n\t\tprice_asc: {\n\t\t\tfield:  \"price\",\n\t\t\torder:  \"asc\",\n\t\t},\n\t\tprice_desc: {\n\t\t\tfield:  \"price\",\n\t\t\torder:  \"desc\",\n\t\t},\n\t},\n};\n\nconst index = createIndex(data, options);\n\nconst searchClient = getSearchClient(index);\n```\n`options` Options are from the ItemsJS API found here: [ItemsJS](https://github.com/itemsapi/itemsjs)\n\n## Demo\n\nTo see an implementation of this adapter go to [unplatform-io/clientside-instantsearch-demo](https://github.com/unplatform-io/clientside-instantsearch-demo).\n\n## Features\n\n### Supported Instantsearch components\n| Component | | Explanation |\n| --- | :---: | --- |\n| Autocomplete | ❌ | Is not supported by ItemsJS |\n| [Breadcrumb](#%EF%B8%8F-breadcrumb) | ✔️ |\n| [ClearRefinements](#%EF%B8%8F-clearrefinements) | ✔️ |\n| [Configure](#%EF%B8%8F-configure) | ✔️ |\n| ConfigureRelatedItems | ❌ | Is not supported by ItemsJS |\n| [CurrentRefinements](#%EF%B8%8F-currentrefinements) | ✔️ |\n| DynamicWidgets | ❌ | Cannot be imported from react-instanstsearch-dom (version 6.12.1) |\n| [HierarchicalMenu](#%EF%B8%8F-hierarchicalmenu) | ✔️ |\n| Highlight | ❌ | Is not supported by ItemsJS |\n| [Hits](#%EF%B8%8F-hits) | ✔️ |\n| [HitsPerPage](#%EF%B8%8F-hitsperpage) | ✔️ |\n| Index | ❌ | Is not supported by ItemsJS |\n| [InfiniteHits](#%EF%B8%8F-infinitehits) | ✔️ |\n| [InstantSearch](#%EF%B8%8F-instantsearch) | ✔️ |\n| [Menu](#%EF%B8%8F-menu) | ✔️ |\n| [MenuSelect](#%EF%B8%8F-menuselect) | ✔️ |\n| [NumericMenu](#%EF%B8%8F-numericmenu) | ✔️ |\n| [Pagination](#%EF%B8%8F-pagination) | ✔️ |\n| [Panel](#%EF%B8%8F-panel) | ✔️ |\n| QueryRuleContext | ❌ | Is not supported by ItemsJS |\n| QueryRuleCustomData | ❌ | Is not supported by ItemsJS |\n| [RangeInput](#%EF%B8%8F-rangeinput) | ✔️ |\n| [RangeSlider](#%EF%B8%8F-rangeslider) | ✔️ | |\n| [RatingMenu](#%EF%B8%8F-ratingmenu) | ✔️ |\n| [RefinementList](#%EF%B8%8F-refinementlist) | ✔️ |\n| RelevantSort | ❌ | Is not supported by ItemsJS |\n| [ScrollTo](#%EF%B8%8F-scrollto) | ✔️ |\n| [SearchBox](#%EF%B8%8F-searchbox)| ✔️ |\n| [SearchState](#%EF%B8%8F-searchstate) | ✔️ |\n| Snippet | ❌ | Is not supported by ItemsJS |\n| [SortBy](#%EF%B8%8F-sortby) | ✔️ |\n| [StateResults](#%EF%B8%8F-stateresults) | ✔️ |\n| [Stats](#%EF%B8%8F-stats) | ✔️ |\n| [ToggleRefinement](#%EF%B8%8F-togglerefinement) | ✔️ |\n| [VoiceSearch](#%EF%B8%8F-voicesearch) | ✔️ |\n\n### ✔️ Breadcrumb\n[Breadcrumb](https://www.algolia.com/doc/api-reference/widgets/breadcrumb/react/)\n\nThe `Breadcrumb` widget allows a user to see where the current page is in relation to the facet’s hierarchy.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| attributes | ✔️ |\n| separator | ✔️ |\n| rootURL | ✔️ |\n| transformItems | ✔️ |\n| translations | ✔️ |\n\n### ✔️ ClearRefinements\n[ClearRefinements](https://www.algolia.com/doc/api-reference/widgets/clear-refinements/react/)\n\nThe `ClearRefinements` widget allows a user to delete all applied filters.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| clearsQuery | ✔️ |\n| translations | ✔️ |\n| transformItems | ✔️ |\n\n### ✔️ Configure\n[Configure](https://www.algolia.com/doc/api-reference/widgets/configure/react/)\n\nThe `Configure` widget allows a user to set fixed search parameters.\n\nThis widget can contain all [Search Parameters](https://www.algolia.com/doc/api-reference/search-api-parameters/), see this site for more information. ⚠️ The parameters are not tested, some may not work.\n\n### ✔️ CurrentRefinements\n[CurrentRefinements](https://www.algolia.com/doc/api-reference/widgets/current-refinements/react/)\n\nThe `CurrentRefinements` widget allows a user to see wich filters are apllied.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| clearsQuery | ❌ | Do not set this to true, the interface will no longer work properly. |\n| transformItems | ✔️ |\n\n### ✔️ HierarchicalMenu\n[HierarchicalMenu](https://www.algolia.com/doc/api-reference/widgets/hierarchical-menu/react/)\n\nThe `HierarchicalMenu` widget allows a user to filter on a single value for an attribute.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| attributes | ✔️ |\n| defaultRefinement | ✔️ |\n| facetOrdering | ❌ | Is not supported by ItemsJS |\n| limit | ✔️ |\n| showMore | ✔️ |\n| showMoreLimit | ✔️ |\n| separator | ❌ |\n| rootPath | ✔️ |\n| showParentLevel | ✔️ |\n| transformItems | ✔️ |\n| translations | ✔️ |\n\n### ✔️ Hits\n[Hits](https://www.algolia.com/doc/api-reference/widgets/hits/react/)\n\nThe `Hits` widget allows a user to see the result of their search.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| hitComponent | ✔️ |\n\n### ✔️ HitsPerPage\n[HitsPerPage](https://www.algolia.com/doc/api-reference/widgets/hits-per-page/react/)\n\nThe `HitsPerPage` widget allows a user to select how many hits wil appear on a page.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| items | ✔️ |\n| defaultRefinement | ✔️ |\n| transformItems | ✔️ |\n\n### ✔️ InfiniteHits\n[InfiniteHits](https://www.algolia.com/doc/api-reference/widgets/infinite-hits/react/)\n\nThe `InfiniteHits` widget allows a user to see the result of their search.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| showPrevious | ⚠️ | Can only be used if URL Sync is implemented. |\n| hitComponent | ✔️ |\n| translations | ✔️ |\n| cache | ✔️ |\n\n### ✔️ InstantSearch\n[InstantSearch](https://www.algolia.com/doc/api-reference/widgets/instantsearch/react/)\n\nThe `InstantSearch` widget allows a user to let all connected components (or widgets) interact with the searchState.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| indexName | ✔️ |\n| searchClient | ✔️ |\n| searchState | ✔️ |\n| resultsState | ✔️ | \n| createURL | ✔️ | \n| onSearchStateChange | ✔️ |\n| onSearchParameters | ✔️ |\n| refresh | ⚠️ | There is no proof that this parameter works. | \n| stalledSearchDelay | ✔️ | \n\n### ✔️ Menu\n[Menu](https://www.algolia.com/doc/api-reference/widgets/menu/react/)\n\nThe `Menu` widget allows a user to filter on a single value for an attribute.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| attribute | ✔️ |\n| defaultRefinement | ✔️ |\n| facetOrdering | ❌ | Is not supported by ItemsJS |\n| limit | ✔️ |\n| showMore | ✔️ |\n| showMoreLimit | ✔️ |\n| searchable | ❌ | Is not supported by ItemsJS, ⚠️Warning: when set true UI will change but throws error when used |\n| transformItems | ✔️ |\n| translations | ✔️ |\n\n### ✔️ MenuSelect\n[MenuSelect](https://www.algolia.com/doc/api-reference/widgets/menu-select/react/)\n\nThe `MenuSelect` widget allows a user to filter on a single value for an attribute.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| attribute | ✔️ |\n| defaultRefinement | ✔️ |\n| facetOrdering | ❌ | Is not supported by ItemsJS |\n| limit | ✔️ |\n| transformItems | ✔️ |\n| translations | ✔️ |\n\n### ✔️ NumericMenu\n[NumericMenu](https://www.algolia.com/doc/api-reference/widgets/numeric-menu/react/)\n\nThe `NumericMenu` widget allows a user to filter on a numeric field through the given ranges.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| attribute | ✔️ |\n| items | ✔️ |\n| defaultRefinement | ✔️ |\n| transformItems | ✔️ |\n| translations | ✔️ |\n\n⚠️ ItemsJS `show_facet_stats` needs to be true, for more information see [Facet Stats](#facet-stats).\n\n### ✔️ Pagination\n[Pagination](https://www.algolia.com/doc/api-reference/widgets/pagination/react/)\n\nThe `Pagination` widget allows a user to change the current page.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| defaultRefinement | ✔️ |\n| showFirst | ✔️ |\n| showPrevious | ✔️ |\n| showNext | ✔️ |\n| showLast | ✔️ |\n| padding | ✔️ |\n| totalPages | ✔️ |\n| translations | ✔️ |\n\n### ✔️ Panel\n[Panel](https://www.algolia.com/doc/api-reference/widgets/panel/react/)\n\nThe `Panel` widget allows a user to wrap other widgets in a consistent design.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| className | ✔️ |\n| header | ✔️ |\n| footer | ✔️ |\n\n### ✔️ RangeInput\n[RangeInput](https://www.algolia.com/doc/api-reference/widgets/range-input/js/)\n\nThe `rangeInput` widget allows a user to filter on a numeric field using a minimum and/or maximum input.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| attribute | ✔️ |\n| defaultRefinement | ✔️ |\n| min | ✔️ |\n| max | ✔️ |\n| precision | ✔️ |\n| translations | ✔️ |\n\n⚠️ ItemsJS `show_facet_stats` needs to be true, for more information see [Facet Stats](#facet-stats).\n\n### ✔️ RangeSlider\n[RangeSlider](https://www.algolia.com/doc/api-reference/widgets/range-slider/react/)\n\nThe `RangeSlider` widget allows a user to filter on a numeric field using a minimum and/or maximum input.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| attribute | ✔️ |\n| defaultRefinement | ✔️ |\n| min | ✔️ |\n| max | ✔️ |\n\n⚠️ ItemsJS `show_facet_stats` needs to be true, for more information see [Facet Stats](#facet-stats).\n\n### ✔️ RatingMenu\n[RatingMenu](https://www.algolia.com/doc/api-reference/widgets/rating-menu/react/)\n\nThe `RatingMenu` widget allows a user to filter on a numeric field by clicking on stars.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| attribute | ✔️ |\n| defaultRefinement | ✔️ |\n| min | ✔️ |\n| max | ✔️ |\n| translations | ✔️ |\n\n⚠️ ItemsJS `show_facet_stats` needs to be true, for more information see [Facet Stats](#facet-stats).\n\n### ✔️ RefinementList\n[RefinementList](https://www.algolia.com/doc/api-reference/widgets/refinement-list/react/)\n\nThe `RefinementList` widget allows a user to filter on a facet/field.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| attribute | ✔️ |\n| defaultRefinement | ✔️ |\n| facetOrdering | ❌ | Is not supported by ItemsJS |\n| operator | ❌ | ✔️Buildtime workaround available, see below |\n| limit | ✔️ |\n| showMore | ✔️ |\n| showMoreLimit | ✔️ |\n| searchable | ❌ | Is not supported by ItemsJS, ⚠️Warning: when set true UI will change but throws error when used |\n| transformItems | ✔️ |\n| translations | ✔️ |\n\n✔️Operator workaround: \u003cbr /\u003e\n Can be passed to ItemsJS buildtime (not available at runtime).\u003cbr /\u003e\n Set `conjunction` to true (OR operator) or false (AND operator). \u003cbr /\u003e\n \n```js\naggregations: {\n    category: {\n      title: \"category\",\n      conjunction: false,\n    }\n}\n```\n\n### ✔️ ScrollTo\n[ScrollTo](https://www.algolia.com/doc/api-reference/widgets/scroll-to/react/)\n\nThe `ScrollTo` widget allows a user to automatically scroll to an object when the searchState is adjusted.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| scrollOn | ✔️ |\n\n### ✔️ SearchBox\n[SearchBox](https://www.algolia.com/doc/api-reference/widgets/search-box/react/)\n\nThe `SearchBox` widget allows a user to search text based.\n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| defaultRefinement | ⚠️ | Text appears in the search box but the dataset is not searched. |\n| autoFocus | ✔️ |\n| searchAsYouType | ✔️ |\n| showLoadingIndicator | ✔️ | There is no proof that this parameter works. |\n| submit | ✔️ | There is no proof that this parameter works. |\n| reset | ✔️ |\n| loadingIndicator | ✔️ | There is no proof that this parameter works. |\n| focusShortcuts | ✔️ |\n| onSubmit | ✔️ |\n| onReset | ✔️ |\n| on* | ✔️ |\n| translations | ✔️ |\n\n### ✔️ SearchState\n[SearchState](https://www.algolia.com/doc/api-reference/widgets/ui-state/react/)\n\nThe `SearchState` widget allows a user to update their search parameters. When updated automaticly searched.\n\n### ✔️ SortBy\n[Sortby](https://www.algolia.com/doc/api-reference/widgets/sort-by/js/)\n\nThe `sortBy` widget allows a user to change the way hits are sorted. \n\n| Parameter |  | Explanation |\n| --- | :---: | --- |\n| items | ✔️ |\n| defaultRefinement | ✔️ |\n| transformItems | ✔️ |\n\nWith Instantsearch-ItemsJS-adapter you have to define the same key from your configuration `sorting` for the sortBy value.\nItemsJS documentation for the configuration and searching can be found here [ItemsJS configuration](https://github.com/itemsapi/itemsjs/blob/master/docs/configuration.md)\n\n```js\nsortings:  { \n\tprice_asc:  { field:  \"price\", order:  \"asc\",  }, \n\tprice_desc:  { field:  \"price\", order:  \"desc\", },  \n},\n\n\u003cSortBy\n\tdefaultRefinement=\"\"\n\titems={[\n\t\t{ value:  \"price_desc\", label:  \"High to low\" },\n\t\t{ value:  \"price_asc\", label:  \"Low to high\" },\n\t]} \n/\u003e\n```\n\nThe usage of the `sortBy` widget differs from the one found in Aloglia's documentation.\nInstantsearch-ItemsJS-adapter does not make use of a [replica indices](https://www.algolia.com/doc/guides/sending-and-managing-data/manage-your-indices/#replicating-an-index) \n\n### ✔️ StateResults\n[StateResults](https://www.algolia.com/doc/api-reference/widgets/state-results/react/)\n\nThe `StateResults` widget allows a user to access the searchState and the searchResults of InstantSearch. For instance, this widget allows you to create results/no results or query/no query pages.\n\n### ✔️ Stats\n[Stats](https://www.algolia.com/doc/api-reference/widgets/stats/react/)\n\nThe `Stats` widget allows a user to displays the total number of matching hits and the time it took to get them (time spent in ItemsJS)\n\n| Parameter | | Explanation |\n| --- | :---: | --- |\n| translations | ✔️ | |\n\n### ✔️ ToggleRefinement\n[ToggleRefinement](https://www.algolia.com/doc/api-reference/widgets/toggle-refinement/react/)\n\nThe `ToggleRefinement` widget allows a user to on/off filtering feature based on an attribute value\n\n| Parameter | | Explanation |\n| --- | :---: | --- |\n| attribute | ✔️ | |\n| label | ✔️ |\n| value | ✔️ |\n| defaultRefinement | ✔️ | |\n\n### ✔️ VoiceSearch\n[VoiceSearch](https://www.algolia.com/doc/api-reference/widgets/voice-search/react/)\n\nThe `VoiceSearch` widget allows a user to perform a voice-based query.\n\n| Parameter | | Explanation |\n| --- | :---: | --- |\n| searchAsYouSpeak | ✔️ | |\n| buttonTextComponent | ✔️ |\n| statusComponent | ✔️ |\n| translations | ✔️ |\n\n### Facet Stats\nFor all nummeric fields `show_facet_stats: true` is required to calculate Instantsearch `facet_stats` and to avoid errors, it should be passed to ItemsJS, as shown below.\n\n```js\naggregations: {\n    price: { show_facet_stats: true, }, \n},\n\n\u003cNumericMenu \n\tattribute=\"price\"\n\titems={[\n              { label: \"Less than 10\", end: 10 },\n              { label: \"10 till 25\", start: 10, end: 25 },\n              { label: \"25 till 50\", start: 25, end: 50 },\n              { label: \"More than 50\", start: 50 },\n        ]} \n/\u003e\n\u003cRangeInput attribute=\"price\" /\u003e\n\u003cRangeSlider attribute=\"price\" /\u003e\n\u003cRatingMenu attribute=\"price\" /\u003e\n```\n\n## Contribute\nHelp to this project is appreciated. If you want to help please use Jest and ESlint mentioned below, before creating a pull request.\n\n### [Jest](https://jestjs.io/)\n\nTo check functionalities run Jest tests, and if you make a new functionality also write some tests for this code.\n\n```bash\n\nnpm run test\n\n```\n\n### [ESlint](https://eslint.org/)\n\nTo keep the code clean run ESlint and resolve the errors when you're done programming.\n\n```bash\nnpm run eslint\n```\nTo automaticly resolve the errors run:\n```bash\nnpm run eslint:fix\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funplatform-io%2Finstantsearch-itemsjs-adapter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funplatform-io%2Finstantsearch-itemsjs-adapter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funplatform-io%2Finstantsearch-itemsjs-adapter/lists"}