{"version":3,"file":"Store.DcA50605.mjs","names":["useState","useRef","_Fragment","_Fragment","BaseFilter","useStore","useStore"],"sources":["https:/framerusercontent.com/modules/oaAH7umUjUOTeKmykfom/QUgwaKJzm3ppWZi5RkAd/Stores.js","https:/framerusercontent.com/modules/uaC9hWf3ec7HqMv3sXMc/Umg2ZsSp0yVH1PtIBjcZ/Hooks.js","https:/framerusercontent.com/modules/Hxho9sUnioBkMjGbLBed/csoxszrftuhmv2NyuE1c/collectionID.js","https:/framerusercontent.com/modules/1abSdslctova79WmNQRw/3fHstYFUOpeaxageGRMz/Filter_Base.js","https:/framer.com/m/BaseFilter-P7H7.js","https:/framerusercontent.com/modules/MfVFNEVjjTR5fwzq2vqZ/7ZkjUoUkNUPRTdiN5AvM/ToggleFilterPlus.js","https:/framerusercontent.com/modules/D3xlW3QLWQm4UjQJvmoV/TvxHCZqZhMtac0F23Q7i/Store.js","https:/framerusercontent.com/modules/xoC8uG38bQ3xLaxt7qmz/Sfoby2Caoi6kAnkSzViz/Examples.js","https:/framerusercontent.com/modules/84yGrzQb9v45jlzlcvFw/i0tadgDARbZeL3VzWuWq/Store.js"],"sourcesContent":["import{createStore}from\"https://framer.com/m/framer/store.js@^1.0.0\";export const useCollectionStore=createStore({})/**\n * {\n *   [collectionName]:{\n *      fieldsByID:{},\n *      fieldsByName:{},\n *      orderBy:[],\n *      cmsItems:[],\n *      realTimeSearch:{fields:[], text}\n *   }\n * }\n */;\nexport const __FramerMetadata__ = {\"exports\":{\"useCollectionStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Stores.map","// @ts-ignore\nimport{useQueryData,useIsOnFramerCanvas}from\"framer\";import{useState,useEffect,useRef,useMemo}from\"react\";import{getProps,constructFramerCMSQueryWhere}from\"https://framerusercontent.com/modules/NktNXvnf4m4T7jKQcOHx/aQr3Jr62yQmFVnbbdtlX/Utilities.js\";import{useCollectionStore}from\"https://framerusercontent.com/modules/oaAH7umUjUOTeKmykfom/QUgwaKJzm3ppWZi5RkAd/Stores.js\";/**\n * Hook to debounce a value.\n * @param {number} delay - The delay in milliseconds before showing the alert. Default is 2000.\n * @param {any} value - The value that will return after the timeout delay.\n * @returns {any} - Returns the value.\n */export const useDebouncer=({delay,value})=>{const[debouncedValue,setDebouncedValue]=useState(value);useEffect(()=>{const ID=setTimeout(()=>{setDebouncedValue(value);},delay);return()=>clearTimeout(ID);},[value]);return debouncedValue;};/**\n * Hook to manage error alerts.\n * @param {number} alertDelay - The delay in milliseconds before showing the alert. Default is 2000.\n * @returns {object} - Returns an object containing functions to manage error messages and the alert.\n */export const useErrorAlert=({alertDelay=2e3})=>{const isOnFramerCanvas=useIsOnFramerCanvas();const[hasError,setHasError]=useState(false);const[errors,setErrors]=useState([]);const timeoutIdRef=useRef(null);const addErrorMessage=text=>{if(isOnFramerCanvas)return;setErrors(prev=>[...prev,text]);setHasError(true);};const clearErrors=()=>{setErrors([]);setHasError(false);};const showErrorAlert=()=>{const id=setTimeout(()=>{alert(`\nError!\n\n${errors.join(\"\\n\")}`);},alertDelay);timeoutIdRef.current=id;};const cancelShowErrorAlert=()=>clearInterval(timeoutIdRef.current);useEffect(()=>{if(hasError)showErrorAlert();return()=>{cancelShowErrorAlert();};},[hasError,errors.length]);return{addErrorMessage,hasError};};export const useCollectionFieldSorting=({collectionName})=>{const[store,setStore]=useCollectionStore();const collection=store[collectionName];const collectionIsInitialized=!!collection;const setDirection=ascending=>{if(!collectionIsInitialized)return;setStore(prev=>({...prev,[collectionName]:{...prev[collectionName],renderKey:Math.floor(Math.random()*1e5),orderBy:[{collection:prev[collectionName].alias,direction:ascending?\"asc\":\"desc\",name:\"index\",type:\"Identifier\"}]}}));};return{setDirection};};export const useCollectionList=({collectionList})=>{const[collectionStore,setCollectionStore]=useCollectionStore();const[isSyncing,setIsSyncing]=useState(true);const[key,setKey]=useState(0);const isOnFramerCanvas=useIsOnFramerCanvas();const collectionName=useMemo(()=>{return isOnFramerCanvas?null:getProps({object:collectionList,target:{name:\"displayName\",type:\"string\"}});},[!!collectionList,isOnFramerCanvas]);const collection=collectionStore[collectionName];const collectionIsInitialized=!!collection;const query=useMemo(()=>{// return an empty object if on canvas view, collection is not initiated, or collecintList is not linked\nif(isOnFramerCanvas||!collectionList||!collectionIsInitialized)return{};const q=getProps({object:collectionList,target:{name:\"query\",type:\"object\"}})||null;// if a collectionList is linked, but no query is found, then it's not a collectionList\nreturn q||null;},[!!collectionList,collectionIsInitialized,isOnFramerCanvas,collection===null||collection===void 0?void 0:collection.renderKey]);// upon any changes to the collection, the query must be updated to get the CMS items\nconst cmsItems=useMemo(()=>{if(isOnFramerCanvas||!collectionIsInitialized||!query||Object.keys(query).length<1)return[];// CMS Beta update 09/11/24\n// Collection referencing. Collection alias property is being included in 'where' tree\nconst collectionAlias=getProps({object:query,target:{name:\"alias\",type:\"string\"}});const where=constructFramerCMSQueryWhere({collectionAlias,realTimeSearch:collection.realTimeSearch,cmsFields:collection.fieldsByName});// // checks if the construct has any nodes\nconst hasNodes=Object.keys(where).length>0;// // if there's any active filters, apply them to the collection list, otherwise delete 'where'\nif(!hasNodes){delete query.where;}else{query.where=where;}// // if there's a sorting order, apply it to the collection list, otherwise delete 'orderBy'\nif(collection.orderBy.length===0){delete query.orderBy;}else if(collection.orderBy.length>0){query.orderBy=collection.orderBy;}return Object.values(useQueryData(query));},[isOnFramerCanvas,collectionIsInitialized,collection===null||collection===void 0?void 0:collection.renderKey]);//  store the cmsItems to store, and sync local state key when collection.renderKey has been changed\nuseEffect(()=>{if(collectionIsInitialized&&!isOnFramerCanvas){setIsSyncing(false);setKey(collection.renderKey);setCollectionStore(prev=>({...prev,[collectionName]:{...prev[collectionName],cmsItems}}));}},[collectionIsInitialized,isOnFramerCanvas,collection===null||collection===void 0?void 0:collection.renderKey]);// sync the collectionList with the collection in the store\nuseEffect(()=>{if(!isOnFramerCanvas&&collectionIsInitialized){setCollectionStore(prev=>({...prev,[collectionName]:{...prev[collectionName],renderKey:Math.floor(Math.random()*1e5)}}));}},[collectionList,isOnFramerCanvas,collectionIsInitialized]);// initialize collection in collectionStore\nuseEffect(()=>{if(!isOnFramerCanvas&&!collectionIsInitialized&&!!query){const fieldsByID=getProps({object:collectionList,target:{name:\"propertyControls\",type:\"object\"}})||{};const fieldsByName={};// populate the controls object with the control's cms field name (title) as property names\nfor(const[controlID,field]of Object.entries(fieldsByID)){// @ts-ignore\nconst{title,...otherProps}=field;fieldsByName[title]={...otherProps,id:controlID,activeFilters:[]};}const select=getProps({object:collectionList,target:{name:\"select\",type:\"array\"}});setCollectionStore(prev=>{var _select_;return{...prev,[collectionName]:{...prev[collectionName],alias:select===null||select===void 0?void 0:(_select_=select[0])===null||_select_===void 0?void 0:_select_.collection,fieldsByID,fieldsByName,orderBy:[],realTimeSearch:{fields:[],text:\"\"},cmsItems}};});}},[collectionIsInitialized,isOnFramerCanvas,!!query]);return{key,invalidCollectionList:!isOnFramerCanvas&&!!collectionList&&!query,isInitialized:!isSyncing&&collectionIsInitialized,noResults:cmsItems.length<1};};\nexport const __FramerMetadata__ = {\"exports\":{\"useCollectionList\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useCollectionFieldSorting\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useDebouncer\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useErrorAlert\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Hooks.map","import{jsx as _jsx,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n *\n * @framerDisableUnlink\n */export default function CollectionIDControl(props){return /*#__PURE__*/_jsx(_Fragment,{});}addPropertyControls(CollectionIDControl,{collectionID:{type:ControlType.Number,title:\"Collection+ ID\",defaultValue:0,min:0,displayStepper:true,step:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CollectionIDControl\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"auto\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./collectionID.map","// @ts-ignore\nimport{jsx as _jsx,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,getPropertyControls,ControlType}from\"framer\";import CollectionIDControl from\"https://framerusercontent.com/modules/Hxho9sUnioBkMjGbLBed/csoxszrftuhmv2NyuE1c/collectionID.js\";/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n *\n * @framerDisableUnlink\n */export default function BaseFilterControls(props){return /*#__PURE__*/_jsx(_Fragment,{});}addPropertyControls(BaseFilterControls,{...getPropertyControls(CollectionIDControl),interactionActiveFilter:{type:ControlType.EventHandler,title:\"Active Filter\",defaultValue:null},interactionInactiveFilter:{type:ControlType.EventHandler,title:\"Inactive Filter\",defaultValue:null},applyFilter:{type:ControlType.Boolean,title:\"Filter\",defaultValue:false,enabledTitle:\"Apply\",disabledTitle:\"Clear\",description:`Triggers filter function. [Learn more](https://framercms.plus/documentation/pure-functionality).\nExplore its [documentation](https://framercms.plus/documentation/component-filters-plus).`},preserveActiveFilter:{type:ControlType.Boolean,title:\"Preserve\",defaultValue:true,description:`Filter state. [Explore feature.](https://framercms.plus/documentation/preserve-settings)`}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BaseFilterControls\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"auto\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","/*\n * Filter_Base\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/1abSdslctova79WmNQRw/3fHstYFUOpeaxageGRMz/Filter_Base.js\"\nexport { default } from \"https://framerusercontent.com/modules/1abSdslctova79WmNQRw/3fHstYFUOpeaxageGRMz/Filter_Base.js\"\n","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,// @ts-ignore\ngetPropertyControls,ControlType}from\"framer\";import{useEffect}from\"react\";import{useCollectionStore}from\"https://framerusercontent.com/modules/oaAH7umUjUOTeKmykfom/QUgwaKJzm3ppWZi5RkAd/Stores.js\";import{useErrorAlert}from\"https://framerusercontent.com/modules/uaC9hWf3ec7HqMv3sXMc/Umg2ZsSp0yVH1PtIBjcZ/Hooks.js\";import BaseFilter from\"https://framer.com/m/BaseFilter-P7H7.js\";/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n *\n * @framerDisableUnlink\n */export default function ToggleFilterPlus(props){const fieldsPlusComponent=\"Toggle Filter+\";const collectionName=props._collectionName.trim();const cmsFieldName=props._cmsFieldName.trim();const[store]=useCollectionStore();const collection=store[collectionName];const collectionIsInitialized=!!collection;const{addErrorMessage,hasError}=useErrorAlert({alertDelay:1e3});// passes props to BaseFilter for handling the filter\nconst filterProps={hasError,fieldsPlusComponent,condition:null,value:props._value};// error handling\nuseEffect(()=>{if(collectionIsInitialized){const isSlug=cmsFieldName===\"Slug\";const controlTypeMap={boolean:\"Toggle\",color:\"Color\",date:\"Date\",enum:\"Option\",file:\"File\",link:\"Link\",number:\"Number\",responsiveimage:\"Image\",richtext:\"Formatted Text\",string:isSlug?\"Slug\":\"Plain Text\"};const cmsField=collection.fieldsByName[cmsFieldName];const controlType=controlTypeMap[cmsField===null||cmsField===void 0?void 0:cmsField.type];// error if the CMS Field does not exist\nif(!cmsField){addErrorMessage(`${fieldsPlusComponent} did not find a CMS field called '${cmsFieldName}' within the '${collectionName}' collection.`);}if(cmsField&&controlType!==\"Toggle\")addErrorMessage(`${fieldsPlusComponent} cannot be used for '${collectionName}: ${cmsFieldName}', because '${cmsFieldName}' is a${controlType===\"Option\"||controlType===\"Image\"?\"n\":\"\"} ${controlType} field type.`);}},[cmsFieldName,collectionName,collectionIsInitialized]);return /*#__PURE__*/_jsx(BaseFilter,{...props,...filterProps});}ToggleFilterPlus.displayName=\"Toggle Filter+\";addPropertyControls(ToggleFilterPlus,{...getPropertyControls(BaseFilter),_cmsFieldName:{type:ControlType.String,title:\"Field Name\",description:\"Name must match exactly as it's set in CMS.\",defaultValue:\"\"},// TOGGLE CONTROLS -----------------------------------------------------------\n_value:{type:ControlType.Boolean,title:\"Value\",defaultValue:true,enabledTitle:\"Is\",disabledTitle:\"Not\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ToggleFilterPlus\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{createStore}from\"https://framer.com/m/framer/store.js@^1.0.0\";export const useStore=createStore({tags:[]});\nexport const __FramerMetadata__ = {\"exports\":{\"useStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Store.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useStore}from\"https://framerusercontent.com/modules/D3xlW3QLWQm4UjQJvmoV/TvxHCZqZhMtac0F23Q7i/Store.js\";export function withClicked(Component){return props=>{const[state,setStore]=useStore();console.log(props,\"props in this one\");return /*#__PURE__*/_jsx(Component,{...props,variant:state.tags.includes(props.filterTag)?\"On\":\"Off\",onClick:()=>{// Initialize tags array if it doesn't exist\nconst currentTags=Array.isArray(state.tags)?state.tags:[];// Check if the tag is already in the array\nconst isTagPresent=currentTags.includes(props.filterTag);// If tag is present, remove it; if not, add it\nconst newTags=isTagPresent?currentTags.filter(tag=>tag!==props.filterTag):[...currentTags,props.filterTag];// Filter out any undefined/null values\nconst uniqueTags=newTags.filter(Boolean);setStore({...state,tags:uniqueTags});}});};}export function withFilter(Component){return props=>{var _state_tags,_state_tags1,_state_tags2;const[state,setStore]=useStore();// Split props.tags into array if it exists\nconst propTags=props.tags?props.tags.split(\",\").map(tag=>tag.trim()):[];// Show if state.tags is empty/undefined, props.tags is empty, or if there's a match\nconst shouldShow=!((_state_tags=state.tags)===null||_state_tags===void 0?void 0:_state_tags.length)||!propTags.length||((_state_tags1=state.tags)===null||_state_tags1===void 0?void 0:_state_tags1.some(stateTag=>propTags.some(propTag=>stateTag.toLowerCase().includes(propTag.toLowerCase()))));console.log({propTags,stateTags:state.tags,shouldShow,stateTagsLength:(_state_tags2=state.tags)===null||_state_tags2===void 0?void 0:_state_tags2.length});return /*#__PURE__*/_jsx(Component,{...props,shouldShow:shouldShow});};}export function withAllToggle(Component){return props=>{const[state,setStore]=useStore();console.log(props,\"was all filter toggles props\");return /*#__PURE__*/_jsx(Component,{...props,filterTag:state.tags.length===0?\"All Solutions\":\"Clear all\",variant:state.tags.length===0?\"On\":\"Off\",onClick:()=>{// if the array is empty make this\nif(state.tags.length>0){setStore({...state,tags:[]});}}});};}export function withList(Component){return props=>{const[state,setStore]=useStore();console.log({props});return /*#__PURE__*/_jsx(Component,{...props});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withList\":{\"type\":\"reactHoc\",\"name\":\"withList\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withFilter\":{\"type\":\"reactHoc\",\"name\":\"withFilter\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAllToggle\":{\"type\":\"reactHoc\",\"name\":\"withAllToggle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withClicked\":{\"type\":\"reactHoc\",\"name\":\"withClicked\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Examples.map","import{createStore}from\"https://framer.com/m/framer/store.js@^1.0.0\";export const useStore=createStore({tags:[],withCode:false,withinGrid:false,hasToggledCode:false,hasToggledGrid:false});\nexport const __FramerMetadata__ = {\"exports\":{\"useStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Store.map"],"mappings":"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"}