import { EditableNumberRangeFacet , EditableNumberRangeFilter , Facet , HierarchicalFacet , HierarchicalFilter , NumberRangeFacet , NumberRangeFilter , RangeValue , SimpleFacet , SimpleFilter } from '@empathyco/x-types' ; import { arrayToObject } from '../utils' ; import { Dictionary } from '../utils/types' ; import { createEditableNumberRangeFilter , CreateHierarchicalFilter , createHierarchicalFilterFactory , createNumberRangeFilter , createSimpleFilter } from './filters-stubs.factory' ; /**
 * Creates a  {@link @empathyco/x-types#SimpleFacet | SimpleFacet} stub.
 *
 *  returns internal export function getSimpleFacetStub ( ) { return { id : 'brand_facet' , modelName : 'SimpleFacet' , label : 'brand_facet' , filters : [ { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ CITY"' , label : 'LEGO CITY' , selected : false , totalResults : 64 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ STAR\\ WARS"' , label : 'LEGO STAR WARS' , selected : false , totalResults : 58 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ FRIENDS"' , label : 'LEGO FRIENDS' , selected : false , totalResults : 57 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ DUPLO"' , label : 'LEGO DUPLO' , selected : false , totalResults : 50 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ NINJAGO"' , label : 'LEGO NINJAGO' , selected : false , totalResults : 47 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ CREATOR"' , label : 'LEGO CREATOR' , selected : false , totalResults : 33 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ MARVEL"' , label : 'LEGO MARVEL' , selected : false , totalResults : 18 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ TECHNIC"' , label : 'LEGO TECHNIC' , selected : false , totalResults : 16 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ HARRY\\ POTTER"' , label : 'LEGO HARRY POTTER' , selected : false , totalResults : 13 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ CLASSIC"' , label : 'LEGO CLASSIC' , selected : false , totalResults : 12 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ DISNEY\\ PRINCESS"' , label : 'LEGO DISNEY PRINCESS' , selected : false , totalResults : 9 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ JUNIORS"' , label : 'LEGO JUNIORS' , selected : false , totalResults : 8 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ MINECRAFT"' , label : 'LEGO MINECRAFT' , selected : false , totalResults : 8 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ SPEED\\ CHAMPION"' , label : 'LEGO SPEED CHAMPION' , selected : false , totalResults : 8 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ ARCHITECTURE"' , label : 'LEGO ARCHITECTURE' , selected : false , totalResults : 7 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ SUPERHEROES"' , label : 'LEGO SUPERHEROES' , selected : false , totalResults : 6 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO"' , label : 'LEGO' , selected : false , totalResults : 5 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ JURASSIC\\ W"' , label : 'LEGO JURASSIC W' , selected : false , totalResults : 5 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ TOY\\ STORY"' , label : 'LEGO TOY STORY' , selected : false , totalResults : 5 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ THE\\ MOVIE"' , label : 'LEGO THE MOVIE' , selected : false , totalResults : 4 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ DC\\ COMICS"' , label : 'LEGO DC COMICS' , selected : false , totalResults : 3 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ BATMAN"' , label : 'LEGO BATMAN' , selected : false , totalResults : 2 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"CONSTRUCCIÓN"' , label : 'CONSTRUCCIÓN' , selected : false , totalResults : 1 , modelName : 'SimpleFilter' } , { facetId : 'brand_facet' , id : 'brand_facet:"LEGO\\ COLECCIONISTA"' , label : 'LEGO COLECCIONISTA' , selected : false , totalResults : 1 , modelName : 'SimpleFilter' } ] } ; } /**
 * Creates a  {@link @empathyco/x-types#HierarchicalFacet | HierarchicalFacet} stub.
 *
 *  returns internal export function getHierarchicalFacetStub ( ) { return { id : 'hierarchical_category' , modelName : 'HierarchicalFacet' , label : 'hierarchical_category' , filters : [ { facetId : 'hierarchical_category' , parentId : null , id : 'hierarchical_category:"rompecabezas"' , label : 'Rompecabezas' , selected : false , totalResults : 1 , modelName : 'HierarchicalFilter' , children : [ 'hierarchical_category:"rompecabezas-faciles"' , 'hierarchical_category:"rompecabezas-dificiles"' ] } , { facetId : 'hierarchical_category' , parentId : 'hierarchical_category:"rompecabezas"' , id : 'hierarchical_category:"rompecabezas-faciles"' , label : 'Rompecabezas difíciles' , selected : false , totalResults : 1 , modelName : 'HierarchicalFilter' , children : [ ] } , { facetId : 'hierarchical_category' , parentId : 'hierarchical_category:"rompecabezas"' , id : 'hierarchical_category:"rompecabezas-dificiles"' , label : 'Rompecabezas fáciles' , selected : false , totalResults : 1 , modelName : 'HierarchicalFilter' , children : [ ] } , { facetId : 'hierarchical_category' , parentId : null , id : 'hierarchical_category:"infantiles_\\(hasta_48_piezas\\)"' , label : 'Infantiles (hasta 48 piezas)' , selected : false , totalResults : 1 , modelName : 'HierarchicalFilter' , children : [ ] } , { facetId : 'hierarchical_category' , parentId : null , id : 'hierarchical_category:"construcción_por_bloques"' , label : 'Construcción por bloques' , selected : false , totalResults : 314 , modelName : 'HierarchicalFilter' , children : [ ] } , { facetId : 'hierarchical_category' , parentId : null , id : 'hierarchical_category:"series_y_péliculas"' , label : 'Series y péliculas' , selected : false , totalResults : 17 , modelName : 'HierarchicalFilter' , children : [ ] } , { facetId : 'hierarchical_category' , parentId : null , id : 'hierarchical_category:"packs_con_personajes"' , label : 'Packs con personajes' , selected : false , totalResults : 2 , modelName : 'HierarchicalFilter' , children : [ ] } , { facetId : 'hierarchical_category' , parentId : null , id : 'hierarchical_category:"grandes_\\(hasta_250_piezas\\)"' , label : 'Grandes (hasta 250 piezas)' , selected : false , totalResults : 2 , modelName : 'HierarchicalFilter' , children : [ ] } , { facetId : 'hierarchical_category' , parentId : null , id : 'hierarchical_category:"amigos_y_familia"' , label : 'Amigos y familia' , selected : false , totalResults : 2 , modelName : 'HierarchicalFilter' , children : [ ] } , { facetId : 'hierarchical_category' , parentId : null , id : 'hierarchical_category:"niños"' , label : 'Niños' , selected : false , totalResults : 3 , modelName : 'HierarchicalFilter' , children : [ ] } , { facetId : 'hierarchical_category' , parentId : null , id : 'hierarchical_category:"construye"' , label : 'Construye' , selected : false , totalResults : 167 , modelName : 'HierarchicalFilter' , children : [ ] } , { facetId : 'hierarchical_category' , parentId : null , id : 'hierarchical_category:"mi_primera_construcción"' , label : 'Mi primera construcción' , selected : false , totalResults : 4 , modelName : 'HierarchicalFilter' , children : [ ] } ] } ; } /**
 * Creates a  {@link @empathyco/x-types#NumberRangeFacet | NumberRangeFacet} stub.
 *
 *  returns internal export function getNumberRangeFacetStub ( ) { return { id : 'price_facet' , modelName : 'NumberRangeFacet' , label : 'price_facet' , filters : [ { facetId : 'price_facet' , id : 'price_facet:0 TO 10' , label : '0:10' , selected : false , range : { min : null , max : 10 } , totalResults : 23 , modelName : 'NumberRangeFilter' } , { facetId : 'price_facet' , id : 'price_facet:10 TO 20' , label : '10:20' , selected : false , range : { min : 10 , max : 20 } , totalResults : 150 , modelName : 'NumberRangeFilter' } , { facetId : 'price_facet' , id : 'price_facet:20 TO 30' , label : '20:30' , selected : false , range : { min : 20 , max : 30 } , totalResults : 164 , modelName : 'NumberRangeFilter' } , { facetId : 'price_facet' , id : 'price_facet:30 TO 40' , label : '30:40' , selected : false , range : { min : 30 , max : 40 } , totalResults : 58 , modelName : 'NumberRangeFilter' } , { facetId : 'price_facet' , id : 'price_facet:40 TO 50' , label : '40:50' , selected : false , range : { min : 40 , max : 50 } , totalResults : 38 , modelName : 'NumberRangeFilter' } , { facetId : 'price_facet' , id : 'price_facet:50 TO 70' , label : '50:70' , selected : false , range : { min : 50 , max : 70 } , totalResults : 44 , modelName : 'NumberRangeFilter' } , { facetId : 'price_facet' , id : 'price_facet:70 TO 100' , label : '70:100' , selected : false , range : { min : 70 , max : 100 } , totalResults : 24 , modelName : 'NumberRangeFilter' } , { facetId : 'price_facet' , id : 'price_facet:100 TO *' , label : '100:*' , selected : false , range : { min : 100 , max : null } , totalResults : 22 , modelName : 'NumberRangeFilter' } ] } ; } /**
 * Creates a  {@link @empathyco/x-types#Facet | facets} stub.
 *
 *  returns internal export function getFacetsStub ( ) { return [ getSimpleFacetStub ( ) , getHierarchicalFacetStub ( ) , getNumberRangeFacetStub ( ) ] ; } /**
 * Creates a  {@link @empathyco/x-types#Facet | facets} stub.
 *
 *  returns internal export function getFacetsDictionaryStub ( ) { return arrayToObject ( getFacetsStub ( ) , 'id' ) ; } param label param createChildren returns export function createNumberRangeFacet ( label , createChildren ) { const facetId = label . toLowerCase ( ) ; return { modelName : 'NumberRangeFacet' , id : facetId , label , filters : createChildren ( ( range , selected ) => { const { min , max } = range ; return { id : `${ facetId }:${ min ?? '*' }-${ max ?? '*' }` , facetId : facetId , selected , label : `${ min ?? '0' } - ${ max ?? 'None' }` , totalResults : 10 , range , modelName : 'NumberRangeFilter' } ; } ) } ; } param category returns export function createFacetWithFilter ( category ) { return { id : 'category' , modelName : 'SimpleFacet' , filters : [ createSimpleFilter ( 'category' , category ) ] , label : 'category' } ; } param label param createChildren returns export function createSimpleFacetStub ( label , createChildren ) { const facetId = label . toLowerCase ( ) ; return { modelName : 'SimpleFacet' , id : facetId , label , filters : createChildren ( ( label , selected , totalResults ) => createSimpleFilter ( facetId , label , selected , totalResults ) ) } ; } param label param createChildren returns export function createNumberRangeFacetStub ( label , createChildren ) { const facetId = label . toLowerCase ( ) ; return { modelName : 'NumberRangeFacet' , id : facetId , label , filters : createChildren ( ( range , selected ) => createNumberRangeFilter ( facetId , range , selected ) ) } ; } param label param createChildren returns export function createEditableNumberRangeFacetStub ( label , createChildren ) { const facetId = label . toLowerCase ( ) ; return { modelName : 'EditableNumberRangeFacet' , id : facetId , label , filters : [ createChildren ( ( range , selected ) => createEditableNumberRangeFilter ( facetId , range , selected ) ) ] } ; } param label param createChildren returns export function createHierarchicalFacetStub ( label , createChildren ) { const facetId = label . toLowerCase ( ) ; return { modelName : 'HierarchicalFacet' , id : facetId , label , filters : createChildren ( createHierarchicalFilterFactory ( facetId ) ) } ; }