{"version":3,"file":"static/chunks/7315-71922b3e2959985b.js","mappings":"0EAqBA,UAXA,kBAIA,IAHA,SACA,qBAEA,QACA,WACA,aACA,CACA,QACA,mBCnBA,MAAe,EAAQ,KAAa,EAoBpC,UApBsB,SAatB,SAIA,OAHA,oBACA,aACA,CAAG,EACH,CACA,mBClBA,MAAiB,EAAQ,KAAe,EAWxC,EAVqB,EAAQ,KAAmB,CADxB,CAWxB,EAEA,QAZ4B,EAY5B,oBCbA,MAAc,EAAQ,KAAY,EAClC,EAAW,EAAQ,IAAQ,CAc3B,CAfqB,EAerB,QAJA,CAVkB,QAUlB,KACA,kBACA,aCDA,UAJA,cACA,8BACA,mBCVA,MAAY,EAAQ,KAAU,EAC9B,EAAkB,EAAQ,IAAgB,EADvB,EA6DnB,QA5CA,CAhByB,QAgBzB,SACA,eACA,IACA,KAEA,WACA,SAGA,IADA,YACA,MACA,WACA,WACA,eACA,YAEA,QAEA,CACA,aAEA,OADA,OACA,IACA,OACA,OAEA,WACA,0BACA,QACA,KACM,CACN,YACA,KACA,qBAEA,gBACA,aACA,GAEA,QAEA,CACA,CACA,QACA,kBC3DA,MAAkB,EAAQ,KAAgB,EAC1C,EAA0B,EAAQ,KAAwB,CADjC,CAEzB,EAAe,EAAQ,IAAY,EADF,EAEnB,EAAQ,KAAW,EADX,EAEP,EAAQ,KAAY,CA0BnC,WA1BsB,SAStB,SAGA,qBACA,EAEA,QACA,EAEA,mBACA,KACA,aACA,KAEA,IACA,mBC5BA,MAAkB,EAAQ,KAAgB,EAC1C,EAAmB,EAAQ,KAAiB,CADnB,CAEzB,EAA8B,EAAQ,KAA4B,CADxC,CAoB1B,UAnBqC,SASrC,GACA,kBACA,qBACA,mBAEA,YACA,sBACA,CACA,mBCnBA,MAAkB,EAAQ,IAAgB,EAC1C,EAAU,EAAQ,KAAO,EADA,EAEb,EAAQ,KAAS,CADZ,CAEjB,EAAY,EAAQ,KAAU,CADX,CAEnB,EAAyB,EAAQ,IAAuB,EACxD,EAA8B,EAAQ,KAA4B,EAClE,EAAY,EAAQ,KAAU,CADO,GA2BrC,QA1BmB,SAcnB,YACA,WACA,UAEA,YACA,aACA,yBACA,OACA,QACA,CACA,aCjBA,UANA,YACA,mBACA,2BAEA,kBCXA,MAAc,EAAQ,KAAY,EAelC,UAfqB,SASrB,GACA,mBACA,aACA,CACA,mBCbA,MAAsB,EAAQ,KAAoB,EAClD,EAAqB,EAAQ,KAAmB,CADnB,CAE7B,EAAmB,EAAQ,IAAiB,EAC5C,EAAc,EAAQ,KAAW,EAmBjC,UAnBqB,SAUrB,KACA,qBACA,eACA,WAEA,sBACA,CACA,mBCpBA,MAAkB,EAAQ,KAAe,EA+BzC,UA/ByB,SAUzB,KACA,qBACA,WACA,SAEA,SACA,cAMA,IAJA,eACA,SACA,YAEA,eACA,mBAIA,QACA,CACA,mBC7BA,MAAyB,EAAQ,IAAuB,EACxD,EAAW,EAAQ,IAAQ,CAsB3B,EAvBgC,CAuBhC,QAbA,CATkB,QASlB,GAIA,IAHA,WACA,WAEA,MACA,WACA,OAEA,gBAEA,QACA,mBCrBA,MAAe,EAAQ,KAAa,EACpC,EAAkB,EAAQ,KAAe,CADnB,CAEtB,EAAc,EAAQ,KAAW,CADR,CAEzB,EAAc,EAAQ,KAAY,CADb,CAErB,EAAe,EAAQ,KAAY,CADd,CAErB,EAAY,EAAQ,KAAU,CADR,CAkCtB,UAjCmB,SAWnB,OACA,SAMA,IAJA,SACA,WACA,KAEA,QACA,cACA,wBACA,MAEA,cAEA,UACA,EAGA,EADA,wBACA,cACA,YACA,kBCpCA,MAAe,EAAQ,KAAY,EAcnC,UAdsB,SAUtB,GACA,kBACA,aCOA,UAVA,cACA,0BACA,SAGA,UACA,4BACA,CACA,mBCjBA,MAAsB,EAAQ,KAAoB,EAClD,EAAuB,EAAQ,KAAqB,CADvB,CAO7B,EAHA,QAH8B,QAG9B,CAGA,eAyBA,oBACA,YACA,aAEA,UAEA,CAAC,EAED,6BCxCA,MAAgB,EAAQ,KAAc,EACtC,EAAc,EAAQ,KAAY,CAgClC,WAhCqB,SA4BrB,KACA,wBACA,mBC/BA,MAAmB,EAAQ,KAAiB,EAC5C,EAAuB,EAAQ,IAAqB,EACpD,EAAY,EAAQ,KAAU,EADA,EAElB,EAAQ,KAAU,CADX,CA6BnB,UA5BmB,SAwBnB,GACA,wBACA,4FC5BA,oBACA,gCACA,sGEYA,wBACA,mDACA,GACA,wDACA,0DACA,0DACA,sDAEA,WACA,QAAyD,OAAgB,IACzE,MAA+C,OAAkB,IACjE,EACA,EACA,WACA,EAAa,YAAgB,CAC7B,QACA,IACA,OACA,QACA,UACA,SACA,2BACA,cACA,0BACA,mBACA,QACA,qBACA,CAAO,CACP,qBACA,CAAO,CACP,cACA,OACA,KACA,CAAM,EACN,EAAsB,QAAY,UAClC,EAAkC,QAAY,IAE9C,EADA,iBACA,IACA,SAAqC,OAAoB,EACzD,OACA,cACA,aACA,qBACA,sBACA,IACA,CACA,CAAK,EACL,EAAsC,QAAY,IAclD,uBAA6C,GAAS,CAAI,UAAe,EACzE,MAscA,QAtcA,GAscA,0BApcA,EAAwB,EADxB,GAC6B,MAsc7B,KACA,qBACA,wBACA,EA1cA,2BAC6B,OAC7B,eAmbA,IAlbA,eA+YA,UACA,aAEA,OADA,OACA,kBACA,EAnZA,OACA,GAibA,EAjbA,GAkbA,IADA,EAjbA,KAkbA,IAEA,YADA,EAJA,uBAIA,CAJA,WAMA,CACA,EAhbA,QANA,EACA,uBACA,4BAEA,OADA,WACA,KACA,CAGA,CAHU,CAIV,CACA,MAA2B,SAAG,CAC9B,EACA,CACA,sBACA,OACA,WACA,MACA,MACA,wBACA,iBACA,SACA,cACA,OACA,SAAkC,SAAG,aAAwB,+BAAsD,SAAG,SAAoB,+BAAsD,SAAG,CACnM,EACA,CACA,kBACA,4BACA,KACA,MACA,cAA2B,OAAoB,sBAC/C,gBACA,CAAa,EACb,MACA,MACA,WACA,sBAvDA,YACA,MAobA,cACA,yBACA,8BACA,iBACA,mBACA,EAzbA,KACA,MACA,EAqDA,qBApDA,YACA,cACA,EAmDA,oBAlDA,WACA,2BACA,eACA,GACA,IACA,EA8CA,6BAAqE,UAAc,EACnF,qCAAoF,UAAc,EAClG,sBAA8B,cAAiC,IAC/D,OAEA,QADA,iBACA,8BAEA,YAGA,EAFA,KACA,EAHA,SAGA,EACA,GAAkE,UAAc,CAChF,CACA,CACA,EACA,CAAW,EAAG,CACd,EAEA,GAEA,gBACA,cACA,iBACA,gBACA,aACA,WACA,CAAC,EACD,EAAuB,YAAgB,CACvC,QACA,IACA,MACA,MACA,MACA,WACA,eACA,cACA,aACA,gBACA,KACA,CAAM,EACN,MAAgC,UAAc,OAC9C,EAAyB,OAAe,YACxC,EAAoB,QAAY,SAChC,EAAsB,QAAY,IAClC,YACA,eACA,cACA,2CAGA,IAFA,YACA,eAGA,OADA,YACA,WACA,CACA,MAA2B,SAAG,CAC9B,EACA,CACA,sBACA,2BACA,yBACA,iBACA,aACA,SAAkC,SAAG,CACrC,EACA,CACA,MACA,gCACA,KACA,MACA,OACA,WACA,mDACA,CAAa,CACb,iBACA,mBACA,MACA,CAAa,CACb,gBACA,mBACA,MACA,CAAa,CACb,gBACA,iBACA,KACA,CAAa,CACb,kBAEA,QADA,2BACA,iBACA,WAAgC,mBAAsC,CACtE,CACA,EAEA,EAEA,GAEA,EAAqB,YAAgB,CACrC,QACA,IACA,MACA,MACA,WACA,eACA,cACA,aACA,gBACA,KACA,CAAM,EACN,EAAsB,QAAY,OAClC,EAAgB,OAAe,MAC/B,EAAoB,QAAY,SAChC,KACA,cACA,mDAGA,IAFA,aACA,eAGA,OADA,YACA,UACA,CACA,MAA2B,SAAG,CAC9B,EACA,CACA,sBACA,2BACA,yBACA,cACA,iBACA,SAAkC,SAAG,CACrC,EACA,CACA,8BACA,KACA,MACA,OACA,WACA,kDACA,CAAa,CACb,iBACA,mBACA,MACA,CAAa,CACb,gBACA,mBACA,MACA,CAAa,CACb,gBACA,iBACA,KACA,CAAa,CACb,kBAEA,QADA,2BACA,iBACA,WAAgC,mBAAsC,CACtE,CACA,EAEA,EAEA,GAEA,EAAiB,YAAgB,CACjC,QACA,IACA,gBACA,eACA,cACA,aACA,gBACA,eACA,gBACA,KACA,CAAM,EACN,SACA,MAA2B,SAAG,CACxB,IAAS,MACf,CACA,KACA,MACA,UAAmB,OAAoB,iBACvC,gBACA,KACA,oBACY,eACZ,KACA,oBACY,8BACZ,KACA,mBAEA,CAAS,EACT,cAAuB,OAAoB,qBAC3C,eACA,iCACA,mBACA,gBACA,UAEA,IAEA,CAAS,EACT,cAAuB,OAAoB,qBAE3C,EADA,OACA,oCACA,CAAS,EACT,YAAqB,OAAoB,mBACzC,eACA,mCACA,qCACA,KAEA,CAAS,CACT,EAEA,GAEA,gBACA,EAAkB,YAAgB,CAClC,QACA,kBAAY,QAA+B,EAC3C,SACA,MAA2B,SAAG,CACxB,IAAS,MACf,CACA,qCACA,iCACA,KACA,KACA,EAEA,GAEA,gBACA,oBACA,EAAkB,YAAgB,CAClC,QACA,kBAAY,QAA+B,EAC3C,SACA,SACA,EAAgB,QAAY,OAC5B,EAAyB,OAAe,MACxC,kBACA,eACA,qBAEA,uBACA,qBACA,MAA2B,SAAG,CACxB,IAAS,MACf,CACA,iCACA,qCACA,KACA,MACA,OACA,WACA,oBACA,iBACA,CACA,EAEA,GAEA,gBACA,oBACA,EAAkB,YAAgB,CAClC,QACA,yBACA,MAA8B,UAAc,OAC5C,EAAyB,OAAe,YACxC,EAAkB,SAAa,CAC/B,6CACA,OAEA,MAA2B,SAAG,IAAoB,mBAAoC,CACtF,GAEA,EAAsB,YAAgB,CACtC,QACA,IAAY,qCAA4C,EACxD,SACA,SACA,MAA8B,UAAc,OAC5C,EAAyB,OAAe,YACxC,kCACA,EAAiB,OAAO,IACxB,cACA,gCACA,WAmFA,YACA,IACA,SAAoB,KAAW,KAAK,EAAY,EAC5C,MACJ,yBAEA,MAEA,EA3FA,mBACA,cACA,aAgGA,OACA,UAEA,OADA,GACA,QACA,kBACA,EArGA,mBASA,OARI,WAAe,MACnB,KAEA,OADA,gBACA,KACA,kBACA,CAEA,CAAK,eACsB,UAAI,CAC/B,OACA,CACA,OACA,gDACA,oBACA,sBAA2C,EAAQ,MAAM,EAAoB,KACpE,CACT,UAC0B,SAAG,aAAwB,+BAAsD,SAAG,CAClG,IAAS,MACrB,CACA,cACA,gCACA,sBACA,kBACA,sBACA,iCACA,iCACA,qCACA,6BACA,KACA,MACA,kBAA0C,gBAAkB,QAC5D,QAAuB,OAAoB,gBAC3C,iCACA,CAAe,CACf,EACA,CAAa,EACb,GAA2C,SAAG,CAC9C,EACA,CACA,2DACA,YACA,OACA,CAAa,CACb,GAEA,EAGA,GAEA,gBACA,UACA,UAAU,QAAuB,EACjC,EAAc,QAAY,OAC1B,EAAoB,SDhdpB,ECgd+B,CD/c/B,MAAc,QAAY,QAAG,aAAwB,EACrD,OAAS,SAAa,MACtB,sBACA,mCACA,mBAEA,oBACG,IACH,ECuc+B,GAY/B,OAXE,WAAe,MACjB,gBAGA,EADA,gCADA,kCACA,SACA,IACA,aACA,yBAAyC,WAAe,EACxD,YACA,kBACA,CACA,CAAG,QACsB,SAAG,UAAY,OAAS,eAAiB,2BAA2C,CAC7G,EAMA,kBAIA,OAAS,EAFT,GAEc,CAHd,MAEA,MACc,QACd,CAiCA,gBACA,WACA,wCACA,8BACA,sBACA,CACA,CAQA,QACA,IACA,IACA","sources":["webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayAggregator.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAggregator.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseEach.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseForOwn.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseHasIn.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsMatch.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIteratee.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMatches.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMatchesProperty.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseProperty.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_basePropertyDeep.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createAggregator.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createBaseEach.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getMatchData.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hasPath.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isStrictComparable.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_matchesStrictComparable.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/groupBy.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/hasIn.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/property.js","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+number@1.1.0/node_modules/@radix-ui/number/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-use-previous@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-use-previous/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-slider@1.2.3_@types+react-dom@18.3.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-slider/dist/index.mjs"],"sourcesContent":["/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    var value = array[index];\n    setter(accumulator, value, iteratee(value), array);\n  }\n  return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n  baseEach(collection, function(value, key, collection) {\n    setter(accumulator, value, iteratee(value), collection);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n","var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n","var arrayAggregator = require('./_arrayAggregator'),\n    baseAggregator = require('./_baseAggregator'),\n    baseIteratee = require('./_baseIteratee'),\n    isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n  return function(collection, iteratee) {\n    var func = isArray(collection) ? arrayAggregator : baseAggregator,\n        accumulator = initializer ? initializer() : {};\n\n    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n  };\n}\n\nmodule.exports = createAggregator;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;\n","var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n","var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseAssignValue = require('./_baseAssignValue'),\n    createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) {\n    result[key].push(value);\n  } else {\n    baseAssignValue(result, key, [value]);\n  }\n});\n\nmodule.exports = groupBy;\n","var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n  return Math.min(max, Math.max(min, value));\n}\nexport {\n  clamp\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-previous/src/usePrevious.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n  const ref = React.useRef({ value, previous: value });\n  return React.useMemo(() => {\n    if (ref.current.value !== value) {\n      ref.current.previous = ref.current.value;\n      ref.current.value = value;\n    }\n    return ref.current.previous;\n  }, [value]);\n}\nexport {\n  usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/slider/src/slider.tsx\nimport * as React from \"react\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar PAGE_KEYS = [\"PageUp\", \"PageDown\"];\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar BACK_KEYS = {\n  \"from-left\": [\"Home\", \"PageDown\", \"ArrowDown\", \"ArrowLeft\"],\n  \"from-right\": [\"Home\", \"PageDown\", \"ArrowDown\", \"ArrowRight\"],\n  \"from-bottom\": [\"Home\", \"PageDown\", \"ArrowDown\", \"ArrowLeft\"],\n  \"from-top\": [\"Home\", \"PageDown\", \"ArrowUp\", \"ArrowLeft\"]\n};\nvar SLIDER_NAME = \"Slider\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SLIDER_NAME);\nvar [createSliderContext, createSliderScope] = createContextScope(SLIDER_NAME, [\n  createCollectionScope\n]);\nvar [SliderProvider, useSliderContext] = createSliderContext(SLIDER_NAME);\nvar Slider = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      name,\n      min = 0,\n      max = 100,\n      step = 1,\n      orientation = \"horizontal\",\n      disabled = false,\n      minStepsBetweenThumbs = 0,\n      defaultValue = [min],\n      value,\n      onValueChange = () => {\n      },\n      onValueCommit = () => {\n      },\n      inverted = false,\n      form,\n      ...sliderProps\n    } = props;\n    const thumbRefs = React.useRef(/* @__PURE__ */ new Set());\n    const valueIndexToChangeRef = React.useRef(0);\n    const isHorizontal = orientation === \"horizontal\";\n    const SliderOrientation = isHorizontal ? SliderHorizontal : SliderVertical;\n    const [values = [], setValues] = useControllableState({\n      prop: value,\n      defaultProp: defaultValue,\n      onChange: (value2) => {\n        const thumbs = [...thumbRefs.current];\n        thumbs[valueIndexToChangeRef.current]?.focus();\n        onValueChange(value2);\n      }\n    });\n    const valuesBeforeSlideStartRef = React.useRef(values);\n    function handleSlideStart(value2) {\n      const closestIndex = getClosestValueIndex(values, value2);\n      updateValues(value2, closestIndex);\n    }\n    function handleSlideMove(value2) {\n      updateValues(value2, valueIndexToChangeRef.current);\n    }\n    function handleSlideEnd() {\n      const prevValue = valuesBeforeSlideStartRef.current[valueIndexToChangeRef.current];\n      const nextValue = values[valueIndexToChangeRef.current];\n      const hasChanged = nextValue !== prevValue;\n      if (hasChanged) onValueCommit(values);\n    }\n    function updateValues(value2, atIndex, { commit } = { commit: false }) {\n      const decimalCount = getDecimalCount(step);\n      const snapToStep = roundValue(Math.round((value2 - min) / step) * step + min, decimalCount);\n      const nextValue = clamp(snapToStep, [min, max]);\n      setValues((prevValues = []) => {\n        const nextValues = getNextSortedValues(prevValues, nextValue, atIndex);\n        if (hasMinStepsBetweenValues(nextValues, minStepsBetweenThumbs * step)) {\n          valueIndexToChangeRef.current = nextValues.indexOf(nextValue);\n          const hasChanged = String(nextValues) !== String(prevValues);\n          if (hasChanged && commit) onValueCommit(nextValues);\n          return hasChanged ? nextValues : prevValues;\n        } else {\n          return prevValues;\n        }\n      });\n    }\n    return /* @__PURE__ */ jsx(\n      SliderProvider,\n      {\n        scope: props.__scopeSlider,\n        name,\n        disabled,\n        min,\n        max,\n        valueIndexToChangeRef,\n        thumbs: thumbRefs.current,\n        values,\n        orientation,\n        form,\n        children: /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeSlider, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeSlider, children: /* @__PURE__ */ jsx(\n          SliderOrientation,\n          {\n            \"aria-disabled\": disabled,\n            \"data-disabled\": disabled ? \"\" : void 0,\n            ...sliderProps,\n            ref: forwardedRef,\n            onPointerDown: composeEventHandlers(sliderProps.onPointerDown, () => {\n              if (!disabled) valuesBeforeSlideStartRef.current = values;\n            }),\n            min,\n            max,\n            inverted,\n            onSlideStart: disabled ? void 0 : handleSlideStart,\n            onSlideMove: disabled ? void 0 : handleSlideMove,\n            onSlideEnd: disabled ? void 0 : handleSlideEnd,\n            onHomeKeyDown: () => !disabled && updateValues(min, 0, { commit: true }),\n            onEndKeyDown: () => !disabled && updateValues(max, values.length - 1, { commit: true }),\n            onStepKeyDown: ({ event, direction: stepDirection }) => {\n              if (!disabled) {\n                const isPageKey = PAGE_KEYS.includes(event.key);\n                const isSkipKey = isPageKey || event.shiftKey && ARROW_KEYS.includes(event.key);\n                const multiplier = isSkipKey ? 10 : 1;\n                const atIndex = valueIndexToChangeRef.current;\n                const value2 = values[atIndex];\n                const stepInDirection = step * multiplier * stepDirection;\n                updateValues(value2 + stepInDirection, atIndex, { commit: true });\n              }\n            }\n          }\n        ) }) })\n      }\n    );\n  }\n);\nSlider.displayName = SLIDER_NAME;\nvar [SliderOrientationProvider, useSliderOrientationContext] = createSliderContext(SLIDER_NAME, {\n  startEdge: \"left\",\n  endEdge: \"right\",\n  size: \"width\",\n  direction: 1\n});\nvar SliderHorizontal = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      min,\n      max,\n      dir,\n      inverted,\n      onSlideStart,\n      onSlideMove,\n      onSlideEnd,\n      onStepKeyDown,\n      ...sliderProps\n    } = props;\n    const [slider, setSlider] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setSlider(node));\n    const rectRef = React.useRef(void 0);\n    const direction = useDirection(dir);\n    const isDirectionLTR = direction === \"ltr\";\n    const isSlidingFromLeft = isDirectionLTR && !inverted || !isDirectionLTR && inverted;\n    function getValueFromPointer(pointerPosition) {\n      const rect = rectRef.current || slider.getBoundingClientRect();\n      const input = [0, rect.width];\n      const output = isSlidingFromLeft ? [min, max] : [max, min];\n      const value = linearScale(input, output);\n      rectRef.current = rect;\n      return value(pointerPosition - rect.left);\n    }\n    return /* @__PURE__ */ jsx(\n      SliderOrientationProvider,\n      {\n        scope: props.__scopeSlider,\n        startEdge: isSlidingFromLeft ? \"left\" : \"right\",\n        endEdge: isSlidingFromLeft ? \"right\" : \"left\",\n        direction: isSlidingFromLeft ? 1 : -1,\n        size: \"width\",\n        children: /* @__PURE__ */ jsx(\n          SliderImpl,\n          {\n            dir: direction,\n            \"data-orientation\": \"horizontal\",\n            ...sliderProps,\n            ref: composedRefs,\n            style: {\n              ...sliderProps.style,\n              [\"--radix-slider-thumb-transform\"]: \"translateX(-50%)\"\n            },\n            onSlideStart: (event) => {\n              const value = getValueFromPointer(event.clientX);\n              onSlideStart?.(value);\n            },\n            onSlideMove: (event) => {\n              const value = getValueFromPointer(event.clientX);\n              onSlideMove?.(value);\n            },\n            onSlideEnd: () => {\n              rectRef.current = void 0;\n              onSlideEnd?.();\n            },\n            onStepKeyDown: (event) => {\n              const slideDirection = isSlidingFromLeft ? \"from-left\" : \"from-right\";\n              const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n              onStepKeyDown?.({ event, direction: isBackKey ? -1 : 1 });\n            }\n          }\n        )\n      }\n    );\n  }\n);\nvar SliderVertical = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      min,\n      max,\n      inverted,\n      onSlideStart,\n      onSlideMove,\n      onSlideEnd,\n      onStepKeyDown,\n      ...sliderProps\n    } = props;\n    const sliderRef = React.useRef(null);\n    const ref = useComposedRefs(forwardedRef, sliderRef);\n    const rectRef = React.useRef(void 0);\n    const isSlidingFromBottom = !inverted;\n    function getValueFromPointer(pointerPosition) {\n      const rect = rectRef.current || sliderRef.current.getBoundingClientRect();\n      const input = [0, rect.height];\n      const output = isSlidingFromBottom ? [max, min] : [min, max];\n      const value = linearScale(input, output);\n      rectRef.current = rect;\n      return value(pointerPosition - rect.top);\n    }\n    return /* @__PURE__ */ jsx(\n      SliderOrientationProvider,\n      {\n        scope: props.__scopeSlider,\n        startEdge: isSlidingFromBottom ? \"bottom\" : \"top\",\n        endEdge: isSlidingFromBottom ? \"top\" : \"bottom\",\n        size: \"height\",\n        direction: isSlidingFromBottom ? 1 : -1,\n        children: /* @__PURE__ */ jsx(\n          SliderImpl,\n          {\n            \"data-orientation\": \"vertical\",\n            ...sliderProps,\n            ref,\n            style: {\n              ...sliderProps.style,\n              [\"--radix-slider-thumb-transform\"]: \"translateY(50%)\"\n            },\n            onSlideStart: (event) => {\n              const value = getValueFromPointer(event.clientY);\n              onSlideStart?.(value);\n            },\n            onSlideMove: (event) => {\n              const value = getValueFromPointer(event.clientY);\n              onSlideMove?.(value);\n            },\n            onSlideEnd: () => {\n              rectRef.current = void 0;\n              onSlideEnd?.();\n            },\n            onStepKeyDown: (event) => {\n              const slideDirection = isSlidingFromBottom ? \"from-bottom\" : \"from-top\";\n              const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n              onStepKeyDown?.({ event, direction: isBackKey ? -1 : 1 });\n            }\n          }\n        )\n      }\n    );\n  }\n);\nvar SliderImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeSlider,\n      onSlideStart,\n      onSlideMove,\n      onSlideEnd,\n      onHomeKeyDown,\n      onEndKeyDown,\n      onStepKeyDown,\n      ...sliderProps\n    } = props;\n    const context = useSliderContext(SLIDER_NAME, __scopeSlider);\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        ...sliderProps,\n        ref: forwardedRef,\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          if (event.key === \"Home\") {\n            onHomeKeyDown(event);\n            event.preventDefault();\n          } else if (event.key === \"End\") {\n            onEndKeyDown(event);\n            event.preventDefault();\n          } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(event.key)) {\n            onStepKeyDown(event);\n            event.preventDefault();\n          }\n        }),\n        onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n          const target = event.target;\n          target.setPointerCapture(event.pointerId);\n          event.preventDefault();\n          if (context.thumbs.has(target)) {\n            target.focus();\n          } else {\n            onSlideStart(event);\n          }\n        }),\n        onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n          const target = event.target;\n          if (target.hasPointerCapture(event.pointerId)) onSlideMove(event);\n        }),\n        onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n          const target = event.target;\n          if (target.hasPointerCapture(event.pointerId)) {\n            target.releasePointerCapture(event.pointerId);\n            onSlideEnd(event);\n          }\n        })\n      }\n    );\n  }\n);\nvar TRACK_NAME = \"SliderTrack\";\nvar SliderTrack = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSlider, ...trackProps } = props;\n    const context = useSliderContext(TRACK_NAME, __scopeSlider);\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        \"data-disabled\": context.disabled ? \"\" : void 0,\n        \"data-orientation\": context.orientation,\n        ...trackProps,\n        ref: forwardedRef\n      }\n    );\n  }\n);\nSliderTrack.displayName = TRACK_NAME;\nvar RANGE_NAME = \"SliderRange\";\nvar SliderRange = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSlider, ...rangeProps } = props;\n    const context = useSliderContext(RANGE_NAME, __scopeSlider);\n    const orientation = useSliderOrientationContext(RANGE_NAME, __scopeSlider);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const valuesCount = context.values.length;\n    const percentages = context.values.map(\n      (value) => convertValueToPercentage(value, context.min, context.max)\n    );\n    const offsetStart = valuesCount > 1 ? Math.min(...percentages) : 0;\n    const offsetEnd = 100 - Math.max(...percentages);\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        \"data-orientation\": context.orientation,\n        \"data-disabled\": context.disabled ? \"\" : void 0,\n        ...rangeProps,\n        ref: composedRefs,\n        style: {\n          ...props.style,\n          [orientation.startEdge]: offsetStart + \"%\",\n          [orientation.endEdge]: offsetEnd + \"%\"\n        }\n      }\n    );\n  }\n);\nSliderRange.displayName = RANGE_NAME;\nvar THUMB_NAME = \"SliderThumb\";\nvar SliderThumb = React.forwardRef(\n  (props, forwardedRef) => {\n    const getItems = useCollection(props.__scopeSlider);\n    const [thumb, setThumb] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setThumb(node));\n    const index = React.useMemo(\n      () => thumb ? getItems().findIndex((item) => item.ref.current === thumb) : -1,\n      [getItems, thumb]\n    );\n    return /* @__PURE__ */ jsx(SliderThumbImpl, { ...props, ref: composedRefs, index });\n  }\n);\nvar SliderThumbImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSlider, index, name, ...thumbProps } = props;\n    const context = useSliderContext(THUMB_NAME, __scopeSlider);\n    const orientation = useSliderOrientationContext(THUMB_NAME, __scopeSlider);\n    const [thumb, setThumb] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setThumb(node));\n    const isFormControl = thumb ? context.form || !!thumb.closest(\"form\") : true;\n    const size = useSize(thumb);\n    const value = context.values[index];\n    const percent = value === void 0 ? 0 : convertValueToPercentage(value, context.min, context.max);\n    const label = getLabel(index, context.values.length);\n    const orientationSize = size?.[orientation.size];\n    const thumbInBoundsOffset = orientationSize ? getThumbInBoundsOffset(orientationSize, percent, orientation.direction) : 0;\n    React.useEffect(() => {\n      if (thumb) {\n        context.thumbs.add(thumb);\n        return () => {\n          context.thumbs.delete(thumb);\n        };\n      }\n    }, [thumb, context.thumbs]);\n    return /* @__PURE__ */ jsxs(\n      \"span\",\n      {\n        style: {\n          transform: \"var(--radix-slider-thumb-transform)\",\n          position: \"absolute\",\n          [orientation.startEdge]: `calc(${percent}% + ${thumbInBoundsOffset}px)`\n        },\n        children: [\n          /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: props.__scopeSlider, children: /* @__PURE__ */ jsx(\n            Primitive.span,\n            {\n              role: \"slider\",\n              \"aria-label\": props[\"aria-label\"] || label,\n              \"aria-valuemin\": context.min,\n              \"aria-valuenow\": value,\n              \"aria-valuemax\": context.max,\n              \"aria-orientation\": context.orientation,\n              \"data-orientation\": context.orientation,\n              \"data-disabled\": context.disabled ? \"\" : void 0,\n              tabIndex: context.disabled ? void 0 : 0,\n              ...thumbProps,\n              ref: composedRefs,\n              style: value === void 0 ? { display: \"none\" } : props.style,\n              onFocus: composeEventHandlers(props.onFocus, () => {\n                context.valueIndexToChangeRef.current = index;\n              })\n            }\n          ) }),\n          isFormControl && /* @__PURE__ */ jsx(\n            BubbleInput,\n            {\n              name: name ?? (context.name ? context.name + (context.values.length > 1 ? \"[]\" : \"\") : void 0),\n              form: context.form,\n              value\n            },\n            index\n          )\n        ]\n      }\n    );\n  }\n);\nSliderThumb.displayName = THUMB_NAME;\nvar BubbleInput = (props) => {\n  const { value, ...inputProps } = props;\n  const ref = React.useRef(null);\n  const prevValue = usePrevious(value);\n  React.useEffect(() => {\n    const input = ref.current;\n    const inputProto = window.HTMLInputElement.prototype;\n    const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"value\");\n    const setValue = descriptor.set;\n    if (prevValue !== value && setValue) {\n      const event = new Event(\"input\", { bubbles: true });\n      setValue.call(input, value);\n      input.dispatchEvent(event);\n    }\n  }, [prevValue, value]);\n  return /* @__PURE__ */ jsx(\"input\", { style: { display: \"none\" }, ...inputProps, ref, defaultValue: value });\n};\nfunction getNextSortedValues(prevValues = [], nextValue, atIndex) {\n  const nextValues = [...prevValues];\n  nextValues[atIndex] = nextValue;\n  return nextValues.sort((a, b) => a - b);\n}\nfunction convertValueToPercentage(value, min, max) {\n  const maxSteps = max - min;\n  const percentPerStep = 100 / maxSteps;\n  const percentage = percentPerStep * (value - min);\n  return clamp(percentage, [0, 100]);\n}\nfunction getLabel(index, totalValues) {\n  if (totalValues > 2) {\n    return `Value ${index + 1} of ${totalValues}`;\n  } else if (totalValues === 2) {\n    return [\"Minimum\", \"Maximum\"][index];\n  } else {\n    return void 0;\n  }\n}\nfunction getClosestValueIndex(values, nextValue) {\n  if (values.length === 1) return 0;\n  const distances = values.map((value) => Math.abs(value - nextValue));\n  const closestDistance = Math.min(...distances);\n  return distances.indexOf(closestDistance);\n}\nfunction getThumbInBoundsOffset(width, left, direction) {\n  const halfWidth = width / 2;\n  const halfPercent = 50;\n  const offset = linearScale([0, halfPercent], [0, halfWidth]);\n  return (halfWidth - offset(left) * direction) * direction;\n}\nfunction getStepsBetweenValues(values) {\n  return values.slice(0, -1).map((value, index) => values[index + 1] - value);\n}\nfunction hasMinStepsBetweenValues(values, minStepsBetweenValues) {\n  if (minStepsBetweenValues > 0) {\n    const stepsBetweenValues = getStepsBetweenValues(values);\n    const actualMinStepsBetweenValues = Math.min(...stepsBetweenValues);\n    return actualMinStepsBetweenValues >= minStepsBetweenValues;\n  }\n  return true;\n}\nfunction linearScale(input, output) {\n  return (value) => {\n    if (input[0] === input[1] || output[0] === output[1]) return output[0];\n    const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n    return output[0] + ratio * (value - input[0]);\n  };\n}\nfunction getDecimalCount(value) {\n  return (String(value).split(\".\")[1] || \"\").length;\n}\nfunction roundValue(value, decimalCount) {\n  const rounder = Math.pow(10, decimalCount);\n  return Math.round(value * rounder) / rounder;\n}\nvar Root = Slider;\nvar Track = SliderTrack;\nvar Range = SliderRange;\nvar Thumb = SliderThumb;\nexport {\n  Range,\n  Root,\n  Slider,\n  SliderRange,\n  SliderThumb,\n  SliderTrack,\n  Thumb,\n  Track,\n  createSliderScope\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":[],"sourceRoot":"","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]}