import {CardRendererParameters} from "../CardRenderers"; import {useTestable} from "../TestableHooks"; import React from "react"; import {Testable} from "../Testable"; import {OfferData} from "../store"; import {useOffer} from "../OfferHooks"; import {type ComponentMeta} from "../ComponentsMeta"; import {__} from "../../globals"; export const usingTestable = (renderer: (testable: Testable, parameters: CardRendererParameters) => any) => (parameters: CardRendererParameters) => { const {id, localData, partialId} = parameters; // @ts-ignore let idToUse = partialId ? partialId : id; const testable = useTestable(localData ? localData : idToUse) if (!testable) { console.error('No testable found for CategoriesRenderer', id); return
?
; } return renderer(testable, parameters); } export const usingOffer = (renderer: (testable: OfferData, parameters: CardRendererParameters) => any) => (parameters: CardRendererParameters) => { const {id} = parameters; // @ts-ignore const offer = useOffer(id) if (!offer) { console.error('No offer found for CategoriesRenderer', id); return
?
; } return renderer(offer, parameters); } /** * The order of the arguments is changed here and differs from the `usingTestable` (the parameters are first) * * Why? because chances are using this hook you'll only need the options, so the parameters have a higher priority. We're only passing the testable just in case, like a last resort in the few cases that you need it but this function is meant to be used for options only. */ export const usingTestableOptions = (renderer: (options: Options, parameters: CardRendererParameters, testable: Testable) => any) => usingTestable((testable, parameters) => { // @ts-ignore return renderer(testable.getData()!.options as Options, parameters, testable); }) export const usingOfferOptions = (renderer: (options: Options, parameters: CardRendererParameters, offer: OfferData) => any) => usingOffer((offerdata, parameters) => { // @ts-ignore return renderer(offerdata.options as Options, parameters, offerdata); }) // to do: possible changing of the colors export const withPrefix = (prefix: string): ComponentMeta['listTitle'] => (preRenderedTitle) =>
{/*{prefix}*/} {prefix} {preRenderedTitle}