{"version":3,"file":"CMSFilter.b8dNUSBu.mjs","names":["isCanvas","useRef","useMemo","_Fragment","useState","useRef","_Fragment","_Fragment","_Fragment","_Fragment","_Fragment","useState","useRef","minPercent","maxPercent","_Fragment","_Fragment","useState","useRef","p"],"sources":["https:/framer.com/m/framer/store.js@^1.0","https:/framerusercontent.com/modules/fGN1IPlqamL7joTmwPeH/Xt9cbw9Ua9mMHpg4UuVs/StoreManagement.js","https:/framerusercontent.com/modules/fHgEuOY9q2vjBn6zUxcL/mRiOUDyYp9zY9ZfmruWC/Variant_utils.js","https:/framerusercontent.com/modules/Ynj5QNLR3Gsyj4M9gmMa/1Cxb6sN3Pj7DY7eZEqap/Query_builders.js","https:/framerusercontent.com/modules/nsln4iFvMbxWPrBadbov/kZKkz3vF1vM5NKEer0v0/CMSCollection.js","https:/framerusercontent.com/modules/8t4wAEVIEW49rMhOZjZW/PQhcG4yZfkIHdwCdaOvo/filter_utils.js","https:/framerusercontent.com/modules/FHqRXME93mWMs3IDWXfC/QyFeIJkqOBoO6JAm0cN7/TextFilter.js","https:/framerusercontent.com/modules/AriU3p2OUNgHYoCILVA4/nqX4dl8nxEQow1sOWrpt/SelectFilter.js","https:/framerusercontent.com/modules/ybJHDJ85VZoRJ6fNzsI0/YHjhDt2cjmLhNvByL0Ws/CMSEnumFilter.js","https:/framerusercontent.com/modules/10QCf43E4tbOXgx1ECvJ/Dj72TpTH6KjmWMrKOgXO/ToggleFilter.js","https:/framerusercontent.com/modules/ixFJb1DikSWTe5cysJbR/uwxJ105m5obu07VPRHaM/CheckboxFilter.js","https:/framerusercontent.com/modules/rGXZZaT17uU9RXncOxdG/JUzUpnDZjrA7cK8tWJb7/TagFilter.js","https:/framerusercontent.com/modules/35TsDTo0KAsCudpwqnK1/qys6WXyOlS8iM4qhMVz3/DropdownFilter.js","https:/framerusercontent.com/modules/vnbZ8S3JJq34f4LkpBg9/UBDlNwteqwVm8UtOygEW/NumberFilter.js","https:/framerusercontent.com/modules/uqTCLD2flbyo9EM5RjrM/uai6aWSJQgbHX53Rgbiy/DoubleRangeSlider.js","https:/framerusercontent.com/modules/btM09c71B1E5oPlNZhUW/jknVSFzr1wwZQ8yskZjs/RangeFilter.js","https:/framerusercontent.com/modules/hGZZ1Rf3nrTLPZZQe1yw/5FGvUgbAomloVbe8dlrG/FilterControl.js","https:/framerusercontent.com/modules/qOvHvFzfJSFUfjvE3w8N/yIBYtdHbK9Ig8CPCfFiX/CMSFilter.js"],"sourcesContent":["/*\n * createStore (framer/store@1.0.1)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/vj7bFUjvEQFgEzNBkdoG/vf3CKm378wlVcBk7IhSU/createStore.js\"\n","// Store management utilities for CMS Collection\n// Extracted from CMSCollection.tsx for better modularity\nimport{RenderTarget}from\"framer\";import{createStore}from\"https://framer.com/m/framer/store.js@^1.0\";// Global store initialization tracker\nexport const globalInitStore=createStore({storeInitialized:[]});// Global stores per collection ID\nconst stores=new Map;// Helper to get or create store for collection\nexport const getCollectionStore=collectionId=>{if(!stores.has(collectionId)){const newStore=createStore({searchTerm:\"\",searchFields:[],filters:[],debug:true,count:0});stores.set(collectionId,newStore);// Mark this collection as initialized\nconst[initState,setInitState]=globalInitStore();if(!initState.storeInitialized.includes(collectionId)){setInitState({storeInitialized:[...initState.storeInitialized,collectionId]});}}return stores.get(collectionId);};// Helper to get store key for collection - prioritizes actual CMS collection name\nexport const getCollectionStoreKey=(collection,manualStoreKey)=>{// If manual store key is provided and not \"auto\", use it\nif(manualStoreKey&&manualStoreKey.trim()!==\"\"&&manualStoreKey!==\"auto\"){return manualStoreKey.trim();}const cmsQuery=collection?.length&&collection[0]?.props?.children?.props?.children?.props?.query;if(!cmsQuery)return null;// Handle TWO query structures:\n// 1. WITHOUT reference fields: query.from.data and query.from.alias\n// 2. WITH reference fields: query.from.left.data and query.from.constraint.left.alias\n//    (Framer adds a LEFT JOIN constraint when reference fields exist)\nlet alias=null;let data=null;if(cmsQuery.from?.constraint){// WITH reference fields - data and alias are in different locations\nalias=cmsQuery.from.constraint?.left?.alias||cmsQuery.from.constraint?.left?.collection;data=cmsQuery.from.left?.data;}else{// WITHOUT reference fields - standard path\nalias=cmsQuery.from?.alias;data=cmsQuery.from?.data;}// Priority order for store key:\n// 1. CMS collection name/title from data\n// 2. Collection display name\n// 3. Alias as fallback\nconst storeKey=data?.name||data?.title||data?.displayName||alias;return storeKey||null;};// Helper to extract collection info from slot connection\nexport const getCollectionInfo=collection=>{const cmsQuery=collection?.length&&collection[0]?.props?.children?.props?.children?.props?.query;if(!cmsQuery)return null;// Handle TWO query structures (same as getCollectionStoreKey):\n// 1. WITHOUT reference fields: query.from.data and query.from.alias\n// 2. WITH reference fields: query.from.left.data and query.from.constraint.left.alias\nlet alias=null;let data=null;if(cmsQuery.from?.constraint){// WITH reference fields\nalias=cmsQuery.from.constraint?.left?.alias||cmsQuery.from.constraint?.left?.collection;data=cmsQuery.from.left?.data;}else{// WITHOUT reference fields\nalias=cmsQuery.from?.alias;data=cmsQuery.from?.data;}return{collectionId:alias||\"\",collectionName:data?.displayName||\"\",query:cmsQuery,propertyControls:data?.propertyControls||{}};};// Helper to get available fields from CMS with their types\nexport const getAvailableFilterFields=propertyControls=>{if(!propertyControls||typeof propertyControls!==\"object\"){return[];}return Object.entries(propertyControls).map(([key,control])=>({key,title:control.title||key,type:control.type||\"string\",options:control.options,optionTitles:control.optionTitles})).filter(field=>field.title&&field.type);};// Utility function to generate random strings\nexport function evGetRandomString(length=8){const chars=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";let result=\"\";for(let i=0;i<length;i++){result+=chars.charAt(Math.floor(Math.random()*chars.length));}return result;}// Environment detection helpers\nexport const isPreview=RenderTarget.current()===RenderTarget.preview;export const isCanvas=RenderTarget.current()===RenderTarget.canvas;\nexport const __FramerMetadata__ = {\"exports\":{\"getCollectionStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"evGetRandomString\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getCollectionInfo\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getCollectionStoreKey\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isCanvas\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"globalInitStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getAvailableFilterFields\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isPreview\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./StoreManagement.map","// Variant override utilities for CMS Collection\n// Extracted for better readability and maintainability\nimport{cloneElement}from\"react\";/**\n * Get component name from React element\n * @param element - React element\n * @returns Component name string or null\n */export const getComponentName=element=>{if(!element?.type)return null;// Try displayName first, then name, then fallback\nreturn element.type.displayName||element.type.name||element.type.constructor?.name||\"Unknown\";};/**\n * Recursively process React tree and apply variant overrides\n * @param element - React element to process\n * @param variantOverrides - Array of variant override configurations\n * @param depth - Current recursion depth (for debugging)\n * @returns Processed React element with variant overrides applied\n */export const processVariantOverrides=(element,variantOverrides,depth=0)=>{// Return non-object elements as-is (strings, numbers, null, etc.)\nif(!element||typeof element!==\"object\"){return element;}// Handle arrays of elements\nif(Array.isArray(element)){return element.map(child=>processVariantOverrides(child,variantOverrides,depth));}// Process React elements\nif(element.type&&element.props){const componentName=getComponentName(element);// Check if this component should have its variant overridden\nconst override=variantOverrides.find(vo=>vo.componentName.toLowerCase().trim()===componentName?.toLowerCase().trim());let newProps={...element.props};// ONLY change variant if we found a matching override\nif(override){newProps.variant=override.variantName;}// Always process children recursively\nif(newProps.children){if(Array.isArray(newProps.children)){newProps.children=newProps.children.map(child=>processVariantOverrides(child,variantOverrides,depth+1));}else{newProps.children=processVariantOverrides(newProps.children,variantOverrides,depth+1);}}return /*#__PURE__*/cloneElement(element,newProps);}return element;};/**\n * Wrap CMS Item children function with variant override logic\n * @param originalChildrenFn - Original children render function from CMS Item\n * @param variantOverrides - Array of variant override configurations\n * @returns Wrapped function that applies variant overrides\n */export const wrapWithVariantOverrides=(originalChildrenFn,variantOverrides)=>{return(collection,paginationInfo,loadMore)=>{// Call original function to get JSX\nconst originalJSX=originalChildrenFn(collection,paginationInfo,loadMore);// Process the JSX tree and apply variant overrides\nreturn processVariantOverrides(originalJSX,variantOverrides);};};\nexport const __FramerMetadata__ = {\"exports\":{\"processVariantOverrides\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"wrapWithVariantOverrides\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getComponentName\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Variant_utils.map","// Query building utilities for CMS Collection\n// Extracted from CMSCollection.tsx for better modularity\n// ============================================\n// Validation Helper\n// ============================================\n/**\n * Check if filter has valid value based on type\n */export const hasValidFilterValue=filter=>{const{value,operator}=filter;// Operators that don't need values\nif(operator===\"is_set\"||operator===\"is_not_set\"){return true;}// Handle different value types\nif(value===null||value===undefined){return false;}// For numeric comparison operators, validate number conversion\nconst numericOps=[\"greater_than\",\"less_than\",\"greater_than_or_equal\",\"less_than_or_equal\"];if(numericOps.includes(operator)){if(typeof value===\"number\")return!isNaN(value);if(typeof value===\"string\")return!isNaN(parseFloat(value));return false;}// For range filters, check both min and max\nif(operator===\"between\"&&typeof value===\"object\"){return value.min!==undefined&&!isNaN(value.min)||value.max!==undefined&&!isNaN(value.max);}// For arrays (multi-select), check length\nif(Array.isArray(value)){return value.length>0;}// For strings, check if not empty\nif(typeof value===\"string\"){return value.trim()!==\"\";}// For booleans and numbers, always valid\nreturn true;};// ============================================\n// Search Query Builder\n// ============================================\n/**\n * Build search where clause - ALWAYS OR across fields\n */export const buildSearchWhereClause=(searchTerm,searchFields,collectionId,propertyControls)=>{if(!searchTerm||!searchTerm.trim()||searchFields.length===0){return null;}// Convert field titles to internal keys\nconst searchFieldKeys=searchFields.map(title=>{const field=Object.entries(propertyControls).find(([key,control])=>control.title?.toLowerCase()===title.toLowerCase());return field?field[0]:title;}).filter(Boolean);if(searchFieldKeys.length===0)return null;// Build search conditions - ALWAYS OR\nconst conditions=searchFieldKeys.map(fieldKey=>({arguments:[{collection:collectionId,name:fieldKey,type:\"Identifier\"},{type:\"LiteralValue\",value:searchTerm}],functionName:\"CONTAINS\",type:\"FunctionCall\"}));// Single condition\nif(conditions.length===1){return conditions[0];}// Multiple conditions with OR logic\nlet whereClause={left:conditions[0],operator:\"or\",right:conditions[1],type:\"BinaryOperation\"};// Add remaining conditions with OR\nfor(let i=2;i<conditions.length;i++){whereClause={left:whereClause,operator:\"or\",right:conditions[i],type:\"BinaryOperation\"};}return whereClause;};// ============================================\n// Single Filter Query Builder\n// ============================================\n/**\n * Build filter where clause for a single filter\n */export const buildFilterWhereClause=(filter,collectionId,propertyControls)=>{if(!hasValidFilterValue(filter)){return null;}// Convert field title to internal key\nconst fieldKey=Object.entries(propertyControls).find(([key,control])=>control.title?.toLowerCase()===filter.field.toLowerCase())?.[0]||filter.field;const{operator,value}=filter;// ---- Handle is_set operator ----\nif(operator===\"is_set\"){return{left:{left:{collection:collectionId,name:fieldKey,type:\"Identifier\"},operator:\"!=\",right:{type:\"LiteralValue\",value:null},type:\"BinaryOperation\"},operator:\"and\",right:{left:{collection:collectionId,name:fieldKey,type:\"Identifier\"},operator:\"!=\",right:{type:\"LiteralValue\",value:\"\"},type:\"BinaryOperation\"},type:\"BinaryOperation\"};}// ---- Handle is_not_set operator ----\nif(operator===\"is_not_set\"){return{operator:\"not\",type:\"UnaryOperation\",value:{left:{left:{collection:collectionId,name:fieldKey,type:\"Identifier\"},operator:\"!=\",right:{type:\"LiteralValue\",value:null},type:\"BinaryOperation\"},operator:\"and\",right:{left:{collection:collectionId,name:fieldKey,type:\"Identifier\"},operator:\"!=\",right:{type:\"LiteralValue\",value:\"\"},type:\"BinaryOperation\"},type:\"BinaryOperation\"}};}// ---- Handle range (between) operator ----\nif(operator===\"between\"&&typeof value===\"object\"){const conditions=[];if(value.min!==undefined&&!isNaN(value.min)){conditions.push({left:{collection:collectionId,name:fieldKey,type:\"Identifier\"},operator:\">=\",right:{type:\"LiteralValue\",value:value.min},type:\"BinaryOperation\"});}if(value.max!==undefined&&!isNaN(value.max)){conditions.push({left:{collection:collectionId,name:fieldKey,type:\"Identifier\"},operator:\"<=\",right:{type:\"LiteralValue\",value:value.max},type:\"BinaryOperation\"});}if(conditions.length===0)return null;if(conditions.length===1)return conditions[0];return{left:conditions[0],operator:\"and\",right:conditions[1],type:\"BinaryOperation\"};}// ---- Handle array values (multi-select) ----\nif(Array.isArray(value)&&value.length>0){const conditions=value.map(val=>({left:{collection:collectionId,name:fieldKey,type:\"Identifier\"},operator:\"==\",right:{type:\"LiteralValue\",value:val},type:\"BinaryOperation\"}));if(conditions.length===1){return conditions[0];}// Combine with OR logic for multi-select\nlet combined={left:conditions[0],operator:\"or\",right:conditions[1],type:\"BinaryOperation\"};for(let i=2;i<conditions.length;i++){combined={left:combined,operator:\"or\",right:conditions[i],type:\"BinaryOperation\"};}return combined;}// ---- Handle toggle special operators ----\nif(filter.type===\"toggle\"){const shouldInvert=filter.config?.toggleInverse===true;const isTriStateOff=value===false;let baseQuery;switch(operator){case\"is_enabled\":baseQuery={left:{collection:collectionId,name:fieldKey,type:\"Identifier\"},operator:shouldInvert?\"!=\":\"==\",right:{type:\"LiteralValue\",value:true},type:\"BinaryOperation\"};break;case\"is_disabled\":baseQuery={left:{collection:collectionId,name:fieldKey,type:\"Identifier\"},operator:shouldInvert?\"!=\":\"==\",right:{type:\"LiteralValue\",value:false},type:\"BinaryOperation\"};break;case\"has_value\":baseQuery={left:{collection:collectionId,name:fieldKey,type:\"Identifier\"},operator:shouldInvert?\"<=\":\">\",right:{type:\"LiteralValue\",value:0},type:\"BinaryOperation\"};break;case\"is_empty\":baseQuery={left:{collection:collectionId,name:fieldKey,type:\"Identifier\"},operator:shouldInvert?\"!=\":\"==\",right:{type:\"LiteralValue\",value:0},type:\"BinaryOperation\"};break;}// If tri-state OFF, wrap in NOT to invert results\nif(isTriStateOff&&baseQuery){return{operator:\"not\",type:\"UnaryOperation\",value:baseQuery};}return baseQuery;}// ---- Handle text search functions ----\nif(operator===\"contains\"){return{arguments:[{collection:collectionId,name:fieldKey,type:\"Identifier\"},{type:\"LiteralValue\",value:value}],functionName:\"CONTAINS\",type:\"FunctionCall\"};}if(operator===\"starts_with\"){return{arguments:[{collection:collectionId,name:fieldKey,type:\"Identifier\"},{type:\"LiteralValue\",value:value}],functionName:\"STARTS_WITH\",type:\"FunctionCall\"};}if(operator===\"ends_with\"){return{arguments:[{collection:collectionId,name:fieldKey,type:\"Identifier\"},{type:\"LiteralValue\",value:value}],functionName:\"ENDS_WITH\",type:\"FunctionCall\"};}if(operator===\"not_contains\"){return{operator:\"not\",type:\"UnaryOperation\",value:{arguments:[{collection:collectionId,name:fieldKey,type:\"Identifier\"},{type:\"LiteralValue\",value:value}],functionName:\"CONTAINS\",type:\"FunctionCall\"}};}// ---- Handle comparison operators ----\nconst operatorMap={equals:\"==\",not_equals:\"!=\",greater_than:\">\",less_than:\"<\",greater_than_or_equal:\">=\",less_than_or_equal:\"<=\"};const mappedOperator=operatorMap[operator];if(mappedOperator){return{left:{collection:collectionId,name:fieldKey,type:\"Identifier\"},operator:mappedOperator,right:{type:\"LiteralValue\",value:value},type:\"BinaryOperation\"};}return null;};// ============================================\n// Multi-Filter Query Builder (Hierarchical)\n// ============================================\n/**\n * Build filters where clause with hierarchical logic system\n */export const buildFiltersWhereClause=(filters,collectionId,propertyControls,globalLogic,debugMode=false)=>{const validFilters=filters.filter(hasValidFilterValue);if(validFilters.length===0){return null;}// Group filters by component and builder logic\nconst filtersByComponent=new Map;validFilters.forEach(filter=>{const key=`${filter.componentId}-${filter.builderLogic}`;if(!filtersByComponent.has(key)){filtersByComponent.set(key,[]);}filtersByComponent.get(key).push(filter);});// Build conditions for each component group\nconst componentConditions=[];for(const[key,componentFilters]of filtersByComponent){const[componentId,builderLogic]=key.split(\"-\");// Build individual filter conditions\nconst filterConditions=componentFilters.map(filter=>{if(Array.isArray(filter.value)&&filter.value.length>1){return buildMultiValueFilterClause(filter,collectionId,propertyControls);}return buildFilterWhereClause(filter,collectionId,propertyControls);}).filter(Boolean);if(filterConditions.length===0)continue;if(filterConditions.length===1){componentConditions.push(filterConditions[0]);continue;}// Combine filters within component using builder logic\nconst builderOperator=builderLogic===\"All\"?\"and\":\"or\";let componentCombined={left:filterConditions[0],operator:builderOperator,right:filterConditions[1],type:\"BinaryOperation\"};for(let i=2;i<filterConditions.length;i++){componentCombined={left:componentCombined,operator:builderOperator,right:filterConditions[i],type:\"BinaryOperation\"};}componentConditions.push(componentCombined);}if(componentConditions.length===0){return null;}if(componentConditions.length===1){return componentConditions[0];}// Combine component conditions using global logic\nconst globalOperator=globalLogic===\"All\"?\"and\":\"or\";let globalCombined={left:componentConditions[0],operator:globalOperator,right:componentConditions[1],type:\"BinaryOperation\"};for(let i=2;i<componentConditions.length;i++){globalCombined={left:globalCombined,operator:globalOperator,right:componentConditions[i],type:\"BinaryOperation\"};}return globalCombined;};// ============================================\n// Multi-Value Filter Helper\n// ============================================\nconst buildMultiValueFilterClause=(filter,collectionId,propertyControls)=>{if(!Array.isArray(filter.value)||filter.value.length===0){return null;}const fieldKey=Object.entries(propertyControls).find(([key,control])=>control.title?.toLowerCase()===filter.field.toLowerCase())?.[0]||filter.field;const{operator}=filter;// Build conditions for each value\nconst conditions=filter.value.map(val=>{const baseIdentifier={collection:collectionId,name:fieldKey,type:\"Identifier\"};switch(operator){case\"contains\":return{arguments:[baseIdentifier,{type:\"LiteralValue\",value:val}],functionName:\"CONTAINS\",type:\"FunctionCall\"};case\"equals\":return{left:baseIdentifier,operator:\"==\",right:{type:\"LiteralValue\",value:val},type:\"BinaryOperation\"};// ... other operators\ndefault:return{left:baseIdentifier,operator:\"==\",right:{type:\"LiteralValue\",value:val},type:\"BinaryOperation\"};}});if(conditions.length===1){return conditions[0];}// not_contains always uses AND; others respect filter.logic\nconst filterOperator=filter.operator===\"not_contains\"?\"and\":filter.logic===\"All\"?\"and\":\"or\";let combined={left:conditions[0],operator:filterOperator,right:conditions[1],type:\"BinaryOperation\"};for(let i=2;i<conditions.length;i++){combined={left:combined,operator:filterOperator,right:conditions[i],type:\"BinaryOperation\"};}return combined;};// ============================================\n// Utility Functions\n// ============================================\n/**\n * Combine existing where clause with new filter where clause\n */export const combineWhereClauses=(existing,additional,operator=\"and\")=>{if(!existing&&!additional)return null;if(!existing)return additional;if(!additional)return existing;return{left:existing,operator:operator,right:additional,type:\"BinaryOperation\"};};/**\n * Build orderBy clause from sort state\n */export const buildOrderByClause=(sortState,propertyControls,collectionId)=>{if(!sortState||sortState.length===0){return[];}return sortState.map(sort=>{const fieldKey=Object.entries(propertyControls).find(([key,control])=>control.title?.toLowerCase()===sort.field.toLowerCase())?.[0]||sort.field;return{collection:collectionId,name:fieldKey,direction:sort.direction,type:\"Identifier\"};});};\nexport const __FramerMetadata__ = {\"exports\":{\"buildSearchWhereClause\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"buildFiltersWhereClause\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"combineWhereClauses\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"buildFilterWhereClause\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"buildOrderByClause\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"hasValidFilterValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Query_builders.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useMemo,cloneElement}from\"react\";import{addPropertyControls,ControlType,RenderTarget,useQueryData}from\"framer\";import{getCollectionInfo,getCollectionStore,getCollectionStoreKey,globalInitStore}from\"https://framerusercontent.com/modules/fGN1IPlqamL7joTmwPeH/Xt9cbw9Ua9mMHpg4UuVs/StoreManagement.js\";import{wrapWithVariantOverrides}from\"https://framerusercontent.com/modules/fHgEuOY9q2vjBn6zUxcL/mRiOUDyYp9zY9ZfmruWC/Variant_utils.js\";import{buildFiltersWhereClause,buildOrderByClause,buildSearchWhereClause,combineWhereClauses}from\"https://framerusercontent.com/modules/Ynj5QNLR3Gsyj4M9gmMa/1Cxb6sN3Pj7DY7eZEqap/Query_builders.js\";// ============================================\n// Hook: useQueryCount\n// ============================================\nfunction useQueryCount(query,debugMode=false){if(debugMode){console.log(\"🎣 useQueryCount CALLED with:\",{hasQuery:!!query,hasFrom:!!query?.from,queryWhere:query?.where});}if(!query||!query.from){if(debugMode){console.log(\"❌ useQueryCount early return - no query or no from\");}return 0;}const countQuery={...query,select:[]};const collection=useQueryData(countQuery);if(debugMode){console.log(\"📊 useQueryCount result:\",{queryWhere:query?.where,countQueryWhere:countQuery?.where,resultLength:collection?.length});}return collection.length;}// ============================================\n// Main Component: CMSCollection\n// ============================================\n/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function CMSCollection(props){const{collection,emptyState,collectionWidth=\"100%\",emptyStateWidth=\"100%\",filterLogic,storeKey,variantOverrides=[],urlSync=false,urlPrefix=\"\",layoutToggle=false,layoutDisplay=true,flexDirection=\"horizontal\",justifyContent=\"center\",alignRow=\"flex-start\",alignColumn=\"flex-start\",gridColumns=3,gridRows=0,gridAutoRows=\"minmax(200px, auto)\",flexWrap=false,gapRow=14,gapX=16,gapY=16,debugMode=false,style,fallback={text:\"No items found\",font:{fontSize:16,lineHeight:\"1.5em\"},backgroundColor:\"transparent\",padding:40,borderRadius:0}}=props;// Extract fallback settings with defaults\nconst fallbackText=fallback?.text||\"No items found\";const fallbackFont=fallback?.font||{fontSize:16,lineHeight:\"1.5em\"};const fallbackBackgroundColor=fallback?.backgroundColor||\"transparent\";const fallbackPadding=fallback?.padding??40;const fallbackBorderRadius=fallback?.borderRadius??0;// Detect render mode\nconst current=RenderTarget.current();const isCanvas=current===RenderTarget.canvas;// Get store key for this collection\nconst actualStoreKey=getCollectionStoreKey(collection,storeKey);const isInitialized=useRef(false);// Watch for store initialization\nconst[initState]=globalInitStore();const isStoreInitialized=actualStoreKey&&initState.storeInitialized.includes(actualStoreKey);// Extract collection info from slot connection\nconst collectionInfo=useMemo(()=>{return isStoreInitialized?getCollectionInfo(collection):null;},[collection,isStoreInitialized]);// Get store for this collection\nconst useStore=actualStoreKey?getCollectionStore(actualStoreKey):null;const[state,setState]=useStore?useStore():[null,null];// Initialize store if connected but not initialized\nuseEffect(()=>{if(actualStoreKey&&!isStoreInitialized&&!isInitialized.current){getCollectionStore(actualStoreKey);isInitialized.current=true;}},[actualStoreKey,isStoreInitialized]);// Get original query\nconst originalQuery=collectionInfo?.query;// ============================================\n// Build Query Clauses (Memoized)\n// ============================================\n// Build search where clause\nconst searchWhere=useMemo(()=>{return buildSearchWhereClause(state?.searchTerm||\"\",state?.searchFields||[],collectionInfo?.collectionId||\"\",collectionInfo?.propertyControls||{});},[state?.searchTerm,state?.searchFields,collectionInfo?.collectionId,collectionInfo?.propertyControls]);// Build filters where clause\nconst filtersWhere=useMemo(()=>{const result=buildFiltersWhereClause(state?.filters||[],collectionInfo?.collectionId||\"\",collectionInfo?.propertyControls||{},filterLogic);if(debugMode&&(state?.filters||[]).length>0){console.log(\"🔍 Applied filters:\",{totalFilters:(state?.filters||[]).length});}return result;},[state?.filters,collectionInfo?.collectionId,collectionInfo?.propertyControls,filterLogic]);// Combine search and filters\nconst combinedWhere=useMemo(()=>combineWhereClauses(searchWhere,filtersWhere,\"and\"),[searchWhere,filtersWhere]);// Combine with existing where clause\nconst finalWhere=useMemo(()=>combineWhereClauses(originalQuery?.where,combinedWhere,\"and\"),[originalQuery?.where,combinedWhere]);// Build order by clause\nconst orderBy=useMemo(()=>buildOrderByClause(state?.sort||[],collectionInfo?.propertyControls||{},collectionInfo?.collectionId||\"\"),[state?.sort,collectionInfo?.propertyControls,collectionInfo?.collectionId]);// ============================================\n// Layout Styles (Memoized)\n// ============================================\nconst containerStyles=useMemo(()=>{if(!layoutToggle)return{};const layout=layoutDisplay?\"flex\":\"grid\";if(layout===\"flex\"){return{display:\"flex\",flexDirection:flexDirection===\"horizontal\"?\"row\":\"column\",justifyContent,alignItems:flexDirection===\"horizontal\"?alignRow:alignColumn,flexWrap:flexWrap?\"wrap\":\"nowrap\",gap:flexWrap?`${gapY}px ${gapX}px`:`${gapRow}px`};}else{return{display:\"grid\",gridTemplateColumns:`repeat(${gridColumns}, 1fr)`,...gridRows>0&&{gridTemplateRows:`repeat(${gridRows}, 1fr)`},gridAutoRows,gap:`${gapY}px ${gapX}px`};}},[layoutToggle,layoutDisplay,flexDirection,justifyContent,alignRow,alignColumn,flexWrap,gapRow,gapX,gapY,gridColumns,gridRows,gridAutoRows]);// ============================================\n// Build Filtered Query (Memoized)\n// ============================================\nconst filteredQuery=useMemo(()=>{if(!originalQuery||!collectionInfo){return collection?.[0]?.props?.children?.props?.children?.props?.query;}return{...originalQuery,where:finalWhere,...orderBy.length>0&&{orderBy}};},[originalQuery,finalWhere,orderBy,collection,collectionInfo]);// Update count in store when query changes\nconst currentCount=useQueryCount(filteredQuery||{},debugMode);useEffect(()=>{if(setState&&currentCount!==state?.count){setState({...state,count:currentCount});}},[currentCount,setState]);// ============================================\n// Clone Collection with Filtered Query\n// ============================================\nconst clonedCollection=useMemo(()=>{if(!collection?.[0]||!filteredQuery)return collection;const originalElement=collection[0];const originalListElement=originalElement.props?.children;const originalQueryElement=originalListElement?.props?.children;if(!originalQueryElement)return collection;// Clone the query element with new query\nconst newQueryElement=/*#__PURE__*/cloneElement(originalQueryElement,{query:filteredQuery});// Clone the list element with new query element\nconst newListElement=/*#__PURE__*/cloneElement(originalListElement,{children:newQueryElement});// Clone the container with new list element AND apply layout styles\nconst newContainerElement=/*#__PURE__*/cloneElement(originalElement,{children:newListElement,style:{...originalElement.props?.style,...containerStyles,width:\"100%\",overflow:\"hidden\"}});return[newContainerElement];},[collection,filteredQuery,containerStyles]);// ============================================\n// Apply Variant Overrides\n// ============================================\nconst processedCollection=useMemo(()=>{if(!clonedCollection||!variantOverrides||variantOverrides.length===0){return clonedCollection;}return clonedCollection.map(containerElement=>{const listElement=containerElement.props?.children;if(!listElement)return containerElement;const cmsItem=listElement.props?.children;if(!cmsItem)return containerElement;const originalChildrenFn=cmsItem.props?.children;if(typeof originalChildrenFn!==\"function\")return containerElement;// Wrap children function with variant override logic\nconst wrappedChildren=wrapWithVariantOverrides(originalChildrenFn,variantOverrides);const newCmsItem=/*#__PURE__*/cloneElement(cmsItem,{...cmsItem.props,children:wrappedChildren});const newListElement=/*#__PURE__*/cloneElement(listElement,{children:newCmsItem});return /*#__PURE__*/cloneElement(containerElement,{children:newListElement});});},[clonedCollection,variantOverrides]);// ============================================\n// Render Logic\n// ============================================\nconst isEditorMode=!collectionInfo;const showEmptyState=!isEditorMode&&collectionInfo&&currentCount===0&&(state?.searchTerm||state?.filters&&state.filters.length>0);// Canvas mode rendering\nif(isCanvas){// ... canvas-specific rendering\n}// Prepare empty state\nconst modifiedEmptyState=useMemo(()=>{if(!emptyState||!Array.isArray(emptyState)||emptyState.length===0){return null;}return /*#__PURE__*/cloneElement(emptyState[0],{style:{width:emptyStateWidth}});},[emptyState,emptyStateWidth]);// Main render\nreturn /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",width:\"100%\",...style},children:[debugMode&&state&&/*#__PURE__*/_jsxs(\"div\",{style:{},children:[/*#__PURE__*/_jsx(\"div\",{children:/*#__PURE__*/_jsx(\"strong\",{children:\"🛠 Debug Information\"})}),/*#__PURE__*/_jsxs(\"div\",{children:[\"Store Key: \",actualStoreKey]}),/*#__PURE__*/_jsxs(\"div\",{children:['Search Term: \"',state.searchTerm,'\"']}),/*#__PURE__*/_jsxs(\"div\",{children:[\"Search Fields: [\",state.searchFields.join(\", \"),\"]\"]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"Active Filters: \",state.filters?.length||0]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"Filter Logic: \",filterLogic]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"Total Results: \",currentCount]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"Collection ID: \",collectionInfo?.collectionId]})]}),isEditorMode?// Editor mode: Show collection or connection prompt\ncollection?.length>0?/*#__PURE__*/_jsx(\"div\",{style:{width:collectionWidth,margin:\"0 auto\"},children:processedCollection}):/*#__PURE__*/_jsx(\"div\",{children:\"Connect CMS Collection\"}):collection?.length>0?showEmptyState?// No results - show empty state\nmodifiedEmptyState||/*#__PURE__*/_jsx(\"div\",{children:fallbackText}):// Has results - show collection\n/*#__PURE__*/_jsx(\"div\",{style:{width:collectionWidth,margin:\"0 auto\"},children:processedCollection}):modifiedEmptyState||/*#__PURE__*/_jsx(\"div\",{children:fallbackText})]});}// ============================================\n// Property Controls (Framer UI)\n// ============================================\naddPropertyControls(CMSCollection,{collection:{type:ControlType.Slot,title:\"Collection\",description:\"Connect your CMS Collection List component here\",maxCount:1},emptyState:{type:ControlType.Slot,title:\"Empty State\",description:\"Component to show when no items match the filters\",maxCount:1},fallback:{type:ControlType.Object,title:\"Empty State Fallback\",controls:{text:{type:ControlType.String,defaultValue:\"No items found\"},font:{type:ControlType.Font,title:\"Font\"},backgroundColor:{type:ControlType.Color,defaultValue:\"transparent\"},padding:{type:ControlType.Number,defaultValue:40},borderRadius:{type:ControlType.Number,defaultValue:0}}},collectionWidth:{type:ControlType.String,title:\"CMS Collection Width\",defaultValue:\"100%\"},filterLogic:{type:ControlType.Enum,title:\"Filter Logic\",options:[\"All\",\"Any\"],optionTitles:[\"All (AND)\",\"Any (OR)\"],defaultValue:\"All\"},storeKey:{type:ControlType.String,title:\"Filter Group\",defaultValue:\"auto\",placeholder:\"auto (uses collection name)\"},variantOverrides:{type:ControlType.Array,title:\"Variant Overrides\",control:{type:ControlType.Object,controls:{componentName:{type:ControlType.String,title:\"Component Name\"},variantName:{type:ControlType.String,title:\"Variant Name\"}}}},layoutToggle:{type:ControlType.Boolean,title:\"Responsive Layout\",defaultValue:false},// ... more layout controls (flexDirection, gridColumns, gaps, etc.)\ndebugMode:{type:ControlType.Boolean,title:\"🛠 Debug Mode\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CMSCollection\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CMSCollection.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useQueryData}from\"framer\";// ============================================\n// Option Data Processing\n// ============================================\n/**\n * Get option values and titles from config\n * Supports both old format (string[]) and new format (object[])\n */export const getOptionData=config=>{if(!config.options||config.options.length===0){return{values:[],titles:[],optionMap:new Map};}const values=[];const titles=[];const optionMap=new Map// value -> title mapping\n;config.options.forEach(option=>{if(typeof option===\"string\"){// Backward compatibility: old format\nvalues.push(option);titles.push(option);optionMap.set(option,option);}else if(option&&typeof option===\"object\"&&option.value&&option.title){// New format: {value, title}\nvalues.push(option.value);titles.push(option.title);optionMap.set(option.value,option.title);}});return{values,titles,optionMap};};// ============================================\n// Match/Operator Options by Filter Type\n// ============================================\n/**\n * Get available match operators based on field type and filter type\n */export const getMatchOptions=(fieldType,filterType)=>{switch(filterType){case\"text\":return{options:[\"contains\",\"not_contains\",\"starts_with\",\"ends_with\",\"equals\",\"not_equals\",\"is_set\",\"is_not_set\"],titles:[\"Contains\",\"Doesn't contain\",\"Starts with\",\"Ends with\",\"Equals\",\"Doesn't equal\",\"Is set\",\"Is not set\"],default:\"contains\"};case\"dropdown\":return{options:[\"contains\",\"not_contains\",\"starts_with\",\"ends_with\",\"equals\",\"not_equals\",\"greater_than\",\"less_than\",\"greater_than_or_equal\",\"less_than_or_equal\",\"is_set\",\"is_not_set\"],titles:[\"Contains\",\"Doesn't contain\",\"Starts with\",\"Ends with\",\"Equals\",\"Doesn't equal\",\"Greater than\",\"Less than\",\"Greater than or equal\",\"Less than or equal\",\"Is set\",\"Is not set\"],default:\"equals\"};case\"number\":return{options:[\"equals\",\"not_equals\",\"greater_than\",\"less_than\",\"greater_than_or_equal\",\"less_than_or_equal\",\"is_set\",\"is_not_set\"],titles:[\"Equals\",\"Doesn't equal\",\"Greater than\",\"Less than\",\"Greater than or equal\",\"Less than or equal\",\"Is set\",\"Is not set\"],default:\"equals\"};case\"toggle\":return{options:[\"is_enabled\",\"is_disabled\",\"has_value\",\"is_empty\",\"is_set\",\"is_not_set\"],titles:[\"Enabled (true)\",\"Disabled (false)\",\"Has Value\",\"Is Empty\",\"Is Set (not null)\",\"Is Not Set (null)\"],default:\"is_enabled\"};case\"cms-enum\":return{options:[\"equals\",\"not_equals\",\"is_set\",\"is_not_set\"],titles:[\"Equals\",\"Doesn't equal\",\"Is set\",\"Is not set\"],default:\"equals\"};case\"range\":return{options:[\"between\"],titles:[\"Between\"],default:\"between\"};default:return{options:[\"equals\"],titles:[\"Equals\"],default:\"equals\"};}};// ============================================\n// Active Match Getter\n// ============================================\n/**\n * Get the appropriate match value based on filter type\n */export const getActiveMatch=config=>{if(!config.filterType){console.warn(\"getActiveMatch: config.filterType is undefined, defaulting to 'dropdown'\",config);return config.matchText||\"equals\";}switch(config.filterType){case\"text\":return config.matchText||\"contains\";case\"dropdown\":return config.matchText||\"equals\";case\"number\":return config.matchNumber||\"equals\";case\"toggle\":return config.matchToggle||\"is_enabled\";case\"range\":return\"between\";case\"cms-enum\":return config.matchEnum||\"equals\";default:return config.match||\"equals\";}};// ============================================\n// Auto-Detection Helpers\n// ============================================\n/**\n * Auto-detect recommended filter type based on CMS field type\n */export const getRecommendedFilterType=cmsFieldType=>{switch(cmsFieldType){case\"string\":case\"richtext\":return\"text\";case\"number\":return\"range\";case\"enum\":return\"cms-enum\";case\"boolean\":return\"toggle\";default:return\"text\";}};// ============================================\n// Option Count Functions\n// ============================================\n/**\n * Get count for each CMS dropdown option\n */export const getOptionCounts=(collectionId,fieldKey,enumValues,originalQuery)=>{const counts={};enumValues.forEach(enumValue=>{try{const countQuery={...originalQuery,where:originalQuery.where?{left:originalQuery.where,operator:\"and\",right:{left:{collection:collectionId,name:fieldKey,type:\"Identifier\"},operator:\"==\",right:{type:\"LiteralValue\",value:enumValue},type:\"BinaryOperation\"},type:\"BinaryOperation\"}:{left:{collection:collectionId,name:fieldKey,type:\"Identifier\"},operator:\"==\",right:{type:\"LiteralValue\",value:enumValue},type:\"BinaryOperation\"},select:[]};const countData=useQueryData(countQuery);counts[enumValue]=countData.length;}catch(error){counts[enumValue]=0;}});return counts;};/**\n * Format count display using template\n */export const formatCountDisplay=(option,count,template=\"[{count}]\",countStyle)=>{if(!template||!template.includes(\"{count}\")){return{text:option};}const countText=template.replace(\"{count}\",count.toString());// If template has styling, create a styled element\nif(countStyle&&Object.keys(countStyle).length>0){const styledCount=/*#__PURE__*/_jsx(\"span\",{style:{fontSize:countStyle.fontSize,color:countStyle.color,backgroundColor:countStyle.backgroundColor,padding:countStyle.padding,borderRadius:countStyle.borderRadius,margin:countStyle.margin,fontFamily:countStyle?.font?.fontFamily||undefined,fontWeight:countStyle?.font?.fontWeight??undefined,fontStyle:countStyle?.font?.fontStyle??undefined,...countStyle.size!==0&&{width:countStyle.size,height:countStyle.size,placeContent:\"center\",textAlign:\"center\",display:\"inline-block\"}},children:countText});return{text:option,countElement:styledCount};}return{text:`${option} ${countText}`};};// ============================================\n// Validation Functions\n// ============================================\n/**\n * Get valid toggle operators for a field type\n */export const getValidToggleOperators=fieldType=>{switch(fieldType){case\"boolean\":return[\"is_enabled\",\"is_disabled\",\"is_set\",\"is_not_set\",\"has_value\",\"is_empty\"];case\"number\":return[\"has_value\",\"is_empty\",\"is_set\",\"is_not_set\",\"equals\",\"not_equals\",\"greater_than\",\"less_than\",\"greater_than_or_equal\",\"less_than_or_equal\"];case\"string\":case\"richtext\":return[\"is_set\",\"is_not_set\",\"has_value\",\"is_empty\",\"contains\",\"not_contains\",\"starts_with\",\"ends_with\",\"equals\",\"not_equals\"];default:return[\"is_set\",\"is_not_set\",\"has_value\",\"is_empty\"];}};/**\n * Validate filter value based on config and filter type\n */export const hasValidValue=(config,value)=>{const activeMatch=getActiveMatch(config);// 1. FIELD NAME VALIDATION - must have field name\nif(!config.fieldName||!config.fieldName.trim()){return false;}// 2. Operators that don't need values\nif([\"is_set\",\"is_not_set\"].includes(activeMatch)){return true;}// 3. TOGGLE SPECIAL LOGIC - only apply filter when user explicitly enables it\nif(config.filterType===\"toggle\"){if(config.toggleTriState){// Tri-state: null/undefined = ANY, true = ON, false = OFF\nreturn value===true||value===false;}// Binary toggle: Only apply when ON\nreturn value===true;}// 4. Handle range filters\nif(config.filterType===\"range\"){if(!value||typeof value!==\"object\"){return false;}return value.min!==undefined&&!isNaN(value.min)||value.max!==undefined&&!isNaN(value.max);}// 5. Handle dropdown with multiple selection\nif(config.filterType===\"dropdown\"&&config.allowMultiple){return Array.isArray(value)&&value.length>0;}// 6. Handle CMS enum with multiple selection\nif(config.filterType===\"cms-enum\"&&config.allowMultiple){return Array.isArray(value)&&value.length>0;}// 7. Handle null/undefined\nif(value===null||value===undefined){return false;}// 8. Handle string values\nif(typeof value===\"string\"){return value.trim()!==\"\";}// 9. Handle number values\nif(typeof value===\"number\"){return!isNaN(value);}// 10. Handle boolean values\nif(typeof value===\"boolean\"){return true;}// 11. Default: value exists\nreturn true;};\nexport const __FramerMetadata__ = {\"exports\":{\"formatCountDisplay\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getOptionData\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getActiveMatch\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"hasValidValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getRecommendedFilterType\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getOptionCounts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getMatchOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getValidToggleOperators\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./filter_utils.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{getActiveMatch}from\"https://framerusercontent.com/modules/8t4wAEVIEW49rMhOZjZW/PQhcG4yZfkIHdwCdaOvo/filter_utils.js\";// TextFilter component for CMS Filter system\n// Extracted from CMSFilters.tsx for better modularity\n// import { getActiveMatch } from \"https://framerusercontent.com/modules/.../filter_utils.js\";\n/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export function TextFilter({config,value,onChange,debugLevel,filterInputStyles,uniqueClassName}){const activeMatch=getActiveMatch(config);// No input needed for is_set/is_not_set operators\nif(activeMatch===\"is_set\"||activeMatch===\"is_not_set\"){return /*#__PURE__*/_jsx(\"div\",{style:{padding:8,fontSize:12,color:\"#666\",fontStyle:\"italic\"},children:\"No input needed - checks if field has value\"});}return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n          .cms-filter-input.${uniqueClassName} {\n            ${(()=>{if(typeof filterInputStyles?.border===\"string\"){return`border: ${filterInputStyles.border};`;}else if(filterInputStyles?.border){const border=filterInputStyles.border;return`\n                  ${border.borderWidth!==undefined?`border-width: ${border.borderWidth}px;`:\"\"}\n                  ${border.borderTopWidth!==undefined?`border-top-width: ${border.borderTopWidth}px;`:\"\"}\n                  ${border.borderBottomWidth!==undefined?`border-bottom-width: ${border.borderBottomWidth}px;`:\"\"}\n                  ${border.borderLeftWidth!==undefined?`border-left-width: ${border.borderLeftWidth}px;`:\"\"}\n                  ${border.borderRightWidth!==undefined?`border-right-width: ${border.borderRightWidth}px;`:\"\"}\n                  ${border.borderStyle?`border-style: ${border.borderStyle};`:\"border-style: solid;\"}\n                  ${border.borderColor?`border-color: ${border.borderColor};`:\"border-color: #dee2e6;\"}\n                `;}else{return\"border: none;\";}})()}\n            transition: border-color 0.2s ease, \n                        background-color 0.2s ease, \n                        color 0.2s ease, \n                        box-shadow 0.2s ease;\n          }\n\n          .cms-filter-input.${uniqueClassName}:hover:not(:focus) {\n            border-color: ${filterInputStyles?.hoverBorderColor||filterInputStyles?.selectedBorderColor||\"#007AFF\"} !important;\n            background-color: ${filterInputStyles?.hoverBackgroundColor||\"#f8f9fa\"} !important;\n            color: ${filterInputStyles?.hoverTextColor||filterInputStyles?.color||\"#333\"} !important;\n          }\n\n          .cms-filter-input.${uniqueClassName}:focus {\n            border-color: ${filterInputStyles?.selectedBorderColor||\"#007AFF\"} !important;\n            background-color: ${filterInputStyles?.selectedBackgroundColor||\"#fff\"} !important;\n            color: ${filterInputStyles?.selectedTextColor||\"#333\"} !important;\n          }\n        `}),/*#__PURE__*/_jsx(\"input\",{className:`${uniqueClassName} cms-filter-input`,type:\"text\",placeholder:`${config.title}...`,value:value||\"\",onChange:e=>onChange(e.target.value),style:{padding:\"8px 12px\",borderRadius:4,fontSize:13,outline:\"none\",width:\"100%\",lineHeight:1.2,...filterInputStyles,fontFamily:filterInputStyles?.font?.fontFamily||undefined,fontWeight:filterInputStyles?.font?.fontWeight??undefined,fontStyle:filterInputStyles?.font?.fontStyle??undefined}})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"TextFilter\":{\"type\":\"reactComponent\",\"name\":\"TextFilter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextFilter.map","// SelectFilter component for div-based custom dropdowns\n// 使用 div 构建的自定义下拉选择器，支持单选和多选\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{getActiveMatch,getOptionData}from\"https://framerusercontent.com/modules/8t4wAEVIEW49rMhOZjZW/PQhcG4yZfkIHdwCdaOvo/filter_utils.js\";import{useState,useRef,useEffect}from\"react\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export function SelectFilter({config,value,onChange,debugLevel,filterSelectStyles,uniqueClassName}){const[isOpen,setIsOpen]=useState(false);const dropdownRef=useRef(null);// ============================================\n// 点击外部关闭下拉框\n// ============================================\nuseEffect(()=>{const handleClickOutside=event=>{if(dropdownRef.current&&!dropdownRef.current.contains(event.target)){setIsOpen(false);}};if(isOpen){document.addEventListener(\"mousedown\",handleClickOutside);}return()=>{document.removeEventListener(\"mousedown\",handleClickOutside);};},[isOpen]);// ============================================\n// 防御性检查\n// ============================================\nif(!config){return /*#__PURE__*/_jsx(\"div\",{style:{padding:8,color:\"#999\"},children:\"Config not available\"});}const activeMatch=getActiveMatch(config);// is_set/is_not_set 不需要输入\nif(activeMatch===\"is_set\"||activeMatch===\"is_not_set\"){return /*#__PURE__*/_jsx(\"div\",{style:{padding:8,fontSize:12,color:\"#666\",fontStyle:\"italic\"},children:\"No input needed - checks if field has value\"});}// 获取选项数据\nconst{values,titles}=getOptionData(config);if(values.length===0){return /*#__PURE__*/_jsx(\"div\",{style:{padding:8,fontSize:12,color:\"#dc3545\",fontStyle:\"italic\",backgroundColor:\"#f8d7da\",borderRadius:4},children:\"No options configured. Please add options to the filter configuration.\"});}// 样式配置\nconst selectControls=filterSelectStyles?.selectControls||{};const optionControls=filterSelectStyles?.optionControls||{};// ============================================\n// 多选模式\n// ============================================\nif(config.allowMultiple){const selectedValues=Array.isArray(value)?value:[];const toggleOption=optionValue=>{const newSelected=selectedValues.includes(optionValue)?selectedValues.filter(v=>v!==optionValue):[...selectedValues,optionValue];onChange(newSelected);};const getDisplayText=()=>{if(selectedValues.length===0)return`Select ${config.title||\"option\"}...`;if(selectedValues.length===1){const idx=values.indexOf(selectedValues[0]);return titles[idx]||selectedValues[0];}return`${selectedValues.length} selected`;};return /*#__PURE__*/_jsxs(\"div\",{ref:dropdownRef,style:{position:\"relative\",width:\"100%\"},children:[/*#__PURE__*/_jsx(\"style\",{children:`\n          /* 触发器样式 */\n          .dropdown-trigger.${uniqueClassName} {\n            padding: ${selectControls?.padding||\"8px 12px\"};\n            border-radius: ${selectControls?.borderRadius||\"4px\"};\n            font-size: ${selectControls?.fontSize||\"13\"}px;\n            background-color: ${selectControls?.backgroundColor||\"#fff\"};\n            color: ${selectControls?.color||\"#333\"};\n            border: 1px solid ${selectControls?.borderColor||\"#dee2e6\"};\n            cursor: pointer;\n            transition: all 0.2s ease;\n          }\n          .dropdown-trigger.${uniqueClassName}:hover {\n            border-color: ${selectControls?.hoverBorderColor||\"#007AFF\"};\n            background-color: ${selectControls?.hoverBackgroundColor||\"#f8f9fa\"};\n          }\n          .dropdown-trigger.${uniqueClassName}.open {\n            border-color: ${selectControls?.selectedBorderColor||\"#007AFF\"};\n            background-color: ${selectControls?.selectedBackgroundColor||\"#007AFF\"};\n            color: ${selectControls?.selectedTextColor||\"#fff\"};\n          }\n\n          /* 下拉选项容器 */\n          .dropdown-options.${uniqueClassName} {\n            position: absolute;\n            top: 100%;\n            left: 0;\n            right: 0;\n            margin-top: ${selectControls?.marginTop||\"4\"}px;\n            padding: ${optionControls?.dropdownPadding||\"0\"};\n            background-color: ${optionControls?.dropdownBackgroundColor||\"#fff\"};\n            border: 1px solid #dee2e6;\n            border-radius: ${optionControls?.dropdownBorderRadius||\"4px\"};\n            max-height: ${optionControls?.maxHeight||\"200\"}px;\n            overflow-y: auto;\n            z-index: 1000;\n            box-shadow: 0 2px 8px rgba(0,0,0,0.15);\n          }\n\n          /* 选项样式 */\n          .dropdown-option.${uniqueClassName} {            \n            display: flex;\n            align-items: center;\n            gap: 8px;\n            padding: ${optionControls?.optionPadding||\"8px 12px\"};\n            cursor: pointer;\n            transition: background-color 0.15s ease;\n            color: ${optionControls?.optionColor||\"#333\"};\n          }\n          .dropdown-option.${uniqueClassName}:hover {\n            \n            background-color: ${optionControls?.optionHoverBackgroundColor||\"#f8f9fa\"};\n            color: ${optionControls?.optionHoverTextColor||\"#333\"};\n          }\n          .dropdown-option.${uniqueClassName}.selected {\n            background-color: ${optionControls?.optionSelectedBackgroundColor||\"#007AFF\"};\n            color: ${optionControls?.optionSelectedTextColor||\"#fff\"};\n          }\n        `}),/*#__PURE__*/_jsxs(\"div\",{className:`dropdown-trigger ${uniqueClassName} ${isOpen?\"open\":\"\"}`,onClick:()=>setIsOpen(!isOpen),style:{width:\"100%\",position:\"relative\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{color:selectedValues.length===0?\"#999\":\"inherit\"},children:getDisplayText()}),/*#__PURE__*/_jsx(DropdownArrow,{isOpen:isOpen,controls:selectControls})]}),isOpen&&/*#__PURE__*/_jsx(\"div\",{className:`dropdown-options ${uniqueClassName}`,children:values.map((optionValue,idx)=>/*#__PURE__*/_jsxs(\"div\",{className:`dropdown-option ${uniqueClassName} ${selectedValues.includes(optionValue)?\"selected\":\"\"}`,onClick:()=>toggleOption(optionValue),children:[/*#__PURE__*/_jsx(\"input\",{type:\"checkbox\",checked:selectedValues.includes(optionValue),onChange:()=>{},style:{margin:0,cursor:\"pointer\"}}),/*#__PURE__*/_jsx(\"span\",{children:titles[idx]})]},idx))})]});}// ============================================\n// 单选模式\n// ============================================\nconst selectedIdx=values.indexOf(value);const displayText=selectedIdx>=0?titles[selectedIdx]:`Select ${config.title||\"option\"}...`;return /*#__PURE__*/_jsxs(\"div\",{ref:dropdownRef,style:{position:\"relative\",width:\"100%\"},children:[/*#__PURE__*/_jsx(\"style\",{children:`\n        .dropdown-trigger-single.${uniqueClassName} {\n          padding: ${selectControls?.padding||\"8px 12px\"};\n          border-radius: ${selectControls?.borderRadius||\"4px\"};\n          font-size: ${selectControls?.fontSize||\"13\"}px;\n          background-color: ${selectControls?.backgroundColor||\"#fff\"};\n          color: ${selectControls?.color||\"#333\"};\n          border: 1px solid ${selectControls?.borderColor||\"#dee2e6\"};\n          cursor: pointer;\n          transition: all 0.2s ease;\n        }\n        .dropdown-trigger-single.${uniqueClassName}:hover {\n          border-color: ${selectControls?.hoverBorderColor||\"#007AFF\"};\n        }\n        .dropdown-trigger-single.${uniqueClassName}.open {\n          border-color: ${selectControls?.selectedBorderColor||\"#007AFF\"};\n        }\n\n        .dropdown-option-single.${uniqueClassName} {\n          padding: ${optionControls?.optionPadding||\"8px 12px\"};\n          cursor: pointer;\n          transition: background-color 0.15s ease;\n          color: ${optionControls?.optionColor||\"#333\"};\n        }\n        .dropdown-option-single.${uniqueClassName}:hover {\n          background-color: ${optionControls?.optionHoverBackgroundColor||\"#f8f9fa\"};\n          color: ${optionControls?.optionHoverTextColor||\"#333\"};\n        }\n        .dropdown-option-single.${uniqueClassName}.selected {\n          background-color: ${optionControls?.optionSelectedBackgroundColor||\"#007AFF\"};\n          color: ${optionControls?.optionSelectedTextColor||\"#fff\"};\n        }\n      `}),/*#__PURE__*/_jsxs(\"div\",{className:`dropdown-trigger-single ${uniqueClassName} ${isOpen?\"open\":\"\"}`,onClick:()=>setIsOpen(!isOpen),style:{width:\"100%\",position:\"relative\"},children:[/*#__PURE__*/_jsx(\"span\",{children:displayText}),/*#__PURE__*/_jsx(DropdownArrow,{isOpen:isOpen,controls:selectControls})]}),isOpen&&/*#__PURE__*/_jsxs(\"div\",{className:`dropdown-options ${uniqueClassName}`,children:[/*#__PURE__*/_jsxs(\"div\",{className:`dropdown-option-single ${uniqueClassName} ${!value?\"selected\":\"\"}`,onClick:()=>{onChange(\"\");setIsOpen(false);},children:[\"Select \",config.title||\"option\",\"...\"]}),values.map((optionValue,idx)=>/*#__PURE__*/_jsx(\"div\",{className:`dropdown-option-single ${uniqueClassName} ${value===optionValue?\"selected\":\"\"}`,onClick:()=>{onChange(optionValue);setIsOpen(false);},children:titles[idx]},idx))]})]});}// 下拉箭头子组件\nfunction DropdownArrow({isOpen,controls}){return /*#__PURE__*/_jsx(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:controls?.arrowSize??16,height:controls?.arrowSize??16,viewBox:\"0 0 24 24\",fill:\"none\",style:{position:\"absolute\",right:controls?.arrowPosition??8,top:\"50%\",transform:`translateY(-50%) rotate(${isOpen?\"180deg\":\"0deg\"})`,transition:\"transform 0.2s ease\"},children:/*#__PURE__*/_jsx(\"path\",{d:\"M7 10l5 5 5-5\",fill:\"none\",stroke:controls?.arrowColor||\"currentColor\",strokeWidth:\"2\"})});}\nexport const __FramerMetadata__ = {\"exports\":{\"SelectFilter\":{\"type\":\"reactComponent\",\"name\":\"SelectFilter\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SelectFilter.map","// CMSEnumFilter component for CMS Filter system\n// 专门处理 CMS 枚举字段的过滤器\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{getActiveMatch,getOptionCounts,formatCountDisplay}from\"https://framerusercontent.com/modules/8t4wAEVIEW49rMhOZjZW/PQhcG4yZfkIHdwCdaOvo/filter_utils.js\";import{SelectFilter}from\"https://framerusercontent.com/modules/AriU3p2OUNgHYoCILVA4/nqX4dl8nxEQow1sOWrpt/SelectFilter.js\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export function CMSEnumFilter({config,value,onChange,debugLevel,filterPillStyles,filterSelectStyles,filterCheckboxStyles,uniqueClassName,availableFields,collectionInfo}){// ============================================\n// 防御性检查\n// ============================================\nif(!config){return /*#__PURE__*/_jsx(\"div\",{style:{padding:8,color:\"#999\"},children:\"Config not available\"});}const activeMatch=getActiveMatch(config);// is_set/is_not_set 不需要输入\nif(activeMatch===\"is_set\"||activeMatch===\"is_not_set\"){return /*#__PURE__*/_jsx(\"div\",{style:{padding:8,fontSize:12,color:\"#666\",fontStyle:\"italic\"},children:\"No input needed - checks if field has value\"});}// ============================================\n// 查找枚举字段信息\n// ============================================\nconst enumFieldInfo=availableFields?.find(f=>f.title.toLowerCase()===config.fieldName?.toLowerCase()&&f.type===\"enum\");// ============================================\n// 确定枚举选项\n// ============================================\nlet enumOptions;let enumValues;let optionCounts={};if(!availableFields||availableFields.length===0){// 编辑器模式：显示占位选项\nenumOptions=[\"Option 1\",\"Option 2\",\"Option 3\",\"Option 4\"];enumValues=[\"option1\",\"option2\",\"option3\",\"option4\"];}else if(!enumFieldInfo||!enumFieldInfo.optionTitles){// 预览模式：字段无效时显示错误\nreturn /*#__PURE__*/_jsxs(\"div\",{style:{padding:8,color:\"#dc3545\",fontSize:12,fontStyle:\"italic\",backgroundColor:\"#f8d7da\",borderRadius:4},children:['CMS enum field \"',config.fieldName,'\" not found or has no options.']});}else{// 预览模式：使用实际 CMS 数据\nenumOptions=enumFieldInfo.optionTitles;enumValues=enumFieldInfo.options||enumFieldInfo.optionTitles;// 获取每个选项的计数\nif(config.showPostCount&&collectionInfo){const fieldKey=Object.keys(collectionInfo.propertyControls).find(key=>collectionInfo.propertyControls[key]?.title?.toLowerCase()===config.fieldName?.toLowerCase());if(fieldKey){optionCounts=getOptionCounts(collectionInfo.collectionId,fieldKey,enumValues,collectionInfo.query);}}}// ============================================\n// 样式 1: Dropdown（下拉菜单）\n// ============================================\nif(config.enumStyle===\"dropdown\"){const configWithOptions={...config,options:enumValues.map((optionValue,idx)=>{const optionTitle=enumOptions[idx];const count=optionCounts[optionValue];const displayTitle=config.showPostCount&&count!==undefined?formatCountDisplay(optionTitle,count,config.countTemplate).text:optionTitle;return{value:optionValue,title:displayTitle};})};return /*#__PURE__*/_jsx(SelectFilter,{config:configWithOptions,value:value,onChange:onChange,debugLevel:debugLevel,filterSelectStyles:filterSelectStyles,uniqueClassName:uniqueClassName});}// ============================================\n// 样式 2: Checkboxes（复选框列表）\n// ============================================\nif(config.enumStyle===\"checkboxes\"){const selected=config.allowMultiple?value||[]:value||\"\";return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n          .cms-checkbox-filter {\n            display: flex;\n            align-items: center;\n            gap: ${filterCheckboxStyles?.checkboxGap||10}px;\n            cursor: pointer;\n            transition: all 0.2s ease;\n            padding: ${filterCheckboxStyles?.padding||\"8px 0\"};\n          }\n          .cms-checkbox-filter:hover {\n            background-color: ${filterCheckboxStyles?.hoverBackgroundColor||\"#f8f9fa\"};\n          }\n          .cms-checkbox-filter-selected {\n            background-color: ${filterCheckboxStyles?.activeBackgroundColor||\"transparent\"};\n          }\n        `}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:6},children:[config.showAllOption&&/*#__PURE__*/_jsx(CheckboxItem,{label:config.allOptionLabel||`All ${config.title}`,isSelected:config.allowMultiple?Array.isArray(selected)&&selected.length===0:selected===\"\",onClick:()=>onChange(config.allowMultiple?[]:\"\"),styles:filterCheckboxStyles}),enumOptions.map((option,idx)=>{const optionValue=enumValues[idx];const isSelected=config.allowMultiple?Array.isArray(selected)&&selected.includes(optionValue):selected===optionValue;const count=optionCounts[optionValue];return /*#__PURE__*/_jsx(CheckboxItem,{label:option,count:config.showPostCount?count:undefined,countTemplate:config.countTemplate,countStyle:config.countStyle,isSelected:isSelected,onClick:()=>{if(config.allowMultiple){const current=Array.isArray(selected)?[...selected]:[];if(isSelected){onChange(current.filter(v=>v!==optionValue));}else{onChange([...current,optionValue]);}}else{onChange(isSelected&&config.allowDeselect!==false?\"\":optionValue);}},styles:filterCheckboxStyles},idx);})]})]});}// ============================================\n// 样式 3: Tags/Pills（标签/药丸）- 默认样式\n// ============================================\nconst selectedValues=Array.isArray(value)?value:value?[value]:[];return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n        .cms-enum-tag.${uniqueClassName} {\n          padding: 6px 12px;\n          border-radius: 4px;\n          font-size: 14px;\n          cursor: pointer;\n          transition: all 0.2s ease;\n          background-color: ${filterPillStyles?.backgroundColor||\"#fff\"};\n          color: ${filterPillStyles?.color||\"#333\"};\n          border: 1px solid ${filterPillStyles?.borderColor||\"#dee2e6\"};\n          user-select: none;\n        }\n        .cms-enum-tag.${uniqueClassName}:hover {\n          background-color: ${filterPillStyles?.hoverBackgroundColor||\"#f8f9fa\"};\n          border-color: ${filterPillStyles?.hoverBorderColor||\"#007AFF\"};\n        }\n        .cms-enum-tag.${uniqueClassName}.selected {\n          background-color: ${filterPillStyles?.selectedBackgroundColor||\"#007AFF\"};\n          color: ${filterPillStyles?.selectedTextColor||\"#fff\"};\n          border-color: ${filterPillStyles?.selectedBorderColor||\"#007AFF\"};\n        }\n      `}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexWrap:\"wrap\",gap:filterPillStyles?.gap||8},children:[config.showAllOption&&/*#__PURE__*/_jsx(\"div\",{className:`cms-enum-tag ${uniqueClassName} ${selectedValues.length===0?\"selected\":\"\"}`,onClick:()=>onChange(config.allowMultiple?[]:\"\"),children:config.allOptionLabel||`All ${config.title}`}),enumValues.map((optionValue,idx)=>{const optionTitle=enumOptions[idx];const isSelected=selectedValues.includes(optionValue);const count=optionCounts[optionValue];const{text,countElement}=config.showPostCount&&count!==undefined?formatCountDisplay(optionTitle,count,config.countTemplate,config.countStyle):{text:optionTitle,countElement:null};return /*#__PURE__*/_jsxs(\"div\",{className:`cms-enum-tag ${uniqueClassName} ${isSelected?\"selected\":\"\"}`,onClick:()=>{if(config.allowMultiple){if(isSelected){onChange(selectedValues.filter(v=>v!==optionValue));}else{onChange([...selectedValues,optionValue]);}}else{onChange(isSelected&&config.allowDeselect!==false?\"\":optionValue);}},children:[text,countElement&&/*#__PURE__*/_jsxs(_Fragment,{children:[\" \",countElement]})]},idx);})]})]});}// 复选框子组件\nfunction CheckboxItem({label,count,countTemplate,countStyle,isSelected,onClick,styles}){const{text,countElement}=count!==undefined?formatCountDisplay(label,count,countTemplate,countStyle):{text:label,countElement:null};return /*#__PURE__*/_jsxs(\"div\",{onClick:onClick,className:`cms-checkbox-filter ${isSelected?\"cms-checkbox-filter-selected\":\"\"}`,children:[/*#__PURE__*/_jsx(\"div\",{style:{width:styles?.scale||18,height:styles?.scale||18,borderRadius:styles?.checkboxBorderRadius||4,border:`1px solid ${isSelected?styles?.selectedBorderColor:styles?.borderColor||\"#dee2e6\"}`,backgroundColor:isSelected?styles?.selectedBackgroundColor:\"transparent\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:isSelected&&/*#__PURE__*/_jsx(\"svg\",{width:\"12\",height:\"12\",viewBox:\"0 0 24 24\",fill:\"none\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M20 6L9 17L4 12\",stroke:styles?.selectedSvgColor||\"#fff\",strokeWidth:\"2.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})}),/*#__PURE__*/_jsxs(\"span\",{style:{color:isSelected?styles?.selectedTextColor:styles?.color},children:[text,countElement&&/*#__PURE__*/_jsxs(_Fragment,{children:[\" \",countElement]})]})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"CMSEnumFilter\":{\"type\":\"reactComponent\",\"name\":\"CMSEnumFilter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{getActiveMatch}from\"https://framerusercontent.com/modules/8t4wAEVIEW49rMhOZjZW/PQhcG4yZfkIHdwCdaOvo/filter_utils.js\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export function ToggleFilter({config,value,onChange,debugLevel,filterToggleStyles,uniqueClassName}){// ============================================\n// 防御性检查\n// ============================================\nif(!config){return /*#__PURE__*/_jsx(\"div\",{style:{padding:8,fontSize:12,color:\"#999\"},children:\"Toggle configuration not available\"});}const activeMatch=getActiveMatch(config);// No input needed for is_set/is_not_set operators\nif(activeMatch===\"is_set\"||activeMatch===\"is_not_set\"){return /*#__PURE__*/_jsx(\"div\",{style:{padding:8,fontSize:12,color:\"#666\",fontStyle:\"italic\"},children:\"No input needed - checks if field has value\"});}// ============================================\n// 配置解析\n// ============================================\nconst toggleStyle=config.toggleStyle||\"switch\";const isTriState=config.toggleTriState||false;const showLabels=config.toggleShowLabels!==false// Default true\n;const isInverse=config.toggleInverse||false;// ============================================\n// 智能默认标签（基于操作符和反转模式）\n// ============================================\nconst getDefaultLabels=()=>{const base=(()=>{switch(activeMatch){// Boolean operators\ncase\"is_enabled\":return isInverse?{on:\"Disabled\",off:\"Enabled\",any:\"Any\"}:{on:\"Enabled\",off:\"Disabled\",any:\"Any\"};case\"is_disabled\":return isInverse?{on:\"Enabled\",off:\"Disabled\",any:\"Any\"}:{on:\"Disabled\",off:\"Enabled\",any:\"Any\"};// Value operators\ncase\"has_value\":return isInverse?{on:\"Hide With Value\",off:\"Show With Value\",any:\"Any\"}:{on:\"Has Value\",off:\"Empty\",any:\"Any\"};case\"is_empty\":return isInverse?{on:\"Hide Empty\",off:\"Show Empty\",any:\"Any\"}:{on:\"Empty\",off:\"Has Value\",any:\"Any\"};default:return isInverse?{on:\"Exclude\",off:\"Include\",any:\"Any\"}:{on:\"On\",off:\"Off\",any:\"Any\"};}})();return base;};const defaultLabels=getDefaultLabels();const onLabel=config.toggleOnLabel||defaultLabels.on;const offLabel=config.toggleOffLabel||defaultLabels.off;const anyLabel=config.toggleAnyLabel||defaultLabels.any;// ============================================\n// 状态判断逻辑\n// ============================================\nconst isValueActive=()=>{if(value===null||value===undefined)return false;if(typeof value===\"boolean\")return value;if(typeof value===\"string\")return value.trim()!==\"\";if(typeof value===\"number\")return true;return!!value;};const getCurrentState=()=>{if(isTriState){if(value===null||value===undefined)return\"any\";return isValueActive()?\"on\":\"off\";}else{return isValueActive()?\"on\":\"off\";}};const currentState=getCurrentState();// ============================================\n// 点击处理\n// ============================================\nconst handleClick=()=>{if(isTriState){// 循环: ANY -> ON -> OFF -> ANY\nif(value===null||value===undefined){onChange(true);}else if(isValueActive()){onChange(false);}else{onChange(null);}}else{// 二态切换: OFF <-> ON\nonChange(isValueActive()?false:true);}};// ============================================\n// 渲染：根据样式选择\n// ============================================\nswitch(toggleStyle){case\"switch\":return renderSwitch();case\"pill\":return renderPill();default:return renderSwitch();}// ============================================\n// Switch 样式渲染\n// ============================================\nfunction renderSwitch(){const switchWidth=filterToggleStyles?.switchWidth??52;const switchHeight=filterToggleStyles?.switchHeight??24;const knobSize=filterToggleStyles?.knobSize??18;const gap=filterToggleStyles?.gap??12;// 计算滑块位置\nconst knobPositionOff=gap;const knobPositionAny=(switchWidth-knobSize)/2;const knobPositionOn=switchWidth-knobSize-gap;const stateClass=currentState===\"on\"?\"is-on\":currentState===\"any\"?\"is-any\":\"is-off\";return /*#__PURE__*/_jsxs(\"div\",{className:\"cms-toggle-wrapper\",children:[/*#__PURE__*/_jsx(\"style\",{children:`\n          .cms-toggle-switch.${uniqueClassName} {\n            position: relative;\n            width: ${switchWidth}px;\n            height: ${switchHeight}px;\n            border-radius: ${switchHeight/2}px;\n            cursor: pointer;\n            transition: all 0.2s ease;\n          }\n\n          .cms-toggle-knob.${uniqueClassName} {\n            position: relative;\n            width: ${knobSize}px;\n            height: ${knobSize}px;\n            border-radius: ${knobSize/2}px;\n            background-color: #fff;\n            transition: all 0.2s ease;\n            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n          }\n\n          /* Knob Positions */\n          .cms-toggle-switch.${uniqueClassName}.is-off .cms-toggle-knob.${uniqueClassName} {\n            left: ${knobPositionOff}px;\n          }\n          .cms-toggle-switch.${uniqueClassName}.is-any .cms-toggle-knob.${uniqueClassName} {\n            left: ${knobPositionAny}px;\n          }\n          .cms-toggle-switch.${uniqueClassName}.is-on .cms-toggle-knob.${uniqueClassName} {\n            left: ${knobPositionOn}px;\n          }\n\n          .cms-toggle-wrapper {\n            display: flex;\n            align-items: center;\n            gap: 12px;\n          }\n        `}),/*#__PURE__*/_jsx(\"div\",{className:`cms-toggle-switch ${uniqueClassName} ${stateClass}`,onClick:handleClick,children:/*#__PURE__*/_jsx(\"div\",{className:`cms-toggle-knob ${uniqueClassName}`})}),showLabels&&/*#__PURE__*/_jsx(\"span\",{className:`cms-toggle-label ${uniqueClassName} ${stateClass}`,children:currentState===\"on\"?onLabel:currentState===\"any\"?anyLabel:offLabel})]});}// ============================================\n// Pill 样式渲染（分段控制器）\n// ============================================\nfunction renderPill(){const borderRadius=filterToggleStyles?.borderRadius??20;const pillGap=filterToggleStyles?.pillGap??0;const pillOptions=isTriState?[{value:\"any\",label:anyLabel},{value:\"on\",label:onLabel},{value:\"off\",label:offLabel}]:[{value:\"on\",label:onLabel},{value:\"off\",label:offLabel}];const activeIndex=pillOptions.findIndex(opt=>opt.value===currentState);const totalOptions=pillOptions.length;return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n          .cms-pill-container.${uniqueClassName} {\n            position: relative;\n            display: flex;\n            gap: ${pillGap}px;\n            padding: 2px;\n            background-color: ${filterToggleStyles?.backgroundColor||\"#f0f0f0\"};\n            border-radius: ${borderRadius}px;\n          }\n\n          .cms-pill-option.${uniqueClassName} {\n            flex: 1;\n            padding: 8px 16px;\n            text-align: center;\n            cursor: pointer;\n            border-radius: ${borderRadius-2}px;\n            transition: all 0.2s ease;\n            z-index: 2;\n          }\n\n          .cms-pill-option.${uniqueClassName}.is-active {\n            color: #fff;\n            background-color: ${filterToggleStyles?.selectedBackgroundColor||\"#007AFF\"};\n          }\n        `}),/*#__PURE__*/_jsx(\"div\",{className:`cms-pill-container ${uniqueClassName}`,children:pillOptions.map(option=>{const isActive=currentState===option.value;return /*#__PURE__*/_jsx(\"div\",{className:`cms-pill-option ${uniqueClassName} ${isActive?\"is-active\":\"\"}`,onClick:()=>{if(isTriState){onChange(option.value===\"on\"?true:option.value===\"off\"?false:null);}else{onChange(option.value===\"on\"?true:false);}},children:option.label},option.value);})})]});}}\nexport const __FramerMetadata__ = {\"exports\":{\"ToggleFilter\":{\"type\":\"reactComponent\",\"name\":\"ToggleFilter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";export function CheckboxFilter({config,value,onChange,debugLevel,filterCheckboxStyles,uniqueClassName}){const selected=config.allowMultiple?value||[]:value||\"\";const options=config.options||[];return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                .cms-checkbox-filter {\n                    background-color: ${filterCheckboxStyles.backgroundColor};\n\n                    ${(()=>{if(typeof filterCheckboxStyles?.border===\"string\"){return`border: ${filterCheckboxStyles.border};`;}else if(filterCheckboxStyles?.border){const border=filterCheckboxStyles.border;return`\n                                ${border.borderWidth!==undefined?`border-width: ${border.borderWidth}px;`:\"\"}\n                                ${border.borderTopWidth!==undefined?`border-top-width: ${border.borderTopWidth}px;`:\"\"}\n                                ${border.borderBottomWidth!==undefined?`border-bottom-width: ${border.borderBottomWidth}px;`:\"\"}\n                                ${border.borderLeftWidth!==undefined?`border-left-width: ${border.borderLeftWidth}px;`:\"\"}\n                                ${border.borderRightWidth!==undefined?`border-right-width: ${border.borderRightWidth}px;`:\"\"}\n                                ${border.borderStyle?`border-style: ${border.borderStyle};`:\"border-style: solid;\"}\n                                ${border.borderColor?`border-color: ${border.borderColor};`:\"border-color: #dee2e6;\"}\n                            `;}else{return\"border: none;\";}})()}\n\n                    padding: ${filterCheckboxStyles.padding||\"8px 0\"};\n                    border-radius: ${filterCheckboxStyles.borderRadius};\n                }\n\n                .cms-checkbox-filter:hover {\n                    background-color: ${filterCheckboxStyles.hoverBackgroundColor};\n                    border-color: ${filterCheckboxStyles.hoverBorderColor};\n                }\n\n                .cms-checkbox-filter.cms-checkbox-filter-selected {\n                    background-color: ${filterCheckboxStyles.activeBackgroundColor};\n                    border-color: ${filterCheckboxStyles.activeBorderColor};\n                }\n            `}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:filterCheckboxStyles.gap||6},children:[config.showAllOption&&(()=>{const isAllSelected=config.allowMultiple?Array.isArray(selected)&&selected.length===0:selected===\"\";return /*#__PURE__*/_jsxs(\"div\",{onClick:()=>{if(!isAllSelected){onChange(config.allowMultiple?[]:\"\");}},className:isAllSelected?\"cms-checkbox-filter cms-checkbox-filter-selected\":\"cms-checkbox-filter\",style:{display:\"flex\",alignItems:\"center\",gap:filterCheckboxStyles.checkboxGap||10,cursor:\"pointer\",transition:\"all 0.2s ease\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",...filterCheckboxStyles.checkboxBorder,borderColor:isAllSelected?filterCheckboxStyles.selectedBorderColor:filterCheckboxStyles.checkboxBorder.borderColor,borderRadius:filterCheckboxStyles.checkboxBorderRadius,backgroundColor:isAllSelected?filterCheckboxStyles.selectedBackgroundColor:filterCheckboxStyles.checkboxBackgroundColor,color:isAllSelected?filterCheckboxStyles.selectedTextColor:filterCheckboxStyles.color,transition:\"all 0.2s ease\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flexShrink:0,width:filterCheckboxStyles.scale||18,height:filterCheckboxStyles.scale||18},children:isAllSelected&&/*#__PURE__*/_jsx(\"svg\",{width:(filterCheckboxStyles.scale||18)!==18?\"70%\":\"12px\",height:(filterCheckboxStyles.scale||18)!==18?\"70%\":\"12px\",viewBox:\"0 0 24 24\",fill:\"none\",style:{color:filterCheckboxStyles.selectedSvgColor},children:/*#__PURE__*/_jsx(\"path\",{d:\"M20 6L9 17L4 12\",stroke:\"currentColor\",strokeWidth:\"2.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})}),/*#__PURE__*/_jsx(\"span\",{style:{fontFamily:filterCheckboxStyles?.font?.fontFamily||undefined,fontWeight:filterCheckboxStyles?.font?.fontWeight??undefined,fontStyle:filterCheckboxStyles?.font?.fontStyle??undefined,fontSize:filterCheckboxStyles.fontSize,transition:\"color 0.2s ease\",color:isAllSelected?filterCheckboxStyles.selectedTextColor:filterCheckboxStyles.color},children:config.allOptionLabel||`All ${config.title}`})]});})(),options.map((option,idx)=>{const optionValue=option.value||option.title;const optionTitle=option.title||option.value;const isSelected=config.allowMultiple?Array.isArray(selected)&&selected.includes(optionValue):selected===optionValue;return /*#__PURE__*/_jsxs(\"div\",{onClick:()=>{if(config.allowMultiple){const current=Array.isArray(selected)?[...selected]:[];if(isSelected){onChange(current.filter(v=>v!==optionValue));}else{current.push(optionValue);onChange(current);}}else{onChange(isSelected&&(config.allowDeselect??true)?\"\":optionValue);}},className:isSelected?\"cms-checkbox-filter cms-checkbox-filter-selected\":\"cms-checkbox-filter\",style:{display:\"flex\",alignItems:\"center\",gap:filterCheckboxStyles.checkboxGap||10,cursor:\"pointer\",transition:\"all 0.2s ease\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",...filterCheckboxStyles.checkboxBorder,borderColor:isSelected?filterCheckboxStyles.selectedBorderColor:filterCheckboxStyles.checkboxBorder.borderColor,borderRadius:filterCheckboxStyles.checkboxBorderRadius,backgroundColor:isSelected?filterCheckboxStyles.selectedBackgroundColor:filterCheckboxStyles.checkboxBackgroundColor,color:isSelected?filterCheckboxStyles.selectedTextColor:filterCheckboxStyles.color,transition:\"all 0.2s ease\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flexShrink:0,width:filterCheckboxStyles.scale||18,height:filterCheckboxStyles.scale||18},children:isSelected&&/*#__PURE__*/_jsx(\"svg\",{width:(filterCheckboxStyles.scale||18)!==18?\"70%\":\"12px\",height:(filterCheckboxStyles.scale||18)!==18?\"70%\":\"12px\",viewBox:\"0 0 24 24\",fill:\"none\",style:{color:isSelected?filterCheckboxStyles.selectedSvgColor:\"\"},children:/*#__PURE__*/_jsx(\"path\",{d:\"M20 6L9 17L4 12\",stroke:\"currentColor\",strokeWidth:\"2.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})}),/*#__PURE__*/_jsx(\"span\",{style:{fontFamily:filterCheckboxStyles?.font?.fontFamily||undefined,fontWeight:filterCheckboxStyles?.font?.fontWeight??undefined,fontStyle:filterCheckboxStyles?.font?.fontStyle??undefined,fontSize:filterCheckboxStyles.fontSize,transition:\"color 0.2s ease\",color:isSelected?filterCheckboxStyles.selectedTextColor:filterCheckboxStyles.color},children:optionTitle})]},idx);}),(debugLevel===\"ui_helpers\"||debugLevel===\"full_debug\")&&/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:11,color:\"#666\",marginTop:4},children:[\"Selected:\",\" \",Array.isArray(selected)?selected.join(\", \"):selected]})]})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"CheckboxFilter\":{\"type\":\"reactComponent\",\"name\":\"CheckboxFilter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CheckboxFilter.map","// TagFilter component for tag-style selection\n// Extracted from DropdownFilter.tsx for better maintainability\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{getActiveMatch,getOptionData}from\"https://framerusercontent.com/modules/8t4wAEVIEW49rMhOZjZW/PQhcG4yZfkIHdwCdaOvo/filter_utils.js\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export function TagFilter({config,value,onChange,debugLevel,filterPillStyles,uniqueClassName}){const activeMatch=getActiveMatch(config);// \"is_set\" and \"is_not_set\" do not require input\nif(activeMatch===\"is_set\"||activeMatch===\"is_not_set\"){return /*#__PURE__*/_jsx(\"div\",{style:{padding:8,fontSize:12,color:\"#666\",fontStyle:\"italic\"},children:\"No input needed - checks if field has value\"});}// Extract option data\nconst{values,titles,optionMap}=getOptionData(config);if(values.length===0){return /*#__PURE__*/_jsx(\"div\",{style:{padding:8,fontSize:12,color:\"#dc3545\",fontStyle:\"italic\",backgroundColor:\"#f8d7da\",borderRadius:4},children:\"No options configured. Please add options to the filter configuration.\"});}// Normalize selected values\nconst selectedValues=Array.isArray(value)?value:value?[value]:[];const isAllSelected=config.allowMultiple?selectedValues.length===0:!value;return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                .tag-filter.${uniqueClassName} {\n                    padding: 6px 12px;\n                    border-radius: 4px;\n                    font-size: 14px;\n                    cursor: pointer;\n                    transition: all 0.2s ease;\n                    background-color: ${filterPillStyles?.backgroundColor||\"#fff\"};\n                    color: ${filterPillStyles?.color||\"#333\"};\n\n                    ${(()=>{if(typeof filterPillStyles?.border===\"string\"){return`border: ${filterPillStyles.border};`;}if(filterPillStyles?.border){const border=filterPillStyles.border;return`\n                                ${border.borderWidth!==undefined?`border-width: ${border.borderWidth}px;`:\"\"}\n                                ${border.borderTopWidth!==undefined?`border-top-width: ${border.borderTopWidth}px;`:\"\"}\n                                ${border.borderBottomWidth!==undefined?`border-bottom-width: ${border.borderBottomWidth}px;`:\"\"}\n                                ${border.borderLeftWidth!==undefined?`border-left-width: ${border.borderLeftWidth}px;`:\"\"}\n                                ${border.borderRightWidth!==undefined?`border-right-width: ${border.borderRightWidth}px;`:\"\"}\n                                ${border.borderStyle?`border-style: ${border.borderStyle};`:\"border-style: solid;\"}\n                                ${border.borderColor?`border-color: ${border.borderColor};`:\"border-color: #dee2e6;\"}\n                            `;}return\"border: none;\";})()}\n                }\n\n                .tag-filter.${uniqueClassName}:hover {\n                    color: ${filterPillStyles?.hoverTextColor||\"#fff\"} !important;\n                    border-color: ${filterPillStyles?.hoverBorderColor||\"#007AFF\"} !important;\n                    background-color: ${filterPillStyles?.hoverBackgroundColor||\"#f8f9fa\"} !important;\n                }\n\n                .tag-filter.${uniqueClassName}.selected {\n                    background-color: ${filterPillStyles?.selectedBackgroundColor||\"#007AFF\"} !important;\n                    color: ${filterPillStyles?.selectedTextColor||\"#fff\"} !important;\n                    border-color: ${filterPillStyles?.selectedBorderColor||\"#007AFF\"} !important;\n                }\n            `}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:8},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexWrap:\"wrap\",gap:filterPillStyles?.gap||8},children:[config.showAllOption&&/*#__PURE__*/_jsx(\"div\",{className:`tag-filter ${uniqueClassName} ${isAllSelected?\"selected\":\"\"}`,style:{...filterPillStyles},onClick:()=>{if(!isAllSelected){onChange(config.allowMultiple?[]:\"\");}},children:config.allOptionLabel||`All ${config.title}`}),values.map((optionValue,idx)=>{const optionTitle=titles[idx];const isSelected=selectedValues.includes(optionValue);return /*#__PURE__*/_jsx(\"div\",{className:`tag-filter ${uniqueClassName} ${isSelected?\"selected\":\"\"}`,style:{...filterPillStyles},onClick:()=>{if(config.allowMultiple){if(isSelected){onChange(selectedValues.filter(v=>v!==optionValue));}else{onChange([...selectedValues,optionValue]);}}else{onChange(isSelected&&(config.allowDeselect??true)?\"\":optionValue);}},children:optionTitle},idx);})]}),(debugLevel===\"ui_helpers\"||debugLevel===\"full_debug\")&&selectedValues.length>0&&/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:11,color:\"#007AFF\",padding:\"6px 10px\",backgroundColor:\"#f0f8ff\",borderRadius:4,border:\"1px solid #b3d9ff\"},children:[/*#__PURE__*/_jsx(\"strong\",{children:selectedValues.length}),\" selected:\",\" \",selectedValues.map(val=>optionMap.get(val)||val).join(\", \")]})]})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"TagFilter\":{\"type\":\"reactComponent\",\"name\":\"TagFilter\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// DropdownFilter component - Clean router for different dropdown styles\n// Separated into specialized components for better maintainability\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{CheckboxFilter}from\"https://framerusercontent.com/modules/ixFJb1DikSWTe5cysJbR/uwxJ105m5obu07VPRHaM/CheckboxFilter.js\";import{SelectFilter}from\"https://framerusercontent.com/modules/AriU3p2OUNgHYoCILVA4/nqX4dl8nxEQow1sOWrpt/SelectFilter.js\";import{TagFilter}from\"https://framerusercontent.com/modules/rGXZZaT17uU9RXncOxdG/JUzUpnDZjrA7cK8tWJb7/TagFilter.js\";/**\n * DropdownFilter - 下拉过滤器路由组件\n *\n * 根据 config.multiStyle 将请求路由到不同的 UI 组件：\n * - \"checkboxes\" → CheckboxFilter（复选框列表）\n * - \"tags\"       → TagFilter（标签按钮）\n * - \"select\"     → SelectFilter（下拉选择器）\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export function DropdownFilter({config,value,onChange,debugLevel,filterSelectStyles,filterPillStyles,filterCheckboxStyles,uniqueClassName}){// ============================================\n// 根据 multiStyle 路由到对应组件\n// ============================================\n// 复选框样式\nif(config.multiStyle===\"checkboxes\"){return /*#__PURE__*/_jsx(CheckboxFilter,{config:config,value:value,onChange:onChange,debugLevel:debugLevel,filterCheckboxStyles:filterCheckboxStyles,uniqueClassName:uniqueClassName});}// 标签按钮样式\nif(config.multiStyle===\"tags\"){return /*#__PURE__*/_jsx(TagFilter,{config:config,value:value,onChange:onChange,debugLevel:debugLevel,filterPillStyles:filterPillStyles,uniqueClassName:uniqueClassName});}// 下拉选择器样式\nif(config.multiStyle===\"select\"){return /*#__PURE__*/_jsx(SelectFilter,{config:config,value:value,onChange:onChange,debugLevel:debugLevel,filterSelectStyles:filterSelectStyles,uniqueClassName:uniqueClassName});}// 默认返回 null（理论上不会到达这里）\nreturn null;}\nexport const __FramerMetadata__ = {\"exports\":{\"DropdownFilter\":{\"type\":\"reactComponent\",\"name\":\"DropdownFilter\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// NumberFilter component for CMS Filter system\n// Extracted from CMSFilters.tsx for better modularity\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{getActiveMatch}from\"https://framerusercontent.com/modules/8t4wAEVIEW49rMhOZjZW/PQhcG4yZfkIHdwCdaOvo/filter_utils.js\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export function NumberFilter({config,value,onChange,debugLevel,filterInputStyles,uniqueClassName}){const activeMatch=getActiveMatch(config);// For is_set / is_not_set operators → no input required\nif(activeMatch===\"is_set\"||activeMatch===\"is_not_set\"){return /*#__PURE__*/_jsx(\"div\",{style:{padding:8,fontSize:12,color:\"#666\",fontStyle:\"italic\"},children:\"No input needed - checks if field has value\"});}return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                .cms-filter-input.${uniqueClassName} {\n                    ${(()=>{if(typeof filterInputStyles?.border===\"string\"){return`border: ${filterInputStyles.border};`;}// Border object case\nif(filterInputStyles?.border){const border=filterInputStyles.border;return`\n                                ${border.borderWidth!==undefined?`border-width: ${border.borderWidth}px;`:\"\"}\n                                ${border.borderTopWidth!==undefined?`border-top-width: ${border.borderTopWidth}px;`:\"\"}\n                                ${border.borderBottomWidth!==undefined?`border-bottom-width: ${border.borderBottomWidth}px;`:\"\"}\n                                ${border.borderLeftWidth!==undefined?`border-left-width: ${border.borderLeftWidth}px;`:\"\"}\n                                ${border.borderRightWidth!==undefined?`border-right-width: ${border.borderRightWidth}px;`:\"\"}\n                                ${border.borderStyle?`border-style: ${border.borderStyle};`:\"border-style: solid;\"}\n                                ${border.borderColor?`border-color: ${border.borderColor};`:\"border-color: #dee2e6;\"}\n                            `;}// No border specified\nreturn\"border: none;\";})()}\n\n                    transition: \n                        border-color 0.2s ease,\n                        background-color 0.2s ease,\n                        color 0.2s ease,\n                        box-shadow 0.2s ease;\n                }\n\n                .cms-filter-input.${uniqueClassName}:hover:not(:focus) {\n                    border-color: ${filterInputStyles?.hoverBorderColor||filterInputStyles?.selectedBorderColor||\"#007AFF\"} !important;\n\n                    background-color: ${filterInputStyles?.hoverBackgroundColor||\"#f8f9fa\"} !important;\n\n                    color: ${filterInputStyles?.hoverTextColor||filterInputStyles?.color||\"#333\"} !important;\n                }\n\n                .cms-filter-input.${uniqueClassName}:focus {\n                    border-color: ${filterInputStyles?.selectedBorderColor||\"#007AFF\"} !important;\n\n                    background-color: ${filterInputStyles?.selectedBackgroundColor||\"#fff\"} !important;\n\n                    color: ${filterInputStyles?.selectedTextColor||\"#333\"} !important;\n                }\n            `}),/*#__PURE__*/_jsx(\"input\",{className:`${uniqueClassName} cms-filter-input`,type:\"number\",placeholder:`Enter ${config.title.toLowerCase()}...`,value:value??\"\",onChange:e=>{const stringValue=e.target.value.trim();if(stringValue===\"\"){onChange(\"\");return;}const numValue=parseFloat(stringValue);onChange(isNaN(numValue)?\"\":numValue);},style:{padding:\"8px 12px\",borderRadius:4,fontSize:14,outline:\"none\",width:\"100%\",lineHeight:1.2,...filterInputStyles,fontFamily:filterInputStyles?.font?.fontFamily,fontWeight:filterInputStyles?.font?.fontWeight,fontStyle:filterInputStyles?.font?.fontStyle}})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"NumberFilter\":{\"type\":\"reactComponent\",\"name\":\"NumberFilter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// DoubleRangeSlider – Clean Version (same logic, clearer structure)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect,useRef}from\"react\";export function DoubleRangeSlider({config,minRangeValueGap=1,trackColor=\"#dddddd\",rangeColor=\"#007AFF\",thumbColor=\"#fff\",thumbBorderColor=\"#007AFF\",bubbleColor=\"#007AFF\",bubbleTextColor=\"#ffffff\",padding=0,borderRadius=20,backgroundColor=\"#ffffff\",font,fontSize,value,onRangeChange}){const min=config?.min??0;const max=config?.max??100;const step=config?.step??1;const unit=config?.unit??\"\";/*--------------------------------------------------------------\n     | Internal values (sync from props)\n     --------------------------------------------------------------*/const initialMin=value?.min??min;const initialMax=value?.max??max;const[minRange,setMinRange]=useState(initialMin);const[maxRange,setMaxRange]=useState(initialMax);const isSyncingRef=useRef(false);const lastEmittedRef=useRef({min:initialMin,max:initialMax});const rangeTrackRef=useRef(null);const minInputRef=useRef(null);const maxInputRef=useRef(null);/*--------------------------------------------------------------\n     | Sync FROM external value\n     --------------------------------------------------------------*/useEffect(()=>{// When cleared externally\nif(value===null||value===undefined){const changed=minRange!==min||maxRange!==max;if(changed){isSyncingRef.current=true;setMinRange(min);setMaxRange(max);lastEmittedRef.current={min,max};}return;}const nextMin=value.min??min;const nextMax=value.max??max;const changed=nextMin!==minRange||nextMax!==maxRange;if(changed){isSyncingRef.current=true;setMinRange(nextMin);setMaxRange(nextMax);lastEmittedRef.current={min:nextMin,max:nextMax};}},[value,min,max]);/*--------------------------------------------------------------\n     | Update track + emit onChange\n     --------------------------------------------------------------*/useEffect(()=>{// Update range highlight\nif(rangeTrackRef.current){const minPercent=(minRange-min)/(max-min)*100;const maxPercent=(maxRange-min)/(max-min)*100;rangeTrackRef.current.style.left=`${minPercent}%`;rangeTrackRef.current.style.width=`${maxPercent-minPercent}%`;rangeTrackRef.current.style.right=\"auto\";}// Skip emitting when syncing\nif(isSyncingRef.current){isSyncingRef.current=false;return;}// Only emit when changed\nconst last=lastEmittedRef.current;if(last.min!==minRange||last.max!==maxRange){lastEmittedRef.current={min:minRange,max:maxRange};onRangeChange?.(minRange,maxRange);}},[minRange,maxRange,min,max,onRangeChange]);/*--------------------------------------------------------------\n     | Handlers\n     --------------------------------------------------------------*/const handleMinInput=e=>{const raw=parseInt(e.target.value);const newValue=Math.min(raw,maxRange-minRangeValueGap);setMinRange(newValue);};const handleMaxInput=e=>{const raw=parseInt(e.target.value);const newValue=Math.max(raw,minRange+minRangeValueGap);setMaxRange(newValue);};const handleTrackClick=e=>{const track=e.currentTarget;const rect=track.getBoundingClientRect();const clickX=e.clientX-rect.left;const clickPct=clickX/rect.width*100;const clickValue=Math.round(min+clickPct/100*(max-min));// Decide which thumb is closer\nconst distToMin=Math.abs(clickValue-minRange);const distToMax=Math.abs(clickValue-maxRange);if(distToMin<distToMax){// Move min\nconst newMin=Math.min(clickValue,maxRange-minRangeValueGap);setMinRange(Math.max(min,Math.round(newMin/step)*step));}else{// Move max\nconst newMax=Math.max(clickValue,minRange+minRangeValueGap);setMaxRange(Math.min(max,Math.round(newMax/step)*step));}};/*--------------------------------------------------------------\n     | Render\n     --------------------------------------------------------------*/const minPercent=(minRange-min)/(max-min)*100;const maxPercent=(maxRange-min)/(max-min)*100;return /*#__PURE__*/_jsxs(\"div\",{className:\"double_range_slider_box\",style:{width:\"100%\",backgroundColor,borderRadius,padding},children:[/*#__PURE__*/_jsxs(\"div\",{className:\"double_range_slider\",onClick:handleTrackClick,children:[/*#__PURE__*/_jsx(\"span\",{className:\"range_track\",ref:rangeTrackRef,style:{backgroundColor:rangeColor}}),/*#__PURE__*/_jsx(\"input\",{ref:minInputRef,type:\"range\",className:\"min\",min:min,max:max,value:minRange,step:step,onChange:handleMinInput}),/*#__PURE__*/_jsx(\"input\",{ref:maxInputRef,type:\"range\",className:\"max\",min:min,max:max,value:maxRange,step:step,onChange:handleMaxInput}),/*#__PURE__*/_jsx(\"div\",{className:\"minvalue\",style:{backgroundColor:bubbleColor,color:bubbleTextColor,left:`${minPercent}%`,transform:`translate(-${minPercent}%, -150%)`,fontSize,fontFamily:font?.fontFamily,fontWeight:font?.fontWeight,fontStyle:font?.fontStyle},children:minRange}),/*#__PURE__*/_jsx(\"div\",{className:\"maxvalue\",style:{backgroundColor:bubbleColor,color:bubbleTextColor,right:`${100-maxPercent}%`,transform:`translate(${100-maxPercent}%, -150%)`,fontSize,fontFamily:font?.fontFamily,fontWeight:font?.fontWeight,fontStyle:font?.fontStyle},children:maxRange})]}),/*#__PURE__*/_jsx(\"style\",{children:`\n                .double_range_slider_box {\n                    position: relative;\n                    display: flex;\n                    justify-content: center;\n                    align-items: center;\n                }\n\n                .double_range_slider {\n                    width: 100%;\n                    height: 5px;\n                    position: relative;\n                    background-color: ${trackColor};\n                    border-radius: 20px;\n                    margin-top: 42px;\n                    cursor: pointer;\n                }\n\n                .double_range_slider .range_track {\n                    height: 100%;\n                    position: absolute;\n                    border-radius: 20px;\n                }\n\n                .double_range_slider input {\n                    position: absolute;\n                    width: 100%;\n                    height: 5px;\n                    background: none;\n                    pointer-events: none;\n                    -webkit-appearance: none;\n                    top: 50%;\n                    transform: translateY(-50%);\n                }\n\n                .double_range_slider input::-webkit-slider-thumb {\n                    height: 20px;\n                    width: 20px;\n                    border-radius: 50%;\n                    border: 3px solid ${thumbBorderColor};\n                    background-color: ${thumbColor};\n                    pointer-events: auto;\n                    cursor: pointer;\n                }\n\n                .double_range_slider .minvalue,\n                .double_range_slider .maxvalue {\n                    position: absolute;\n                    padding: 6px 12px;\n                    border-radius: 1rem;\n                    top: 0;\n                    white-space: nowrap;\n                }\n            `})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"DoubleRangeSlider\":{\"type\":\"reactComponent\",\"name\":\"DoubleRangeSlider\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DoubleRangeSlider.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{DoubleRangeSlider}from\"https://framerusercontent.com/modules/uqTCLD2flbyo9EM5RjrM/uai6aWSJQgbHX53Rgbiy/DoubleRangeSlider.js\";// RangeFilter component for CMS Filter system\n// Extracted from CMSFilters.tsx for better modularity\n/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export function RangeFilter({config,value,onChange,filterInputStyles,filterRangeStyles,uniqueClassName}){const min=config.min??0;const max=config.max??100;const step=config.step??1;const currentValue=value||{min,max};const unit=config.unit||\"\";/*--------------------------------------------------------------\n     | Range Slider Mode\n     --------------------------------------------------------------*/if(config.rangeStyle===\"range-slider\"){return /*#__PURE__*/_jsx(DoubleRangeSlider,{...filterRangeStyles,config:config,value:value,onRangeChange:(minValue,maxValue)=>onChange({min:minValue,max:maxValue})});}/*--------------------------------------------------------------\n     | Dual Input Mode (default)\n     --------------------------------------------------------------*/return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                .cms-filter-input.${uniqueClassName} {\n                    transition:\n                        border-color 0.2s ease,\n                        background-color 0.2s ease,\n                        color 0.2s ease,\n                        box-shadow 0.2s ease;\n                }\n\n                .cms-filter-input.${uniqueClassName}:hover:not(:focus) {\n                    border-color: ${filterInputStyles?.hoverBorderColor||filterInputStyles?.selectedBorderColor||\"#007AFF\"} !important;\n\n                    background-color: ${filterInputStyles?.hoverBackgroundColor||\"#f8f9fa\"} !important;\n\n                    color: ${filterInputStyles?.hoverTextColor||filterInputStyles?.color||\"#333\"} !important;\n                }\n\n                .cms-filter-input.${uniqueClassName}:focus {\n                    border-color: ${filterInputStyles?.selectedBorderColor||\"#007AFF\"} !important;\n\n                    background-color: ${filterInputStyles?.selectedBackgroundColor||\"#fff\"} !important;\n\n                    color: ${filterInputStyles?.selectedTextColor||\"#333\"} !important;\n                }\n            `}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:8},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:config.rangeInputOptions===\"left-right\"?\"row\":\"column\",justifyContent:config.rangeInputOptions===\"left-right\"?\"space-between\":\"space-around\",flexWrap:\"wrap\",gap:8},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:config.rangeInputOptions===\"left-right\"?\"flex-start\":\"center\",flexDirection:config.rangeInputOptions===\"left-right\"?\"column\":\"row\",gap:8},children:[/*#__PURE__*/_jsx(\"label\",{style:{fontSize:12,color:\"#666\",minWidth:30,fontFamily:filterInputStyles?.font?.fontFamily},children:\"Min:\"}),/*#__PURE__*/_jsx(\"input\",{className:`${uniqueClassName} cms-filter-input`,type:\"number\",value:currentValue.min!==undefined?currentValue.min:min,onChange:e=>{const newMin=e.target.value?parseFloat(e.target.value):min;onChange({min:newMin,max:currentValue.max!==undefined?currentValue.max:max});},min:min,max:currentValue.max!==undefined?currentValue.max:max,step:step,style:{padding:\"6px 8px\",border:\"1px solid #dee2e6\",borderRadius:4,fontSize:12,lineHeight:1.2,outline:\"none\",flex:1,...filterInputStyles,fontFamily:filterInputStyles?.font?.fontFamily,fontWeight:filterInputStyles?.font?.fontWeight,fontStyle:filterInputStyles?.font?.fontStyle}}),unit&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:12,color:\"#666\"},children:unit})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:config.rangeInputOptions===\"left-right\"?\"flex-start\":\"center\",flexDirection:config.rangeInputOptions===\"left-right\"?\"column\":\"row\",gap:8},children:[/*#__PURE__*/_jsx(\"label\",{style:{fontSize:12,color:\"#666\",minWidth:30,fontFamily:filterInputStyles?.font?.fontFamily},children:\"Max:\"}),/*#__PURE__*/_jsx(\"input\",{className:`${uniqueClassName} cms-filter-input`,type:\"number\",value:currentValue.max!==undefined?currentValue.max:max,onChange:e=>{const newMax=e.target.value?parseFloat(e.target.value):max;onChange({min:currentValue.min!==undefined?currentValue.min:min,max:newMax});},min:currentValue.min!==undefined?currentValue.min:min,max:max,step:step,style:{padding:\"6px 8px\",border:\"1px solid #dee2e6\",borderRadius:4,fontSize:12,lineHeight:1.2,outline:\"none\",flex:1,...filterInputStyles,fontFamily:filterInputStyles?.font?.fontFamily,fontWeight:filterInputStyles?.font?.fontWeight,fontStyle:filterInputStyles?.font?.fontStyle}}),unit&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:12,color:\"#666\"},children:unit})]})]}),config.rangeBottomLabel&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",fontSize:11,color:\"#999\",marginTop:4},children:[/*#__PURE__*/_jsxs(\"span\",{children:[\"Min: \",min,unit]}),/*#__PURE__*/_jsxs(\"span\",{children:[\"Max: \",max,unit]})]})]})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"RangeFilter\":{\"type\":\"reactComponent\",\"name\":\"RangeFilter\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RangeFilter.map","// FilterControl wrapper component - routes to appropriate filter type\n// Extracted from CMSFilters.tsx for better modularity\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{getActiveMatch,hasValidValue,getRecommendedFilterType}from\"https://framerusercontent.com/modules/8t4wAEVIEW49rMhOZjZW/PQhcG4yZfkIHdwCdaOvo/filter_utils.js\";import{TextFilter}from\"https://framerusercontent.com/modules/FHqRXME93mWMs3IDWXfC/QyFeIJkqOBoO6JAm0cN7/TextFilter.js\";import{CMSEnumFilter}from\"https://framerusercontent.com/modules/ybJHDJ85VZoRJ6fNzsI0/YHjhDt2cjmLhNvByL0Ws/CMSEnumFilter.js\";import{ToggleFilter}from\"https://framerusercontent.com/modules/10QCf43E4tbOXgx1ECvJ/Dj72TpTH6KjmWMrKOgXO/ToggleFilter.js\";import{DropdownFilter}from\"https://framerusercontent.com/modules/35TsDTo0KAsCudpwqnK1/qys6WXyOlS8iM4qhMVz3/DropdownFilter.js\";import{NumberFilter}from\"https://framerusercontent.com/modules/vnbZ8S3JJq34f4LkpBg9/UBDlNwteqwVm8UtOygEW/NumberFilter.js\";import{RangeFilter}from\"https://framerusercontent.com/modules/btM09c71B1E5oPlNZhUW/jknVSFzr1wwZQ8yskZjs/RangeFilter.js\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export function FilterControl({config,value,onChange,availableFields,debugLevel,filterContainerStyles,filterLabelStyles,filterInputStyles,filterPillStyles,filterRangeStyles,filterToggleStyles,filterCheckboxStyles,filterSelectStyles,uniqueClassName,collectionInfo}){// Find field info\nconst fieldInfo=availableFields.length>0?availableFields.find(f=>f.title.toLowerCase()===config.fieldName.toLowerCase()):null;// Toggle filter invalid if target is not boolean\nconst isToggleInvalid=availableFields.length>0&&config.filterType===\"toggle\"&&fieldInfo&&fieldInfo.type!==\"boolean\";const hasValue=hasValidValue(config,value);const activeMatch=getActiveMatch(config);// Label rendering\nconst showLabel=filterLabelStyles?.labelToggle!==false;const labelText=config.title;// Validation\nconst fieldExists=availableFields.length===0||fieldInfo;const isValidField=fieldExists&&!isToggleInvalid;return /*#__PURE__*/_jsxs(\"div\",{className:`cms-filter-container ${uniqueClassName}`,style:{...filterContainerStyles,...filterContainerStyles?.border},children:[showLabel&&/*#__PURE__*/_jsx(\"label\",{style:{display:\"block\",...filterLabelStyles,fontFamily:filterLabelStyles?.font?.fontFamily||undefined,fontWeight:filterLabelStyles?.font?.fontWeight??500,fontStyle:filterLabelStyles?.font?.fontStyle??undefined},children:labelText}),availableFields.length>0&&!fieldExists&&/*#__PURE__*/_jsxs(\"div\",{style:{color:\"#e74c3c\",fontSize:12,marginBottom:8,fontStyle:\"italic\"},children:['⚠️ Field \"',config.fieldName,'\" not found. Available:',\" \",availableFields.map(f=>f.title).join(\", \")]}),isToggleInvalid&&/*#__PURE__*/_jsxs(\"div\",{style:{color:\"#e74c3c\",fontSize:12,marginBottom:8,fontStyle:\"italic\"},children:['⚠️ Toggle filter requires boolean field. \"',fieldInfo?.title,'\" is ',fieldInfo?.type,\". Recommended:\",\" \",getRecommendedFilterType(fieldInfo?.type||\"\")]}),isValidField&&/*#__PURE__*/_jsxs(_Fragment,{children:[config.filterType===\"text\"&&/*#__PURE__*/_jsx(TextFilter,{config:config,value:value,onChange:onChange,debugLevel:debugLevel,filterInputStyles:filterInputStyles,uniqueClassName:uniqueClassName}),config.filterType===\"number\"&&/*#__PURE__*/_jsx(NumberFilter,{config:config,value:value,onChange:onChange,debugLevel:debugLevel,filterInputStyles:filterInputStyles,uniqueClassName:uniqueClassName}),config.filterType===\"dropdown\"&&/*#__PURE__*/_jsx(DropdownFilter,{config:config,value:value,onChange:onChange,debugLevel:debugLevel,filterSelectStyles:filterSelectStyles,filterPillStyles:filterPillStyles,filterCheckboxStyles:filterCheckboxStyles,uniqueClassName:uniqueClassName}),config.filterType===\"range\"&&/*#__PURE__*/_jsx(RangeFilter,{config:config,value:value,onChange:onChange,debugLevel:debugLevel,filterInputStyles:filterInputStyles,filterRangeStyles:filterRangeStyles,uniqueClassName:uniqueClassName}),config.filterType===\"toggle\"&&/*#__PURE__*/_jsx(ToggleFilter,{config:config,value:value,onChange:onChange,debugLevel:debugLevel,filterToggleStyles:filterToggleStyles,uniqueClassName:uniqueClassName}),config.filterType===\"cms-enum\"&&/*#__PURE__*/_jsx(CMSEnumFilter,{config:config,value:value,onChange:onChange,debugLevel:debugLevel,filterInputStyles:filterInputStyles,filterPillStyles:filterPillStyles,filterSelectStyles:filterSelectStyles,filterCheckboxStyles:filterCheckboxStyles,uniqueClassName:uniqueClassName,availableFields:availableFields,collectionInfo:collectionInfo})]}),debugLevel===\"ui_helpers\"&&/*#__PURE__*/_jsxs(\"div\",{style:{marginTop:8,fontSize:11,color:\"#666\"},children:[/*#__PURE__*/_jsxs(\"div\",{children:[\"Field: \",config.fieldName,\" | Filter: \",config.filterType,\" \",\"| Match: \",activeMatch]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"Valid: \",hasValue?\"✅\":\"❌\",\" | Logic:\",\" \",config.logic||\"Any\"]})]}),debugLevel===\"full_debug\"&&/*#__PURE__*/_jsxs(\"div\",{style:{marginTop:8,fontSize:10,color:\"#888\",fontFamily:\"monospace\"},children:[/*#__PURE__*/_jsxs(\"div\",{children:[\"Config: \",JSON.stringify(config,null,2)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"Value:\",\" \",typeof value===\"object\"?JSON.stringify(value):String(value||\"undefined\")]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"Valid: \",hasValue?\"✅\":\"❌\"]})]})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"FilterControl\":{\"type\":\"reactComponent\",\"name\":\"FilterControl\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// CMSFilters - 过滤系统核心入口组件\n// 使用模块化架构，协调所有过滤器功能\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";// 导入工具函数\nimport{hasValidValue,getActiveMatch}from\"https://framerusercontent.com/modules/8t4wAEVIEW49rMhOZjZW/PQhcG4yZfkIHdwCdaOvo/filter_utils.js\";import{FilterControl}from\"https://framerusercontent.com/modules/hGZZ1Rf3nrTLPZZQe1yw/5FGvUgbAomloVbe8dlrG/FilterControl.js\";import{evGetRandomString,getAvailableFilterFields,getCollectionInfo,getCollectionStore,getCollectionStoreKey,globalInitStore,isCanvas}from\"https://framerusercontent.com/modules/fGN1IPlqamL7joTmwPeH/Xt9cbw9Ua9mMHpg4UuVs/StoreManagement.js\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function CMSFilters(props){const{collection,filters,builderLogic,storeKey,style,debugLevel:debug,filterContainerStyles,filterLabelStyles,filterInputStyles,filterPillStyles,filterRangeStyles,filterToggleStyles,filterCheckboxStyles,filterSelectStyles,id}=props;// Canvas 模式下禁用调试\nconst debugLevel=isCanvas?false:debug;// 生成唯一标识\nconst newId=id?id:evGetRandomString();const uniqueClassName=`cms-filter-${newId}`;// ============================================\n// Store 连接\n// ============================================\nconst actualStoreKey=getCollectionStoreKey(collection,storeKey);// 立即初始化 Store（修复竞态条件）\nif(actualStoreKey){getCollectionStore(actualStoreKey);}// 监听 Store 初始化状态\nconst[initState]=globalInitStore();const isStoreInitialized=actualStoreKey&&initState.storeInitialized.includes(actualStoreKey);// 提取集合信息\nconst collectionInfo=getCollectionInfo(collection);// 获取 Store\nconst useStore=actualStoreKey?getCollectionStore(actualStoreKey):null;const[state,setState]=useStore?useStore():[null,null];// ============================================\n// 本地状态\n// ============================================\nconst[filterValues,setFilterValues]=useState({});const[isInitialized,setIsInitialized]=useState(false);// 获取可用字段（用于验证）\nconst availableFields=collectionInfo?getAvailableFilterFields(collectionInfo.propertyControls):[];// ============================================\n// Effect 1: 从 Store 恢复 UI 状态（仅一次）\n// ============================================\nuseEffect(()=>{if(!setState||!state||isInitialized)return;// 检查 Store 中是否有此组件的过滤器\nconst thisComponentFilters=state.filters?.filter(f=>f.componentId===id)||[];if(thisComponentFilters.length>0){// 从 Store 恢复 UI 状态\nconst restoredValues={};thisComponentFilters.forEach(filter=>{const lastDashIndex=filter.id.lastIndexOf(\"-\");const originalIndex=filter.id.substring(lastDashIndex+1);const filterId=`filter-${originalIndex}`;restoredValues[filterId]=filter.value;});setFilterValues(restoredValues);if(debugLevel===\"full_debug\"){console.log(\"🔄 Restored UI state from store:\",{componentId:id,restoredFilters:thisComponentFilters.length,restoredValues});}}setIsInitialized(true);},[setState,state,id,isInitialized,debugLevel]);// ============================================\n// Effect 2: 同步外部 Store 变化到本地状态\n// ============================================\nconst lastKnownStoreStateRef=useRef(\"\");useEffect(()=>{if(!isInitialized)return;const allStoreFilters=state?.filters||[];// 创建稳定的序列化以检测实际变化\nconst storeStateKey=JSON.stringify(allStoreFilters.map(f=>({id:f.id,field:f.field,value:f.value,operator:f.operator,componentId:f.componentId})).sort((a,b)=>a.id.localeCompare(b.id)));// 防循环：仅在 Store 实际变化时处理\nif(storeStateKey===lastKnownStoreStateRef.current){return;}lastKnownStoreStateRef.current=storeStateKey;// 使用回调模式同步\nsetFilterValues(currentFilterValues=>{const newFilterValues={};filters.forEach((config,index)=>{const filterId=`filter-${index}`;const fieldName=config.fieldName;if(!fieldName||!fieldName.trim())return;const normalizedFieldName=fieldName.trim().toLowerCase();// 查找匹配的 Store 过滤器\nconst matchingStoreFilter=allStoreFilters.find(f=>{const fieldsMatch=(f.field||\"\").trim().toLowerCase()===normalizedFieldName;return fieldsMatch&&f.type===config.filterType&&f.operator===getActiveMatch(config);});if(matchingStoreFilter){newFilterValues[filterId]=matchingStoreFilter.value;}});// 深度比较，避免不必要的更新\nconst currentKey=JSON.stringify(currentFilterValues);const newKey=JSON.stringify(newFilterValues);if(currentKey!==newKey){return newFilterValues;}return currentFilterValues;});},[state?.filters,id,isInitialized,filters,debugLevel]);// ============================================\n// Effect 3: 更新 Store（当过滤器值变化时）\n// ============================================\nuseEffect(()=>{if(!isInitialized)return;if(!setState||filters.length===0)return;// 构建活跃的过滤器\nconst activeFilters=filters.filter((config,index)=>{const filterId=`filter-${index}`;const value=filterValues[filterId];if(!config.fieldName||!config.fieldName.trim())return false;return hasValidValue(config,value);}).map(config=>{const originalIndex=filters.findIndex(c=>c===config);const filterId=`filter-${originalIndex}`;const value=filterValues[filterId];const activeMatch=getActiveMatch(config);return{id:`${id}-${originalIndex}`,field:config.fieldName?.trim()||\"\",displayTitle:config.title,type:config.filterType,operator:activeMatch,value:value,logic:config.logic||\"Any\",builderLogic:builderLogic,componentId:id,config:config,toggleOnLabel:config.toggleOnLabel,toggleOffLabel:config.toggleOffLabel};});// 使用 setState 回调避免依赖 state\nsetState(prevState=>{const currentFilters=prevState?.filters||[];// 辅助函数\nconst normalizeFieldName=field=>(field||\"\").trim().toLowerCase();const normalizeOperator=op=>(op||\"\").trim().toLowerCase();const normalizeType=type=>(type||\"\").trim().toLowerCase();const buildFilterKey=(field,type,operator)=>`${normalizeFieldName(field)}::${normalizeType(type)}::${normalizeOperator(operator)}`;// 获取其他组件的过滤器\nconst otherComponentFilters=currentFilters.filter(f=>f.componentId!==id);// 合并过滤器\nconst mergedFilters=[...otherComponentFilters];activeFilters.forEach(newFilter=>{const existingIndex=mergedFilters.findIndex(f=>normalizeFieldName(f.field)===normalizeFieldName(newFilter.field)&&f.type===newFilter.type&&f.operator===newFilter.operator);if(existingIndex>=0){// 更新现有过滤器\nmergedFilters[existingIndex]={...mergedFilters[existingIndex],value:newFilter.value,displayTitle:newFilter.displayTitle,logic:newFilter.logic,builderLogic:newFilter.builderLogic,config:newFilter.config,toggleOnLabel:newFilter.toggleOnLabel,toggleOffLabel:newFilter.toggleOffLabel};}else{// 添加新过滤器\nmergedFilters.push(newFilter);}});// 检查是否有实际变化\nconst currentFiltersKey=JSON.stringify(currentFilters.map(f=>({id:f.id,field:f.field,value:f.value,operator:f.operator})).sort((a,b)=>a.id.localeCompare(b.id)));const mergedFiltersKey=JSON.stringify(mergedFilters.map(f=>({id:f.id,field:f.field,value:f.value,operator:f.operator})).sort((a,b)=>a.id.localeCompare(b.id)));if(currentFiltersKey!==mergedFiltersKey){return{...prevState,filters:mergedFilters};}return prevState;});},[isInitialized,filterValues,filters,setState,id,builderLogic,debugLevel]);// ============================================\n// 事件处理\n// ============================================\nconst handleFilterChange=(index,value)=>{const filterId=`filter-${index}`;if(debugLevel===\"full_debug\"){console.log(\"👆 USER CLICKED filter:\",{componentId:id,filterId,newValue:value,previousValue:filterValues[filterId]});}setFilterValues(prev=>({...prev,[filterId]:value}));};// ============================================\n// 渲染过滤器\n// ============================================\nconst renderFilters=()=>{return filters.map((config,index)=>{const filterId=`filter-${index}`;const value=filterValues[filterId];return /*#__PURE__*/_jsx(FilterControl,{config:config,value:value,onChange:newValue=>handleFilterChange(index,newValue),availableFields:availableFields,debugLevel:debugLevel,filterContainerStyles:filterContainerStyles||{},filterLabelStyles:filterLabelStyles||{},filterInputStyles:filterInputStyles||{},filterPillStyles:filterPillStyles||{},filterRangeStyles:filterRangeStyles||{},filterToggleStyles:filterToggleStyles||{},filterCheckboxStyles:filterCheckboxStyles||{},filterSelectStyles:filterSelectStyles||{},uniqueClassName:uniqueClassName,collectionInfo:collectionInfo},filterId);});};// ============================================\n// 加载状态\n// ============================================\nif(!collection||!Array.isArray(collection)||!collection.length){return /*#__PURE__*/_jsxs(\"div\",{style:{padding:16,textAlign:\"center\",color:\"#666\"},children:[/*#__PURE__*/_jsx(\"div\",{children:\"🔄 Connecting to CMS collection...\"}),debugLevel!==\"hide\"&&/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:11,marginTop:4},children:[\"Store key: \",actualStoreKey]})]});}// ============================================\n// 主渲染\n// ============================================\nreturn /*#__PURE__*/_jsxs(\"div\",{className:`cms-filters ${uniqueClassName}`,style:{...style,display:\"grid\",gridTemplateColumns:`repeat(${filterContainerStyles?.column||1}, 1fr)`,gap:filterContainerStyles?.gap||12},children:[debugLevel===\"ui_helpers\"&&/*#__PURE__*/_jsxs(\"div\",{style:{padding:8,backgroundColor:\"#f0f9ff\",border:\"1px solid #0ea5e9\",borderRadius:4,fontSize:11,color:\"#0369a1\"},children:[/*#__PURE__*/_jsxs(\"div\",{children:[\"🔧 CMS Filters: \",filters.length,\" configured,\",\" \",Object.keys(filterValues).length,\" with values\"]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"Logic: \",builderLogic,\" | Store: \",actualStoreKey]})]}),debugLevel===\"full_debug\"&&/*#__PURE__*/_jsxs(\"div\",{style:{padding:8,backgroundColor:\"#fef3c7\",border:\"1px solid #f59e0b\",borderRadius:4,fontSize:10,color:\"#92400e\",fontFamily:\"monospace\"},children:[/*#__PURE__*/_jsxs(\"div\",{children:[\"Component ID: \",id]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"Store Key: \",actualStoreKey]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"Initialized: \",isInitialized?\"✅\":\"❌\"]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"Available Fields: \",availableFields.length]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"Filter Values: \",JSON.stringify(filterValues)]})]}),filters.length>0?renderFilters():/*#__PURE__*/_jsx(\"div\",{style:{padding:16,textAlign:\"center\",color:\"#666\",fontStyle:\"italic\"},children:\"No filters configured. Add filter configurations to start filtering.\"})]});}// ============================================\n// CMSFilters Property Controls\n// Framer 属性面板配置\n// ============================================\n// ============================================\n// CMSFilters Property Controls\n// Framer 属性面板配置\n// ============================================\naddPropertyControls(CMSFilters,{// ========================================\n// 基础配置\n// ========================================\ncollection:{type:ControlType.Slot,title:\"Collection\",description:\"Connect your CMS Collection List component here\",maxCount:1},// ========================================\n// 过滤器数组配置（核心）\n// ========================================\nfilters:{type:ControlType.Array,title:\"Filters\",description:\"Configure individual filter controls for your CMS fields\",control:{type:ControlType.Object,controls:{// ---- 基础信息 ----\ntitle:{type:ControlType.String,title:\"Display Title\",description:\"Label shown to users above the filter control\",placeholder:\"e.g., Price Range, Category, Status\",defaultValue:\"Filter\"},fieldName:{type:ControlType.String,title:\"CMS Field Name\",description:\"Exact name of the CMS field to filter (case-sensitive)\",placeholder:\"e.g., Title, Price, Category\",defaultValue:\"\"},filterType:{type:ControlType.Enum,title:\"Filter Type\",description:\"Choose the type of filter UI based on your field data\",options:[\"text\",\"number\",\"dropdown\",\"range\",\"toggle\",\"cms-enum\"],optionTitles:[\"Text Input\",\"Number Input\",\"Dropdown\",\"Range Slider\",\"Toggle\",\"CMS Dropdown\"],defaultValue:\"text\"},// ---- Text/Dropdown 匹配方式 ----\nmatchText:{type:ControlType.Enum,title:\"Match\",description:\"How to match the user input against field values\",options:[\"contains\",\"not_contains\",\"starts_with\",\"ends_with\",\"equals\",\"not_equals\",\"greater_than\",\"less_than\",\"greater_than_or_equal\",\"less_than_or_equal\",\"is_set\",\"is_not_set\"],optionTitles:[\"Contains\",\"Doesn't contain\",\"Starts with\",\"Ends with\",\"Equals\",\"Doesn't equal\",\"Greater than\",\"Less than\",\"Greater than or equal\",\"Less than or equal\",\"Is set\",\"Is not set\"],defaultValue:\"contains\",hidden:props=>![\"text\",\"dropdown\"].includes(props.filterType)},// ---- Number 匹配方式 ----\nmatchNumber:{type:ControlType.Enum,title:\"Match\",options:[\"equals\",\"not_equals\",\"greater_than\",\"less_than\",\"greater_than_or_equal\",\"less_than_or_equal\",\"is_set\",\"is_not_set\"],optionTitles:[\"Equals\",\"Doesn't equal\",\"Greater than\",\"Less than\",\"Greater than or equal\",\"Less than or equal\",\"Is set\",\"Is not set\"],defaultValue:\"equals\",hidden:props=>props.filterType!==\"number\"},// ---- Toggle 匹配方式 ----\nmatchToggle:{type:ControlType.Enum,title:\"Match\",options:[\"is_enabled\",\"is_disabled\",\"is_set\",\"is_not_set\"],optionTitles:[\"Is Enabled\",\"Is Disabled\",\"Is set\",\"Is not set\"],defaultValue:\"is_enabled\",hidden:props=>props.filterType!==\"toggle\"},// ---- CMS Enum 匹配方式 ----\nmatchEnum:{type:ControlType.Enum,title:\"Match\",options:[\"equals\",\"not_equals\",\"is_set\",\"is_not_set\"],optionTitles:[\"Equals\",\"Doesn't equal\",\"Is set\",\"Is not set\"],defaultValue:\"equals\",hidden:props=>props.filterType!==\"cms-enum\"},// ========================================\n// Range 专属选项\n// ========================================\nmin:{type:ControlType.Number,title:\"Min Value\",defaultValue:0,hidden:props=>props.filterType!==\"range\"},max:{type:ControlType.Number,title:\"Max Value\",defaultValue:100,hidden:props=>props.filterType!==\"range\"},step:{type:ControlType.Number,title:\"Step\",defaultValue:1,hidden:props=>props.filterType!==\"range\"},rangeStyle:{type:ControlType.Enum,title:\"Range Style\",options:[\"dual-input\",\"range-slider\"],optionTitles:[\"Dual Input\",\"Range Slider\"],defaultValue:\"dual-input\",hidden:props=>props.filterType!==\"range\"},rangeInputOptions:{type:ControlType.Enum,title:\"Dual Input Options\",options:[\"left-right\",\"full-width\"],optionTitles:[\"Left and Right\",\"Full Width\"],defaultValue:\"full-width\",hidden:props=>props.filterType!==\"range\"||props.rangeStyle!==\"dual-input\"},rangeBottomLabel:{type:ControlType.Boolean,title:\"Range Bottom Label\",enabledTitle:\"Show\",disabledTitle:\"Hide\",defaultValue:true,hidden:props=>props.filterType!==\"range\"||props.rangeStyle!==\"dual-input\"},unit:{type:ControlType.String,title:\"Unit\",placeholder:\"e.g., $, %, units, px, km\",defaultValue:\"\",hidden:props=>props.filterType!==\"range\"||props.rangeStyle!==\"dual-input\"},// ========================================\n// Toggle 专属选项\n// ========================================\ntoggleStyle:{type:ControlType.Enum,title:\"Toggle Style\",options:[\"switch\",\"pill\"],optionTitles:[\"Switch\",\"Pill (Segmented)\"],defaultValue:\"switch\",hidden:props=>props.filterType!==\"toggle\"},toggleTriState:{type:ControlType.Boolean,title:\"Tri-State Mode\",description:\"Enable 3-state toggle: ON / OFF / ANY\",enabledTitle:\"Enabled\",disabledTitle:\"Disabled\",defaultValue:false,hidden:props=>props.filterType!==\"toggle\"},toggleAnyLabel:{type:ControlType.String,title:\"ANY Label\",placeholder:\"e.g., All, Any, No Filter\",defaultValue:\"Any\",hidden:props=>props.filterType!==\"toggle\"||!props.toggleTriState},toggleInverse:{type:ControlType.Boolean,title:\"Inverse Logic\",enabledTitle:\"Inverted\",disabledTitle:\"Normal\",defaultValue:false,hidden:props=>props.filterType!==\"toggle\"},toggleShowLabels:{type:ControlType.Boolean,title:\"Show Labels\",enabledTitle:\"Show\",disabledTitle:\"Hide\",defaultValue:true,hidden:props=>props.filterType!==\"toggle\"||props.toggleStyle!==\"switch\"},toggleOnLabel:{type:ControlType.String,title:\"ON Label\",placeholder:\"e.g., Enabled, Active, Include\",defaultValue:\"\",hidden:props=>props.filterType!==\"toggle\"},toggleOffLabel:{type:ControlType.String,title:\"OFF Label\",placeholder:\"e.g., Disabled, Inactive, Exclude\",defaultValue:\"\",hidden:props=>props.filterType!==\"toggle\"},// ========================================\n// Dropdown 专属选项\n// ========================================\noptions:{type:ControlType.Array,title:\"Options\",control:{type:ControlType.Object,controls:{value:{type:ControlType.String,title:\"Value (for filtering)\",placeholder:\"e.g., premium, basic\",defaultValue:\"\"},title:{type:ControlType.String,title:\"Display Title\",placeholder:\"e.g., Premium Plan\",defaultValue:\"\"}}},defaultValue:[{value:\"option1\",title:\"Option 1\"},{value:\"option2\",title:\"Option 2\"}],hidden:props=>props.filterType!==\"dropdown\"},multiStyle:{type:ControlType.Enum,title:\"Selection Style\",options:[\"checkboxes\",\"tags\",\"select\"],optionTitles:[\"Checkboxes\",\"Tag Buttons\",\"Select\"],defaultValue:\"checkboxes\",hidden:props=>props.filterType!==\"dropdown\"},// ========================================\n// CMS Enum 专属选项\n// ========================================\nenumStyle:{type:ControlType.Enum,title:\"CMS Selection Style\",options:[\"tags\",\"checkboxes\",\"dropdown\"],optionTitles:[\"Tag Buttons\",\"Checkboxes\",\"Select\"],defaultValue:\"tags\",hidden:props=>props.filterType!==\"cms-enum\"},// ========================================\n// 共享选项（Dropdown & CMS Enum）\n// ========================================\nallowMultiple:{type:ControlType.Boolean,title:\"Allow Multiple Selection\",defaultValue:false,hidden:props=>!(props.filterType===\"dropdown\"||props.filterType===\"cms-enum\")},logic:{type:ControlType.Enum,title:\"Logic\",description:\"How to combine multiple selected options\",options:[\"All\",\"Any\"],optionTitles:[\"All (AND)\",\"Any (OR)\"],defaultValue:\"Any\",hidden:props=>!(props.filterType===\"dropdown\"&&props.allowMultiple)},showPostCount:{type:ControlType.Boolean,title:\"Show Post Count\",defaultValue:false,hidden:props=>props.filterType!==\"cms-enum\"},countTemplate:{type:ControlType.String,title:\"Count Template\",description:\"Use {count} as placeholder\",defaultValue:\"[{count}]\",hidden:props=>props.filterType!==\"cms-enum\"||!props.showPostCount},countStyle:{type:ControlType.Object,title:\"Count Styling\",controls:{font:{type:ControlType.Font,title:\"Font Family\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:12},color:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#666\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#f0f0f0\"},padding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"2px 4px\"},borderRadius:{type:ControlType.Number,title:\"Border Radius\",defaultValue:3},margin:{type:ControlType.Padding,title:\"Margin\",defaultValue:\"0 0 0 4px\"},size:{type:ControlType.Number,title:\"Size\",defaultValue:0}},hidden:props=>props.filterType!==\"cms-enum\"||!props.showPostCount},showAllOption:{type:ControlType.Boolean,title:\"Show 'All' option\",defaultValue:true,hidden:props=>!(props.filterType===\"dropdown\"||props.filterType===\"cms-enum\")},allOptionLabel:{type:ControlType.String,title:\"All Label\",placeholder:\"e.g., All Posts, Show All\",defaultValue:\"All\",hidden:props=>!(props.filterType===\"dropdown\"||props.filterType===\"cms-enum\")||!props.showAllOption},allowDeselect:{type:ControlType.Boolean,title:\"Allow Deselect\",defaultValue:true,hidden:props=>!(props.filterType===\"dropdown\"||props.filterType===\"cms-enum\")||props.allowMultiple}}},defaultValue:[]},// ========================================\n// 构建逻辑\n// ========================================\nbuilderLogic:{type:ControlType.Enum,title:\"Builder Logic\",description:\"How to combine filters within this builder\",displaySegmentedControl:true,options:[\"All\",\"Any\"],optionTitles:[\"All (AND)\",\"Any (OR)\"],defaultValue:\"All\"},// ========================================\n// Store 配置\n// ========================================\nstoreKey:{type:ControlType.String,title:\"Filter Group\",description:\"Components with same group share filters\",defaultValue:\"auto\",placeholder:\"auto (uses collection name)\"},// ========================================\n// 调试\n// ========================================\ndebugLevel:{type:ControlType.Enum,title:\"🐛 Debug Level\",options:[\"hide\",\"ui_helpers\",\"full_debug\"],optionTitles:[\"Hide (Production)\",\"UI Helpers\",\"Full Debug\"],defaultValue:\"hide\"},// ========================================\n// 样式配置（简化展示）\n// ========================================\nfilterContainerStyles:{type:ControlType.Object,title:\"Container Styles\",controls:{column:{type:ControlType.Number,title:\"Column\",defaultValue:1,min:1,max:10},gap:{type:ControlType.Number,title:\"Column Gap\",defaultValue:12},backgroundColor:{type:ControlType.Color,defaultValue:\"transparent\"},padding:{type:ControlType.Padding,defaultValue:\"0px\"},border:{type:ControlType.Border},borderRadius:{type:ControlType.Number,title:\"Border Radius\",defaultValue:0}}},filterLabelStyles:{type:ControlType.Object,title:\"Label Styles\",controls:{labelToggle:{type:ControlType.Boolean,title:\"Toggle\",enabledTitle:\"Show\",disabledTitle:\"Hide\"},font:{type:ControlType.Font,title:\"Font Family\",hidden:p=>!p.labelToggle},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:14,hidden:p=>!p.labelToggle},padding:{type:ControlType.Padding,defaultValue:\"0 0 16px 0\",hidden:p=>!p.labelToggle},color:{type:ControlType.Color,defaultValue:\"#333\",hidden:p=>!p.labelToggle}}},filterInputStyles:{type:ControlType.Object,title:\"Input Styles\",description:\"Styling for input fields and interactive elements\",controls:{font:{type:ControlType.Font,title:\"Font Family\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:14,min:8,max:100,step:1},padding:{type:ControlType.Padding,defaultValue:\"8px 16px 8px 16px\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#333\"},backgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:\"white\"},border:{type:ControlType.Border,defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:\"#dee2e6\"}},borderRadius:{type:ControlType.Number,title:\"Border Radius\",defaultValue:6,min:0,max:100,step:1},selectedTextColor:{type:ControlType.Color,title:\"Selected Background Color\",defaultValue:\"#333\",optional:true},selectedBackgroundColor:{type:ControlType.Color,title:\"Selected Inner Background Color\",defaultValue:\"white\",optional:true},selectedBorderColor:{type:ControlType.Color,title:\"Selected Border Color\",defaultValue:\"#000\"},hoverTextColor:{type:ControlType.Color,title:\"Hover Color\",defaultValue:\"#333\",optional:true},hoverBackgroundColor:{type:ControlType.Color,title:\"Hover Background Color\",defaultValue:\"#f8f9fa\",optional:true},hoverBorderColor:{type:ControlType.Color,title:\"Hover Border Color\",defaultValue:\"#007AFF\",optional:true}},defaultValue:{fontSize:14,backgroundColor:\"#fff\",borderRadius:6}},filterPillStyles:{type:ControlType.Object,title:\"Pill Styles\",description:\"Styling for pill button fields and interactive elements\",controls:{font:{type:ControlType.Font,title:\"Font Family\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:14,min:8,max:100,step:1},gap:{type:ControlType.Number,title:\"Gap\",description:\"Spacing between filter tag\",defaultValue:6,step:1},padding:{type:ControlType.Padding,defaultValue:\"8px 16px 8px 16px\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#333\"},backgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:\"white\"},border:{type:ControlType.Border,defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:\"#dee2e6\"}},borderRadius:{type:ControlType.Number,title:\"Border Radius\",defaultValue:6,min:0,max:100,step:1},selectedTextColor:{type:ControlType.Color,title:\"Selected Text Color\",defaultValue:\"white\",optional:true},selectedBackgroundColor:{type:ControlType.Color,title:\"Selected Background Color\",defaultValue:\"#007AFF\",optional:true},selectedBorderColor:{type:ControlType.Color,title:\"Selected Border Color\",defaultValue:\"#007AFF\"},hoverTextColor:{type:ControlType.Color,title:\"Hover Color\",defaultValue:\"#333\",optional:true},hoverBackgroundColor:{type:ControlType.Color,title:\"Hover Background Color\",defaultValue:\"#fff\",optional:true},hoverBorderColor:{type:ControlType.Color,title:\"Hover Border Color\",defaultValue:\"#007AFF\",optional:true}},defaultValue:{fontSize:14,backgroundColor:\"#fff\",borderRadius:6}},filterToggleStyles:{type:ControlType.Object,title:\"Toggle Styles\",controls:{// Switch-specific controls\nswitchWidth:{type:ControlType.Number,title:\"Switch Width\",defaultValue:52,min:24,max:200,step:1,displayStepper:true},switchHeight:{type:ControlType.Number,title:\"Switch Height\",defaultValue:24,min:12,max:100,step:1,displayStepper:true},knobSize:{type:ControlType.Number,title:\"Switch Knob Size\",defaultValue:18,min:8,max:100,step:1,displayStepper:true},gap:{type:ControlType.Number,title:\"Switch Gap\",defaultValue:2,min:0,max:100,step:1,displayStepper:true},padding:{type:ControlType.Padding,title:\"Pill Padding\",defaultValue:\"8px 12px 8px 12px\"},pillGap:{type:ControlType.Number,title:\"Pill Gap\",defaultValue:0,min:0,max:20,step:1,displayStepper:true},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#e0e0e0\"},innerBackgroundColor:{type:ControlType.Color,title:\"Inner Background\",defaultValue:\"white\"},border:{type:ControlType.Border,defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:\"#dee2e6\"}},borderRadius:{type:ControlType.Number,title:\"Border Radius\",defaultValue:50,min:0,max:100,step:1},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#333\"},selectedBackgroundColor:{type:ControlType.Color,title:\"Selected Background\",defaultValue:\"#007AFF\",optional:true},selectedTextColor:{type:ControlType.Color,title:\"Selected Text Color\",defaultValue:\"#fff\",optional:true},selectedBorderColor:{type:ControlType.Color,title:\"Selected Border\",defaultValue:\"#007AFF\",optional:true},hoverBackgroundColor:{type:ControlType.Color,title:\"Hover Background\",defaultValue:\"#0056b3\",optional:true},hoverTextColor:{type:ControlType.Color,title:\"Hover Text Color\",defaultValue:\"#fff\",optional:true},hoverBorderColor:{type:ControlType.Color,title:\"Hover Border\",defaultValue:\"#004085\",optional:true},font:{type:ControlType.Font,title:\"Font Family\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:14,min:8,max:32,step:1,displayStepper:true},labelColor:{type:ControlType.Color,title:\"Label Color\",defaultValue:\"#666\",optional:true}},defaultValue:{backgroundColor:\"#e0e0e0\",borderRadius:50,selectedBackgroundColor:\"#007AFF\"}},filterRangeStyles:{type:ControlType.Object,title:\"Range Styles\",controls:{font:{type:ControlType.Font,title:\"Font Family\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:14,step:1},minRangeValueGap:{type:ControlType.Number,title:\"Min Range Gap\",defaultValue:1,min:1,step:1},padding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"0px\"},trackColor:{type:ControlType.Color,title:\"Track Color\",defaultValue:\"#dddddd\"},rangeColor:{type:ControlType.Color,title:\"Range Color\",defaultValue:\"#007AFF\"},thumbColor:{type:ControlType.Color,title:\"Thumb Color\",defaultValue:\"#ffffff\"},thumbBorderColor:{type:ControlType.Color,title:\"Thumb Border Color\",defaultValue:\"#007AFF\"},bubbleColor:{type:ControlType.Color,title:\"Bubble Color\",defaultValue:\"#007AFF\"},bubbleTextColor:{type:ControlType.Color,title:\"Bubble Text Color\",defaultValue:\"#ffffff\"},borderRadius:{type:ControlType.Number,title:\"Border Radius\",defaultValue:20,min:0,max:50,step:1},backgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:\"transparent\"}},defaultValue:{}},filterCheckboxStyles:{type:ControlType.Object,title:\"Checkboxes Styles\",controls:{font:{type:ControlType.Font,title:\"Font Family\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:14,min:8,max:100,step:1},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:6,step:1},backgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:\"white\"},border:{type:ControlType.Border,title:\"Border\",defaultValue:{borderWidth:0,borderStyle:\"solid\",borderColor:\"#dee2e6\"}},borderRadius:{type:ControlType.BorderRadius,title:\"Border Radius\",defaultValue:\"3px\"},hoverBackgroundColor:{type:ControlType.Color,title:\"Hover Background Color\",defaultValue:\"#f8f9fa\"},hoverBorderColor:{type:ControlType.Color,title:\"Hover Border Color\",defaultValue:\"#dee2e6\"},activeBackgroundColor:{type:ControlType.Color,title:\"Active Background Color\",defaultValue:\"#007AFF\"},activeBorderColor:{type:ControlType.Color,title:\"Active Border Color\",defaultValue:\"#007AFF\"},padding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"8px 0px 8px 0px\"},checkboxGap:{type:ControlType.Number,title:\"Checkbox Gap\",defaultValue:10,step:1},scale:{type:ControlType.Number,title:\"Size\",defaultValue:18,min:10,max:100,step:1},color:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#333\"},checkboxBackgroundColor:{type:ControlType.Color,title:\"Checkbox Background Color\",defaultValue:\"white\"},checkboxBorder:{type:ControlType.Border,title:\"Checkbox Border\",defaultValue:{borderWidth:2,borderStyle:\"solid\",borderColor:\"#dee2e6\"}},checkboxBorderRadius:{type:ControlType.Number,title:\"Checkbox Border Radius\",defaultValue:3,min:0,max:100,step:1},selectedTextColor:{type:ControlType.Color,title:\"Selected Text Color\",defaultValue:\"#000\",optional:true},selectedBackgroundColor:{type:ControlType.Color,title:\"Checkbox Selected Background Color\",defaultValue:\"#007AFF\",optional:true},selectedBorderColor:{type:ControlType.Color,title:\"Checkbox Selected Border Color\",defaultValue:\"#007AFF\"},selectedSvgColor:{type:ControlType.Color,title:\"Checkbox Selected Check Color\",defaultValue:\"#fff\"}},defaultValue:{}},filterSelectStyles:{type:ControlType.Object,title:\"Select Styles\",controls:{selectControls:{type:ControlType.Object,title:\"Select Control Styles\",controls:{font:{type:ControlType.Font,title:\"Font Family\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:14,min:8,max:100,step:1},padding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"8px 12px 8px 12px\"},marginTop:{type:ControlType.Number,title:\"Gap\",defaultValue:4,min:0,max:100,step:1},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#333\"},backgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:\"white\"},border:{type:ControlType.Border,defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:\"#dee2e6\"}},borderRadius:{type:ControlType.BorderRadius,title:\"Border Radius\",defaultValue:\"3px\"},hoverTextColor:{type:ControlType.Color,title:\"Hover Text Color\",defaultValue:\"#333\"},hoverBackgroundColor:{type:ControlType.Color,title:\"Hover Background Color\",defaultValue:\"#f8f9fa\"},hoverBorderColor:{type:ControlType.Color,title:\"Hover Border Color\",defaultValue:\"#007AFF\"},selectedTextColor:{type:ControlType.Color,title:\"Selected Text Color\",defaultValue:\"#fff\"},selectedBackgroundColor:{type:ControlType.Color,title:\"Selected Background Color\",defaultValue:\"#007AFF\"},selectedBorderColor:{type:ControlType.Color,title:\"Selected Border Color\",defaultValue:\"#007AFF\"},arrowSize:{type:ControlType.Number,title:\"Arrow Size\",defaultValue:16,step:1},arrowPosition:{type:ControlType.Number,title:\"Arrow Position\",defaultValue:8,step:1},arrowColor:{type:ControlType.Color,title:\"Arrow Color\",defaultValue:\"\"}}},optionControls:{type:ControlType.Object,title:\"Option Styles\",controls:{maxHeight:{type:ControlType.Number,title:\"Max Height\",defaultValue:200,min:100,max:500,step:1,unit:\"px\"},optionFont:{type:ControlType.Font,title:\"Font Family\"},optionFontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:14,min:8,max:100,step:1},dropdownPadding:{type:ControlType.Padding,title:\"Dropdown Padding\",defaultValue:\"0px\"},dropdownBackgroundColor:{type:ControlType.Color,title:\"Dropdown Background Color\",defaultValue:\"white\"},dropdownBorder:{type:ControlType.Border,title:\"Dropdown Border\",defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:\"#dee2e6\"}},dropdownBorderRadius:{type:ControlType.BorderRadius,title:\"Dropdown Border Radius\",defaultValue:\"3px\"},optionPadding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"8px 16px 8px 16px\"},optionMargin:{type:ControlType.Padding,title:\"Margin\",defaultValue:\"0\"},optionColor:{type:ControlType.Color,title:\"Color\",defaultValue:\"#333\"},optionBackgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:\"white\"},optionBorder:{type:ControlType.Border,title:\"Border\",defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:\"#dee2e6\"}},optionBorderRadius:{type:ControlType.BorderRadius,title:\"Border Radius\",defaultValue:\"3px\"},optionHoverTextColor:{type:ControlType.Color,title:\"Hover Text Color\",defaultValue:\"#333\"},optionHoverBackgroundColor:{type:ControlType.Color,title:\"Hover Background Color\",defaultValue:\"#f8f9fa\"},optionHoverBorderColor:{type:ControlType.Color,title:\"Hover Border Color\",defaultValue:\"#dee2e6\"},optionSelectedTextColor:{type:ControlType.Color,title:\"Selected Text Color\",defaultValue:\"#fff\"},optionSelectedBackgroundColor:{type:ControlType.Color,title:\"Selected Background Color\",defaultValue:\"#007AFF\"},optionSelectedBorderColor:{type:ControlType.Color,title:\"Selected Border Color\",defaultValue:\"#007AFF\"}}}},defaultValue:{}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CMSFilters\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}